From 7eebf81d6e8500258c3d82fa6fb9ce44d7be2a54 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 15 Nov 2021 18:27:58 +0800 Subject: [PATCH 01/27] change: update sponsor info --- README.md | 12 +++++++----- docs/assets/hogwarts.jpeg | Bin 0 -> 76446 bytes docs/assets/hogwarts.png | Bin 9278 -> 0 bytes docs/sponsors.md | 10 ++++++---- 4 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 docs/assets/hogwarts.jpeg delete mode 100644 docs/assets/hogwarts.png diff --git a/README.md b/README.md index 10faa937..14803fe0 100644 --- a/README.md +++ b/README.md @@ -22,12 +22,12 @@ ## Key Features - Inherit all powerful features of [`requests`][requests], just have fun to handle HTTP(S) in human way. -- Define testcase in YAML or JSON format, run with [`pytest`][pytest] in concise and elegant manner. +- Define testcase in YAML or JSON format, run with [`pytest`][pytest] in concise and elegant manner. - Record and generate testcases with [`HAR`][HAR] support. - Supports `variables`/`extract`/`validate`/`hooks` mechanisms to create extremely complex test scenarios. - With `debugtalk.py` plugin, any function can be used in any part of your testcase. - With [`jmespath`][jmespath], extract and validate json response has never been easier. -- With [`pytest`][pytest], hundreds of plugins are readily available. +- With [`pytest`][pytest], hundreds of plugins are readily available. - With [`allure`][allure], test report can be pretty nice and powerful. - With reuse of [`locust`][locust], you can run performance test without extra work. - CLI command supported, perfect combination with `CI/CD`. @@ -38,11 +38,13 @@ Thank you to all our sponsors! ✨🍰✨ ([become a sponsor](docs/sponsors.md)) ### 金牌赞助商(Gold Sponsor) -[霍格沃兹测试学院](https://ceshiren.com/) +[霍格沃兹测试学院](https://ceshiren.com/) -> [霍格沃兹测试学院](https://ceshiren.com/) 是业界领先的测试开发技术高端教育品牌,隶属于测吧(北京)科技有限公司。学院课程均由 BAT 一线测试大咖执教,提供实战驱动的接口自动化测试、移动自动化测试、性能测试、持续集成与 DevOps 等技术培训,以及测试开发优秀人才内推服务。[点击学习!](https://ke.qq.com/course/254956?flowToken=1014690) +> [霍格沃兹测试开发学社](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com)是业界领先的测试开发技术高端教育品牌,隶属于[测吧(北京)科技有限公司](http://qrcode.testing-studio.com/f?from=httprunner&url=https://www.testing-studio.com) 。入学会先进行技术能力测评,因材施教,帮助测试工程师实现从手工到测试开发技术转型。通过优秀的学社制度(奖学金制度、内推返学费制度、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。 -霍格沃兹测试学院是 HttpRunner 的首家金牌赞助商。 +> 学院课程由一线大厂测试经理与资深测试开发专家参与研发,以实战驱动为导向,紧贴互联网名企的用人需求。课程方向涵盖移动app自动化测试、接口自动化测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,全面提升测试开发工程师的技术实力。 + +> [进入测试开发技术能力测评!](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com/t/topic/14940) ### 开源服务赞助商(Open Source Sponsor) diff --git a/docs/assets/hogwarts.jpeg b/docs/assets/hogwarts.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..78105f91ac20085c4a5f0fb07a34300ca5e3abc9 GIT binary patch literal 76446 zcmeFYWmH_j)+XFYkl+d4xP; Vj;3+@oywQ+ZMcXxMpx5gbBm*DO;+`I0~duP_n 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 literal 0 HcmV?d00001 diff --git a/docs/assets/hogwarts.png b/docs/assets/hogwarts.png deleted file mode 100644 index 2f8c752ce9838b27ea57f8c7565114714847d019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9278 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 diff --git a/docs/sponsors.md b/docs/sponsors.md index cb76e119..fe3a0e97 100644 --- a/docs/sponsors.md +++ b/docs/sponsors.md @@ -4,11 +4,13 @@ ## 金牌赞助商(Gold Sponsor) -[霍格沃兹测试学院](https://ceshiren.com/) +[霍格沃兹测试学院](https://ceshiren.com/) -> [霍格沃兹测试学院](https://ceshiren.com/) 是业界领先的测试开发技术高端教育品牌,隶属于测吧(北京)科技有限公司。学院课程均由 BAT 一线测试大咖执教,提供实战驱动的接口自动化测试、移动自动化测试、性能测试、持续集成与 DevOps 等技术培训,以及测试开发优秀人才内推服务。[点击学习!](https://ke.qq.com/course/254956?flowToken=1014690) +> [霍格沃兹测试开发学社](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com)是业界领先的测试开发技术高端教育品牌,隶属于[测吧(北京)科技有限公司](http://qrcode.testing-studio.com/f?from=httprunner&url=https://www.testing-studio.com) 。入学会先进行技术能力测评,因材施教,帮助测试工程师实现从手工到测试开发技术转型。通过优秀的学社制度(奖学金制度、内推返学费制度、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。 -[霍格沃兹测试学院](https://ceshiren.com/) 是 HttpRunner 的首家金牌赞助商。 +> 学院课程由一线大厂测试经理与资深测试开发专家参与研发,以实战驱动为导向,紧贴互联网名企的用人需求。课程方向涵盖移动app自动化测试、接口自动化测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,全面提升测试开发工程师的技术实力。 + +> [进入测试开发技术能力测评!](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com/t/topic/14940) ### 开源服务赞助商(Open Source Sponsor) @@ -22,5 +24,5 @@ HttpRunner is in Sentry Sponsored plan. | 等级 | 金牌赞助商
(Gold Sponsor) | 银牌赞助商
(Silver Sponsor)| 个人赞赏 | |:---:|:---:|:---:|:---:| -| 金额 | ¥10000/年 | ¥5000/年 | 任意 | +| 金额 | ¥20000/年 | ¥8000/年 | 任意 | | 权益 | 公司 logo(大)和链接展示在 README.md
150 字的宣传文案 | 公司 logo(中)和链接展示在 README.md
50 字的宣传文案| 个人 ID 和链接展示在 sponsors.md | From 6add3ccdc3acb9d77abb5a5b21145ad261678f55 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 15 Nov 2021 20:19:47 +0800 Subject: [PATCH 02/27] fix: upgrade fastapi for security --- poetry.lock | 142 +++++++++++++++++++++++++++++++++++++------------ pyproject.toml | 4 +- 2 files changed, 109 insertions(+), 37 deletions(-) diff --git a/poetry.lock b/poetry.lock index 720e7faf..0cfd1074 100644 --- a/poetry.lock +++ b/poetry.lock @@ -35,6 +35,25 @@ attrs = ">=16.0.0" pluggy = ">=0.4.0" six = ">=1.9.0" +[[package]] +name = "anyio" +version = "3.3.4" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "dev" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +dataclasses = {version = "*", markers = "python_version < \"3.7\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +trio = ["trio (>=0.16)"] + [[package]] name = "appdirs" version = "1.4.4" @@ -147,6 +166,14 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] yaml = ["pyyaml"] +[[package]] +name = "contextlib2" +version = "21.6.0" +description = "Backports and enhancements for the contextlib module" +category = "dev" +optional = false +python-versions = ">=3.6" + [[package]] name = "contextvars" version = "2.4" @@ -176,21 +203,21 @@ python-versions = "*" [[package]] name = "fastapi" -version = "0.49.2" +version = "0.70.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.1" [package.dependencies] -pydantic = ">=0.32.2,<2.0.0" -starlette = "0.12.9" +pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" +starlette = "0.16.0" [package.extras] -all = ["requests", "aiofiles", "jinja2", "python-multipart", "itsdangerous", "pyyaml", "graphene", "ujson", "email-validator", "uvicorn", "async-exit-stack", "async-generator"] -dev = ["pyjwt", "passlib", "autoflake", "flake8", "uvicorn", "graphene"] -doc = ["mkdocs", "mkdocs-material", "markdown-include"] -test = ["pytest (>=4.0.0)", "pytest-cov", "mypy", "black", "isort", "requests", "email-validator", "sqlalchemy", "peewee", "databases", "orjson", "async-exit-stack", "async-generator", "python-multipart", "aiofiles", "ujson"] +all = ["requests (>=2.24.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<3.0.0)", "pyyaml (>=5.3.1,<6.0.0)", "ujson (>=4.0.1,<5.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] +dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"] +doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=7.1.9,<8.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer-cli (>=0.0.12,<0.0.13)", "pyyaml (>=5.3.1,<6.0.0)"] +test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==21.9b0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,<5.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==0.1.1)", "types-orjson (==3.6.0)", "types-dataclasses (==0.1.7)"] [[package]] name = "filetype" @@ -474,19 +501,19 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pydantic" -version = "1.5.1" +version = "1.8.2" description = "Data validation and settings management using python 3.6 type hinting" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.1" [package.dependencies] dataclasses = {version = ">=0.6", markers = "python_version < \"3.7\""} +typing-extensions = ">=3.7.4.3" [package.extras] dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] -typing_extensions = ["typing-extensions (>=3.7.2)"] [[package]] name = "pyparsing" @@ -629,16 +656,32 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "sniffio" +version = "1.2.0" +description = "Sniff out which async library your code is running under" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +contextvars = {version = ">=2.1", markers = "python_version < \"3.7\""} + [[package]] name = "starlette" -version = "0.12.9" +version = "0.16.0" description = "The little ASGI library that shines." category = "dev" optional = false python-versions = ">=3.6" +[package.dependencies] +anyio = ">=3.0.0,<4" +contextlib2 = {version = ">=21.6.0", markers = "python_version < \"3.7\""} +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + [package.extras] -full = ["aiofiles", "graphene", "itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "ujson"] +full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "graphene"] [[package]] name = "toml" @@ -656,6 +699,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "typing-extensions" +version = "4.0.0" +description = "Backported and Experimental Type Hints for Python 3.6+" +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "urllib3" version = "1.25.9" @@ -778,8 +829,8 @@ upload = ["requests-toolbelt", "filetype"] [metadata] lock-version = "1.1" -python-versions = "^3.6" -content-hash = "d6fa05d492e1c17d10a7e0bd999d007879ef8352be78d8dc273603bffb1f5745" +python-versions = "^3.6.2" +content-hash = "59362cb9a448bd918f9ef439550a0f951e2a9790302b34022fed2630864ec15b" [metadata.files] aiocontextvars = [ @@ -794,6 +845,10 @@ allure-python-commons = [ {file = "allure-python-commons-2.8.16.tar.gz", hash = "sha256:f67104a51643f2b0f1807acfe324bc13c1fa97f16d9b5c85670199acabd5c40d"}, {file = "allure_python_commons-2.8.16-py3-none-any.whl", hash = "sha256:3cf65bce770e4d6b6b1bd46bfecad8a04f1f7bef44133f9a3ded4295510187e2"}, ] +anyio = [ + {file = "anyio-3.3.4-py3-none-any.whl", hash = "sha256:4fd09a25ab7fa01d34512b7249e366cd10358cdafc95022c7ff8c8f8a5026d66"}, + {file = "anyio-3.3.4.tar.gz", hash = "sha256:67da67b5b21f96b9d3d65daa6ea99f5d5282cb09f50eb4456f8fb51dffefc3ff"}, +] appdirs = [ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, @@ -893,6 +948,10 @@ colorama = [ configargparse = [ {file = "ConfigArgParse-1.2.3.tar.gz", hash = "sha256:edd17be986d5c1ba2e307150b8e5f5107aba125f3574dddd02c85d5cdcfd37dc"}, ] +contextlib2 = [ + {file = "contextlib2-21.6.0-py2.py3-none-any.whl", hash = "sha256:3fbdb64466afd23abaf6c977627b75b6139a5a3e8ce38405c5b413aed7a0471f"}, + {file = "contextlib2-21.6.0.tar.gz", hash = "sha256:ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869"}, +] contextvars = [ {file = "contextvars-2.4.tar.gz", hash = "sha256:f38c908aaa59c14335eeea12abea5f443646216c4e29380d7bf34d2018e2c39e"}, ] @@ -935,8 +994,8 @@ dataclasses = [ {file = "dataclasses-0.6.tar.gz", hash = "sha256:6988bd2b895eef432d562370bb707d540f32f7360ab13da45340101bc2307d84"}, ] fastapi = [ - {file = "fastapi-0.49.2-py3-none-any.whl", hash = "sha256:e3b479c61d8a02ec6c80ebbc2ee2d621a32855ffffedd55fd5f2993c6dbdcc1e"}, - {file = "fastapi-0.49.2.tar.gz", hash = "sha256:68395725aac4342896b4f9aa335c7e7fb773b565df7f96e964e24bffb84dc5a3"}, + {file = "fastapi-0.70.0-py3-none-any.whl", hash = "sha256:a36d5f2fad931aa3575c07a3472c784e81f3e664e3bb5c8b9c88d0ec1104f59c"}, + {file = "fastapi-0.70.0.tar.gz", hash = "sha256:66da43cfe5185ea1df99552acffd201f1832c6b364e0f4136c0a99f933466ced"}, ] filetype = [ {file = "filetype-1.0.7-py2.py3-none-any.whl", hash = "sha256:353369948bb1c09b8b3ea3d78390b5586e9399bff9aab894a1dff954e31a66f6"}, @@ -1194,23 +1253,28 @@ pycparser = [ {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"}, ] pydantic = [ - {file = "pydantic-1.5.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2a6904e9f18dea58f76f16b95cba6a2f20b72d787abd84ecd67ebc526e61dce6"}, - {file = "pydantic-1.5.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:da8099fca5ee339d5572cfa8af12cf0856ae993406f0b1eb9bb38c8a660e7416"}, - {file = "pydantic-1.5.1-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:68dece67bff2b3a5cc188258e46b49f676a722304f1c6148ae08e9291e284d98"}, - {file = "pydantic-1.5.1-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:ab863853cb502480b118187d670f753be65ec144e1654924bec33d63bc8b3ce2"}, - {file = "pydantic-1.5.1-cp36-cp36m-win_amd64.whl", hash = "sha256:2007eb062ed0e57875ce8ead12760a6e44bf5836e6a1a7ea81d71eeecf3ede0f"}, - {file = "pydantic-1.5.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:20a15a303ce1e4d831b4e79c17a4a29cb6740b12524f5bba3ea363bff65732bc"}, - {file = "pydantic-1.5.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:473101121b1bd454c8effc9fe66d54812fdc128184d9015c5aaa0d4e58a6d338"}, - {file = "pydantic-1.5.1-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:9be755919258d5d168aeffbe913ed6e8bd562e018df7724b68cabdee3371e331"}, - {file = "pydantic-1.5.1-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:b96ce81c4b5ca62ab81181212edfd057beaa41411cd9700fbcb48a6ba6564b4e"}, - {file = "pydantic-1.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:93b9f265329d9827f39f0fca68f5d72cc8321881cdc519a1304fa73b9f8a75bd"}, - {file = "pydantic-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e2c753d355126ddd1eefeb167fa61c7037ecd30b98e7ebecdc0d1da463b4ea09"}, - {file = "pydantic-1.5.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:8433dbb87246c0f562af75d00fa80155b74e4f6924b0db6a2078a3cd2f11c6c4"}, - {file = "pydantic-1.5.1-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:0a1cdf24e567d42dc762d3fed399bd211a13db2e8462af9dfa93b34c41648efb"}, - {file = "pydantic-1.5.1-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:8be325fc9da897029ee48d1b5e40df817d97fe969f3ac3fd2434ba7e198c55d5"}, - {file = "pydantic-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:3714a4056f5bdbecf3a41e0706ec9b228c9513eee2ad884dc2c568c4dfa540e9"}, - {file = "pydantic-1.5.1-py36.py37.py38-none-any.whl", hash = "sha256:70f27d2f0268f490fe3de0a9b6fca7b7492b8fd6623f9fecd25b221ebee385e3"}, - {file = "pydantic-1.5.1.tar.gz", hash = "sha256:f0018613c7a0d19df3240c2a913849786f21b6539b9f23d85ce4067489dfacfa"}, + {file = "pydantic-1.8.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:05ddfd37c1720c392f4e0d43c484217b7521558302e7069ce8d318438d297739"}, + {file = "pydantic-1.8.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a7c6002203fe2c5a1b5cbb141bb85060cbff88c2d78eccbc72d97eb7022c43e4"}, + {file = "pydantic-1.8.2-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:589eb6cd6361e8ac341db97602eb7f354551482368a37f4fd086c0733548308e"}, + {file = "pydantic-1.8.2-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:10e5622224245941efc193ad1d159887872776df7a8fd592ed746aa25d071840"}, + {file = "pydantic-1.8.2-cp36-cp36m-win_amd64.whl", hash = "sha256:99a9fc39470010c45c161a1dc584997f1feb13f689ecf645f59bb4ba623e586b"}, + {file = "pydantic-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a83db7205f60c6a86f2c44a61791d993dff4b73135df1973ecd9eed5ea0bda20"}, + {file = "pydantic-1.8.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:41b542c0b3c42dc17da70554bc6f38cbc30d7066d2c2815a94499b5684582ecb"}, + {file = "pydantic-1.8.2-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:ea5cb40a3b23b3265f6325727ddfc45141b08ed665458be8c6285e7b85bd73a1"}, + {file = "pydantic-1.8.2-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:18b5ea242dd3e62dbf89b2b0ec9ba6c7b5abaf6af85b95a97b00279f65845a23"}, + {file = "pydantic-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:234a6c19f1c14e25e362cb05c68afb7f183eb931dd3cd4605eafff055ebbf287"}, + {file = "pydantic-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:021ea0e4133e8c824775a0cfe098677acf6fa5a3cbf9206a376eed3fc09302cd"}, + {file = "pydantic-1.8.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e710876437bc07bd414ff453ac8ec63d219e7690128d925c6e82889d674bb505"}, + {file = "pydantic-1.8.2-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:ac8eed4ca3bd3aadc58a13c2aa93cd8a884bcf21cb019f8cfecaae3b6ce3746e"}, + {file = "pydantic-1.8.2-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:4a03cbbe743e9c7247ceae6f0d8898f7a64bb65800a45cbdc52d65e370570820"}, + {file = "pydantic-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:8621559dcf5afacf0069ed194278f35c255dc1a1385c28b32dd6c110fd6531b3"}, + {file = "pydantic-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8b223557f9510cf0bfd8b01316bf6dd281cf41826607eada99662f5e4963f316"}, + {file = "pydantic-1.8.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:244ad78eeb388a43b0c927e74d3af78008e944074b7d0f4f696ddd5b2af43c62"}, + {file = "pydantic-1.8.2-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:05ef5246a7ffd2ce12a619cbb29f3307b7c4509307b1b49f456657b43529dc6f"}, + {file = "pydantic-1.8.2-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:54cd5121383f4a461ff7644c7ca20c0419d58052db70d8791eacbbe31528916b"}, + {file = "pydantic-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:4be75bebf676a5f0f87937c6ddb061fa39cbea067240d98e298508c1bda6f3f3"}, + {file = "pydantic-1.8.2-py3-none-any.whl", hash = "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833"}, + {file = "pydantic-1.8.2.tar.gz", hash = "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b"}, ] pyparsing = [ {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, @@ -1310,8 +1374,13 @@ six = [ {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, ] +sniffio = [ + {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, + {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, +] starlette = [ - {file = "starlette-0.12.9.tar.gz", hash = "sha256:c2ac9a42e0e0328ad20fe444115ac5e3760c1ee2ac1ff8cdb5ec915c4a453411"}, + {file = "starlette-0.16.0-py3-none-any.whl", hash = "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f"}, + {file = "starlette-0.16.0.tar.gz", hash = "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870"}, ] toml = [ {file = "toml-0.10.1-py2.py3-none-any.whl", hash = "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88"}, @@ -1340,6 +1409,9 @@ typed-ast = [ {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34"}, {file = "typed_ast-1.4.1.tar.gz", hash = "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b"}, ] +typing-extensions = [ + {file = "typing_extensions-4.0.0-py3-none-any.whl", hash = "sha256:829704698b22e13ec9eaf959122315eabb370b0884400e9818334d8b677023d9"}, +] urllib3 = [ {file = "urllib3-1.25.9-py2.py3-none-any.whl", hash = "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"}, {file = "urllib3-1.25.9.tar.gz", hash = "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527"}, diff --git a/pyproject.toml b/pyproject.toml index 66d49fb5..c3fa761a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ classifiers = [ include = ["docs/CHANGELOG.md"] [tool.poetry.dependencies] -python = "^3.6" +python = "^3.6.2" requests = "^2.22.0" pyyaml = "^5.1.2" jinja2 = "^2.10.3" @@ -53,7 +53,7 @@ locust = ["locust"] # pip install "httprunner[locust]", [tool.poetry.dev-dependencies] coverage = "^4.5.4" uvicorn = "^0.11.3" -fastapi = "^0.49.0" +fastapi = "^0.70.0" [tool.poetry.scripts] httprunner = "httprunner.cli:main" From 9c1b7e0f44a3bb160b6128f80eecb79e9b0ab7f9 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 15 Nov 2021 20:29:23 +0800 Subject: [PATCH 03/27] change: update sponsor info --- README.md | 4 +--- docs/sponsors.md | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 14803fe0..88957ff7 100644 --- a/README.md +++ b/README.md @@ -40,9 +40,7 @@ Thank you to all our sponsors! ✨🍰✨ ([become a sponsor](docs/sponsors.md)) [霍格沃兹测试学院](https://ceshiren.com/) -> [霍格沃兹测试开发学社](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com)是业界领先的测试开发技术高端教育品牌,隶属于[测吧(北京)科技有限公司](http://qrcode.testing-studio.com/f?from=httprunner&url=https://www.testing-studio.com) 。入学会先进行技术能力测评,因材施教,帮助测试工程师实现从手工到测试开发技术转型。通过优秀的学社制度(奖学金制度、内推返学费制度、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。 - -> 学院课程由一线大厂测试经理与资深测试开发专家参与研发,以实战驱动为导向,紧贴互联网名企的用人需求。课程方向涵盖移动app自动化测试、接口自动化测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,全面提升测试开发工程师的技术实力。 +> [霍格沃兹测试开发学社](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com)是业界领先的测试开发技术高端教育品牌,隶属于[测吧(北京)科技有限公司](http://qrcode.testing-studio.com/f?from=httprunner&url=https://www.testing-studio.com) 。学院课程由一线大厂测试经理与资深测试开发专家参与研发,实战驱动。课程涵盖 web/app 自动化测试、接口测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移&右移、精准测试、测试平台开发、测试管理等内容,帮助测试工程师实现测试开发技术转型。通过优秀的学社制度(奖学金、内推返学费、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。 > [进入测试开发技术能力测评!](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com/t/topic/14940) diff --git a/docs/sponsors.md b/docs/sponsors.md index fe3a0e97..bd022d3a 100644 --- a/docs/sponsors.md +++ b/docs/sponsors.md @@ -6,9 +6,7 @@ [霍格沃兹测试学院](https://ceshiren.com/) -> [霍格沃兹测试开发学社](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com)是业界领先的测试开发技术高端教育品牌,隶属于[测吧(北京)科技有限公司](http://qrcode.testing-studio.com/f?from=httprunner&url=https://www.testing-studio.com) 。入学会先进行技术能力测评,因材施教,帮助测试工程师实现从手工到测试开发技术转型。通过优秀的学社制度(奖学金制度、内推返学费制度、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。 - -> 学院课程由一线大厂测试经理与资深测试开发专家参与研发,以实战驱动为导向,紧贴互联网名企的用人需求。课程方向涵盖移动app自动化测试、接口自动化测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,全面提升测试开发工程师的技术实力。 +> [霍格沃兹测试开发学社](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com)是业界领先的测试开发技术高端教育品牌,隶属于[测吧(北京)科技有限公司](http://qrcode.testing-studio.com/f?from=httprunner&url=https://www.testing-studio.com) 。学院课程由一线大厂测试经理与资深测试开发专家参与研发,实战驱动。课程涵盖 web/app 自动化测试、接口测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移&右移、精准测试、测试平台开发、测试管理等内容,帮助测试工程师实现测试开发技术转型。通过优秀的学社制度(奖学金、内推返学费、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。 > [进入测试开发技术能力测评!](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com/t/topic/14940) From 9d6eb6132df33cf1847324531a7c79d959f4a3dd Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 15 Nov 2021 21:08:13 +0800 Subject: [PATCH 04/27] change: update docs for sponsor info --- docs/sponsors.md | 2 +- mkdocs.yml | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/sponsors.md b/docs/sponsors.md index bd022d3a..de7881f8 100644 --- a/docs/sponsors.md +++ b/docs/sponsors.md @@ -4,7 +4,7 @@ ## 金牌赞助商(Gold Sponsor) -[霍格沃兹测试学院](https://ceshiren.com/) +[霍格沃兹测试学院](https://ceshiren.com/) > [霍格沃兹测试开发学社](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com)是业界领先的测试开发技术高端教育品牌,隶属于[测吧(北京)科技有限公司](http://qrcode.testing-studio.com/f?from=httprunner&url=https://www.testing-studio.com) 。学院课程由一线大厂测试经理与资深测试开发专家参与研发,实战驱动。课程涵盖 web/app 自动化测试、接口测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移&右移、精准测试、测试平台开发、测试管理等内容,帮助测试工程师实现测试开发技术转型。通过优秀的学社制度(奖学金、内推返学费、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。 diff --git a/mkdocs.yml b/mkdocs.yml index dbab26df..c1c53eaa 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,6 +2,10 @@ # $ pip install mkdocs # 1.1.2 # $ pip install mkdocs-material # 5.2.2 +# usage +# $ mkdocs serve # build docs and preview +# $ mkdocs gh-deploy # Deploy your documentation to GitHub Pages + # Project information site_name: HttpRunner V3.x Docs site_description: HttpRunner V3.x User Documentation @@ -13,7 +17,7 @@ repo_url: https://github.com/httprunner/httprunner edit_uri: "" # Copyright -copyright: 'Copyright © 2017 - 2020 debugtalk' +copyright: 'Copyright © 2017 - 2021 debugtalk' # Configuration theme: From ea552c4e4969f129c069e627b18e29e89772c106 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 15 Nov 2021 22:09:32 +0800 Subject: [PATCH 05/27] fix: upgrade dependencies for security --- poetry.lock | 520 +++++++++++++++++++++++++++++++++++++++++++++---- pyproject.toml | 6 +- 2 files changed, 482 insertions(+), 44 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0cfd1074..01f92671 100644 --- a/poetry.lock +++ b/poetry.lock @@ -9,6 +9,11 @@ python-versions = ">=3.5" [package.dependencies] contextvars = {version = "2.4", markers = "python_version < \"3.7\""} +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "allure-pytest" version = "2.8.16" @@ -22,6 +27,11 @@ allure-python-commons = "2.8.16" pytest = ">=4.5.0" six = ">=1.9.0" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "allure-python-commons" version = "2.8.16" @@ -35,6 +45,11 @@ attrs = ">=16.0.0" pluggy = ">=0.4.0" six = ">=1.9.0" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "anyio" version = "3.3.4" @@ -54,6 +69,11 @@ doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] trio = ["trio (>=0.16)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "appdirs" version = "1.4.4" @@ -62,6 +82,11 @@ category = "main" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "atomicwrites" version = "1.4.0" @@ -70,6 +95,11 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "attrs" version = "19.3.0" @@ -84,6 +114,11 @@ dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.int docs = ["sphinx", "zope.interface"] tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "black" version = "19.10b0" @@ -104,6 +139,11 @@ typed-ast = ">=1.4.0" [package.extras] d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "brotli" version = "1.0.9" @@ -112,6 +152,11 @@ category = "main" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "certifi" version = "2020.4.5.2" @@ -120,6 +165,11 @@ category = "main" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "cffi" version = "1.14.0" @@ -131,6 +181,11 @@ python-versions = "*" [package.dependencies] pycparser = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "chardet" version = "3.0.4" @@ -139,6 +194,11 @@ category = "main" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "click" version = "7.1.2" @@ -147,6 +207,11 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "colorama" version = "0.4.3" @@ -155,6 +220,11 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "configargparse" version = "1.2.3" @@ -166,6 +236,11 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] yaml = ["pyyaml"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "contextlib2" version = "21.6.0" @@ -174,6 +249,11 @@ category = "dev" optional = false python-versions = ">=3.6" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "contextvars" version = "2.4" @@ -185,6 +265,11 @@ python-versions = "*" [package.dependencies] immutables = ">=0.9" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "coverage" version = "4.5.4" @@ -193,6 +278,11 @@ category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "dataclasses" version = "0.6" @@ -201,6 +291,11 @@ category = "main" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "fastapi" version = "0.70.0" @@ -219,6 +314,11 @@ dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,< doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=7.1.9,<8.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer-cli (>=0.0.12,<0.0.13)", "pyyaml (>=5.3.1,<6.0.0)"] test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==21.9b0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,<5.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==0.1.1)", "types-orjson (==3.6.0)", "types-dataclasses (==0.1.7)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "filetype" version = "1.0.7" @@ -227,6 +327,11 @@ category = "main" optional = true python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "flask" version = "1.1.2" @@ -246,6 +351,11 @@ dev = ["pytest", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinxco docs = ["sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"] dotenv = ["python-dotenv"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "flask-basicauth" version = "0.2.0" @@ -257,6 +367,11 @@ python-versions = "*" [package.dependencies] Flask = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "gevent" version = "20.6.2" @@ -278,6 +393,11 @@ monitor = ["psutil (>=5.7.0)"] recommended = ["dnspython (>=1.16.0)", "idna", "cffi (>=1.12.2)", "selectors2", "backports.socketpair", "psutil (>=5.7.0)"] test = ["dnspython (>=1.16.0)", "idna", "requests", "objgraph", "cffi (>=1.12.2)", "selectors2", "futures", "mock", "backports.socketpair", "contextvars (==2.4)", "coverage (<5.0)", "coveralls (>=1.7.0)", "psutil (>=5.7.0)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "geventhttpclient" version = "1.4.2" @@ -291,6 +411,11 @@ certifi = "*" gevent = ">=0.13" six = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "greenlet" version = "0.4.16" @@ -299,6 +424,11 @@ category = "main" optional = true python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "h11" version = "0.9.0" @@ -307,6 +437,11 @@ category = "dev" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "httptools" version = "0.1.1" @@ -318,6 +453,11 @@ python-versions = "*" [package.extras] test = ["Cython (==0.29.14)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "idna" version = "2.9" @@ -326,6 +466,11 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "immutables" version = "0.14" @@ -334,6 +479,11 @@ category = "main" optional = false python-versions = ">=3.5" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "importlib-metadata" version = "1.6.1" @@ -349,6 +499,11 @@ zipp = ">=0.5" docs = ["sphinx", "rst.linker"] testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "itsdangerous" version = "1.1.0" @@ -357,9 +512,14 @@ category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "jinja2" -version = "2.11.2" +version = "2.11.3" description = "A very fast and expressive template engine." category = "main" optional = false @@ -371,6 +531,11 @@ MarkupSafe = ">=0.23" [package.extras] i18n = ["Babel (>=0.8)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "jmespath" version = "0.9.5" @@ -379,6 +544,11 @@ category = "main" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "locust" version = "1.0.3" @@ -398,6 +568,11 @@ psutil = ">=5.6.7" pyzmq = ">=16.0.2" requests = ">=2.9.1" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "loguru" version = "0.4.1" @@ -414,6 +589,11 @@ win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} [package.extras] dev = ["codecov (>=2.0.15)", "colorama (>=0.3.4)", "flake8 (>=3.7.7)", "isort (>=4.3.20)", "tox (>=3.9.0)", "tox-travis (>=0.12)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "Sphinx (>=2.2.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "black (>=19.3b0)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "markupsafe" version = "1.1.1" @@ -422,6 +602,11 @@ category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "more-itertools" version = "8.4.0" @@ -430,6 +615,11 @@ category = "main" optional = false python-versions = ">=3.5" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "msgpack" version = "1.0.0" @@ -438,6 +628,11 @@ category = "main" optional = true python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "packaging" version = "20.4" @@ -450,6 +645,11 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" pyparsing = ">=2.0.2" six = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "pathspec" version = "0.8.0" @@ -458,6 +658,11 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "pluggy" version = "0.13.1" @@ -472,6 +677,11 @@ importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} [package.extras] dev = ["pre-commit", "tox"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "psutil" version = "5.7.0" @@ -480,16 +690,23 @@ category = "main" optional = true python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -[package.extras] -enum = ["enum34"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" [[package]] name = "py" -version = "1.8.2" +version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" [[package]] name = "pycparser" @@ -499,6 +716,11 @@ category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "pydantic" version = "1.8.2" @@ -515,6 +737,11 @@ typing-extensions = ">=3.7.4.3" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "pyparsing" version = "2.4.7" @@ -523,6 +750,11 @@ category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "pytest" version = "5.4.3" @@ -546,6 +778,11 @@ wcwidth = "*" checkqa-mypy = ["mypy (==v0.761)"] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "pytest-html" version = "2.1.1" @@ -558,6 +795,11 @@ python-versions = ">=3.6" pytest = ">=5.0" pytest-metadata = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "pytest-metadata" version = "1.9.0" @@ -569,13 +811,23 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [package.dependencies] pytest = ">=2.9.0" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "pyyaml" -version = "5.3.1" +version = "5.4.1" description = "YAML parser and emitter for Python" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" [[package]] name = "pyzmq" @@ -585,6 +837,11 @@ category = "main" optional = true python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "regex" version = "2020.6.8" @@ -593,6 +850,11 @@ category = "main" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "requests" version = "2.24.0" @@ -611,6 +873,11 @@ urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "requests-toolbelt" version = "0.9.1" @@ -622,6 +889,11 @@ python-versions = "*" [package.dependencies] requests = ">=2.0.1,<3.0.0" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "sentry-sdk" version = "0.14.4" @@ -648,6 +920,11 @@ sanic = ["sanic (>=0.8)"] sqlalchemy = ["sqlalchemy (>=1.2)"] tornado = ["tornado (>=5)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "six" version = "1.15.0" @@ -656,6 +933,11 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "sniffio" version = "1.2.0" @@ -667,6 +949,11 @@ python-versions = ">=3.5" [package.dependencies] contextvars = {version = ">=2.1", markers = "python_version < \"3.7\""} +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "starlette" version = "0.16.0" @@ -683,6 +970,11 @@ typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "graphene"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "toml" version = "0.10.1" @@ -691,6 +983,11 @@ category = "main" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "typed-ast" version = "1.4.1" @@ -699,6 +996,11 @@ category = "main" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "typing-extensions" version = "4.0.0" @@ -707,9 +1009,14 @@ category = "main" optional = false python-versions = ">=3.6" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "urllib3" -version = "1.25.9" +version = "1.25.11" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false @@ -717,12 +1024,17 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] brotli = ["brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "uvicorn" -version = "0.11.5" +version = "0.11.8" description = "The lightning-fast ASGI server." category = "dev" optional = false @@ -738,6 +1050,11 @@ websockets = ">=8.0.0,<9.0.0" [package.extras] watchgodreload = ["watchgod (>=0.6,<0.7)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "uvloop" version = "0.14.0" @@ -746,6 +1063,11 @@ category = "dev" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "wcwidth" version = "0.2.4" @@ -754,13 +1076,23 @@ category = "main" optional = false python-versions = "*" +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "websockets" -version = "8.0.2" +version = "8.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.1" + +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" [[package]] name = "werkzeug" @@ -774,6 +1106,11 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" dev = ["pytest", "pytest-timeout", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"] watchdog = ["watchdog"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "win32-setctime" version = "1.0.1" @@ -785,6 +1122,11 @@ python-versions = ">=3.5" [package.extras] dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "zipp" version = "3.1.0" @@ -797,6 +1139,11 @@ python-versions = ">=3.6" docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] testing = ["jaraco.itertools", "func-timeout"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "zope.event" version = "4.4" @@ -809,6 +1156,11 @@ python-versions = "*" docs = ["sphinx"] test = ["zope.testrunner"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "zope.interface" version = "5.1.0" @@ -822,6 +1174,11 @@ docs = ["sphinx", "repoze.sphinx.autointerface"] test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [extras] allure = ["allure-pytest"] locust = ["locust"] @@ -830,7 +1187,7 @@ upload = ["requests-toolbelt", "filetype"] [metadata] lock-version = "1.1" python-versions = "^3.6.2" -content-hash = "59362cb9a448bd918f9ef439550a0f951e2a9790302b34022fed2630864ec15b" +content-hash = "368d778067f007f488ca1e3ca4932bc89cd67ebf6ca91ec3f2dd495faecbd678" [metadata.files] aiocontextvars = [ @@ -872,6 +1229,13 @@ brotli = [ {file = "Brotli-1.0.9-cp27-cp27m-win32.whl", hash = "sha256:afde17ae04d90fbe53afb628f7f2d4ca022797aa093e809de5c3cf276f61bbfa"}, {file = "Brotli-1.0.9-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7cb81373984cc0e4682f31bc3d6be9026006d96eecd07ea49aafb06897746452"}, {file = "Brotli-1.0.9-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:db844eb158a87ccab83e868a762ea8024ae27337fc7ddcbfcddd157f841fdfe7"}, + {file = "Brotli-1.0.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9744a863b489c79a73aba014df554b0e7a0fc44ef3f8a0ef2a52919c7d155031"}, + {file = "Brotli-1.0.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a72661af47119a80d82fa583b554095308d6a4c356b2a554fdc2799bc19f2a43"}, + {file = "Brotli-1.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ee83d3e3a024a9618e5be64648d6d11c37047ac48adff25f12fa4226cf23d1c"}, + {file = "Brotli-1.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:19598ecddd8a212aedb1ffa15763dd52a388518c4550e615aed88dc3753c0f0c"}, + {file = "Brotli-1.0.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:44bb8ff420c1d19d91d79d8c3574b8954288bdff0273bf788954064d260d7ab0"}, + {file = "Brotli-1.0.9-cp310-cp310-win32.whl", hash = "sha256:26d168aac4aaec9a4394221240e8a5436b5634adc3cd1cdf637f6645cecbf181"}, + {file = "Brotli-1.0.9-cp310-cp310-win_amd64.whl", hash = "sha256:622a231b08899c864eb87e85f81c75e7b9ce05b001e59bbfbf43d4a71f5f32b2"}, {file = "Brotli-1.0.9-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:c83aa123d56f2e060644427a882a36b3c12db93727ad7a7b9efd7d7f3e9cc2c4"}, {file = "Brotli-1.0.9-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:6b2ae9f5f67f89aade1fab0f7fd8f2832501311c363a21579d02defa844d9296"}, {file = "Brotli-1.0.9-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:68715970f16b6e92c574c30747c95cf8cf62804569647386ff032195dc89a430"}, @@ -880,23 +1244,31 @@ brotli = [ {file = "Brotli-1.0.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:503fa6af7da9f4b5780bb7e4cbe0c639b010f12be85d02c99452825dd0feef3f"}, {file = "Brotli-1.0.9-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:40d15c79f42e0a2c72892bf407979febd9cf91f36f495ffb333d1d04cebb34e4"}, {file = "Brotli-1.0.9-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:93130612b837103e15ac3f9cbacb4613f9e348b58b3aad53721d92e57f96d46a"}, + {file = "Brotli-1.0.9-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87fdccbb6bb589095f413b1e05734ba492c962b4a45a13ff3408fa44ffe6479b"}, {file = "Brotli-1.0.9-cp36-cp36m-win32.whl", hash = "sha256:61a7ee1f13ab913897dac7da44a73c6d44d48a4adff42a5701e3239791c96e14"}, {file = "Brotli-1.0.9-cp36-cp36m-win_amd64.whl", hash = "sha256:1c48472a6ba3b113452355b9af0a60da5c2ae60477f8feda8346f8fd48e3e87c"}, {file = "Brotli-1.0.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b78a24b5fd13c03ee2b7b86290ed20efdc95da75a3557cc06811764d5ad1126"}, {file = "Brotli-1.0.9-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:9d12cf2851759b8de8ca5fde36a59c08210a97ffca0eb94c532ce7b17c6a3d1d"}, {file = "Brotli-1.0.9-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6c772d6c0a79ac0f414a9f8947cc407e119b8598de7621f39cacadae3cf57d12"}, + {file = "Brotli-1.0.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29d1d350178e5225397e28ea1b7aca3648fcbab546d20e7475805437bfb0a130"}, {file = "Brotli-1.0.9-cp37-cp37m-win32.whl", hash = "sha256:f909bbbc433048b499cb9db9e713b5d8d949e8c109a2a548502fb9aa8630f0b1"}, {file = "Brotli-1.0.9-cp37-cp37m-win_amd64.whl", hash = "sha256:97f715cf371b16ac88b8c19da00029804e20e25f30d80203417255d239f228b5"}, + {file = "Brotli-1.0.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e16eb9541f3dd1a3e92b89005e37b1257b157b7256df0e36bd7b33b50be73bcb"}, {file = "Brotli-1.0.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:160c78292e98d21e73a4cc7f76a234390e516afcd982fa17e1422f7c6a9ce9c8"}, {file = "Brotli-1.0.9-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b663f1e02de5d0573610756398e44c130add0eb9a3fc912a09665332942a2efb"}, {file = "Brotli-1.0.9-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5b6ef7d9f9c38292df3690fe3e302b5b530999fa90014853dcd0d6902fb59f26"}, + {file = "Brotli-1.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a674ac10e0a87b683f4fa2b6fa41090edfd686a6524bd8dedbd6138b309175c"}, {file = "Brotli-1.0.9-cp38-cp38-win32.whl", hash = "sha256:35a3edbe18e876e596553c4007a087f8bcfd538f19bc116917b3c7522fca0429"}, {file = "Brotli-1.0.9-cp38-cp38-win_amd64.whl", hash = "sha256:269a5743a393c65db46a7bb982644c67ecba4b8d91b392403ad8a861ba6f495f"}, + {file = "Brotli-1.0.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2aad0e0baa04517741c9bb5b07586c642302e5fb3e75319cb62087bd0995ab19"}, {file = "Brotli-1.0.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5cb1e18167792d7d21e21365d7650b72d5081ed476123ff7b8cac7f45189c0c7"}, {file = "Brotli-1.0.9-cp39-cp39-manylinux1_i686.whl", hash = "sha256:16d528a45c2e1909c2798f27f7bf0a3feec1dc9e50948e738b961618e38b6a7b"}, {file = "Brotli-1.0.9-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:56d027eace784738457437df7331965473f2c0da2c70e1a1f6fdbae5402e0389"}, + {file = "Brotli-1.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bf919756d25e4114ace16a8ce91eb340eb57a08e2c6950c3cebcbe3dff2a5e7"}, {file = "Brotli-1.0.9-cp39-cp39-win32.whl", hash = "sha256:cfc391f4429ee0a9370aa93d812a52e1fee0f37a81861f4fdd1f4fb28e8547c3"}, {file = "Brotli-1.0.9-cp39-cp39-win_amd64.whl", hash = "sha256:854c33dad5ba0fbd6ab69185fec8dab89e13cda6b7d191ba111987df74f38761"}, + {file = "Brotli-1.0.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9749a124280a0ada4187a6cfd1ffd35c350fb3af79c706589d98e088c5044267"}, + {file = "Brotli-1.0.9-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:76ffebb907bec09ff511bb3acc077695e2c32bc2142819491579a695f77ffd4d"}, {file = "Brotli-1.0.9.zip", hash = "sha256:4d1b810aa0ed773f81dceda2cc7b403d01057458730e309856356d4ef4188438"}, ] certifi = [ @@ -1150,8 +1522,8 @@ itsdangerous = [ {file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"}, ] jinja2 = [ - {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"}, - {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"}, + {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"}, + {file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"}, ] jmespath = [ {file = "jmespath-0.9.5-py2.py3-none-any.whl", hash = "sha256:695cb76fa78a10663425d5b73ddc5714eb711157e52704d69be03b1a02ba4fec"}, @@ -1184,15 +1556,39 @@ markupsafe = [ {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8"}, {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, ] more-itertools = [ @@ -1245,8 +1641,8 @@ psutil = [ {file = "psutil-5.7.0.tar.gz", hash = "sha256:685ec16ca14d079455892f25bd124df26ff9137664af445563c1bd36629b5e0e"}, ] py = [ - {file = "py-1.8.2-py2.py3-none-any.whl", hash = "sha256:a673fa23d7000440cc885c17dbd34fafcb7d7a6e230b29f6766400de36a33c44"}, - {file = "py-1.8.2.tar.gz", hash = "sha256:f3b3a4c36512a4c4f024041ab51866f11761cc169670204b235f6b20523d4e6b"}, + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] pycparser = [ {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"}, @@ -1293,17 +1689,35 @@ pytest-metadata = [ {file = "pytest_metadata-1.9.0-py2.py3-none-any.whl", hash = "sha256:91d09c0e367e93c63c98461e9960833f465bff53d00ed2f8ccf680205e5053a4"}, ] pyyaml = [ - {file = "PyYAML-5.3.1-cp27-cp27m-win32.whl", hash = "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f"}, - {file = "PyYAML-5.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76"}, - {file = "PyYAML-5.3.1-cp35-cp35m-win32.whl", hash = "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2"}, - {file = "PyYAML-5.3.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c"}, - {file = "PyYAML-5.3.1-cp36-cp36m-win32.whl", hash = "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2"}, - {file = "PyYAML-5.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648"}, - {file = "PyYAML-5.3.1-cp37-cp37m-win32.whl", hash = "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"}, - {file = "PyYAML-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf"}, - {file = "PyYAML-5.3.1-cp38-cp38-win32.whl", hash = "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97"}, - {file = "PyYAML-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee"}, - {file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"}, + {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, + {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"}, + {file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"}, + {file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"}, + {file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"}, + {file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"}, + {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347"}, + {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541"}, + {file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"}, + {file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"}, + {file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"}, + {file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"}, + {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa"}, + {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"}, + {file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"}, + {file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"}, + {file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"}, + {file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"}, + {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247"}, + {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc"}, + {file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"}, + {file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"}, + {file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"}, + {file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"}, + {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122"}, + {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6"}, + {file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"}, + {file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"}, + {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, ] pyzmq = [ {file = "pyzmq-19.0.1-cp27-cp27m-macosx_10_9_intel.whl", hash = "sha256:58688a2dfa044fad608a8e70ba8d019d0b872ec2acd75b7b5e37da8905605891"}, @@ -1394,31 +1808,40 @@ typed-ast = [ {file = "typed_ast-1.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75"}, {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652"}, {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7"}, + {file = "typed_ast-1.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:fcf135e17cc74dbfbc05894ebca928ffeb23d9790b3167a674921db19082401f"}, {file = "typed_ast-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1"}, {file = "typed_ast-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa"}, {file = "typed_ast-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614"}, {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41"}, {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b"}, + {file = "typed_ast-1.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:f208eb7aff048f6bea9586e61af041ddf7f9ade7caed625742af423f6bae3298"}, {file = "typed_ast-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe"}, {file = "typed_ast-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355"}, {file = "typed_ast-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6"}, {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907"}, {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d"}, + {file = "typed_ast-1.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7e4c9d7658aaa1fc80018593abdf8598bf91325af6af5cce4ce7c73bc45ea53d"}, {file = "typed_ast-1.4.1-cp38-cp38-win32.whl", hash = "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c"}, {file = "typed_ast-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4"}, {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34"}, + {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:92c325624e304ebf0e025d1224b77dd4e6393f18aab8d829b5b7e04afe9b7a2c"}, + {file = "typed_ast-1.4.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d648b8e3bf2fe648745c8ffcee3db3ff903d0817a01a12dd6a6ea7a8f4889072"}, + {file = "typed_ast-1.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fac11badff8313e23717f3dada86a15389d0708275bddf766cca67a84ead3e91"}, + {file = "typed_ast-1.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:0d8110d78a5736e16e26213114a38ca35cb15b6515d535413b090bd50951556d"}, + {file = "typed_ast-1.4.1-cp39-cp39-win32.whl", hash = "sha256:b52ccf7cfe4ce2a1064b18594381bccf4179c2ecf7f513134ec2f993dd4ab395"}, + {file = "typed_ast-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:3742b32cf1c6ef124d57f95be609c473d7ec4c14d0090e5a5e05a15269fb4d0c"}, {file = "typed_ast-1.4.1.tar.gz", hash = "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b"}, ] typing-extensions = [ {file = "typing_extensions-4.0.0-py3-none-any.whl", hash = "sha256:829704698b22e13ec9eaf959122315eabb370b0884400e9818334d8b677023d9"}, ] urllib3 = [ - {file = "urllib3-1.25.9-py2.py3-none-any.whl", hash = "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"}, - {file = "urllib3-1.25.9.tar.gz", hash = "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527"}, + {file = "urllib3-1.25.11-py2.py3-none-any.whl", hash = "sha256:f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e"}, + {file = "urllib3-1.25.11.tar.gz", hash = "sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2"}, ] uvicorn = [ - {file = "uvicorn-0.11.5-py3-none-any.whl", hash = "sha256:50577d599775dac2301bac8bd5b540d19a9560144143c5bdab13cba92783b6e7"}, - {file = "uvicorn-0.11.5.tar.gz", hash = "sha256:596eaa8645b6dbc24d6610e335f8ddf5f925b4c4b86fdc7146abb0bf0da65d17"}, + {file = "uvicorn-0.11.8-py3-none-any.whl", hash = "sha256:4b70ddb4c1946e39db9f3082d53e323dfd50634b95fd83625d778729ef1730ef"}, + {file = "uvicorn-0.11.8.tar.gz", hash = "sha256:46a83e371f37ea7ff29577d00015f02c942410288fb57def6440f2653fff1d26"}, ] uvloop = [ {file = "uvloop-0.14.0-cp35-cp35m-macosx_10_11_x86_64.whl", hash = "sha256:08b109f0213af392150e2fe6f81d33261bb5ce968a288eb698aad4f46eb711bd"}, @@ -1436,17 +1859,28 @@ wcwidth = [ {file = "wcwidth-0.2.4.tar.gz", hash = "sha256:8c6b5b6ee1360b842645f336d9e5d68c55817c26d3050f46b235ef2bc650e48f"}, ] websockets = [ - {file = "websockets-8.0.2-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:e906128532a14b9d264a43eb48f9b3080d53a9bda819ab45bf56b8039dc606ac"}, - {file = "websockets-8.0.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:83e63aa73331b9ca21af61df8f115fb5fbcba3f281bee650a4ad16a40cd1ef15"}, - {file = "websockets-8.0.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e9102043a81cdc8b7c8032ff4bce39f6229e4ac39cb2010946c912eeb84e2cb6"}, - {file = "websockets-8.0.2-cp36-cp36m-win32.whl", hash = "sha256:8d7a20a2f97f1e98c765651d9fb9437201a9ccc2c70e94b0270f1c5ef29667a3"}, - {file = "websockets-8.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:c82e286555f839846ef4f0fdd6910769a577952e1e26aa8ee7a6f45f040e3c2b"}, - {file = "websockets-8.0.2-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:73ce69217e4655783ec72ce11c151053fcbd5b837cc39de7999e19605182e28a"}, - {file = "websockets-8.0.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:8c77f7d182a6ea2a9d09c2612059f3ad859a90243e899617137ee3f6b7f2b584"}, - {file = "websockets-8.0.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:a7affaeffbc5d55681934c16bb6b8fc82bb75b175e7fd4dcca798c938bde8dda"}, - {file = "websockets-8.0.2-cp37-cp37m-win32.whl", hash = "sha256:f5cb2683367e32da6a256b60929a3af9c29c212b5091cf5bace9358d03011bf5"}, - {file = "websockets-8.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:049e694abe33f8a1d99969fee7bfc0ae6761f7fd5f297c58ea933b27dd6805f2"}, - {file = "websockets-8.0.2.tar.gz", hash = "sha256:882a7266fa867a2ebb2c0baaa0f9159cabf131cf18c1b4270d79ad42f9208dc5"}, + {file = "websockets-8.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c"}, + {file = "websockets-8.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170"}, + {file = "websockets-8.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4f9f7d28ce1d8f1295717c2c25b732c2bc0645db3215cf757551c392177d7cb8"}, + {file = "websockets-8.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:295359a2cc78736737dd88c343cd0747546b2174b5e1adc223824bcaf3e164cb"}, + {file = "websockets-8.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:1d3f1bf059d04a4e0eb4985a887d49195e15ebabc42364f4eb564b1d065793f5"}, + {file = "websockets-8.1-cp36-cp36m-win32.whl", hash = "sha256:2db62a9142e88535038a6bcfea70ef9447696ea77891aebb730a333a51ed559a"}, + {file = "websockets-8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:0e4fb4de42701340bd2353bb2eee45314651caa6ccee80dbd5f5d5978888fed5"}, + {file = "websockets-8.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:9b248ba3dd8a03b1a10b19efe7d4f7fa41d158fdaa95e2cf65af5a7b95a4f989"}, + {file = "websockets-8.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ce85b06a10fc65e6143518b96d3dca27b081a740bae261c2fb20375801a9d56d"}, + {file = "websockets-8.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:965889d9f0e2a75edd81a07592d0ced54daa5b0785f57dc429c378edbcffe779"}, + {file = "websockets-8.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:751a556205d8245ff94aeef23546a1113b1dd4f6e4d102ded66c39b99c2ce6c8"}, + {file = "websockets-8.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:3ef56fcc7b1ff90de46ccd5a687bbd13a3180132268c4254fc0fa44ecf4fc422"}, + {file = "websockets-8.1-cp37-cp37m-win32.whl", hash = "sha256:7ff46d441db78241f4c6c27b3868c9ae71473fe03341340d2dfdbe8d79310acc"}, + {file = "websockets-8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:20891f0dddade307ffddf593c733a3fdb6b83e6f9eef85908113e628fa5a8308"}, + {file = "websockets-8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c1ec8db4fac31850286b7cd3b9c0e1b944204668b8eb721674916d4e28744092"}, + {file = "websockets-8.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:5c01fd846263a75bc8a2b9542606927cfad57e7282965d96b93c387622487485"}, + {file = "websockets-8.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9bef37ee224e104a413f0780e29adb3e514a5b698aabe0d969a6ba426b8435d1"}, + {file = "websockets-8.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d705f8aeecdf3262379644e4b55107a3b55860eb812b673b28d0fbc347a60c55"}, + {file = "websockets-8.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:c8a116feafdb1f84607cb3b14aa1418424ae71fee131642fc568d21423b51824"}, + {file = "websockets-8.1-cp38-cp38-win32.whl", hash = "sha256:e898a0863421650f0bebac8ba40840fc02258ef4714cb7e1fd76b6a6354bda36"}, + {file = "websockets-8.1-cp38-cp38-win_amd64.whl", hash = "sha256:f8a7bff6e8664afc4e6c28b983845c5bc14965030e3fb98789734d416af77c4b"}, + {file = "websockets-8.1.tar.gz", hash = "sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f"}, ] werkzeug = [ {file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"}, diff --git a/pyproject.toml b/pyproject.toml index c3fa761a..5201c3b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ include = ["docs/CHANGELOG.md"] [tool.poetry.dependencies] python = "^3.6.2" requests = "^2.22.0" -pyyaml = "^5.1.2" +pyyaml = "^5.4.1" jinja2 = "^2.10.3" pydantic = "^1.4" loguru = "^0.4.1" @@ -65,3 +65,7 @@ locusts = "httprunner.ext.locust:main_locusts" [build-system] requires = ["poetry>=1.0.0"] build-backend = "poetry.masonry.api" + +[[tool.poetry.source]] +name = "tsinghua" +url = "https://pypi.tuna.tsinghua.edu.cn/simple/" From 08b897ffa2e94114dfb972e783d62ac0d8a5f088 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Thu, 18 Nov 2021 16:17:59 +0800 Subject: [PATCH 06/27] change: move README to docs --- README.md => docs/README.md | 28 ++++++++++----------- docs/index.md | 49 ------------------------------------- docs/sponsors.md | 4 +-- mkdocs.yml | 5 +++- 4 files changed, 20 insertions(+), 66 deletions(-) rename README.md => docs/README.md (68%) delete mode 100644 docs/index.md diff --git a/README.md b/docs/README.md similarity index 68% rename from README.md rename to docs/README.md index 88957ff7..9975c04c 100644 --- a/README.md +++ b/docs/README.md @@ -21,24 +21,24 @@ ## Key Features -- Inherit all powerful features of [`requests`][requests], just have fun to handle HTTP(S) in human way. -- Define testcase in YAML or JSON format, run with [`pytest`][pytest] in concise and elegant manner. -- Record and generate testcases with [`HAR`][HAR] support. -- Supports `variables`/`extract`/`validate`/`hooks` mechanisms to create extremely complex test scenarios. -- With `debugtalk.py` plugin, any function can be used in any part of your testcase. -- With [`jmespath`][jmespath], extract and validate json response has never been easier. -- With [`pytest`][pytest], hundreds of plugins are readily available. -- With [`allure`][allure], test report can be pretty nice and powerful. -- With reuse of [`locust`][locust], you can run performance test without extra work. -- CLI command supported, perfect combination with `CI/CD`. +- [x] Inherit all powerful features of [`requests`][requests], just have fun to handle HTTP(S) in human way. +- [x] Define testcase in YAML or JSON format, run with [`pytest`][pytest] in concise and elegant manner. +- [x] Record and generate testcases with [`HAR`][HAR] support. +- [x] Supports `variables`/`extract`/`validate`/`hooks` mechanisms to create extremely complex test scenarios. +- [x] With `debugtalk.py` plugin, any function can be used in any part of your testcase. +- [x] With [`jmespath`][jmespath], extract and validate json response has never been easier. +- [x] With [`pytest`][pytest], hundreds of plugins are readily available. +- [x] With [`allure`][allure], test report can be pretty nice and powerful. +- [x] With reuse of [`locust`][locust], you can run performance test without extra work. +- [x] CLI command supported, perfect combination with `CI/CD`. ## Sponsors -Thank you to all our sponsors! ✨🍰✨ ([become a sponsor](docs/sponsors.md)) +Thank you to all our sponsors! ✨🍰✨ ([become a sponsor](sponsors.md)) ### 金牌赞助商(Gold Sponsor) -[霍格沃兹测试学院](https://ceshiren.com/) +[霍格沃兹测试开发学社](https://ceshiren.com/) > [霍格沃兹测试开发学社](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com)是业界领先的测试开发技术高端教育品牌,隶属于[测吧(北京)科技有限公司](http://qrcode.testing-studio.com/f?from=httprunner&url=https://www.testing-studio.com) 。学院课程由一线大厂测试经理与资深测试开发专家参与研发,实战驱动。课程涵盖 web/app 自动化测试、接口测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移&右移、精准测试、测试平台开发、测试管理等内容,帮助测试工程师实现测试开发技术转型。通过优秀的学社制度(奖学金、内推返学费、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。 @@ -46,7 +46,7 @@ Thank you to all our sponsors! ✨🍰✨ ([become a sponsor](docs/sponsors.md)) ### 开源服务赞助商(Open Source Sponsor) -[Sentry](https://sentry.io/_/open-source/) +[Sentry](https://sentry.io/_/open-source/) HttpRunner is in Sentry Sponsored plan. @@ -54,7 +54,7 @@ HttpRunner is in Sentry Sponsored plan. 关注 HttpRunner 的微信公众号,第一时间获得最新资讯。 -![](docs/assets/qrcode.jpg) +HttpRunner [requests]: http://docs.python-requests.org/en/master/ [pytest]: https://docs.pytest.org/ diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index fabb9740..00000000 --- a/docs/index.md +++ /dev/null @@ -1,49 +0,0 @@ - -# HttpRunner - -[![downloads](https://pepy.tech/badge/httprunner)](https://pepy.tech/project/httprunner) -[![unittest](https://github.com/httprunner/httprunner/workflows/unittest/badge.svg -)](https://github.com/httprunner/httprunner/actions) -[![integration-test](https://github.com/httprunner/httprunner/workflows/integration_test/badge.svg -)](https://github.com/httprunner/httprunner/actions) -[![codecov](https://codecov.io/gh/httprunner/httprunner/branch/master/graph/badge.svg)](https://codecov.io/gh/httprunner/httprunner) -[![pypi version](https://img.shields.io/pypi/v/httprunner.svg)](https://pypi.python.org/pypi/httprunner) -[![pyversions](https://img.shields.io/pypi/pyversions/httprunner.svg)](https://pypi.python.org/pypi/httprunner) -[![TesterHome](https://img.shields.io/badge/TTF-TesterHome-2955C5.svg)](https://testerhome.com/github_statistics) - -*HttpRunner* is a simple & elegant, yet powerful HTTP(S) testing framework. Enjoy! ✨ 🚀 ✨ - -> This docs site is corresponding to the latest version `3.x`, for `2.x` you can reference [`archive link`](https://v2.httprunner.org/). - -## Design Philosophy - -- Convention over configuration -- ROI matters -- Embrace open source, leverage [`requests`][requests], [`pytest`][pytest], [`pydantic`][pydantic], [`allure`][allure] and [`locust`][locust]. - -## Key Features - -- Inherit all powerful features of [`requests`][requests], just have fun to handle HTTP(S) in human way. -- Define testcase in YAML or JSON format, run with [`pytest`][pytest] in concise and elegant manner. -- Record and generate testcases with [`HAR`][HAR] support. -- Supports `variables`/`extract`/`validate`/`hooks` mechanisms to create extremely complex test scenarios. -- With `debugtalk.py` plugin, any function can be used in any part of your testcase. -- With [`jmespath`][jmespath], extract and validate json response has never been easier. -- With [`pytest`][pytest], hundreds of plugins are readily available. -- With [`allure`][allure], test report can be pretty nice and powerful. -- With reuse of [`locust`][locust], you can run performance test without extra work. -- CLI command supported, perfect combination with `CI/CD`. - -## Subscribe - -关注 HttpRunner 的微信公众号,第一时间获得最新资讯。 - -![](/assets/qrcode.jpg) - -[requests]: http://docs.python-requests.org/en/master/ -[pytest]: https://docs.pytest.org/ -[pydantic]: https://pydantic-docs.helpmanual.io/ -[locust]: http://locust.io/ -[jmespath]: https://jmespath.org/ -[allure]: https://docs.qameta.io/allure/ -[HAR]: http://httparchive.org/ diff --git a/docs/sponsors.md b/docs/sponsors.md index de7881f8..0589e271 100644 --- a/docs/sponsors.md +++ b/docs/sponsors.md @@ -4,7 +4,7 @@ ## 金牌赞助商(Gold Sponsor) -[霍格沃兹测试学院](https://ceshiren.com/) +[霍格沃兹测试开发学社](https://ceshiren.com/) > [霍格沃兹测试开发学社](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com)是业界领先的测试开发技术高端教育品牌,隶属于[测吧(北京)科技有限公司](http://qrcode.testing-studio.com/f?from=httprunner&url=https://www.testing-studio.com) 。学院课程由一线大厂测试经理与资深测试开发专家参与研发,实战驱动。课程涵盖 web/app 自动化测试、接口测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移&右移、精准测试、测试平台开发、测试管理等内容,帮助测试工程师实现测试开发技术转型。通过优秀的学社制度(奖学金、内推返学费、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。 @@ -23,4 +23,4 @@ HttpRunner is in Sentry Sponsored plan. | 等级 | 金牌赞助商
(Gold Sponsor) | 银牌赞助商
(Silver Sponsor)| 个人赞赏 | |:---:|:---:|:---:|:---:| | 金额 | ¥20000/年 | ¥8000/年 | 任意 | -| 权益 | 公司 logo(大)和链接展示在 README.md
150 字的宣传文案 | 公司 logo(中)和链接展示在 README.md
50 字的宣传文案| 个人 ID 和链接展示在 sponsors.md | +| 权益 | 公司 logo(大)和链接展示在 README.md
200 字的宣传文案 | 公司 logo(中)和链接展示在 README.md
80 字的宣传文案| 个人 ID 和链接展示在 sponsors.md | diff --git a/mkdocs.yml b/mkdocs.yml index c1c53eaa..bd7817d2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -42,6 +42,9 @@ markdown_extensions: guess_lang: false - toc: permalink: true + - def_list + - pymdownx.tasklist: + custom_checkbox: true # extra extra: @@ -55,7 +58,7 @@ extra: # index pages nav: - - Introduction: index.md + - README: README.md - Installation: installation.md - User Guide: - Concepts: user/concepts.md From 13217b137e7aa8c0bcb20d669f07a0a93b1cd26e Mon Sep 17 00:00:00 2001 From: taojian Date: Wed, 24 Nov 2021 14:35:51 +0800 Subject: [PATCH 07/27] fix: pyyaml 6.0 deprecated load without loader --- httprunner/loader.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/httprunner/loader.py b/httprunner/loader.py index afaae632..f79c123f 100644 --- a/httprunner/loader.py +++ b/httprunner/loader.py @@ -9,18 +9,12 @@ from typing import Tuple, Dict, Union, Text, List, Callable import yaml from loguru import logger from pydantic import ValidationError +from yaml.loader import FullLoader from httprunner import builtin, utils from httprunner import exceptions from httprunner.models import TestCase, ProjectMeta, TestSuite -try: - # PyYAML version >= 5.1 - # ref: https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation - yaml.warnings({"YAMLLoadWarning": False}) -except AttributeError: - pass - project_meta: Union[ProjectMeta, None] = None @@ -30,7 +24,7 @@ def _load_yaml_file(yaml_file: Text) -> Dict: """ with open(yaml_file, mode="rb") as stream: try: - yaml_content = yaml.load(stream) + yaml_content = yaml.load(stream, loader=FullLoader) except yaml.YAMLError as ex: err_msg = f"YAMLError:\nfile: {yaml_file}\nerror: {ex}" logger.error(err_msg) From a5b95efd1e545976803c18f5abaeaffabec02b72 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Tue, 28 Dec 2021 14:53:32 +0800 Subject: [PATCH 08/27] change: update docs --- docs/installation.md | 2 +- mkdocs.yml | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index e3d9a884..189acc85 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -15,7 +15,7 @@ If you want to keep up with the latest version, you can install with github repo $ pip3 install git+https://github.com/httprunner/httprunner.git@master ``` -If you have installed `HttpRunner` before and want to upgrade to the latest version, you can use the `-U` option. +If you have installed `HttpRunner` before and want to upgrade to the latest version, you can use the `-U` option. ```bash $ pip3 install -U httprunner diff --git a/mkdocs.yml b/mkdocs.yml index bd7817d2..dad25f14 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,6 +1,5 @@ -# install mkdocs -# $ pip install mkdocs # 1.1.2 -# $ pip install mkdocs-material # 5.2.2 +# install mkdocs and material design +# $ pip install mkdocs-material # usage # $ mkdocs serve # build docs and preview @@ -30,11 +29,6 @@ theme: text: 'Roboto' code: 'Roboto Mono' -# Google Analytics -google_analytics: - - 'UA-114587036-3' - - 'auto' - # Extensions markdown_extensions: - admonition @@ -55,6 +49,9 @@ extra: link: https://debugtalk.com - icon: fontawesome/brands/github-alt link: 'https://github.com/httprunner' + analytics: + provider: google # Google Analytics + property: UA-114587036-3 # index pages nav: From b2feafdb37ea96affd1c2e8cf11b42869ea666a2 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Tue, 28 Dec 2021 14:58:22 +0800 Subject: [PATCH 09/27] fix: flake8 --- httprunner/loader.py | 2 +- httprunner/make.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/httprunner/loader.py b/httprunner/loader.py index afaae632..74cacad6 100644 --- a/httprunner/loader.py +++ b/httprunner/loader.py @@ -450,4 +450,4 @@ def convert_relative_project_root_dir(abs_path: Text) -> Text: f"project_meta.RootDir: {_project_meta.RootDir}" ) - return abs_path[len(_project_meta.RootDir) + 1 :] + return abs_path[len(_project_meta.RootDir) + 1:] diff --git a/httprunner/make.py b/httprunner/make.py index 637e3de9..f644a421 100644 --- a/httprunner/make.py +++ b/httprunner/make.py @@ -80,10 +80,10 @@ if __name__ == "__main__": def __ensure_absolute(path: Text) -> Text: if path.startswith("./"): # Linux/Darwin, hrun ./test.yml - path = path[len("./") :] + path = path[len("./"):] elif path.startswith(".\\"): # Windows, hrun .\\test.yml - path = path[len(".\\") :] + path = path[len(".\\"):] path = ensure_path_sep(path) project_meta = load_project_meta(path) @@ -173,7 +173,7 @@ def format_pytest_with_black(*python_paths: Text) -> NoReturn: subprocess.run(["black", *python_paths]) else: logger.warning( - f"this system does not support multiprocessing well, format files one by one ..." + "this system does not support multiprocessing well, format files one by one ..." ) [subprocess.run(["black", path]) for path in python_paths] except subprocess.CalledProcessError as ex: From 548bb3855fbda7439bdbe89c93e404eef4812a62 Mon Sep 17 00:00:00 2001 From: lan Date: Tue, 18 Jan 2022 17:31:12 +0800 Subject: [PATCH 10/27] HTTPS:'WrappedSocket' object has no attribute 'getsockname' and 'getpeername' --- httprunner/client.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/httprunner/client.py b/httprunner/client.py index 71f228f9..841ba1f2 100644 --- a/httprunner/client.py +++ b/httprunner/client.py @@ -181,19 +181,19 @@ class HttpSession(requests.Session): try: client_ip, client_port = response.raw.connection.sock.getsockname() - self.data.address.client_ip = client_ip - self.data.address.client_port = client_port - logger.debug(f"client IP: {client_ip}, Port: {client_port}") - except AttributeError as ex: - logger.warning(f"failed to get client address info: {ex}") + except AttributeError: + client_ip, client_port = response.raw.connection.sock.socket.getsockname() + self.data.address.client_ip = client_ip + self.data.address.client_port = client_port + logger.debug(f"client IP: {client_ip}, Port: {client_port}") try: server_ip, server_port = response.raw.connection.sock.getpeername() - self.data.address.server_ip = server_ip - self.data.address.server_port = server_port - logger.debug(f"server IP: {server_ip}, Port: {server_port}") - except AttributeError as ex: - logger.warning(f"failed to get server address info: {ex}") + except AttributeError: + server_ip, server_port = response.raw.connection.sock.socket.getpeername() + self.data.address.server_ip = server_ip + self.data.address.server_port = server_port + logger.debug(f"server IP: {server_ip}, Port: {server_port}") # get length of the response content content_size = int(dict(response.headers).get("content-length") or 0) From c5a5ac6ab0a2d59224e87639a3895e57a42ea4e7 Mon Sep 17 00:00:00 2001 From: lan Date: Tue, 18 Jan 2022 17:33:51 +0800 Subject: [PATCH 11/27] .env file ignore blank lines and comments --- httprunner/loader.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/httprunner/loader.py b/httprunner/loader.py index 74cacad6..5b4bc6e4 100644 --- a/httprunner/loader.py +++ b/httprunner/loader.py @@ -130,6 +130,9 @@ def load_dot_env_file(dot_env_path: Text) -> Dict: with open(dot_env_path, mode="rb") as fp: for line in fp: # maxsplit=1 + line = line.strip() + if not len(line) or line.startswith(b"#"): + continue if b"=" in line: variable, value = line.split(b"=", 1) elif b":" in line: From 4db00f6ad5d3d074ceba5ea57f25e824263d8167 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Wed, 9 Feb 2022 20:31:25 +0800 Subject: [PATCH 12/27] change: update docs --- docs/README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 9975c04c..5c784ad7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -13,6 +13,8 @@ *HttpRunner* is a simple & elegant, yet powerful HTTP(S) testing framework. Enjoy! ✨ 🚀 ✨ +> 欢迎参加 HttpRunner [用户调研问卷][survey],你的反馈将帮助 HttpRunner 更好地成长! + ## Design Philosophy - Convention over configuration @@ -56,6 +58,8 @@ HttpRunner is in Sentry Sponsored plan. HttpRunner +如果你期望加入 HttpRunner 核心用户群,请填写[用户调研问卷][survey]并留下你的联系方式,作者将拉你进群。 + [requests]: http://docs.python-requests.org/en/master/ [pytest]: https://docs.pytest.org/ [pydantic]: https://pydantic-docs.helpmanual.io/ @@ -63,5 +67,4 @@ HttpRunner is in Sentry Sponsored plan. [jmespath]: https://jmespath.org/ [allure]: https://docs.qameta.io/allure/ [HAR]: http://httparchive.org/ - - +[survey]: https://wenjuan.feishu.cn/m?t=sVRvigY12Szi-gbbo From 476e2196458eb400d78cfce4e731ade9fcdb93ea Mon Sep 17 00:00:00 2001 From: debugtalk Date: Fri, 11 Feb 2022 23:49:29 +0800 Subject: [PATCH 13/27] change: update survey --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 5c784ad7..6ca9aee0 100644 --- a/docs/README.md +++ b/docs/README.md @@ -67,4 +67,4 @@ HttpRunner is in Sentry Sponsored plan. [jmespath]: https://jmespath.org/ [allure]: https://docs.qameta.io/allure/ [HAR]: http://httparchive.org/ -[survey]: https://wenjuan.feishu.cn/m?t=sVRvigY12Szi-gbbo +[survey]: https://wj.qq.com/s2/9699514/0d19/ From 7de56be499a505f13f3917bc7495f05e44495f41 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 21 Mar 2022 12:08:19 +0800 Subject: [PATCH 14/27] fix #1161: readme path error --- docs/CHANGELOG.md | 8 +++++++- httprunner/__init__.py | 2 +- pyproject.toml | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index cbdb4373..155f1f63 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 3.1.7 (2022-03-21) + +- fix: ignore comments and blank lines when parsing .env file +- fix: failure in getting client and server IP/port when requesting HTTPS +- fix: upgrade dependencies for security + ## 3.1.6 (2021-07-18) **Fixed** @@ -259,7 +265,7 @@ **Added** -- feat: add `make` sub-command to generate python testcases from YAML/JSON +- feat: add `make` sub-command to generate python testcases from YAML/JSON - feat: format generated python testcases with [`black`](https://github.com/psf/black) - test: add postman echo & httpbin as testcase examples diff --git a/httprunner/__init__.py b/httprunner/__init__.py index a08a40bf..d57ef6ff 100644 --- a/httprunner/__init__.py +++ b/httprunner/__init__.py @@ -1,4 +1,4 @@ -__version__ = "3.1.6" +__version__ = "3.1.7" __description__ = "One-stop solution for HTTP(S) testing." # import firstly for monkey patch if needed diff --git a/pyproject.toml b/pyproject.toml index 5201c3b9..fad32185 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,9 @@ [tool.poetry] name = "httprunner" -version = "3.1.6" +version = "3.1.7" description = "One-stop solution for HTTP(S) testing." license = "Apache-2.0" -readme = "README.md" +readme = "docs/README.md" authors = ["debugtalk "] homepage = "https://github.com/httprunner/httprunner" From 70f41c1d497c5f5f0af00d986b8b01e9ecd5f118 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 21 Mar 2022 14:26:44 +0800 Subject: [PATCH 15/27] change: github actions --- .github/workflows/integration_test.yml | 12 +++++------- .github/workflows/unittest.yml | 12 +++++------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml index 79f3f676..2c31624b 100644 --- a/.github/workflows/integration_test.yml +++ b/.github/workflows/integration_test.yml @@ -2,11 +2,8 @@ name: integration_test on: push: - branches: - - dev pull_request: - branches: - - master + types: [synchronize] jobs: integration_test: @@ -16,15 +13,16 @@ jobs: strategy: max-parallel: 6 matrix: - python-version: [3.6, 3.7, 3.8] + python-version: [3.6, 3.7, 3.8, 3.9] os: [ubuntu-latest, macos-latest] # TODO: windows-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} + architecture: x64 - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index d7454f60..67ff53d6 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -2,11 +2,8 @@ name: unittest on: push: - branches: - - dev pull_request: - branches: - - master + types: [synchronize] jobs: unittest: @@ -16,15 +13,16 @@ jobs: strategy: max-parallel: 12 matrix: - python-version: [3.6, 3.7, 3.8] + python-version: [3.6, 3.7, 3.8, 3.9] os: [ubuntu-latest, macos-latest, windows-latest] steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} + architecture: x64 - name: Install dependencies run: | python -m pip install --upgrade pip From 4ff6c1ad05070821104d3733a691f3e9e69bc84c Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 21 Mar 2022 15:12:02 +0800 Subject: [PATCH 16/27] fix #1141: parameterize failure caused by pydantic version --- docs/CHANGELOG.md | 1 + pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 155f1f63..d86ee8dc 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -5,6 +5,7 @@ - fix: ignore comments and blank lines when parsing .env file - fix: failure in getting client and server IP/port when requesting HTTPS - fix: upgrade dependencies for security +- fix: parameterize failure caused by pydantic version ## 3.1.6 (2021-07-18) diff --git a/pyproject.toml b/pyproject.toml index fad32185..ff1ec765 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ python = "^3.6.2" requests = "^2.22.0" pyyaml = "^5.4.1" jinja2 = "^2.10.3" -pydantic = "^1.4" +pydantic = "~1.8" # >=1.8.0 <1.9.0 loguru = "^0.4.1" jmespath = "^0.9.5" black = "^19.10b0" From 0b1ae05c2b078adaf0c4afe68b4e7fafa37a13be Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 21 Mar 2022 15:15:03 +0800 Subject: [PATCH 17/27] change: upgrade python support version to ^3.7 --- .github/workflows/integration_test.yml | 2 +- .github/workflows/unittest.yml | 2 +- docs/CHANGELOG.md | 1 + examples/postman_echo/conftest.py | 2 +- .../request_with_functions_test.py | 2 +- .../request_with_testcase_reference_test.py | 2 +- .../request_methods/hardcode_test.py | 2 +- .../request_with_functions_test.py | 2 +- .../request_with_parameters_test.py | 2 +- .../request_with_testcase_reference_test.py | 2 +- .../request_with_variables_test.py | 2 +- .../validate_with_functions_test.py | 2 +- .../validate_with_variables_test.py | 2 +- poetry.lock | 1346 +++++++++-------- pyproject.toml | 7 +- 15 files changed, 761 insertions(+), 617 deletions(-) diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml index 2c31624b..c8cd766e 100644 --- a/.github/workflows/integration_test.yml +++ b/.github/workflows/integration_test.yml @@ -13,7 +13,7 @@ jobs: strategy: max-parallel: 6 matrix: - python-version: [3.6, 3.7, 3.8, 3.9] + python-version: [3.7, 3.8, 3.9, 3.10] os: [ubuntu-latest, macos-latest] # TODO: windows-latest steps: diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 67ff53d6..d12858fb 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -13,7 +13,7 @@ jobs: strategy: max-parallel: 12 matrix: - python-version: [3.6, 3.7, 3.8, 3.9] + python-version: [3.7, 3.8, 3.9, 3.10] os: [ubuntu-latest, macos-latest, windows-latest] steps: diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index d86ee8dc..133565ac 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -6,6 +6,7 @@ - fix: failure in getting client and server IP/port when requesting HTTPS - fix: upgrade dependencies for security - fix: parameterize failure caused by pydantic version +- change: upgrade python support version to ^3.7 ## 3.1.6 (2021-07-18) diff --git a/examples/postman_echo/conftest.py b/examples/postman_echo/conftest.py index a62dfed3..b55e5414 100644 --- a/examples/postman_echo/conftest.py +++ b/examples/postman_echo/conftest.py @@ -53,7 +53,7 @@ def session_fixture(request): testcase_summary_json["records"] = testcase_summary_json.pop("step_datas") summary["details"].append(testcase_summary_json) - summary_path = "/Users/debugtalk/MyProjects/HttpRunner-dev/HttpRunner/examples/postman_echo/logs/request_methods/hardcode.summary.json" + summary_path = r"/Users/debugtalk/MyProjects/HttpRunner-dev/httprunner/examples/postman_echo/logs/request_methods/hardcode.summary.json" summary_dir = os.path.dirname(summary_path) os.makedirs(summary_dir, exist_ok=True) diff --git a/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_functions_test.py b/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_functions_test.py index a6ca7246..9836c8fb 100644 --- a/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_functions_test.py +++ b/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_functions_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: request_methods/request_with_functions.yml diff --git a/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_testcase_reference_test.py b/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_testcase_reference_test.py index 39100868..f2b82850 100644 --- a/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_testcase_reference_test.py +++ b/examples/postman_echo/request_methods/demo_testsuite_yml/request_with_testcase_reference_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: request_methods/request_with_testcase_reference.yml diff --git a/examples/postman_echo/request_methods/hardcode_test.py b/examples/postman_echo/request_methods/hardcode_test.py index 8f02c048..4cb70976 100644 --- a/examples/postman_echo/request_methods/hardcode_test.py +++ b/examples/postman_echo/request_methods/hardcode_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: request_methods/hardcode.yml diff --git a/examples/postman_echo/request_methods/request_with_functions_test.py b/examples/postman_echo/request_methods/request_with_functions_test.py index 9c71f8e7..47f848fc 100644 --- a/examples/postman_echo/request_methods/request_with_functions_test.py +++ b/examples/postman_echo/request_methods/request_with_functions_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: request_methods/request_with_functions.yml diff --git a/examples/postman_echo/request_methods/request_with_parameters_test.py b/examples/postman_echo/request_methods/request_with_parameters_test.py index 4be2ee31..659ccc2a 100644 --- a/examples/postman_echo/request_methods/request_with_parameters_test.py +++ b/examples/postman_echo/request_methods/request_with_parameters_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: request_methods/request_with_parameters.yml diff --git a/examples/postman_echo/request_methods/request_with_testcase_reference_test.py b/examples/postman_echo/request_methods/request_with_testcase_reference_test.py index 3cd22430..34ffd60c 100644 --- a/examples/postman_echo/request_methods/request_with_testcase_reference_test.py +++ b/examples/postman_echo/request_methods/request_with_testcase_reference_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: request_methods/request_with_testcase_reference.yml diff --git a/examples/postman_echo/request_methods/request_with_variables_test.py b/examples/postman_echo/request_methods/request_with_variables_test.py index d3e7f954..39d25113 100644 --- a/examples/postman_echo/request_methods/request_with_variables_test.py +++ b/examples/postman_echo/request_methods/request_with_variables_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: request_methods/request_with_variables.yml diff --git a/examples/postman_echo/request_methods/validate_with_functions_test.py b/examples/postman_echo/request_methods/validate_with_functions_test.py index c7524ca9..f4cb8a28 100644 --- a/examples/postman_echo/request_methods/validate_with_functions_test.py +++ b/examples/postman_echo/request_methods/validate_with_functions_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: request_methods/validate_with_functions.yml diff --git a/examples/postman_echo/request_methods/validate_with_variables_test.py b/examples/postman_echo/request_methods/validate_with_variables_test.py index 98a73e78..3cc7953f 100644 --- a/examples/postman_echo/request_methods/validate_with_variables_test.py +++ b/examples/postman_echo/request_methods/validate_with_variables_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: request_methods/validate_with_variables.yml diff --git a/poetry.lock b/poetry.lock index 01f92671..aac3c0e4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,29 +1,13 @@ -[[package]] -name = "aiocontextvars" -version = "0.2.2" -description = "Asyncio support for PEP-567 contextvars backport." -category = "main" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -contextvars = {version = "2.4", markers = "python_version < \"3.7\""} - -[package.source] -type = "legacy" -url = "https://pypi.tuna.tsinghua.edu.cn/simple" -reference = "tsinghua" - [[package]] name = "allure-pytest" -version = "2.8.16" +version = "2.9.45" description = "Allure pytest integration" category = "main" optional = true python-versions = "*" [package.dependencies] -allure-python-commons = "2.8.16" +allure-python-commons = "2.9.45" pytest = ">=4.5.0" six = ">=1.9.0" @@ -34,11 +18,11 @@ reference = "tsinghua" [[package]] name = "allure-python-commons" -version = "2.8.16" +version = "2.9.45" description = "Common module for integrate allure with python-based frameworks" category = "main" optional = true -python-versions = "*" +python-versions = ">=3.5" [package.dependencies] attrs = ">=16.0.0" @@ -52,21 +36,20 @@ reference = "tsinghua" [[package]] name = "anyio" -version = "3.3.4" +version = "3.5.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" category = "dev" optional = false python-versions = ">=3.6.2" [package.dependencies] -dataclasses = {version = "*", markers = "python_version < \"3.7\""} idna = ">=2.8" sniffio = ">=1.1" typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] -doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] -test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] trio = ["trio (>=0.16)"] [package.source] @@ -102,17 +85,17 @@ reference = "tsinghua" [[package]] name = "attrs" -version = "19.3.0" +version = "21.4.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] -azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] -dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] -docs = ["sphinx", "zope.interface"] -tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] [package.source] type = "legacy" @@ -159,7 +142,7 @@ reference = "tsinghua" [[package]] name = "certifi" -version = "2020.4.5.2" +version = "2021.10.8" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -172,7 +155,7 @@ reference = "tsinghua" [[package]] name = "cffi" -version = "1.14.0" +version = "1.15.0" description = "Foreign Function Interface for Python calling C code." category = "main" optional = true @@ -187,12 +170,15 @@ url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" [[package]] -name = "chardet" -version = "3.0.4" -description = "Universal encoding detector for Python 2 and 3" +name = "charset-normalizer" +version = "2.0.12" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.5.0" + +[package.extras] +unicode_backport = ["unicodedata2"] [package.source] type = "legacy" @@ -214,7 +200,7 @@ reference = "tsinghua" [[package]] name = "colorama" -version = "0.4.3" +version = "0.4.4" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -227,13 +213,14 @@ reference = "tsinghua" [[package]] name = "configargparse" -version = "1.2.3" +version = "1.5.3" description = "A drop-in replacement for argparse that allows options to also be set via config files and/or environment variables." category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] +test = ["mock", "pyyaml", "pytest"] yaml = ["pyyaml"] [package.source] @@ -241,35 +228,6 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" -[[package]] -name = "contextlib2" -version = "21.6.0" -description = "Backports and enhancements for the contextlib module" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.source] -type = "legacy" -url = "https://pypi.tuna.tsinghua.edu.cn/simple" -reference = "tsinghua" - -[[package]] -name = "contextvars" -version = "2.4" -description = "PEP 567 Backport" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -immutables = ">=0.9" - -[package.source] -type = "legacy" -url = "https://pypi.tuna.tsinghua.edu.cn/simple" -reference = "tsinghua" - [[package]] name = "coverage" version = "4.5.4" @@ -283,22 +241,9 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" -[[package]] -name = "dataclasses" -version = "0.6" -description = "A backport of the dataclasses module for Python 3.6" -category = "main" -optional = false -python-versions = "*" - -[package.source] -type = "legacy" -url = "https://pypi.tuna.tsinghua.edu.cn/simple" -reference = "tsinghua" - [[package]] name = "fastapi" -version = "0.70.0" +version = "0.70.1" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" category = "dev" optional = false @@ -321,7 +266,7 @@ reference = "tsinghua" [[package]] name = "filetype" -version = "1.0.7" +version = "1.0.10" description = "Infer file type and MIME type of any file/buffer. No external dependencies." category = "main" optional = true @@ -372,26 +317,43 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" +[[package]] +name = "flask-cors" +version = "3.0.10" +description = "A Flask extension adding a decorator for CORS support" +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +Flask = ">=0.9" +Six = "*" + +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "gevent" -version = "20.6.2" +version = "21.12.0" description = "Coroutine-based network library" category = "main" optional = true -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5" [package.dependencies] cffi = {version = ">=1.12.2", markers = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\""} -greenlet = {version = ">=0.4.16", markers = "platform_python_implementation == \"CPython\""} +greenlet = {version = ">=1.1.0,<2.0", markers = "platform_python_implementation == \"CPython\""} "zope.event" = "*" "zope.interface" = "*" [package.extras] -dnspython = ["dnspython (>=1.16.0)", "idna"] -docs = ["repoze.sphinx.autointerface", "sphinxcontrib-programoutput"] +dnspython = ["dnspython (>=1.16.0,<2.0)", "idna"] +docs = ["repoze.sphinx.autointerface", "sphinxcontrib-programoutput", "zope.schema"] monitor = ["psutil (>=5.7.0)"] -recommended = ["dnspython (>=1.16.0)", "idna", "cffi (>=1.12.2)", "selectors2", "backports.socketpair", "psutil (>=5.7.0)"] -test = ["dnspython (>=1.16.0)", "idna", "requests", "objgraph", "cffi (>=1.12.2)", "selectors2", "futures", "mock", "backports.socketpair", "contextvars (==2.4)", "coverage (<5.0)", "coveralls (>=1.7.0)", "psutil (>=5.7.0)"] +recommended = ["cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "selectors2", "backports.socketpair", "psutil (>=5.7.0)"] +test = ["requests", "objgraph", "cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "selectors2", "futures", "mock", "backports.socketpair", "contextvars (==2.4)", "coverage (>=5.0)", "coveralls (>=1.7.0)", "psutil (>=5.7.0)"] [package.source] type = "legacy" @@ -400,13 +362,14 @@ reference = "tsinghua" [[package]] name = "geventhttpclient" -version = "1.4.2" +version = "1.5.3" description = "http client library for gevent" category = "main" optional = true python-versions = "*" [package.dependencies] +brotli = "*" certifi = "*" gevent = ">=0.13" six = "*" @@ -418,11 +381,14 @@ reference = "tsinghua" [[package]] name = "greenlet" -version = "0.4.16" +version = "1.1.2" description = "Lightweight in-process concurrent programming" category = "main" optional = true -python-versions = "*" +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" + +[package.extras] +docs = ["sphinx"] [package.source] type = "legacy" @@ -444,14 +410,14 @@ reference = "tsinghua" [[package]] name = "httptools" -version = "0.1.1" +version = "0.1.2" description = "A collection of framework independent HTTP protocol utils." category = "dev" optional = false python-versions = "*" [package.extras] -test = ["Cython (==0.29.14)"] +test = ["Cython (==0.29.22)"] [package.source] type = "legacy" @@ -460,23 +426,10 @@ reference = "tsinghua" [[package]] name = "idna" -version = "2.9" +version = "3.3" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.source] -type = "legacy" -url = "https://pypi.tuna.tsinghua.edu.cn/simple" -reference = "tsinghua" - -[[package]] -name = "immutables" -version = "0.14" -description = "Immutable Collections" -category = "main" -optional = false python-versions = ">=3.5" [package.source] @@ -486,18 +439,20 @@ reference = "tsinghua" [[package]] name = "importlib-metadata" -version = "1.6.1" +version = "4.11.3" description = "Read metadata from Python packages" category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" [package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["sphinx", "rst.linker"] -testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +perf = ["ipython"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [package.source] type = "legacy" @@ -506,11 +461,11 @@ reference = "tsinghua" [[package]] name = "itsdangerous" -version = "1.1.0" -description = "Various helpers to pass data to untrusted environments and back." +version = "2.1.1" +description = "Safely pass data to untrusted environments and back." category = "main" optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.7" [package.source] type = "legacy" @@ -551,7 +506,7 @@ reference = "tsinghua" [[package]] name = "locust" -version = "1.0.3" +version = "1.6.0" description = "Developer friendly load testing framework" category = "main" optional = true @@ -559,14 +514,17 @@ python-versions = ">=3.6" [package.dependencies] ConfigArgParse = ">=1.0" -flask = ">=1.1.2" +flask = "1.1.2" Flask-BasicAuth = ">=0.2.0" -gevent = ">=1.5.0" -geventhttpclient = ">=1.4.2" +Flask-Cors = ">=3.0.10" +gevent = ">=20.9.0" +geventhttpclient = ">=1.4.4" msgpack = ">=0.6.2" psutil = ">=5.6.7" +pywin32 = {version = "*", markers = "sys_platform == \"win32\""} pyzmq = ">=16.0.2" requests = ">=2.9.1" +Werkzeug = ">=1.0.1" [package.source] type = "legacy" @@ -582,7 +540,6 @@ optional = false python-versions = ">=3.5" [package.dependencies] -aiocontextvars = {version = ">=0.2.0", markers = "python_version < \"3.7\""} colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} @@ -596,11 +553,11 @@ reference = "tsinghua" [[package]] name = "markupsafe" -version = "1.1.1" +version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." category = "main" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +python-versions = ">=3.7" [package.source] type = "legacy" @@ -609,7 +566,7 @@ reference = "tsinghua" [[package]] name = "more-itertools" -version = "8.4.0" +version = "8.12.0" description = "More routines for operating on iterables, beyond itertools" category = "main" optional = false @@ -622,7 +579,7 @@ reference = "tsinghua" [[package]] name = "msgpack" -version = "1.0.0" +version = "1.0.3" description = "MessagePack (de)serializer." category = "main" optional = true @@ -635,15 +592,14 @@ reference = "tsinghua" [[package]] name = "packaging" -version = "20.4" +version = "21.3" description = "Core utilities for Python packages" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" [package.dependencies] -pyparsing = ">=2.0.2" -six = "*" +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [package.source] type = "legacy" @@ -652,11 +608,11 @@ reference = "tsinghua" [[package]] name = "pathspec" -version = "0.8.0" +version = "0.9.0" description = "Utility library for gitignore style pattern matching of file paths." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [package.source] type = "legacy" @@ -684,12 +640,15 @@ reference = "tsinghua" [[package]] name = "psutil" -version = "5.7.0" +version = "5.9.0" description = "Cross-platform lib for process and system monitoring in Python." category = "main" optional = true python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[package.extras] +test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"] + [package.source] type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" @@ -710,7 +669,7 @@ reference = "tsinghua" [[package]] name = "pycparser" -version = "2.20" +version = "2.21" description = "C parser in Python" category = "main" optional = true @@ -730,7 +689,6 @@ optional = false python-versions = ">=3.6.1" [package.dependencies] -dataclasses = {version = ">=0.6", markers = "python_version < \"3.7\""} typing-extensions = ">=3.7.4.3" [package.extras] @@ -744,11 +702,14 @@ reference = "tsinghua" [[package]] name = "pyparsing" -version = "2.4.7" +version = "3.0.7" description = "Python parsing module" category = "main" optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = ">=3.6" + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] [package.source] type = "legacy" @@ -802,7 +763,7 @@ reference = "tsinghua" [[package]] name = "pytest-metadata" -version = "1.9.0" +version = "1.11.0" description = "pytest plugin for test session metadata" category = "main" optional = false @@ -816,6 +777,19 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" +[[package]] +name = "pywin32" +version = "303" +description = "Python for Window Extensions" +category = "main" +optional = true +python-versions = "*" + +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "pyyaml" version = "5.4.1" @@ -831,11 +805,15 @@ reference = "tsinghua" [[package]] name = "pyzmq" -version = "19.0.1" +version = "22.3.0" description = "Python bindings for 0MQ" category = "main" optional = true -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*" +python-versions = ">=3.6" + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} +py = {version = "*", markers = "implementation_name == \"pypy\""} [package.source] type = "legacy" @@ -844,11 +822,11 @@ reference = "tsinghua" [[package]] name = "regex" -version = "2020.6.8" +version = "2022.3.15" description = "Alternative regular expression module, to replace re." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [package.source] type = "legacy" @@ -857,21 +835,21 @@ reference = "tsinghua" [[package]] name = "requests" -version = "2.24.0" +version = "2.27.1" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [package.dependencies] certifi = ">=2017.4.17" -chardet = ">=3.0.2,<4" -idna = ">=2.5,<3" -urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" +charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} +idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +urllib3 = ">=1.21.1,<1.27" [package.extras] -security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] [package.source] type = "legacy" @@ -927,10 +905,10 @@ reference = "tsinghua" [[package]] name = "six" -version = "1.15.0" +version = "1.16.0" description = "Python 2 and 3 compatibility utilities" category = "main" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" [package.source] @@ -946,9 +924,6 @@ category = "dev" optional = false python-versions = ">=3.5" -[package.dependencies] -contextvars = {version = ">=2.1", markers = "python_version < \"3.7\""} - [package.source] type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" @@ -964,7 +939,6 @@ python-versions = ">=3.6" [package.dependencies] anyio = ">=3.0.0,<4" -contextlib2 = {version = ">=21.6.0", markers = "python_version < \"3.7\""} typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] @@ -977,11 +951,11 @@ reference = "tsinghua" [[package]] name = "toml" -version = "0.10.1" +version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" category = "main" optional = false -python-versions = "*" +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" [package.source] type = "legacy" @@ -990,11 +964,11 @@ reference = "tsinghua" [[package]] name = "typed-ast" -version = "1.4.1" +version = "1.5.2" description = "a fork of Python 2 and 3 ast modules with type comment support" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [package.source] type = "legacy" @@ -1003,7 +977,7 @@ reference = "tsinghua" [[package]] name = "typing-extensions" -version = "4.0.0" +version = "4.1.1" description = "Backported and Experimental Type Hints for Python 3.6+" category = "main" optional = false @@ -1016,14 +990,14 @@ reference = "tsinghua" [[package]] name = "urllib3" -version = "1.25.11" +version = "1.26.9" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] -brotli = ["brotlipy (>=0.6.0)"] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] @@ -1057,11 +1031,16 @@ reference = "tsinghua" [[package]] name = "uvloop" -version = "0.14.0" +version = "0.16.0" description = "Fast implementation of asyncio event loop on top of libuv" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.7" + +[package.extras] +dev = ["Cython (>=0.29.24,<0.30.0)", "pytest (>=3.6.0)", "Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx_rtd_theme (>=0.5.2,<0.6.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "psutil", "pycodestyle (>=2.7.0,<2.8.0)", "pyOpenSSL (>=19.0.0,<19.1.0)", "mypy (>=0.800)"] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx_rtd_theme (>=0.5.2,<0.6.0)"] +test = ["aiohttp", "flake8 (>=3.9.2,<3.10.0)", "psutil", "pycodestyle (>=2.7.0,<2.8.0)", "pyOpenSSL (>=19.0.0,<19.1.0)", "mypy (>=0.800)"] [package.source] type = "legacy" @@ -1070,7 +1049,7 @@ reference = "tsinghua" [[package]] name = "wcwidth" -version = "0.2.4" +version = "0.2.5" description = "Measures the displayed width of unicode strings in a terminal" category = "main" optional = false @@ -1096,14 +1075,13 @@ reference = "tsinghua" [[package]] name = "werkzeug" -version = "1.0.1" +version = "2.0.3" description = "The comprehensive WSGI web application library." category = "main" optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.6" [package.extras] -dev = ["pytest", "pytest-timeout", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"] watchdog = ["watchdog"] [package.source] @@ -1113,7 +1091,7 @@ reference = "tsinghua" [[package]] name = "win32-setctime" -version = "1.0.1" +version = "1.1.0" description = "A small Python utility to set file creation time on Windows" category = "main" optional = false @@ -1129,15 +1107,15 @@ reference = "tsinghua" [[package]] name = "zipp" -version = "3.1.0" +version = "3.7.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["jaraco.itertools", "func-timeout"] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] [package.source] type = "legacy" @@ -1146,7 +1124,7 @@ reference = "tsinghua" [[package]] name = "zope.event" -version = "4.4" +version = "4.5.0" description = "Very basic event publishing system" category = "main" optional = true @@ -1163,7 +1141,7 @@ reference = "tsinghua" [[package]] name = "zope.interface" -version = "5.1.0" +version = "5.4.0" description = "Interfaces for Python" category = "main" optional = true @@ -1186,25 +1164,21 @@ upload = ["requests-toolbelt", "filetype"] [metadata] lock-version = "1.1" -python-versions = "^3.6.2" -content-hash = "368d778067f007f488ca1e3ca4932bc89cd67ebf6ca91ec3f2dd495faecbd678" +python-versions = "^3.7" +content-hash = "a822ce5885d150e332076e7600bd3cd840aa48911ca1c9456b540136136f727a" [metadata.files] -aiocontextvars = [ - {file = "aiocontextvars-0.2.2-py2.py3-none-any.whl", hash = "sha256:885daf8261818767d8f7cbd79f9d4482d118f024b6586ef6e67980236a27bfa3"}, - {file = "aiocontextvars-0.2.2.tar.gz", hash = "sha256:f027372dc48641f683c559f247bd84962becaacdc9ba711d583c3871fb5652aa"}, -] allure-pytest = [ - {file = "allure-pytest-2.8.16.tar.gz", hash = "sha256:91a8a7481b9914abdaf5918ae9eddf15167f835806c5d04d0881ddbf8744f7b6"}, - {file = "allure_pytest-2.8.16-py3-none-any.whl", hash = "sha256:4a0d4214ed19bc5bae4d6b2bd2329c008facb3e562d8d3dd12d74e455b3203dc"}, + {file = "allure-pytest-2.9.45.tar.gz", hash = "sha256:20620fde08a597578b157a60ff38bdcc300e312d12eaa38cf28e4a62e22bdaa3"}, + {file = "allure_pytest-2.9.45-py3-none-any.whl", hash = "sha256:9b0325e06f8f79cf03289d4f4d741e57607d0fa12d9c094e243cbb042283f083"}, ] allure-python-commons = [ - {file = "allure-python-commons-2.8.16.tar.gz", hash = "sha256:f67104a51643f2b0f1807acfe324bc13c1fa97f16d9b5c85670199acabd5c40d"}, - {file = "allure_python_commons-2.8.16-py3-none-any.whl", hash = "sha256:3cf65bce770e4d6b6b1bd46bfecad8a04f1f7bef44133f9a3ded4295510187e2"}, + {file = "allure-python-commons-2.9.45.tar.gz", hash = "sha256:c238d28aeac35e8c7c517d8a2327e25ae5bbf2c30b5e2313d20ef11d75f5549d"}, + {file = "allure_python_commons-2.9.45-py3-none-any.whl", hash = "sha256:3572f0526db3946fb14470c58b0b41d343483aad91d37d414e4641815e13691a"}, ] anyio = [ - {file = "anyio-3.3.4-py3-none-any.whl", hash = "sha256:4fd09a25ab7fa01d34512b7249e366cd10358cdafc95022c7ff8c8f8a5026d66"}, - {file = "anyio-3.3.4.tar.gz", hash = "sha256:67da67b5b21f96b9d3d65daa6ea99f5d5282cb09f50eb4456f8fb51dffefc3ff"}, + {file = "anyio-3.5.0-py3-none-any.whl", hash = "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e"}, + {file = "anyio-3.5.0.tar.gz", hash = "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6"}, ] appdirs = [ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, @@ -1215,8 +1189,8 @@ atomicwrites = [ {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, ] attrs = [ - {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, - {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] black = [ {file = "black-19.10b0-py36-none-any.whl", hash = "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b"}, @@ -1272,60 +1246,76 @@ brotli = [ {file = "Brotli-1.0.9.zip", hash = "sha256:4d1b810aa0ed773f81dceda2cc7b403d01057458730e309856356d4ef4188438"}, ] certifi = [ - {file = "certifi-2020.4.5.2-py2.py3-none-any.whl", hash = "sha256:9cd41137dc19af6a5e03b630eefe7d1f458d964d406342dd3edf625839b944cc"}, - {file = "certifi-2020.4.5.2.tar.gz", hash = "sha256:5ad7e9a056d25ffa5082862e36f119f7f7cec6457fa07ee2f8c339814b80c9b1"}, + {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, + {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, ] cffi = [ - {file = "cffi-1.14.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1cae98a7054b5c9391eb3249b86e0e99ab1e02bb0cc0575da191aedadbdf4384"}, - {file = "cffi-1.14.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:cf16e3cf6c0a5fdd9bc10c21687e19d29ad1fe863372b5543deaec1039581a30"}, - {file = "cffi-1.14.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f2b0fa0c01d8a0c7483afd9f31d7ecf2d71760ca24499c8697aeb5ca37dc090c"}, - {file = "cffi-1.14.0-cp27-cp27m-win32.whl", hash = "sha256:99f748a7e71ff382613b4e1acc0ac83bf7ad167fb3802e35e90d9763daba4d78"}, - {file = "cffi-1.14.0-cp27-cp27m-win_amd64.whl", hash = "sha256:c420917b188a5582a56d8b93bdd8e0f6eca08c84ff623a4c16e809152cd35793"}, - {file = "cffi-1.14.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:399aed636c7d3749bbed55bc907c3288cb43c65c4389964ad5ff849b6370603e"}, - {file = "cffi-1.14.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:cab50b8c2250b46fe738c77dbd25ce017d5e6fb35d3407606e7a4180656a5a6a"}, - {file = "cffi-1.14.0-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:001bf3242a1bb04d985d63e138230802c6c8d4db3668fb545fb5005ddf5bb5ff"}, - {file = "cffi-1.14.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:e56c744aa6ff427a607763346e4170629caf7e48ead6921745986db3692f987f"}, - {file = "cffi-1.14.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:b8c78301cefcf5fd914aad35d3c04c2b21ce8629b5e4f4e45ae6812e461910fa"}, - {file = "cffi-1.14.0-cp35-cp35m-win32.whl", hash = "sha256:8c0ffc886aea5df6a1762d0019e9cb05f825d0eec1f520c51be9d198701daee5"}, - {file = "cffi-1.14.0-cp35-cp35m-win_amd64.whl", hash = "sha256:8a6c688fefb4e1cd56feb6c511984a6c4f7ec7d2a1ff31a10254f3c817054ae4"}, - {file = "cffi-1.14.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:95cd16d3dee553f882540c1ffe331d085c9e629499ceadfbda4d4fde635f4b7d"}, - {file = "cffi-1.14.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:66e41db66b47d0d8672d8ed2708ba91b2f2524ece3dee48b5dfb36be8c2f21dc"}, - {file = "cffi-1.14.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:028a579fc9aed3af38f4892bdcc7390508adabc30c6af4a6e4f611b0c680e6ac"}, - {file = "cffi-1.14.0-cp36-cp36m-win32.whl", hash = "sha256:cef128cb4d5e0b3493f058f10ce32365972c554572ff821e175dbc6f8ff6924f"}, - {file = "cffi-1.14.0-cp36-cp36m-win_amd64.whl", hash = "sha256:337d448e5a725bba2d8293c48d9353fc68d0e9e4088d62a9571def317797522b"}, - {file = "cffi-1.14.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e577934fc5f8779c554639376beeaa5657d54349096ef24abe8c74c5d9c117c3"}, - {file = "cffi-1.14.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:62ae9af2d069ea2698bf536dcfe1e4eed9090211dbaafeeedf5cb6c41b352f66"}, - {file = "cffi-1.14.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:14491a910663bf9f13ddf2bc8f60562d6bc5315c1f09c704937ef17293fb85b0"}, - {file = "cffi-1.14.0-cp37-cp37m-win32.whl", hash = "sha256:c43866529f2f06fe0edc6246eb4faa34f03fe88b64a0a9a942561c8e22f4b71f"}, - {file = "cffi-1.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2089ed025da3919d2e75a4d963d008330c96751127dd6f73c8dc0c65041b4c26"}, - {file = "cffi-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3b911c2dbd4f423b4c4fcca138cadde747abdb20d196c4a48708b8a2d32b16dd"}, - {file = "cffi-1.14.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:7e63cbcf2429a8dbfe48dcc2322d5f2220b77b2e17b7ba023d6166d84655da55"}, - {file = "cffi-1.14.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:3d311bcc4a41408cf5854f06ef2c5cab88f9fded37a3b95936c9879c1640d4c2"}, - {file = "cffi-1.14.0-cp38-cp38-win32.whl", hash = "sha256:675686925a9fb403edba0114db74e741d8181683dcf216be697d208857e04ca8"}, - {file = "cffi-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:00789914be39dffba161cfc5be31b55775de5ba2235fe49aa28c148236c4e06b"}, - {file = "cffi-1.14.0.tar.gz", hash = "sha256:2d384f4a127a15ba701207f7639d94106693b6cd64173d6c8988e2c25f3ac2b6"}, + {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, + {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, + {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, + {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, + {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, + {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, + {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, + {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, + {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, + {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, + {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, + {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, + {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, + {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, + {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, + {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, + {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, ] -chardet = [ - {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, - {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, +charset-normalizer = [ + {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, + {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, ] click = [ {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, ] colorama = [ - {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, - {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, ] configargparse = [ - {file = "ConfigArgParse-1.2.3.tar.gz", hash = "sha256:edd17be986d5c1ba2e307150b8e5f5107aba125f3574dddd02c85d5cdcfd37dc"}, -] -contextlib2 = [ - {file = "contextlib2-21.6.0-py2.py3-none-any.whl", hash = "sha256:3fbdb64466afd23abaf6c977627b75b6139a5a3e8ce38405c5b413aed7a0471f"}, - {file = "contextlib2-21.6.0.tar.gz", hash = "sha256:ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869"}, -] -contextvars = [ - {file = "contextvars-2.4.tar.gz", hash = "sha256:f38c908aaa59c14335eeea12abea5f443646216c4e29380d7bf34d2018e2c39e"}, + {file = "ConfigArgParse-1.5.3-py3-none-any.whl", hash = "sha256:18f6535a2db9f6e02bd5626cc7455eac3e96b9ab3d969d366f9aafd5c5c00fe7"}, + {file = "ConfigArgParse-1.5.3.tar.gz", hash = "sha256:1b0b3cbf664ab59dada57123c81eff3d9737e0d11d8cf79e3d6eb10823f1739f"}, ] coverage = [ {file = "coverage-4.5.4-cp26-cp26m-macosx_10_12_x86_64.whl", hash = "sha256:eee64c616adeff7db37cc37da4180a3a5b6177f5c46b187894e633f088fb5b28"}, @@ -1361,17 +1351,13 @@ coverage = [ {file = "coverage-4.5.4-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:141f08ed3c4b1847015e2cd62ec06d35e67a3ac185c26f7635f4406b90afa9c5"}, {file = "coverage-4.5.4.tar.gz", hash = "sha256:e07d9f1a23e9e93ab5c62902833bf3e4b1f65502927379148b6622686223125c"}, ] -dataclasses = [ - {file = "dataclasses-0.6-py3-none-any.whl", hash = "sha256:454a69d788c7fda44efd71e259be79577822f5e3f53f029a22d08004e951dc9f"}, - {file = "dataclasses-0.6.tar.gz", hash = "sha256:6988bd2b895eef432d562370bb707d540f32f7360ab13da45340101bc2307d84"}, -] fastapi = [ - {file = "fastapi-0.70.0-py3-none-any.whl", hash = "sha256:a36d5f2fad931aa3575c07a3472c784e81f3e664e3bb5c8b9c88d0ec1104f59c"}, - {file = "fastapi-0.70.0.tar.gz", hash = "sha256:66da43cfe5185ea1df99552acffd201f1832c6b364e0f4136c0a99f933466ced"}, + {file = "fastapi-0.70.1-py3-none-any.whl", hash = "sha256:5367226c7bcd7bfb2e17edaf225fd9a983095b1372281e9a3eb661336fb93748"}, + {file = "fastapi-0.70.1.tar.gz", hash = "sha256:21d03979b5336375c66fa5d1f3126c6beca650d5d2166fbb78345a30d33c8d06"}, ] filetype = [ - {file = "filetype-1.0.7-py2.py3-none-any.whl", hash = "sha256:353369948bb1c09b8b3ea3d78390b5586e9399bff9aab894a1dff954e31a66f6"}, - {file = "filetype-1.0.7.tar.gz", hash = "sha256:da393ece8d98b47edf2dd5a85a2c8733e44b769e32c71af4cd96ed8d38d96aa7"}, + {file = "filetype-1.0.10-py2.py3-none-any.whl", hash = "sha256:63fbe6e818a3d1cfac1d62b196574a7a4b7fc8e06a6c500d53577c018ef127d9"}, + {file = "filetype-1.0.10.tar.gz", hash = "sha256:323a13500731b6c65a253bc3930bbce9a56dfba71e90b60ffd968ab69d9ae937"}, ] flask = [ {file = "Flask-1.1.2-py2.py3-none-any.whl", hash = "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557"}, @@ -1380,146 +1366,178 @@ flask = [ flask-basicauth = [ {file = "Flask-BasicAuth-0.2.0.tar.gz", hash = "sha256:df5ebd489dc0914c224419da059d991eb72988a01cdd4b956d52932ce7d501ff"}, ] +flask-cors = [ + {file = "Flask-Cors-3.0.10.tar.gz", hash = "sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de"}, + {file = "Flask_Cors-3.0.10-py2.py3-none-any.whl", hash = "sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438"}, +] gevent = [ - {file = "gevent-20.6.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b03890bbddbae5667f5baad517417056496ff5e92c3c7945b27cc08f55a9fcb2"}, - {file = "gevent-20.6.2-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1ea0d34cb78cdf37870be3bfb9330ebda89197bed9e048c14f4a90dec19a33e0"}, - {file = "gevent-20.6.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:73eb4cf3114fbb5dd801bd0b93941adfa2fa6d99e91976c20a121ea14b8b39b9"}, - {file = "gevent-20.6.2-cp27-cp27m-win32.whl", hash = "sha256:f41cc8e853ac2252bc58f6feabd74b8aae613e2d19097c5373463122f4dc08f0"}, - {file = "gevent-20.6.2-cp27-cp27m-win_amd64.whl", hash = "sha256:d3baff87d935a5eeffb0e4f7cd5ffe258d2430cd62aeee2e5396f85da07df435"}, - {file = "gevent-20.6.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:7d8408854ce892f987305a0e9bf5c051f4ea29453665454396d6afb620c719b6"}, - {file = "gevent-20.6.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:ea2e4584950186b71d648bde6af40dae4d4c6f43db25a732ec056b27a7a83afe"}, - {file = "gevent-20.6.2-cp35-cp35m-win32.whl", hash = "sha256:c0f4340e40e0f9dfe93a52a12ddf5b1eeda9bbc89b99bf3b9b23acab0dfae0a4"}, - {file = "gevent-20.6.2-cp35-cp35m-win_amd64.whl", hash = "sha256:13c74d6784ef5ada2666abf2bb310d27a1d14291f7cac46148f336b19f714d40"}, - {file = "gevent-20.6.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:78bd94f6f2ac366155169df3507068f6381f2ad77625633189ce183f86a57597"}, - {file = "gevent-20.6.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0b16dd85eddaf6acdad373ce90ed4da09ef466cbc5e0ee5932d13f099929e844"}, - {file = "gevent-20.6.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:a47556cac07e31b3cef8fd701599b3b1365961fe3736471f41807ffa27c5c848"}, - {file = "gevent-20.6.2-cp36-cp36m-win32.whl", hash = "sha256:bef18b8bd3b728240b9bbd699737216b793d6c97b482431f69dcbe328ad73692"}, - {file = "gevent-20.6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:d0a67a20ce325f6a2068e0bd9fbf83db8a5f5ced972ed8ac5c20079a7d98c7d1"}, - {file = "gevent-20.6.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:b17915b65b49a425115ddc3087484c81b1e47ce38c931d18bb14e453753e4d06"}, - {file = "gevent-20.6.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ebb8a545112110e3a6edf905ae1556b0538fc148c743aa7d8cfaebbbc23de31d"}, - {file = "gevent-20.6.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6c864b5604166ac8351e3128a1135b883b9e978fd24afbd75a249dcb42bc8ab5"}, - {file = "gevent-20.6.2-cp37-cp37m-win32.whl", hash = "sha256:e5ca5ee80a9d9e697c9fc22b4bbce9ad06870f83fc8e7774e5504892ef702476"}, - {file = "gevent-20.6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:f2a02d9004ccb18edd9eaf6f25da9a7763de41a69754d5e4d872a8cbf8bd0b72"}, - {file = "gevent-20.6.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:354f932c284fa45826b32f42927d892096cce05671b50b3ff59528230217ad47"}, - {file = "gevent-20.6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:67776cb33b638a3c61a0351d9d1e8f33a46b47de619e249de1159892f9ff035c"}, - {file = "gevent-20.6.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:68764aca061bbbbade43727e797f9c28042f6d90cca5fb6514ef726d43ab00ca"}, - {file = "gevent-20.6.2-cp38-cp38-win32.whl", hash = "sha256:0f3fbb1703b10609856e5dffb0e358bf5edf57e52dc7cd7226e3f8674fdc0a0f"}, - {file = "gevent-20.6.2-cp38-cp38-win_amd64.whl", hash = "sha256:a18d8dd9bfa994a22f30adfa0563d80f0809140045c34f85535f422813d25855"}, - {file = "gevent-20.6.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:9527087984f1659be899b3300d5d61c7c5b01d8beae106aff5160316da8bc56f"}, - {file = "gevent-20.6.2-pp27-pypy_73-macosx_10_7_x86_64.whl", hash = "sha256:76ef4c6e3332e6f7278142d791b28695adfce39735900fccef2a0f1d894f6b36"}, - {file = "gevent-20.6.2-pp27-pypy_73-win32.whl", hash = "sha256:3cb2f6978615d52e4e4e667b035c11a7272bb68b14d119faf1b138164b2f354f"}, - {file = "gevent-20.6.2.tar.gz", hash = "sha256:a23c2abf08e851c988723f6a2996d495f513a2c0dc70f9956af03af8debdb5d1"}, + {file = "gevent-21.12.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:2afa3f3ad528155433f6ac8bd64fa5cc303855b97004416ec719a6b1ca179481"}, + {file = "gevent-21.12.0-cp27-cp27m-win32.whl", hash = "sha256:177f93a3a90f46a5009e0841fef561601e5c637ba4332ab8572edd96af650101"}, + {file = "gevent-21.12.0-cp27-cp27m-win_amd64.whl", hash = "sha256:a5ad4ed8afa0a71e1927623589f06a9b5e8b5e77810be3125cb4d93050d3fd1f"}, + {file = "gevent-21.12.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:eae3c46f9484eaacd67ffcdf4eaf6ca830f587edd543613b0f5c4eb3c11d052d"}, + {file = "gevent-21.12.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e1899b921219fc8959ff9afb94dae36be82e0769ed13d330a393594d478a0b3a"}, + {file = "gevent-21.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c21cb5c9f4e14d75b3fe0b143ec875d7dbd1495fad6d49704b00e57e781ee0f"}, + {file = "gevent-21.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:542ae891e2aa217d2cf6d8446538fcd2f3263a40eec123b970b899bac391c47a"}, + {file = "gevent-21.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:0082d8a5d23c35812ce0e716a91ede597f6dd2c5ff508a02a998f73598c59397"}, + {file = "gevent-21.12.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:da8d2d51a49b2a5beb02ad619ca9ddbef806ef4870ba04e5ac7b8b41a5b61db3"}, + {file = "gevent-21.12.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfff82f05f14b7f5d9ed53ccb7a609ae8604df522bb05c971bca78ec9d8b2b9"}, + {file = "gevent-21.12.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7909780f0cf18a1fc32aafd8c8e130cdd93c6e285b11263f7f2d1a0f3678bc50"}, + {file = "gevent-21.12.0-cp36-cp36m-win32.whl", hash = "sha256:bb5cb8db753469c7a9a0b8a972d2660fe851aa06eee699a1ca42988afb0aaa02"}, + {file = "gevent-21.12.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c43f081cbca41d27fd8fef9c6a32cf83cb979345b20abc07bf68df165cdadb24"}, + {file = "gevent-21.12.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:74fc1ef16b86616cfddcc74f7292642b0f72dde4dd95aebf4c45bb236744be54"}, + {file = "gevent-21.12.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc2fef0f98ee180704cf95ec84f2bc2d86c6c3711bb6b6740d74e0afe708b62c"}, + {file = "gevent-21.12.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08b4c17064e28f4eb85604486abc89f442c7407d2aed249cf54544ce5c9baee6"}, + {file = "gevent-21.12.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:973749bacb7bc4f4181a8fb2a7e0e2ff44038de56d08e856dd54a5ac1d7331b4"}, + {file = "gevent-21.12.0-cp37-cp37m-win32.whl", hash = "sha256:6a02a88723ed3f0fd92cbf1df3c4cd2fbd87d82b0a4bac3e36a8875923115214"}, + {file = "gevent-21.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f289fae643a3f1c3b909d6b033e6921b05234a4907e9c9c8c3f1fe403e6ac452"}, + {file = "gevent-21.12.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:3baeeccc4791ba3f8db27179dff11855a8f9210ddd754f6c9b48e0d2561c2aea"}, + {file = "gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692"}, + {file = "gevent-21.12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d86438ede1cbe0fde6ef4cc3f72bf2f1ecc9630d8b633ff344a3aeeca272cdd"}, + {file = "gevent-21.12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:01928770972181ad8866ee37ea3504f1824587b188fcab782ef1619ce7538766"}, + {file = "gevent-21.12.0-cp38-cp38-win32.whl", hash = "sha256:3c012c73e6c61f13c75e3a4869dbe6a2ffa025f103421a6de9c85e627e7477b1"}, + {file = "gevent-21.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:b7709c64afa8bb3000c28bb91ec42c79594a7cb0f322e20427d57f9762366a5b"}, + {file = "gevent-21.12.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:ec21f9eaaa6a7b1e62da786132d6788675b314f25f98d9541f1bf00584ed4749"}, + {file = "gevent-21.12.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:22ce1f38fdfe2149ffe8ec2131ca45281791c1e464db34b3b4321ae9d8d2efbb"}, + {file = "gevent-21.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ccffcf708094564e442ac6fde46f0ae9e40015cb69d995f4b39cc29a7643881"}, + {file = "gevent-21.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24d3550fbaeef5fddd794819c2853bca45a86c3d64a056a2c268d981518220d1"}, + {file = "gevent-21.12.0-cp39-cp39-win32.whl", hash = "sha256:2bcec9f80196c751fdcf389ca9f7141e7b0db960d8465ed79be5e685bfcad682"}, + {file = "gevent-21.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:3dad62f55fad839d498c801e139481348991cee6e1c7706041b5fe096cb6a279"}, + {file = "gevent-21.12.0-pp27-pypy_73-win_amd64.whl", hash = "sha256:9f9652d1e4062d4b5b5a0a49ff679fa890430b5f76969d35dccb2df114c55e0f"}, + {file = "gevent-21.12.0.tar.gz", hash = "sha256:f48b64578c367b91fa793bf8eaaaf4995cb93c8bc45860e473bf868070ad094e"}, ] geventhttpclient = [ - {file = "geventhttpclient-1.4.2-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:7b7e827418ecc926271111ef9a5f832063c28250487d77292442a94dce040ab8"}, - {file = "geventhttpclient-1.4.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:6f662227cf8ec2f061d67e9bcc4e2a83ccae4b91c812a0f4a8dd4b239300860f"}, - {file = "geventhttpclient-1.4.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5c7a6211bd5747edf7e38a489369c510d06cfd293ec56be1bdd2045766075f8b"}, - {file = "geventhttpclient-1.4.2-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:7e0686068f4dca0148e98957ac6804acb819d4a32886b75e4af8b7a4fafb0729"}, - {file = "geventhttpclient-1.4.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8d2874c86012b9c34de7a610b3e7762eca80da7591f945464afe3b024f99ea38"}, - {file = "geventhttpclient-1.4.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:e089d1613fc30fd631cd82223abd8187bd9f3ccba70a58df38eb8139928c9237"}, - {file = "geventhttpclient-1.4.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:f2c2d6a8c5973d1ab918443a7739ddc4bb1b3948ca676feccfe6b10076a13275"}, - {file = "geventhttpclient-1.4.2-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:565dff607131b04b8a2e302065f47be235a2adefe30443401f2dc3d58972d18f"}, - {file = "geventhttpclient-1.4.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:bcad86491ef10b281f43a93ca65bb65aec6afc7856badc8cb4745daa4b43fe33"}, - {file = "geventhttpclient-1.4.2-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:e4179375224242a64e965d709282af91491a6de40f2117df81a2a775f94d2bc3"}, - {file = "geventhttpclient-1.4.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:49e0aed4b7cc7eef09294376c77690528e4a21a37a8a0e99efa940561183a0f5"}, - {file = "geventhttpclient-1.4.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9324187592cbd66764a28a8f49dafb2bf68a07612bb4adf27a0777a35ba53cb6"}, - {file = "geventhttpclient-1.4.2-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:b6cbcc500635b228a39c2a0b290059bdc8f7254776b6bc628bd7384ce0446125"}, - {file = "geventhttpclient-1.4.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:682581949303c175abbaf686df819d403104ecc6b0355108c6cc473cc539a505"}, - {file = "geventhttpclient-1.4.2-cp35-cp35m-win32.whl", hash = "sha256:3df9cad44fddc775b06f7a9e8bea763bb8198ba426a8ce62bb79cb44bb7e419f"}, - {file = "geventhttpclient-1.4.2-cp35-cp35m-win_amd64.whl", hash = "sha256:052899e60f63529a5ffc581987fef2893f445a62ebdb5f51f02444b9153b9e00"}, - {file = "geventhttpclient-1.4.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:edd11d6b22993008a98235f02344f79783d7727f05d4cd4cc638591b2cf00346"}, - {file = "geventhttpclient-1.4.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a391afadf1d7005d1f584470c5a2b03588c23c25b42ebed6a385ffb1e5deb61b"}, - {file = "geventhttpclient-1.4.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:80570bf577de010cb3cff704bc9df2d76b3398144e6224e35558a9f3f794f863"}, - {file = "geventhttpclient-1.4.2-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:df9ce998dbaef4e4aa6d9b2bc129d69c9ec41a71df30808298f6b8cc2e3cee18"}, - {file = "geventhttpclient-1.4.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:3becac3ec54cc74caadcf87a309343d3298a8ca0ef6d3c4f7ab197be0acefdcb"}, - {file = "geventhttpclient-1.4.2-cp36-cp36m-win32.whl", hash = "sha256:a2ba13a6dc4343e9be64288fb89c077586350d201945565b5b882431a7cc111e"}, - {file = "geventhttpclient-1.4.2-cp36-cp36m-win_amd64.whl", hash = "sha256:79a302b9448fee4d2a334278c0cb679195ec0ed4de0832bf46797e90602d5832"}, - {file = "geventhttpclient-1.4.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bef49de16b0c4551731294e37a05b55415fc49fa3c4e5b6cfac0d41fd430627d"}, - {file = "geventhttpclient-1.4.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:a6eb1aa56bc52ba0adb281f7977662db8661b1398866674cf9be559cf23e2765"}, - {file = "geventhttpclient-1.4.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dade5b1266e10f78104a4880163b1aca1ace8c1efbf0e71887b9cff78bfbdb2f"}, - {file = "geventhttpclient-1.4.2-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d09d59902ca62253a48f7a5ffbd6c591cca8a65fe15428a294f600333b891aaa"}, - {file = "geventhttpclient-1.4.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:b9bf31aed10e40116357f6eb1f3ac997030485ea8afd75fd00644dc6ccba1614"}, - {file = "geventhttpclient-1.4.2-cp37-cp37m-win32.whl", hash = "sha256:9141b2ce49adb317cf036a70f4543319abfde625b92e780794d806bcc1bcd1de"}, - {file = "geventhttpclient-1.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:302277ba05f941da34fac3fdd9e0f13693c8460fa82fd8d40aa34151537fc171"}, - {file = "geventhttpclient-1.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d8f2bbbc0f1cfd8d0b5b1c839be513e32a4d94c79f3b28aed5e0443866ee1ce5"}, - {file = "geventhttpclient-1.4.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:6018fc296c4d6a1ca0cfdf3a9fb23792e2302cbf5717dd0a25ee0c084bf8216a"}, - {file = "geventhttpclient-1.4.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:b68fbaff99f8a7701477b83e829b74c0f6d878953dea468cc52601093a4806d4"}, - {file = "geventhttpclient-1.4.2-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:94bf3480828190cb0cf3fae350b760aa12d9912b8eed5449ddb25867edae31f6"}, - {file = "geventhttpclient-1.4.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:28e4ef874d4153460c1e29323f543942a6b3be308c5a50c006d412f4f9e7fc9c"}, - {file = "geventhttpclient-1.4.2-cp38-cp38-win32.whl", hash = "sha256:1dcc1995146edbcb98e6343137ee4444fa5966ae534e5fac647b32357479e93f"}, - {file = "geventhttpclient-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:355417460ce971a01f1ee0b4c53c65505faa0e1cc757ed16d8cdcbc5e66b21ab"}, - {file = "geventhttpclient-1.4.2-pp27-pypy_73-macosx_10_7_x86_64.whl", hash = "sha256:074f9914ce8320f71ffaa1d48247a5f2d551e0df4a225e50d8cf162128116a6b"}, - {file = "geventhttpclient-1.4.2-pp27-pypy_73-manylinux1_x86_64.whl", hash = "sha256:71bc17ffab758b800d1ca1c0ac0c1a47aa8dd7e80c88e9c6b454f7082ab03f8a"}, - {file = "geventhttpclient-1.4.2-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:a5a9e5dc95618bf1d061de6862429f90bb8740b59449a47bfdadd4cc94eebb9f"}, - {file = "geventhttpclient-1.4.2-pp27-pypy_73-win32.whl", hash = "sha256:3b18bb76b175d36205889e2c33c1746b70ab156392d6d5f382d1b2b349fd53e1"}, - {file = "geventhttpclient-1.4.2-pp36-pypy36_pp73-macosx_10_7_x86_64.whl", hash = "sha256:dfa24eaf4310fc99c796fafac527e7c839670f15144936ab885b43705f2d6086"}, - {file = "geventhttpclient-1.4.2-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:86feb2e8f2210af353fb00e85db672007e43dd993f53dab18453b0b230fd0673"}, - {file = "geventhttpclient-1.4.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:d393b8a84dd9edcfb92ebfd35065a19eb589ce082dae4b61222c5835146c81c7"}, - {file = "geventhttpclient-1.4.2-pp36-pypy36_pp73-win32.whl", hash = "sha256:0271d8ea2d4ad5b3fb753fb1df7e00aadfbe7d50d26fed714b97755f04011864"}, - {file = "geventhttpclient-1.4.2.tar.gz", hash = "sha256:967b11c4a37032f98c08f58176e4ac8de10473ab0c1f617acb8202d44b97fe21"}, + {file = "geventhttpclient-1.5.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9dbb29de564deb0d76464b9fd16c853f19f4210bf9e162f6f38c712e83d1f8cb"}, + {file = "geventhttpclient-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:01c9f59dc508a82378ca132e4a6fd1717e869aa590dbc8e7e492986a085a72b8"}, + {file = "geventhttpclient-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e001608847d06cc0e5c3c0a619c5c5313bb1f9c6e6e4bccd3e78572f8fb9ebb"}, + {file = "geventhttpclient-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc2164ca08f170d996c8862b43787b31950496f9a58da167679c332d231d8ea"}, + {file = "geventhttpclient-1.5.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:31a650e38c9bc9d96b66d574af7cca4206244ab5e2daad6209420c63fbdc2f83"}, + {file = "geventhttpclient-1.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6f0c9a31cc52cf2730527875bc06bde65b983c45f14d7692afeebad18456adc9"}, + {file = "geventhttpclient-1.5.3-cp310-cp310-win32.whl", hash = "sha256:8bc0e28d1cc5d9c10909e4c646f8e652594cadb94fa475af5f3e4d8499ed5bb9"}, + {file = "geventhttpclient-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:6a32a11a3ee1e475957d15da0fff93d7cf135b54a5ea92307236a6ac2ac0d863"}, + {file = "geventhttpclient-1.5.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3ca71445decdc90f28f2e43212da51acb6129139bb465324737a5779c9fbada1"}, + {file = "geventhttpclient-1.5.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:845800cb2f544ca835e764dfbaade57eba35a35a57e3fbc6676932d6f3996b9c"}, + {file = "geventhttpclient-1.5.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:76069c60cf24719fc1395ed2c1b8b8b2b041080fea2501aca24fa2a3625e6bf6"}, + {file = "geventhttpclient-1.5.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c2dcb26b92a296dff6c5cc2446b66ac7361ea058b9f0a14dcdf080a5215dc412"}, + {file = "geventhttpclient-1.5.3-cp36-cp36m-win32.whl", hash = "sha256:8527f715d71d6ac743072f2674d2286517577b712dbda153b0f15c3b0be58d2b"}, + {file = "geventhttpclient-1.5.3-cp36-cp36m-win_amd64.whl", hash = "sha256:0b934a7f30f71fca5c3a0a52b258a49d1d0efb9b195a0c0568ebbed891c91d7e"}, + {file = "geventhttpclient-1.5.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fa290a202446630cc71593712bea548f296b89cb8a4161002c2e03afc3b2ffed"}, + {file = "geventhttpclient-1.5.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7153bf3ead545cbc220cd032038bb543073496f8c41c18ec021fad47f8eda164"}, + {file = "geventhttpclient-1.5.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:943dba14695c6ee2b223453681409d7145a252f4e5728b4084d46cf5a0818bc3"}, + {file = "geventhttpclient-1.5.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3f975acefdd2e6ed531cc851e9f86bbad0f4216ac1926c4cdb5a8223a20538f4"}, + {file = "geventhttpclient-1.5.3-cp37-cp37m-win32.whl", hash = "sha256:182c0c0e5c00d1ebf780ce1710de558afa4cdf043868238c7a22e136359ff103"}, + {file = "geventhttpclient-1.5.3-cp37-cp37m-win_amd64.whl", hash = "sha256:43dde1d98a194dc27bd9e38df62371d0f5d25a8e5f1dfb09dc1cd2fae5b492fb"}, + {file = "geventhttpclient-1.5.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d241e0ea4a1cc27547021ef7b93e7899734343d25f9b1912599af180336b3289"}, + {file = "geventhttpclient-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d14aac14c46a4c9b1cc938aaefefa1eef4d9eb0b70ac32869354cff085295b6"}, + {file = "geventhttpclient-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3dbc316d0e9367626f108d86d14b5e882ef9783c381a684682dc849a8e0c2c9f"}, + {file = "geventhttpclient-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0cb141fdeae74f2e078e06eea456809f289f34c1cfb471dae0b3e0afd01b77b"}, + {file = "geventhttpclient-1.5.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7237c2ab19e1952598e1a75c01b69595440728bb570dbe528f9805c89b1d3970"}, + {file = "geventhttpclient-1.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:421a17dab9d17d6357250a8689f8a2b9c3d46177b2b04b26a6f19dc8df134c12"}, + {file = "geventhttpclient-1.5.3-cp38-cp38-win32.whl", hash = "sha256:f0734dae0672a1d6b0bc4117d68c7d043e182583d1437bcdf229dd44f7d038ce"}, + {file = "geventhttpclient-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:073fa8bef9745b3287979148bc5ca688780198b6bbb04d6fade18a1c54544ccc"}, + {file = "geventhttpclient-1.5.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:86057e189cafa5a28dfb02b05702930fa5767b265103c34dad38721f9100d76c"}, + {file = "geventhttpclient-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b0dd0c06f8e22f369b35b5f572b7053c3ee5f0f70843fa2137c387d5c07cca29"}, + {file = "geventhttpclient-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:727640fca6ede582aacb528ebceacb7b2bf66ab9686fb9900ea7db2c951a747e"}, + {file = "geventhttpclient-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49a42d0043840436d742fb227fae5135eb3535b740187c55d9cefa13508d15b5"}, + {file = "geventhttpclient-1.5.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f1562957ddf70691c737c8fc6b44aa6720882a74feae3e0108a985a04139bb41"}, + {file = "geventhttpclient-1.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:33d414082ff1f8e00a5396c17a6e8876c7f85ca50c08cb61df305a13757d7bd9"}, + {file = "geventhttpclient-1.5.3-cp39-cp39-win32.whl", hash = "sha256:3c67a1800ba975e8a1c3778c01d53b62e87c50a6a88345a2675d0ccdebf16d61"}, + {file = "geventhttpclient-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:f5cef10107fed1fa6d802c4dea4cfc7fb604ff1c9edbe747084b4089a4d1db3a"}, + {file = "geventhttpclient-1.5.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c4f3e3c7bff985ed157388c33f170f19599235b8019e583670f9d9edb8ba6e67"}, + {file = "geventhttpclient-1.5.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fbeb1ed7228fc406229c8693f8a02b8e064f7a9979665ac0181c983667cc383c"}, + {file = "geventhttpclient-1.5.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1b0c15e4da83b724c812e76e79eb85f230a194c1fc88d1f4d47ded32b31a84bb"}, + {file = "geventhttpclient-1.5.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:32401a3d018e2e71a05a6427cc3b44fa9361678c6d6162c50ebe03e3af974aa0"}, + {file = "geventhttpclient-1.5.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:2bb160ca3a6d53f9ea9bfd1aa901c5a03d39a6f9a3a802de734a8447ca29df9c"}, + {file = "geventhttpclient-1.5.3.tar.gz", hash = "sha256:d80ec9ff42b7219f33558185499d0b4365597fc55ff886207b45f5632e099780"}, ] greenlet = [ - {file = "greenlet-0.4.16-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:80cb0380838bf4e48da6adedb0c7cd060c187bb4a75f67a5aa9ec33689b84872"}, - {file = "greenlet-0.4.16-cp27-cp27m-win32.whl", hash = "sha256:df7de669cbf21de4b04a3ffc9920bc8426cab4c61365fa84d79bf97401a8bef7"}, - {file = "greenlet-0.4.16-cp27-cp27m-win_amd64.whl", hash = "sha256:1429dc183b36ec972055e13250d96e174491559433eb3061691b446899b87384"}, - {file = "greenlet-0.4.16-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:5ea034d040e6ab1d2ae04ab05a3f37dbd719c4dee3804b13903d4cc794b1336e"}, - {file = "greenlet-0.4.16-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c196a5394c56352e21cb7224739c6dd0075b69dd56f758505951d1d8d68cf8a9"}, - {file = "greenlet-0.4.16-cp35-cp35m-win32.whl", hash = "sha256:1000038ba0ea9032948e2156a9c15f5686f36945e8f9906e6b8db49f358e7b52"}, - {file = "greenlet-0.4.16-cp35-cp35m-win_amd64.whl", hash = "sha256:1b805231bfb7b2900a16638c3c8b45c694334c811f84463e52451e00c9412691"}, - {file = "greenlet-0.4.16-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e5db19d4a7d41bbeb3dd89b49fc1bc7e6e515b51bbf32589c618655a0ebe0bf0"}, - {file = "greenlet-0.4.16-cp36-cp36m-win32.whl", hash = "sha256:eac2a3f659d5f41d6bbfb6a97733bc7800ea5e906dc873732e00cebb98cec9e4"}, - {file = "greenlet-0.4.16-cp36-cp36m-win_amd64.whl", hash = "sha256:7eed31f4efc8356e200568ba05ad645525f1fbd8674f1e5be61a493e715e3873"}, - {file = "greenlet-0.4.16-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:682328aa576ec393c1872615bcb877cf32d800d4a2f150e1a5dc7e56644010b1"}, - {file = "greenlet-0.4.16-cp37-cp37m-win32.whl", hash = "sha256:3a35e33902b2e6079949feed7a2dafa5ac6f019da97bd255842bb22de3c11bf5"}, - {file = "greenlet-0.4.16-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b2a984bbfc543d144d88caad6cc7ff4a71be77102014bd617bd88cfb038727"}, - {file = "greenlet-0.4.16-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d83c1d38658b0f81c282b41238092ed89d8f93c6e342224ab73fb39e16848721"}, - {file = "greenlet-0.4.16-cp38-cp38-win32.whl", hash = "sha256:e695ac8c3efe124d998230b219eb51afb6ef10524a50b3c45109c4b77a8a3a92"}, - {file = "greenlet-0.4.16-cp38-cp38-win_amd64.whl", hash = "sha256:133ba06bad4e5f2f8bf6a0ac434e0fd686df749a86b3478903b92ec3a9c0c90b"}, - {file = "greenlet-0.4.16.tar.gz", hash = "sha256:6e06eac722676797e8fce4adb8ad3dc57a1bb3adfb0dd3fdf8306c055a38456c"}, + {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, + {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, + {file = "greenlet-1.1.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d"}, + {file = "greenlet-1.1.2-cp27-cp27m-win32.whl", hash = "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713"}, + {file = "greenlet-1.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40"}, + {file = "greenlet-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d"}, + {file = "greenlet-1.1.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8"}, + {file = "greenlet-1.1.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1"}, + {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58"}, + {file = "greenlet-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b336501a05e13b616ef81ce329c0e09ac5ed8c732d9ba7e3e983fcc1a9e86965"}, + {file = "greenlet-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708"}, + {file = "greenlet-1.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23"}, + {file = "greenlet-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee"}, + {file = "greenlet-1.1.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c"}, + {file = "greenlet-1.1.2-cp35-cp35m-win32.whl", hash = "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963"}, + {file = "greenlet-1.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e"}, + {file = "greenlet-1.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08"}, + {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168"}, + {file = "greenlet-1.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b8c008de9d0daba7b6666aa5bbfdc23dcd78cafc33997c9b7741ff6353bafb7f"}, + {file = "greenlet-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa"}, + {file = "greenlet-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d"}, + {file = "greenlet-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28"}, + {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5"}, + {file = "greenlet-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c5d5b35f789a030ebb95bff352f1d27a93d81069f2adb3182d99882e095cefe"}, + {file = "greenlet-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc"}, + {file = "greenlet-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06"}, + {file = "greenlet-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711"}, + {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b"}, + {file = "greenlet-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bde6792f313f4e918caabc46532aa64aa27a0db05d75b20edfc5c6f46479de2"}, + {file = "greenlet-1.1.2-cp38-cp38-win32.whl", hash = "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd"}, + {file = "greenlet-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3"}, + {file = "greenlet-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b"}, + {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3"}, + {file = "greenlet-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0051c6f1f27cb756ffc0ffbac7d2cd48cb0362ac1736871399a739b2885134d3"}, + {file = "greenlet-1.1.2-cp39-cp39-win32.whl", hash = "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf"}, + {file = "greenlet-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd"}, + {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"}, ] h11 = [ {file = "h11-0.9.0-py2.py3-none-any.whl", hash = "sha256:4bc6d6a1238b7615b266ada57e0618568066f57dd6fa967d1290ec9309b2f2f1"}, {file = "h11-0.9.0.tar.gz", hash = "sha256:33d4bca7be0fa039f4e84d50ab00531047e53d6ee8ffbc83501ea602c169cae1"}, ] httptools = [ - {file = "httptools-0.1.1-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:a2719e1d7a84bb131c4f1e0cb79705034b48de6ae486eb5297a139d6a3296dce"}, - {file = "httptools-0.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:fa3cd71e31436911a44620473e873a256851e1f53dee56669dae403ba41756a4"}, - {file = "httptools-0.1.1-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:86c6acd66765a934e8730bf0e9dfaac6fdcf2a4334212bd4a0a1c78f16475ca6"}, - {file = "httptools-0.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:bc3114b9edbca5a1eb7ae7db698c669eb53eb8afbbebdde116c174925260849c"}, - {file = "httptools-0.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:ac0aa11e99454b6a66989aa2d44bca41d4e0f968e395a0a8f164b401fefe359a"}, - {file = "httptools-0.1.1-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:96da81e1992be8ac2fd5597bf0283d832287e20cb3cfde8996d2b00356d4e17f"}, - {file = "httptools-0.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:56b6393c6ac7abe632f2294da53f30d279130a92e8ae39d8d14ee2e1b05ad1f2"}, - {file = "httptools-0.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:96eb359252aeed57ea5c7b3d79839aaa0382c9d3149f7d24dd7172b1bcecb009"}, - {file = "httptools-0.1.1-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:fea04e126014169384dee76a153d4573d90d0cbd1d12185da089f73c78390437"}, - {file = "httptools-0.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:3592e854424ec94bd17dc3e0c96a64e459ec4147e6d53c0a42d0ebcef9cb9c5d"}, - {file = "httptools-0.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:0a4b1b2012b28e68306575ad14ad5e9120b34fccd02a81eb08838d7e3bbb48be"}, - {file = "httptools-0.1.1.tar.gz", hash = "sha256:41b573cf33f64a8f8f3400d0a7faf48e1888582b6f6e02b82b9bd4f0bf7497ce"}, + {file = "httptools-0.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:1e35aa179b67086cc600a984924a88589b90793c9c1b260152ca4908786e09df"}, + {file = "httptools-0.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c4111a0a8a00eff1e495d43ea5230aaf64968a48ddba8ea2d5f982efae827404"}, + {file = "httptools-0.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:dce59ee45dd6ee6c434346a5ac527c44014326f560866b4b2f414a692ee1aca8"}, + {file = "httptools-0.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:f759717ca1b2ef498c67ba4169c2b33eecf943a89f5329abcff8b89d153eb500"}, + {file = "httptools-0.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:08b79e09114e6ab5c3dbf560bba2cb2257ea38cdaeaf99b7cb80d8f92622fcd9"}, + {file = "httptools-0.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:8fcca4b7efe353b13a24017211334c57d055a6e132c7adffed13a10d28efca57"}, + {file = "httptools-0.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:aebdf0bd7bf7c90ae6b3be458692bf6e9e5b610b501f9f74c7979015a51db4c4"}, + {file = "httptools-0.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:fbf7ecd31c39728f251b1c095fd27c84e4d21f60a1d079a0333472ff3ae59d34"}, + {file = "httptools-0.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:c1c63d860749841024951b0a78e4dec6f543d23751ef061d6ab60064c7b8b524"}, + {file = "httptools-0.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fb7199b8fb0c50a22e77260bb59017e0c075fa80cb03bb2c8692de76e7bb7fe7"}, + {file = "httptools-0.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bda99a5723e7eab355ce57435c70853fc137a65aebf2f1cd4d15d96e2956da7b"}, + {file = "httptools-0.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:851026bd63ec0af7e7592890d97d15c92b62d9e17094353f19a52c8e2b33710a"}, + {file = "httptools-0.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:31629e1f1b89959f8c0927bad12184dc07977dcf71e24f4772934aa490aa199b"}, + {file = "httptools-0.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:9abd788465aa46a0f288bd3a99e53edd184177d6379e2098fd6097bb359ad9d6"}, + {file = "httptools-0.1.2.tar.gz", hash = "sha256:07659649fe6b3948b6490825f89abe5eb1cec79ebfaaa0b4bf30f3f33f3c2ba8"}, ] idna = [ - {file = "idna-2.9-py2.py3-none-any.whl", hash = "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa"}, - {file = "idna-2.9.tar.gz", hash = "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb"}, -] -immutables = [ - {file = "immutables-0.14-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:860666fab142401a5535bf65cbd607b46bc5ed25b9d1eb053ca8ed9a1a1a80d6"}, - {file = "immutables-0.14-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:ce01788878827c3f0331c254a4ad8d9721489a5e65cc43e19c80040b46e0d297"}, - {file = "immutables-0.14-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:8797eed4042f4626b0bc04d9cf134208918eb0c937a8193a2c66df5041e62d2e"}, - {file = "immutables-0.14-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:33ce2f977da7b5e0dddd93744862404bdb316ffe5853ec853e53141508fa2e6a"}, - {file = "immutables-0.14-cp36-cp36m-win_amd64.whl", hash = "sha256:6c8eace4d98988c72bcb37c05e79aae756832738305ae9497670482a82db08bc"}, - {file = "immutables-0.14-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:ab6c18b7b2b2abc83e0edc57b0a38bf0915b271582a1eb8c7bed1c20398f8040"}, - {file = "immutables-0.14-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:c099212fd6504513a50e7369fe281007c820cf9d7bb22a336486c63d77d6f0b2"}, - {file = "immutables-0.14-cp37-cp37m-win_amd64.whl", hash = "sha256:714aedbdeba4439d91cb5e5735cb10631fc47a7a69ea9cc8ecbac90322d50a4a"}, - {file = "immutables-0.14-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:1c11050c49e193a1ec9dda1747285333f6ba6a30bbeb2929000b9b1192097ec0"}, - {file = "immutables-0.14-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:c453e12b95e1d6bb4909e8743f88b7f5c0c97b86a8bc0d73507091cb644e3c1e"}, - {file = "immutables-0.14-cp38-cp38-win_amd64.whl", hash = "sha256:ef9da20ec0f1c5853b5c8f8e3d9e1e15b8d98c259de4b7515d789a606af8745e"}, - {file = "immutables-0.14.tar.gz", hash = "sha256:a0a1cc238b678455145bae291d8426f732f5255537ed6a5b7645949704c70a78"}, + {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, + {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] importlib-metadata = [ - {file = "importlib_metadata-1.6.1-py2.py3-none-any.whl", hash = "sha256:15ec6c0fd909e893e3a08b3a7c76ecb149122fb14b7efe1199ddd4c7c57ea958"}, - {file = "importlib_metadata-1.6.1.tar.gz", hash = "sha256:0505dd08068cfec00f53a74a0ad927676d7757da81b7436a6eefe4c7cf75c545"}, + {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, + {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, ] itsdangerous = [ - {file = "itsdangerous-1.1.0-py2.py3-none-any.whl", hash = "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"}, - {file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"}, + {file = "itsdangerous-2.1.1-py3-none-any.whl", hash = "sha256:935642cd4b987cdbee7210080004033af76306757ff8b4c0a506a4b6e06f02cf"}, + {file = "itsdangerous-2.1.1.tar.gz", hash = "sha256:7b7d3023cd35d9cb0c1fd91392f8c95c6fa02c59bf8ad64b8849be3401b95afb"}, ] jinja2 = [ {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"}, @@ -1530,123 +1548,148 @@ jmespath = [ {file = "jmespath-0.9.5.tar.gz", hash = "sha256:cca55c8d153173e21baa59983015ad0daf603f9cb799904ff057bfb8ff8dc2d9"}, ] locust = [ - {file = "locust-1.0.3-py3-none-any.whl", hash = "sha256:b80deea54f470d8fd61a8f610d87041ce908924fe3fca09700376de49aa89195"}, - {file = "locust-1.0.3.tar.gz", hash = "sha256:7c2e850a84275b6f7c5ad4a8abde3488df94c08d3b52e619d9c71cc6b8c853cb"}, + {file = "locust-1.6.0-py3-none-any.whl", hash = "sha256:28e4846d1ac14b88a4f29641d7306108dc652964331bdb57cd2991a6140b0515"}, + {file = "locust-1.6.0.tar.gz", hash = "sha256:95715ed82173d77a338bd91af01814ad2a199ed076880a720c3bc95462b796b3"}, ] loguru = [ {file = "loguru-0.4.1-py3-none-any.whl", hash = "sha256:074b3caa6748452c1e4f2b302093c94b65d5a4c5a4d7743636b4121e06437b0e"}, {file = "loguru-0.4.1.tar.gz", hash = "sha256:a6101fd435ac89ba5205a105a26a6ede9e4ddbb4408a6e167852efca47806d11"}, ] markupsafe = [ - {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"}, - {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"}, - {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"}, - {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"}, - {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"}, - {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"}, - {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"}, - {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"}, - {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"}, - {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"}, - {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"}, - {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"}, - {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"}, - {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"}, - {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"}, - {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, - {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, - {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, - {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"}, - {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"}, - {file = "MarkupSafe-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c"}, - {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb"}, - {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014"}, - {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850"}, - {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85"}, - {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621"}, - {file = "MarkupSafe-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39"}, - {file = "MarkupSafe-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8"}, - {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] more-itertools = [ - {file = "more-itertools-8.4.0.tar.gz", hash = "sha256:68c70cc7167bdf5c7c9d8f6954a7837089c6a36bf565383919bb595efb8a17e5"}, - {file = "more_itertools-8.4.0-py3-none-any.whl", hash = "sha256:b78134b2063dd214000685165d81c154522c3ee0a1c0d4d113c80361c234c5a2"}, + {file = "more-itertools-8.12.0.tar.gz", hash = "sha256:7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064"}, + {file = "more_itertools-8.12.0-py3-none-any.whl", hash = "sha256:43e6dd9942dffd72661a2c4ef383ad7da1e6a3e968a927ad7a6083ab410a688b"}, ] msgpack = [ - {file = "msgpack-1.0.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:cec8bf10981ed70998d98431cd814db0ecf3384e6b113366e7f36af71a0fca08"}, - {file = "msgpack-1.0.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:aa5c057eab4f40ec47ea6f5a9825846be2ff6bf34102c560bad5cad5a677c5be"}, - {file = "msgpack-1.0.0-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:4233b7f86c1208190c78a525cd3828ca1623359ef48f78a6fea4b91bb995775a"}, - {file = "msgpack-1.0.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:b3758dfd3423e358bbb18a7cccd1c74228dffa7a697e5be6cb9535de625c0dbf"}, - {file = "msgpack-1.0.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:25b3bc3190f3d9d965b818123b7752c5dfb953f0d774b454fd206c18fe384fb8"}, - {file = "msgpack-1.0.0-cp36-cp36m-win32.whl", hash = "sha256:e7bbdd8e2b277b77782f3ce34734b0dfde6cbe94ddb74de8d733d603c7f9e2b1"}, - {file = "msgpack-1.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:5dba6d074fac9b24f29aaf1d2d032306c27f04187651511257e7831733293ec2"}, - {file = "msgpack-1.0.0-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:908944e3f038bca67fcfedb7845c4a257c7749bf9818632586b53bcf06ba4b97"}, - {file = "msgpack-1.0.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:db685187a415f51d6b937257474ca72199f393dad89534ebbdd7d7a3b000080e"}, - {file = "msgpack-1.0.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ea41c9219c597f1d2bf6b374d951d310d58684b5de9dc4bd2976db9e1e22c140"}, - {file = "msgpack-1.0.0-cp37-cp37m-win32.whl", hash = "sha256:e35b051077fc2f3ce12e7c6a34cf309680c63a842db3a0616ea6ed25ad20d272"}, - {file = "msgpack-1.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:5bea44181fc8e18eed1d0cd76e355073f00ce232ff9653a0ae88cb7d9e643322"}, - {file = "msgpack-1.0.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c901e8058dd6653307906c5f157f26ed09eb94a850dddd989621098d347926ab"}, - {file = "msgpack-1.0.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:271b489499a43af001a2e42f42d876bb98ccaa7e20512ff37ca78c8e12e68f84"}, - {file = "msgpack-1.0.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7a22c965588baeb07242cb561b63f309db27a07382825fc98aecaf0827c1538e"}, - {file = "msgpack-1.0.0-cp38-cp38-win32.whl", hash = "sha256:002a0d813e1f7b60da599bdf969e632074f9eec1b96cbed8fb0973a63160a408"}, - {file = "msgpack-1.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:39c54fdebf5fa4dda733369012c59e7d085ebdfe35b6cf648f09d16708f1be5d"}, - {file = "msgpack-1.0.0.tar.gz", hash = "sha256:9534d5cc480d4aff720233411a1f765be90885750b07df772380b34c10ecb5c0"}, + {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96acc674bb9c9be63fa8b6dabc3248fdc575c4adc005c440ad02f87ca7edd079"}, + {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c3ca57c96c8e69c1a0d2926a6acf2d9a522b41dc4253a8945c4c6cd4981a4e3"}, + {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0a792c091bac433dfe0a70ac17fc2087d4595ab835b47b89defc8bbabcf5c73"}, + {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c58cdec1cb5fcea8c2f1771d7b5fec79307d056874f746690bd2bdd609ab147"}, + {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f97c0f35b3b096a330bb4a1a9247d0bd7e1f3a2eba7ab69795501504b1c2c39"}, + {file = "msgpack-1.0.3-cp310-cp310-win32.whl", hash = "sha256:36a64a10b16c2ab31dcd5f32d9787ed41fe68ab23dd66957ca2826c7f10d0b85"}, + {file = "msgpack-1.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c1ba333b4024c17c7591f0f372e2daa3c31db495a9b2af3cf664aef3c14354f7"}, + {file = "msgpack-1.0.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c2140cf7a3ec475ef0938edb6eb363fa704159e0bf71dde15d953bacc1cf9d7d"}, + {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f4c22717c74d44bcd7af353024ce71c6b55346dad5e2cc1ddc17ce8c4507c6b"}, + {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d733a15ade190540c703de209ffbc42a3367600421b62ac0c09fde594da6ec"}, + {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7e03b06f2982aa98d4ddd082a210c3db200471da523f9ac197f2828e80e7770"}, + {file = "msgpack-1.0.3-cp36-cp36m-win32.whl", hash = "sha256:3d875631ecab42f65f9dce6f55ce6d736696ced240f2634633188de2f5f21af9"}, + {file = "msgpack-1.0.3-cp36-cp36m-win_amd64.whl", hash = "sha256:40fb89b4625d12d6027a19f4df18a4de5c64f6f3314325049f219683e07e678a"}, + {file = "msgpack-1.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6eef0cf8db3857b2b556213d97dd82de76e28a6524853a9beb3264983391dc1a"}, + {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d8c332f53ffff01953ad25131272506500b14750c1d0ce8614b17d098252fbc"}, + {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c0903bd93cbd34653dd63bbfcb99d7539c372795201f39d16fdfde4418de43a"}, + {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf1e6bfed4860d72106f4e0a1ab519546982b45689937b40257cfd820650b920"}, + {file = "msgpack-1.0.3-cp37-cp37m-win32.whl", hash = "sha256:d02cea2252abc3756b2ac31f781f7a98e89ff9759b2e7450a1c7a0d13302ff50"}, + {file = "msgpack-1.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2f30dd0dc4dfe6231ad253b6f9f7128ac3202ae49edd3f10d311adc358772dba"}, + {file = "msgpack-1.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f201d34dc89342fabb2a10ed7c9a9aaaed9b7af0f16a5923f1ae562b31258dea"}, + {file = "msgpack-1.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bb87f23ae7d14b7b3c21009c4b1705ec107cb21ee71975992f6aca571fb4a42a"}, + {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a3a5c4b16e9d0edb823fe54b59b5660cc8d4782d7bf2c214cb4b91a1940a8ef"}, + {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74da1e5fcf20ade12c6bf1baa17a2dc3604958922de8dc83cbe3eff22e8b611"}, + {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73a80bd6eb6bcb338c1ec0da273f87420829c266379c8c82fa14c23fb586cfa1"}, + {file = "msgpack-1.0.3-cp38-cp38-win32.whl", hash = "sha256:9fce00156e79af37bb6db4e7587b30d11e7ac6a02cb5bac387f023808cd7d7f4"}, + {file = "msgpack-1.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:9b6f2d714c506e79cbead331de9aae6837c8dd36190d02da74cb409b36162e8a"}, + {file = "msgpack-1.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:89908aea5f46ee1474cc37fbc146677f8529ac99201bc2faf4ef8edc023c2bf3"}, + {file = "msgpack-1.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:973ad69fd7e31159eae8f580f3f707b718b61141838321c6fa4d891c4a2cca52"}, + {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da24375ab4c50e5b7486c115a3198d207954fe10aaa5708f7b65105df09109b2"}, + {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a598d0685e4ae07a0672b59792d2cc767d09d7a7f39fd9bd37ff84e060b1a996"}, + {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4c309a68cb5d6bbd0c50d5c71a25ae81f268c2dc675c6f4ea8ab2feec2ac4e2"}, + {file = "msgpack-1.0.3-cp39-cp39-win32.whl", hash = "sha256:494471d65b25a8751d19c83f1a482fd411d7ca7a3b9e17d25980a74075ba0e88"}, + {file = "msgpack-1.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:f01b26c2290cbd74316990ba84a14ac3d599af9cebefc543d241a66e785cf17d"}, + {file = "msgpack-1.0.3.tar.gz", hash = "sha256:51fdc7fb93615286428ee7758cecc2f374d5ff363bdd884c7ea622a7a327a81e"}, ] packaging = [ - {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, - {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] pathspec = [ - {file = "pathspec-0.8.0-py2.py3-none-any.whl", hash = "sha256:7d91249d21749788d07a2d0f94147accd8f845507400749ea19c1ec9054a12b0"}, - {file = "pathspec-0.8.0.tar.gz", hash = "sha256:da45173eb3a6f2a5a487efba21f050af2b41948be6ab52b6a1e3ff22bb8b7061"}, + {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, + {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, ] pluggy = [ {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, ] psutil = [ - {file = "psutil-5.7.0-cp27-none-win32.whl", hash = "sha256:298af2f14b635c3c7118fd9183843f4e73e681bb6f01e12284d4d70d48a60953"}, - {file = "psutil-5.7.0-cp27-none-win_amd64.whl", hash = "sha256:75e22717d4dbc7ca529ec5063000b2b294fc9a367f9c9ede1f65846c7955fd38"}, - {file = "psutil-5.7.0-cp35-cp35m-win32.whl", hash = "sha256:f344ca230dd8e8d5eee16827596f1c22ec0876127c28e800d7ae20ed44c4b310"}, - {file = "psutil-5.7.0-cp35-cp35m-win_amd64.whl", hash = "sha256:e2d0c5b07c6fe5a87fa27b7855017edb0d52ee73b71e6ee368fae268605cc3f5"}, - {file = "psutil-5.7.0-cp36-cp36m-win32.whl", hash = "sha256:a02f4ac50d4a23253b68233b07e7cdb567bd025b982d5cf0ee78296990c22d9e"}, - {file = "psutil-5.7.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1413f4158eb50e110777c4f15d7c759521703bd6beb58926f1d562da40180058"}, - {file = "psutil-5.7.0-cp37-cp37m-win32.whl", hash = "sha256:d008ddc00c6906ec80040d26dc2d3e3962109e40ad07fd8a12d0284ce5e0e4f8"}, - {file = "psutil-5.7.0-cp37-cp37m-win_amd64.whl", hash = "sha256:73f35ab66c6c7a9ce82ba44b1e9b1050be2a80cd4dcc3352cc108656b115c74f"}, - {file = "psutil-5.7.0-cp38-cp38-win32.whl", hash = "sha256:60b86f327c198561f101a92be1995f9ae0399736b6eced8f24af41ec64fb88d4"}, - {file = "psutil-5.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:d84029b190c8a66a946e28b4d3934d2ca1528ec94764b180f7d6ea57b0e75e26"}, - {file = "psutil-5.7.0.tar.gz", hash = "sha256:685ec16ca14d079455892f25bd124df26ff9137664af445563c1bd36629b5e0e"}, + {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:55ce319452e3d139e25d6c3f85a1acf12d1607ddedea5e35fb47a552c051161b"}, + {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:7336292a13a80eb93c21f36bde4328aa748a04b68c13d01dfddd67fc13fd0618"}, + {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:cb8d10461c1ceee0c25a64f2dd54872b70b89c26419e147a05a10b753ad36ec2"}, + {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:7641300de73e4909e5d148e90cc3142fb890079e1525a840cf0dfd39195239fd"}, + {file = "psutil-5.9.0-cp27-none-win32.whl", hash = "sha256:ea42d747c5f71b5ccaa6897b216a7dadb9f52c72a0fe2b872ef7d3e1eacf3ba3"}, + {file = "psutil-5.9.0-cp27-none-win_amd64.whl", hash = "sha256:ef216cc9feb60634bda2f341a9559ac594e2eeaadd0ba187a4c2eb5b5d40b91c"}, + {file = "psutil-5.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90a58b9fcae2dbfe4ba852b57bd4a1dded6b990a33d6428c7614b7d48eccb492"}, + {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d41f8b3e9ebb6b6110057e40019a432e96aae2008951121ba4e56040b84f3"}, + {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:742c34fff804f34f62659279ed5c5b723bb0195e9d7bd9907591de9f8f6558e2"}, + {file = "psutil-5.9.0-cp310-cp310-win32.whl", hash = "sha256:8293942e4ce0c5689821f65ce6522ce4786d02af57f13c0195b40e1edb1db61d"}, + {file = "psutil-5.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:9b51917c1af3fa35a3f2dabd7ba96a2a4f19df3dec911da73875e1edaf22a40b"}, + {file = "psutil-5.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e9805fed4f2a81de98ae5fe38b75a74c6e6ad2df8a5c479594c7629a1fe35f56"}, + {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c51f1af02334e4b516ec221ee26b8fdf105032418ca5a5ab9737e8c87dafe203"}, + {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32acf55cb9a8cbfb29167cd005951df81b567099295291bcfd1027365b36591d"}, + {file = "psutil-5.9.0-cp36-cp36m-win32.whl", hash = "sha256:e5c783d0b1ad6ca8a5d3e7b680468c9c926b804be83a3a8e95141b05c39c9f64"}, + {file = "psutil-5.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d62a2796e08dd024b8179bd441cb714e0f81226c352c802fca0fd3f89eeacd94"}, + {file = "psutil-5.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d00a664e31921009a84367266b35ba0aac04a2a6cad09c550a89041034d19a0"}, + {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7779be4025c540d1d65a2de3f30caeacc49ae7a2152108adeaf42c7534a115ce"}, + {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:072664401ae6e7c1bfb878c65d7282d4b4391f1bc9a56d5e03b5a490403271b5"}, + {file = "psutil-5.9.0-cp37-cp37m-win32.whl", hash = "sha256:df2c8bd48fb83a8408c8390b143c6a6fa10cb1a674ca664954de193fdcab36a9"}, + {file = "psutil-5.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1d7b433519b9a38192dfda962dd8f44446668c009833e1429a52424624f408b4"}, + {file = "psutil-5.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3400cae15bdb449d518545cbd5b649117de54e3596ded84aacabfbb3297ead2"}, + {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2237f35c4bbae932ee98902a08050a27821f8f6dfa880a47195e5993af4702d"}, + {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1070a9b287846a21a5d572d6dddd369517510b68710fca56b0e9e02fd24bed9a"}, + {file = "psutil-5.9.0-cp38-cp38-win32.whl", hash = "sha256:76cebf84aac1d6da5b63df11fe0d377b46b7b500d892284068bacccf12f20666"}, + {file = "psutil-5.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:3151a58f0fbd8942ba94f7c31c7e6b310d2989f4da74fcbf28b934374e9bf841"}, + {file = "psutil-5.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:539e429da49c5d27d5a58e3563886057f8fc3868a5547b4f1876d9c0f007bccf"}, + {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58c7d923dc209225600aec73aa2c4ae8ea33b1ab31bc11ef8a5933b027476f07"}, + {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3611e87eea393f779a35b192b46a164b1d01167c9d323dda9b1e527ea69d697d"}, + {file = "psutil-5.9.0-cp39-cp39-win32.whl", hash = "sha256:4e2fb92e3aeae3ec3b7b66c528981fd327fb93fd906a77215200404444ec1845"}, + {file = "psutil-5.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:7d190ee2eaef7831163f254dc58f6d2e2a22e27382b936aab51c835fc080c3d3"}, + {file = "psutil-5.9.0.tar.gz", hash = "sha256:869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25"}, ] py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] pycparser = [ - {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"}, - {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"}, + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, ] pydantic = [ {file = "pydantic-1.8.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:05ddfd37c1720c392f4e0d43c484217b7521558302e7069ce8d318438d297739"}, @@ -1673,8 +1716,8 @@ pydantic = [ {file = "pydantic-1.8.2.tar.gz", hash = "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b"}, ] pyparsing = [ - {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, - {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, + {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, + {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, ] pytest = [ {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, @@ -1685,8 +1728,22 @@ pytest-html = [ {file = "pytest_html-2.1.1-py2.py3-none-any.whl", hash = "sha256:9e4817e8be8ddde62e8653c8934d0f296b605da3d2277a052f762c56a8b32df2"}, ] pytest-metadata = [ - {file = "pytest-metadata-1.9.0.tar.gz", hash = "sha256:168d203abba8cabb65cf1b5fa675b0ba60dccbf1825d147960876a7e6f7c219c"}, - {file = "pytest_metadata-1.9.0-py2.py3-none-any.whl", hash = "sha256:91d09c0e367e93c63c98461e9960833f465bff53d00ed2f8ccf680205e5053a4"}, + {file = "pytest-metadata-1.11.0.tar.gz", hash = "sha256:71b506d49d34e539cc3cfdb7ce2c5f072bea5c953320002c95968e0238f8ecf1"}, + {file = "pytest_metadata-1.11.0-py2.py3-none-any.whl", hash = "sha256:576055b8336dd4a9006dd2a47615f76f2f8c30ab12b1b1c039d99e834583523f"}, +] +pywin32 = [ + {file = "pywin32-303-cp310-cp310-win32.whl", hash = "sha256:6fed4af057039f309263fd3285d7b8042d41507343cd5fa781d98fcc5b90e8bb"}, + {file = "pywin32-303-cp310-cp310-win_amd64.whl", hash = "sha256:51cb52c5ec6709f96c3f26e7795b0bf169ee0d8395b2c1d7eb2c029a5008ed51"}, + {file = "pywin32-303-cp311-cp311-win32.whl", hash = "sha256:d9b5d87ca944eb3aa4cd45516203ead4b37ab06b8b777c54aedc35975dec0dee"}, + {file = "pywin32-303-cp311-cp311-win_amd64.whl", hash = "sha256:fcf44032f5b14fcda86028cdf49b6ebdaea091230eb0a757282aa656e4732439"}, + {file = "pywin32-303-cp36-cp36m-win32.whl", hash = "sha256:aad484d52ec58008ca36bd4ad14a71d7dd0a99db1a4ca71072213f63bf49c7d9"}, + {file = "pywin32-303-cp36-cp36m-win_amd64.whl", hash = "sha256:2a09632916b6bb231ba49983fe989f2f625cea237219530e81a69239cd0c4559"}, + {file = "pywin32-303-cp37-cp37m-win32.whl", hash = "sha256:b1675d82bcf6dbc96363fca747bac8bff6f6e4a447a4287ac652aa4b9adc796e"}, + {file = "pywin32-303-cp37-cp37m-win_amd64.whl", hash = "sha256:c268040769b48a13367221fced6d4232ed52f044ffafeda247bd9d2c6bdc29ca"}, + {file = "pywin32-303-cp38-cp38-win32.whl", hash = "sha256:5f9ec054f5a46a0f4dfd72af2ce1372f3d5a6e4052af20b858aa7df2df7d355b"}, + {file = "pywin32-303-cp38-cp38-win_amd64.whl", hash = "sha256:793bf74fce164bcffd9d57bb13c2c15d56e43c9542a7b9687b4fccf8f8a41aba"}, + {file = "pywin32-303-cp39-cp39-win32.whl", hash = "sha256:7d3271c98434617a11921c5ccf74615794d97b079e22ed7773790822735cc352"}, + {file = "pywin32-303-cp39-cp39-win_amd64.whl", hash = "sha256:79cbb862c11b9af19bcb682891c1b91942ec2ff7de8151e2aea2e175899cda34"}, ] pyyaml = [ {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, @@ -1720,61 +1777,133 @@ pyyaml = [ {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, ] pyzmq = [ - {file = "pyzmq-19.0.1-cp27-cp27m-macosx_10_9_intel.whl", hash = "sha256:58688a2dfa044fad608a8e70ba8d019d0b872ec2acd75b7b5e37da8905605891"}, - {file = "pyzmq-19.0.1-cp27-cp27m-win32.whl", hash = "sha256:87c78f6936e2654397ca2979c1d323ee4a889eef536cc77a938c6b5be33351a7"}, - {file = "pyzmq-19.0.1-cp27-cp27m-win_amd64.whl", hash = "sha256:97b6255ae77328d0e80593681826a0479cb7bac0ba8251b4dd882f5145a2293a"}, - {file = "pyzmq-19.0.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:15b4cb21118f4589c4db8be4ac12b21c8b4d0d42b3ee435d47f686c32fe2e91f"}, - {file = "pyzmq-19.0.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:931339ac2000d12fe212e64f98ce291e81a7ec6c73b125f17cf08415b753c087"}, - {file = "pyzmq-19.0.1-cp35-cp35m-macosx_10_9_intel.whl", hash = "sha256:2a88b8fabd9cc35bd59194a7723f3122166811ece8b74018147a4ed8489e6421"}, - {file = "pyzmq-19.0.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:bafd651b557dd81d89bd5f9c678872f3e7b7255c1c751b78d520df2caac80230"}, - {file = "pyzmq-19.0.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:8952f6ba6ae598e792703f3134af5a01af8f5c7cf07e9a148f05a12b02412cea"}, - {file = "pyzmq-19.0.1-cp35-cp35m-win32.whl", hash = "sha256:54aa24fd60c4262286fc64ca632f9e747c7cc3a3a1144827490e1dc9b8a3a960"}, - {file = "pyzmq-19.0.1-cp35-cp35m-win_amd64.whl", hash = "sha256:dcbc3f30c11c60d709c30a213dc56e88ac016fe76ac6768e64717bd976072566"}, - {file = "pyzmq-19.0.1-cp36-cp36m-macosx_10_9_intel.whl", hash = "sha256:6ca519309703e95d55965735a667809bbb65f52beda2fdb6312385d3e7a6d234"}, - {file = "pyzmq-19.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:4ee0bfd82077a3ff11c985369529b12853a4064320523f8e5079b630f9551448"}, - {file = "pyzmq-19.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ba6f24431b569aec674ede49cad197cad59571c12deed6ad8e3c596da8288217"}, - {file = "pyzmq-19.0.1-cp36-cp36m-win32.whl", hash = "sha256:956775444d01331c7eb412c5fb9bb62130dfaac77e09f32764ea1865234e2ca9"}, - {file = "pyzmq-19.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b08780e3a55215873b3b8e6e7ca8987f14c902a24b6ac081b344fd430d6ca7cd"}, - {file = "pyzmq-19.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:21f7d91f3536f480cb2c10d0756bfa717927090b7fb863e6323f766e5461ee1c"}, - {file = "pyzmq-19.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:bfff5ffff051f5aa47ba3b379d87bd051c3196b0c8a603e8b7ed68a6b4f217ec"}, - {file = "pyzmq-19.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:07fb8fe6826a229dada876956590135871de60dbc7de5a18c3bcce2ed1f03c98"}, - {file = "pyzmq-19.0.1-cp37-cp37m-win32.whl", hash = "sha256:342fb8a1dddc569bc361387782e8088071593e7eaf3e3ecf7d6bd4976edff112"}, - {file = "pyzmq-19.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:faee2604f279d31312bc455f3d024f160b6168b9c1dde22bf62d8c88a4deca8e"}, - {file = "pyzmq-19.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5b9d21fc56c8aacd2e6d14738021a9d64f3f69b30578a99325a728e38a349f85"}, - {file = "pyzmq-19.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:af0c02cf49f4f9eedf38edb4f3b6bb621d83026e7e5d76eb5526cc5333782fd6"}, - {file = "pyzmq-19.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5f1f2eb22aab606f808163eb1d537ac9a0ba4283fbeb7a62eb48d9103cf015c2"}, - {file = "pyzmq-19.0.1-cp38-cp38-win32.whl", hash = "sha256:f9d7e742fb0196992477415bb34366c12e9bb9a0699b8b3f221ff93b213d7bec"}, - {file = "pyzmq-19.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:5b99c2ae8089ef50223c28bac57510c163bfdff158c9e90764f812b94e69a0e6"}, - {file = "pyzmq-19.0.1-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:cf5d689ba9513b9753959164cf500079383bc18859f58bf8ce06d8d4bef2b054"}, - {file = "pyzmq-19.0.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:aaa8b40b676576fd7806839a5de8e6d5d1b74981e6376d862af6c117af2a3c10"}, - {file = "pyzmq-19.0.1.tar.gz", hash = "sha256:13a5638ab24d628a6ade8f794195e1a1acd573496c3b85af2f1183603b7bf5e0"}, + {file = "pyzmq-22.3.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:6b217b8f9dfb6628f74b94bdaf9f7408708cb02167d644edca33f38746ca12dd"}, + {file = "pyzmq-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2841997a0d85b998cbafecb4183caf51fd19c4357075dfd33eb7efea57e4c149"}, + {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f89468059ebc519a7acde1ee50b779019535db8dcf9b8c162ef669257fef7a93"}, + {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea12133df25e3a6918718fbb9a510c6ee5d3fdd5a346320421aac3882f4feeea"}, + {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c532fd68b93998aab92356be280deec5de8f8fe59cd28763d2cc8a58747b7f"}, + {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f907c7359ce8bf7f7e63c82f75ad0223384105f5126f313400b7e8004d9b33c3"}, + {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:902319cfe23366595d3fa769b5b751e6ee6750a0a64c5d9f757d624b2ac3519e"}, + {file = "pyzmq-22.3.0-cp310-cp310-win32.whl", hash = "sha256:67db33bea0a29d03e6eeec55a8190e033318cee3cbc732ba8fd939617cbf762d"}, + {file = "pyzmq-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:7661fc1d5cb73481cf710a1418a4e1e301ed7d5d924f91c67ba84b2a1b89defd"}, + {file = "pyzmq-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79244b9e97948eaf38695f4b8e6fc63b14b78cc37f403c6642ba555517ac1268"}, + {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab888624ed68930442a3f3b0b921ad7439c51ba122dbc8c386e6487a658e4a4e"}, + {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18cd854b423fce44951c3a4d3e686bac8f1243d954f579e120a1714096637cc0"}, + {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:de8df0684398bd74ad160afdc2a118ca28384ac6f5e234eb0508858d8d2d9364"}, + {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:62bcade20813796c426409a3e7423862d50ff0639f5a2a95be4b85b09a618666"}, + {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ea5a79e808baef98c48c884effce05c31a0698c1057de8fc1c688891043c1ce1"}, + {file = "pyzmq-22.3.0-cp36-cp36m-win32.whl", hash = "sha256:3c1895c95be92600233e476fe283f042e71cf8f0b938aabf21b7aafa62a8dac9"}, + {file = "pyzmq-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:851977788b9caa8ed011f5f643d3ee8653af02c5fc723fa350db5125abf2be7b"}, + {file = "pyzmq-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b4ebed0977f92320f6686c96e9e8dd29eed199eb8d066936bac991afc37cbb70"}, + {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42abddebe2c6a35180ca549fadc7228d23c1e1f76167c5ebc8a936b5804ea2df"}, + {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1e41b32d6f7f9c26bc731a8b529ff592f31fc8b6ef2be9fa74abd05c8a342d7"}, + {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:be4e0f229cf3a71f9ecd633566bd6f80d9fa6afaaff5489492be63fe459ef98c"}, + {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:08c4e315a76ef26eb833511ebf3fa87d182152adf43dedee8d79f998a2162a0b"}, + {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:badb868fff14cfd0e200eaa845887b1011146a7d26d579aaa7f966c203736b92"}, + {file = "pyzmq-22.3.0-cp37-cp37m-win32.whl", hash = "sha256:7c58f598d9fcc52772b89a92d72bf8829c12d09746a6d2c724c5b30076c1f11d"}, + {file = "pyzmq-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2b97502c16a5ec611cd52410bdfaab264997c627a46b0f98d3f666227fd1ea2d"}, + {file = "pyzmq-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d728b08448e5ac3e4d886b165385a262883c34b84a7fe1166277fe675e1c197a"}, + {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:480b9931bfb08bf8b094edd4836271d4d6b44150da051547d8c7113bf947a8b0"}, + {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7dc09198e4073e6015d9a8ea093fc348d4e59de49382476940c3dd9ae156fba8"}, + {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ca6cd58f62a2751728016d40082008d3b3412a7f28ddfb4a2f0d3c130f69e74"}, + {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:468bd59a588e276961a918a3060948ae68f6ff5a7fa10bb2f9160c18fe341067"}, + {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c88fa7410e9fc471e0858638f403739ee869924dd8e4ae26748496466e27ac59"}, + {file = "pyzmq-22.3.0-cp38-cp38-win32.whl", hash = "sha256:c0f84360dcca3481e8674393bdf931f9f10470988f87311b19d23cda869bb6b7"}, + {file = "pyzmq-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f762442bab706fd874064ca218b33a1d8e40d4938e96c24dafd9b12e28017f45"}, + {file = "pyzmq-22.3.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:954e73c9cd4d6ae319f1c936ad159072b6d356a92dcbbabfd6e6204b9a79d356"}, + {file = "pyzmq-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f43b4a2e6218371dd4f41e547bd919ceeb6ebf4abf31a7a0669cd11cd91ea973"}, + {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:acebba1a23fb9d72b42471c3771b6f2f18dcd46df77482612054bd45c07dfa36"}, + {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cf98fd7a6c8aaa08dbc699ffae33fd71175696d78028281bc7b832b26f00ca57"}, + {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d072f7dfbdb184f0786d63bda26e8a0882041b1e393fbe98940395f7fab4c5e2"}, + {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:53f4fd13976789ffafedd4d46f954c7bb01146121812b72b4ddca286034df966"}, + {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1b5d457acbadcf8b27561deeaa386b0217f47626b29672fa7bd31deb6e91e1b"}, + {file = "pyzmq-22.3.0-cp39-cp39-win32.whl", hash = "sha256:e6a02cf7271ee94674a44f4e62aa061d2d049001c844657740e156596298b70b"}, + {file = "pyzmq-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d3dcb5548ead4f1123851a5ced467791f6986d68c656bc63bfff1bf9e36671e2"}, + {file = "pyzmq-22.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3a4c9886d61d386b2b493377d980f502186cd71d501fffdba52bd2a0880cef4f"}, + {file = "pyzmq-22.3.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:80e043a89c6cadefd3a0712f8a1322038e819ebe9dbac7eca3bce1721bcb63bf"}, + {file = "pyzmq-22.3.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1621e7a2af72cced1f6ec8ca8ca91d0f76ac236ab2e8828ac8fe909512d566cb"}, + {file = "pyzmq-22.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d6157793719de168b199194f6b6173f0ccd3bf3499e6870fac17086072e39115"}, + {file = "pyzmq-22.3.0.tar.gz", hash = "sha256:8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c"}, ] regex = [ - {file = "regex-2020.6.8-cp27-cp27m-win32.whl", hash = "sha256:fbff901c54c22425a5b809b914a3bfaf4b9570eee0e5ce8186ac71eb2025191c"}, - {file = "regex-2020.6.8-cp27-cp27m-win_amd64.whl", hash = "sha256:112e34adf95e45158c597feea65d06a8124898bdeac975c9087fe71b572bd938"}, - {file = "regex-2020.6.8-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:92d8a043a4241a710c1cf7593f5577fbb832cf6c3a00ff3fc1ff2052aff5dd89"}, - {file = "regex-2020.6.8-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:bae83f2a56ab30d5353b47f9b2a33e4aac4de9401fb582b55c42b132a8ac3868"}, - {file = "regex-2020.6.8-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:b2ba0f78b3ef375114856cbdaa30559914d081c416b431f2437f83ce4f8b7f2f"}, - {file = "regex-2020.6.8-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:95fa7726d073c87141f7bbfb04c284901f8328e2d430eeb71b8ffdd5742a5ded"}, - {file = "regex-2020.6.8-cp36-cp36m-win32.whl", hash = "sha256:e3cdc9423808f7e1bb9c2e0bdb1c9dc37b0607b30d646ff6faf0d4e41ee8fee3"}, - {file = "regex-2020.6.8-cp36-cp36m-win_amd64.whl", hash = "sha256:c78e66a922de1c95a208e4ec02e2e5cf0bb83a36ceececc10a72841e53fbf2bd"}, - {file = "regex-2020.6.8-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:08997a37b221a3e27d68ffb601e45abfb0093d39ee770e4257bd2f5115e8cb0a"}, - {file = "regex-2020.6.8-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:2f6f211633ee8d3f7706953e9d3edc7ce63a1d6aad0be5dcee1ece127eea13ae"}, - {file = "regex-2020.6.8-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:55b4c25cbb3b29f8d5e63aeed27b49fa0f8476b0d4e1b3171d85db891938cc3a"}, - {file = "regex-2020.6.8-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:89cda1a5d3e33ec9e231ece7307afc101b5217523d55ef4dc7fb2abd6de71ba3"}, - {file = "regex-2020.6.8-cp37-cp37m-win32.whl", hash = "sha256:690f858d9a94d903cf5cada62ce069b5d93b313d7d05456dbcd99420856562d9"}, - {file = "regex-2020.6.8-cp37-cp37m-win_amd64.whl", hash = "sha256:1700419d8a18c26ff396b3b06ace315b5f2a6e780dad387e4c48717a12a22c29"}, - {file = "regex-2020.6.8-cp38-cp38-manylinux1_i686.whl", hash = "sha256:654cb773b2792e50151f0e22be0f2b6e1c3a04c5328ff1d9d59c0398d37ef610"}, - {file = "regex-2020.6.8-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:52e1b4bef02f4040b2fd547357a170fc1146e60ab310cdbdd098db86e929b387"}, - {file = "regex-2020.6.8-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:cf59bbf282b627130f5ba68b7fa3abdb96372b24b66bdf72a4920e8153fc7910"}, - {file = "regex-2020.6.8-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:5aaa5928b039ae440d775acea11d01e42ff26e1561c0ffcd3d805750973c6baf"}, - {file = "regex-2020.6.8-cp38-cp38-win32.whl", hash = "sha256:97712e0d0af05febd8ab63d2ef0ab2d0cd9deddf4476f7aa153f76feef4b2754"}, - {file = "regex-2020.6.8-cp38-cp38-win_amd64.whl", hash = "sha256:6ad8663c17db4c5ef438141f99e291c4d4edfeaacc0ce28b5bba2b0bf273d9b5"}, - {file = "regex-2020.6.8.tar.gz", hash = "sha256:e9b64e609d37438f7d6e68c2546d2cb8062f3adb27e6336bc129b51be20773ac"}, + {file = "regex-2022.3.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:42eb13b93765c6698a5ab3bcd318d8c39bb42e5fa8a7fcf7d8d98923f3babdb1"}, + {file = "regex-2022.3.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9beb03ff6fe509d6455971c2489dceb31687b38781206bcec8e68bdfcf5f1db2"}, + {file = "regex-2022.3.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0a5a1fdc9f148a8827d55b05425801acebeeefc9e86065c7ac8b8cc740a91ff"}, + {file = "regex-2022.3.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb374a2a4dba7c4be0b19dc7b1adc50e6c2c26c3369ac629f50f3c198f3743a4"}, + {file = "regex-2022.3.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c33ce0c665dd325200209340a88438ba7a470bd5f09f7424e520e1a3ff835b52"}, + {file = "regex-2022.3.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04c09b9651fa814eeeb38e029dc1ae83149203e4eeb94e52bb868fadf64852bc"}, + {file = "regex-2022.3.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab5d89cfaf71807da93c131bb7a19c3e19eaefd613d14f3bce4e97de830b15df"}, + {file = "regex-2022.3.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e2630ae470d6a9f8e4967388c1eda4762706f5750ecf387785e0df63a4cc5af"}, + {file = "regex-2022.3.15-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:df037c01d68d1958dad3463e2881d3638a0d6693483f58ad41001aa53a83fcea"}, + {file = "regex-2022.3.15-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:940570c1a305bac10e8b2bc934b85a7709c649317dd16520471e85660275083a"}, + {file = "regex-2022.3.15-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7f63877c87552992894ea1444378b9c3a1d80819880ae226bb30b04789c0828c"}, + {file = "regex-2022.3.15-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:3e265b388cc80c7c9c01bb4f26c9e536c40b2c05b7231fbb347381a2e1c8bf43"}, + {file = "regex-2022.3.15-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:058054c7a54428d5c3e3739ac1e363dc9347d15e64833817797dc4f01fb94bb8"}, + {file = "regex-2022.3.15-cp310-cp310-win32.whl", hash = "sha256:76435a92e444e5b8f346aed76801db1c1e5176c4c7e17daba074fbb46cb8d783"}, + {file = "regex-2022.3.15-cp310-cp310-win_amd64.whl", hash = "sha256:174d964bc683b1e8b0970e1325f75e6242786a92a22cedb2a6ec3e4ae25358bd"}, + {file = "regex-2022.3.15-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6e1d8ed9e61f37881c8db383a124829a6e8114a69bd3377a25aecaeb9b3538f8"}, + {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b52771f05cff7517f7067fef19ffe545b1f05959e440d42247a17cd9bddae11b"}, + {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:673f5a393d603c34477dbad70db30025ccd23996a2d0916e942aac91cc42b31a"}, + {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8923e1c5231549fee78ff9b2914fad25f2e3517572bb34bfaa3aea682a758683"}, + {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:764e66a0e382829f6ad3bbce0987153080a511c19eb3d2f8ead3f766d14433ac"}, + {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd00859291658fe1fda48a99559fb34da891c50385b0bfb35b808f98956ef1e7"}, + {file = "regex-2022.3.15-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa2ce79f3889720b46e0aaba338148a1069aea55fda2c29e0626b4db20d9fcb7"}, + {file = "regex-2022.3.15-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:34bb30c095342797608727baf5c8aa122406aa5edfa12107b8e08eb432d4c5d7"}, + {file = "regex-2022.3.15-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:25ecb1dffc5e409ca42f01a2b2437f93024ff1612c1e7983bad9ee191a5e8828"}, + {file = "regex-2022.3.15-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:aa5eedfc2461c16a092a2fabc5895f159915f25731740c9152a1b00f4bcf629a"}, + {file = "regex-2022.3.15-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:7d1a6e403ac8f1d91d8f51c441c3f99367488ed822bda2b40836690d5d0059f5"}, + {file = "regex-2022.3.15-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:3e4d710ff6539026e49f15a3797c6b1053573c2b65210373ef0eec24480b900b"}, + {file = "regex-2022.3.15-cp36-cp36m-win32.whl", hash = "sha256:0100f0ded953b6b17f18207907159ba9be3159649ad2d9b15535a74de70359d3"}, + {file = "regex-2022.3.15-cp36-cp36m-win_amd64.whl", hash = "sha256:f320c070dea3f20c11213e56dbbd7294c05743417cde01392148964b7bc2d31a"}, + {file = "regex-2022.3.15-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fc8c7958d14e8270171b3d72792b609c057ec0fa17d507729835b5cff6b7f69a"}, + {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ca6dcd17f537e9f3793cdde20ac6076af51b2bd8ad5fe69fa54373b17b48d3c"}, + {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0214ff6dff1b5a4b4740cfe6e47f2c4c92ba2938fca7abbea1359036305c132f"}, + {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a98ae493e4e80b3ded6503ff087a8492db058e9c68de371ac3df78e88360b374"}, + {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b1cc70e31aacc152a12b39245974c8fccf313187eead559ee5966d50e1b5817"}, + {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4829db3737480a9d5bfb1c0320c4ee13736f555f53a056aacc874f140e98f64"}, + {file = "regex-2022.3.15-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:303b15a3d32bf5fe5a73288c316bac5807587f193ceee4eb6d96ee38663789fa"}, + {file = "regex-2022.3.15-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:dc7b7c16a519d924c50876fb152af661a20749dcbf653c8759e715c1a7a95b18"}, + {file = "regex-2022.3.15-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ce3057777a14a9a1399b81eca6a6bfc9612047811234398b84c54aeff6d536ea"}, + {file = "regex-2022.3.15-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:48081b6bff550fe10bcc20c01cf6c83dbca2ccf74eeacbfac240264775fd7ecf"}, + {file = "regex-2022.3.15-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dcbb7665a9db9f8d7642171152c45da60e16c4f706191d66a1dc47ec9f820aed"}, + {file = "regex-2022.3.15-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c155a1a80c5e7a8fa1d9bb1bf3c8a953532b53ab1196092749bafb9d3a7cbb60"}, + {file = "regex-2022.3.15-cp37-cp37m-win32.whl", hash = "sha256:04b5ee2b6d29b4a99d38a6469aa1db65bb79d283186e8460542c517da195a8f6"}, + {file = "regex-2022.3.15-cp37-cp37m-win_amd64.whl", hash = "sha256:797437e6024dc1589163675ae82f303103063a0a580c6fd8d0b9a0a6708da29e"}, + {file = "regex-2022.3.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8afcd1c2297bc989dceaa0379ba15a6df16da69493635e53431d2d0c30356086"}, + {file = "regex-2022.3.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0066a6631c92774391f2ea0f90268f0d82fffe39cb946f0f9c6b382a1c61a5e5"}, + {file = "regex-2022.3.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8248f19a878c72d8c0a785a2cd45d69432e443c9f10ab924c29adda77b324ae"}, + {file = "regex-2022.3.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d1f3ea0d1924feb4cf6afb2699259f658a08ac6f8f3a4a806661c2dfcd66db1"}, + {file = "regex-2022.3.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:794a6bc66c43db8ed06698fc32aaeaac5c4812d9f825e9589e56f311da7becd9"}, + {file = "regex-2022.3.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d1445824944e642ffa54c4f512da17a953699c563a356d8b8cbdad26d3b7598"}, + {file = "regex-2022.3.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f553a1190ae6cd26e553a79f6b6cfba7b8f304da2071052fa33469da075ea625"}, + {file = "regex-2022.3.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:75a5e6ce18982f0713c4bac0704bf3f65eed9b277edd3fb9d2b0ff1815943327"}, + {file = "regex-2022.3.15-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f16cf7e4e1bf88fecf7f41da4061f181a6170e179d956420f84e700fb8a3fd6b"}, + {file = "regex-2022.3.15-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dad3991f0678facca1a0831ec1ddece2eb4d1dd0f5150acb9440f73a3b863907"}, + {file = "regex-2022.3.15-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:491fc754428514750ab21c2d294486223ce7385446f2c2f5df87ddbed32979ae"}, + {file = "regex-2022.3.15-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:6504c22c173bb74075d7479852356bb7ca80e28c8e548d4d630a104f231e04fb"}, + {file = "regex-2022.3.15-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:01c913cf573d1da0b34c9001a94977273b5ee2fe4cb222a5d5b320f3a9d1a835"}, + {file = "regex-2022.3.15-cp38-cp38-win32.whl", hash = "sha256:029e9e7e0d4d7c3446aa92474cbb07dafb0b2ef1d5ca8365f059998c010600e6"}, + {file = "regex-2022.3.15-cp38-cp38-win_amd64.whl", hash = "sha256:947a8525c0a95ba8dc873191f9017d1b1e3024d4dc757f694e0af3026e34044a"}, + {file = "regex-2022.3.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:591d4fba554f24bfa0421ba040cd199210a24301f923ed4b628e1e15a1001ff4"}, + {file = "regex-2022.3.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9809404528a999cf02a400ee5677c81959bc5cb938fdc696b62eb40214e3632"}, + {file = "regex-2022.3.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f08a7e4d62ea2a45557f561eea87c907222575ca2134180b6974f8ac81e24f06"}, + {file = "regex-2022.3.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a86cac984da35377ca9ac5e2e0589bd11b3aebb61801204bd99c41fac516f0d"}, + {file = "regex-2022.3.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:286908cbe86b1a0240a867aecfe26a439b16a1f585d2de133540549831f8e774"}, + {file = "regex-2022.3.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b7494df3fdcc95a1f76cf134d00b54962dd83189520fd35b8fcd474c0aa616d"}, + {file = "regex-2022.3.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b1ceede92400b3acfebc1425937454aaf2c62cd5261a3fabd560c61e74f6da3"}, + {file = "regex-2022.3.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0317eb6331146c524751354ebef76a7a531853d7207a4d760dfb5f553137a2a4"}, + {file = "regex-2022.3.15-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9c144405220c5ad3f5deab4c77f3e80d52e83804a6b48b6bed3d81a9a0238e4c"}, + {file = "regex-2022.3.15-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5b2e24f3ae03af3d8e8e6d824c891fea0ca9035c5d06ac194a2700373861a15c"}, + {file = "regex-2022.3.15-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f2c53f3af011393ab5ed9ab640fa0876757498aac188f782a0c620e33faa2a3d"}, + {file = "regex-2022.3.15-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:060f9066d2177905203516c62c8ea0066c16c7342971d54204d4e51b13dfbe2e"}, + {file = "regex-2022.3.15-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:530a3a16e57bd3ea0dff5ec2695c09632c9d6c549f5869d6cf639f5f7153fb9c"}, + {file = "regex-2022.3.15-cp39-cp39-win32.whl", hash = "sha256:78ce90c50d0ec970bd0002462430e00d1ecfd1255218d52d08b3a143fe4bde18"}, + {file = "regex-2022.3.15-cp39-cp39-win_amd64.whl", hash = "sha256:c5adc854764732dbd95a713f2e6c3e914e17f2ccdc331b9ecb777484c31f73b6"}, + {file = "regex-2022.3.15.tar.gz", hash = "sha256:0a7b75cc7bb4cc0334380053e4671c560e31272c9d2d5a6c4b8e9ae2c9bd0f82"}, ] requests = [ - {file = "requests-2.24.0-py2.py3-none-any.whl", hash = "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"}, - {file = "requests-2.24.0.tar.gz", hash = "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b"}, + {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, + {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, ] requests-toolbelt = [ {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"}, @@ -1785,8 +1914,8 @@ sentry-sdk = [ {file = "sentry_sdk-0.14.4-py2.py3-none-any.whl", hash = "sha256:799a8bf76b012e3030a881be00e97bc0b922ce35dde699c6537122b751d80e2c"}, ] six = [ - {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, - {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] sniffio = [ {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, @@ -1797,66 +1926,68 @@ starlette = [ {file = "starlette-0.16.0.tar.gz", hash = "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870"}, ] toml = [ - {file = "toml-0.10.1-py2.py3-none-any.whl", hash = "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88"}, - {file = "toml-0.10.1.tar.gz", hash = "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f"}, + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] typed-ast = [ - {file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3"}, - {file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb"}, - {file = "typed_ast-1.4.1-cp35-cp35m-win32.whl", hash = "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919"}, - {file = "typed_ast-1.4.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01"}, - {file = "typed_ast-1.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75"}, - {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652"}, - {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7"}, - {file = "typed_ast-1.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:fcf135e17cc74dbfbc05894ebca928ffeb23d9790b3167a674921db19082401f"}, - {file = "typed_ast-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1"}, - {file = "typed_ast-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa"}, - {file = "typed_ast-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614"}, - {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41"}, - {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b"}, - {file = "typed_ast-1.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:f208eb7aff048f6bea9586e61af041ddf7f9ade7caed625742af423f6bae3298"}, - {file = "typed_ast-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe"}, - {file = "typed_ast-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355"}, - {file = "typed_ast-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6"}, - {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907"}, - {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d"}, - {file = "typed_ast-1.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7e4c9d7658aaa1fc80018593abdf8598bf91325af6af5cce4ce7c73bc45ea53d"}, - {file = "typed_ast-1.4.1-cp38-cp38-win32.whl", hash = "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c"}, - {file = "typed_ast-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4"}, - {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34"}, - {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:92c325624e304ebf0e025d1224b77dd4e6393f18aab8d829b5b7e04afe9b7a2c"}, - {file = "typed_ast-1.4.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d648b8e3bf2fe648745c8ffcee3db3ff903d0817a01a12dd6a6ea7a8f4889072"}, - {file = "typed_ast-1.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fac11badff8313e23717f3dada86a15389d0708275bddf766cca67a84ead3e91"}, - {file = "typed_ast-1.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:0d8110d78a5736e16e26213114a38ca35cb15b6515d535413b090bd50951556d"}, - {file = "typed_ast-1.4.1-cp39-cp39-win32.whl", hash = "sha256:b52ccf7cfe4ce2a1064b18594381bccf4179c2ecf7f513134ec2f993dd4ab395"}, - {file = "typed_ast-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:3742b32cf1c6ef124d57f95be609c473d7ec4c14d0090e5a5e05a15269fb4d0c"}, - {file = "typed_ast-1.4.1.tar.gz", hash = "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc2542e83ac8399752bc16e0b35e038bdb659ba237f4222616b4e83fb9654985"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74cac86cc586db8dfda0ce65d8bcd2bf17b58668dfcc3652762f3ef0e6677e76"}, + {file = "typed_ast-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:18fe320f354d6f9ad3147859b6e16649a0781425268c4dde596093177660e71a"}, + {file = "typed_ast-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:31d8c6b2df19a777bc8826770b872a45a1f30cfefcfd729491baa5237faae837"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:963a0ccc9a4188524e6e6d39b12c9ca24cc2d45a71cfdd04a26d883c922b4b78"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0eb77764ea470f14fcbb89d51bc6bbf5e7623446ac4ed06cbd9ca9495b62e36e"}, + {file = "typed_ast-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:294a6903a4d087db805a7656989f613371915fc45c8cc0ddc5c5a0a8ad9bea4d"}, + {file = "typed_ast-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26a432dc219c6b6f38be20a958cbe1abffcc5492821d7e27f08606ef99e0dffd"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7407cfcad702f0b6c0e0f3e7ab876cd1d2c13b14ce770e412c0c4b9728a0f88"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f30ddd110634c2d7534b2d4e0e22967e88366b0d356b24de87419cc4410c41b7"}, + {file = "typed_ast-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8c08d6625bb258179b6e512f55ad20f9dfef019bbfbe3095247401e053a3ea30"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:90904d889ab8e81a956f2c0935a523cc4e077c7847a836abee832f868d5c26a4"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bbebc31bf11762b63bf61aaae232becb41c5bf6b3461b80a4df7e791fabb3aca"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29dd9a3a9d259c9fa19d19738d021632d673f6ed9b35a739f48e5f807f264fb"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:58ae097a325e9bb7a684572d20eb3e1809802c5c9ec7108e85da1eb6c1a3331b"}, + {file = "typed_ast-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:da0a98d458010bf4fe535f2d1e367a2e2060e105978873c04c04212fb20543f7"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:33b4a19ddc9fc551ebabca9765d54d04600c4a50eda13893dadf67ed81d9a098"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1098df9a0592dd4c8c0ccfc2e98931278a6c6c53cb3a3e2cf7e9ee3b06153344"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c47c3b43fe3a39ddf8de1d40dbbfca60ac8530a36c9b198ea5b9efac75c09e"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f290617f74a610849bd8f5514e34ae3d09eafd521dceaa6cf68b3f4414266d4e"}, + {file = "typed_ast-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:df05aa5b241e2e8045f5f4367a9f6187b09c4cdf8578bb219861c4e27c443db5"}, + {file = "typed_ast-1.5.2.tar.gz", hash = "sha256:525a2d4088e70a9f75b08b3f87a51acc9cde640e19cc523c7e41aa355564ae27"}, ] typing-extensions = [ - {file = "typing_extensions-4.0.0-py3-none-any.whl", hash = "sha256:829704698b22e13ec9eaf959122315eabb370b0884400e9818334d8b677023d9"}, + {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, + {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, ] urllib3 = [ - {file = "urllib3-1.25.11-py2.py3-none-any.whl", hash = "sha256:f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e"}, - {file = "urllib3-1.25.11.tar.gz", hash = "sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2"}, + {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, + {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, ] uvicorn = [ {file = "uvicorn-0.11.8-py3-none-any.whl", hash = "sha256:4b70ddb4c1946e39db9f3082d53e323dfd50634b95fd83625d778729ef1730ef"}, {file = "uvicorn-0.11.8.tar.gz", hash = "sha256:46a83e371f37ea7ff29577d00015f02c942410288fb57def6440f2653fff1d26"}, ] uvloop = [ - {file = "uvloop-0.14.0-cp35-cp35m-macosx_10_11_x86_64.whl", hash = "sha256:08b109f0213af392150e2fe6f81d33261bb5ce968a288eb698aad4f46eb711bd"}, - {file = "uvloop-0.14.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:4544dcf77d74f3a84f03dd6278174575c44c67d7165d4c42c71db3fdc3860726"}, - {file = "uvloop-0.14.0-cp36-cp36m-macosx_10_11_x86_64.whl", hash = "sha256:b4f591aa4b3fa7f32fb51e2ee9fea1b495eb75b0b3c8d0ca52514ad675ae63f7"}, - {file = "uvloop-0.14.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:f07909cd9fc08c52d294b1570bba92186181ca01fe3dc9ffba68955273dd7362"}, - {file = "uvloop-0.14.0-cp37-cp37m-macosx_10_11_x86_64.whl", hash = "sha256:afd5513c0ae414ec71d24f6f123614a80f3d27ca655a4fcf6cabe50994cc1891"}, - {file = "uvloop-0.14.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:e7514d7a48c063226b7d06617cbb12a14278d4323a065a8d46a7962686ce2e95"}, - {file = "uvloop-0.14.0-cp38-cp38-macosx_10_11_x86_64.whl", hash = "sha256:bcac356d62edd330080aed082e78d4b580ff260a677508718f88016333e2c9c5"}, - {file = "uvloop-0.14.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:4315d2ec3ca393dd5bc0b0089d23101276778c304d42faff5dc4579cb6caef09"}, - {file = "uvloop-0.14.0.tar.gz", hash = "sha256:123ac9c0c7dd71464f58f1b4ee0bbd81285d96cdda8bc3519281b8973e3a461e"}, + {file = "uvloop-0.16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6224f1401025b748ffecb7a6e2652b17768f30b1a6a3f7b44660e5b5b690b12d"}, + {file = "uvloop-0.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:30ba9dcbd0965f5c812b7c2112a1ddf60cf904c1c160f398e7eed3a6b82dcd9c"}, + {file = "uvloop-0.16.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bd53f7f5db562f37cd64a3af5012df8cac2c464c97e732ed556800129505bd64"}, + {file = "uvloop-0.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:772206116b9b57cd625c8a88f2413df2fcfd0b496eb188b82a43bed7af2c2ec9"}, + {file = "uvloop-0.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b572256409f194521a9895aef274cea88731d14732343da3ecdb175228881638"}, + {file = "uvloop-0.16.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:04ff57aa137230d8cc968f03481176041ae789308b4d5079118331ab01112450"}, + {file = "uvloop-0.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a19828c4f15687675ea912cc28bbcb48e9bb907c801873bd1519b96b04fb805"}, + {file = "uvloop-0.16.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e814ac2c6f9daf4c36eb8e85266859f42174a4ff0d71b99405ed559257750382"}, + {file = "uvloop-0.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd8f42ea1ea8f4e84d265769089964ddda95eb2bb38b5cbe26712b0616c3edee"}, + {file = "uvloop-0.16.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:647e481940379eebd314c00440314c81ea547aa636056f554d491e40503c8464"}, + {file = "uvloop-0.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e0d26fa5875d43ddbb0d9d79a447d2ace4180d9e3239788208527c4784f7cab"}, + {file = "uvloop-0.16.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6ccd57ae8db17d677e9e06192e9c9ec4bd2066b77790f9aa7dede2cc4008ee8f"}, + {file = "uvloop-0.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:089b4834fd299d82d83a25e3335372f12117a7d38525217c2258e9b9f4578897"}, + {file = "uvloop-0.16.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98d117332cc9e5ea8dfdc2b28b0a23f60370d02e1395f88f40d1effd2cb86c4f"}, + {file = "uvloop-0.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e5f2e2ff51aefe6c19ee98af12b4ae61f5be456cd24396953244a30880ad861"}, + {file = "uvloop-0.16.0.tar.gz", hash = "sha256:f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228"}, ] wcwidth = [ - {file = "wcwidth-0.2.4-py2.py3-none-any.whl", hash = "sha256:79375666b9954d4a1a10739315816324c3e73110af9d0e102d906fdb0aec009f"}, - {file = "wcwidth-0.2.4.tar.gz", hash = "sha256:8c6b5b6ee1360b842645f336d9e5d68c55817c26d3050f46b235ef2bc650e48f"}, + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, ] websockets = [ {file = "websockets-8.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c"}, @@ -1883,60 +2014,71 @@ websockets = [ {file = "websockets-8.1.tar.gz", hash = "sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f"}, ] werkzeug = [ - {file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"}, - {file = "Werkzeug-1.0.1.tar.gz", hash = "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"}, + {file = "Werkzeug-2.0.3-py3-none-any.whl", hash = "sha256:1421ebfc7648a39a5c58c601b154165d05cf47a3cd0ccb70857cbdacf6c8f2b8"}, + {file = "Werkzeug-2.0.3.tar.gz", hash = "sha256:b863f8ff057c522164b6067c9e28b041161b4be5ba4d0daceeaa50a163822d3c"}, ] win32-setctime = [ - {file = "win32_setctime-1.0.1-py3-none-any.whl", hash = "sha256:568fd636c68350bcc54755213fe01966fe0a6c90b386c0776425944a0382abef"}, - {file = "win32_setctime-1.0.1.tar.gz", hash = "sha256:b47e5023ec7f0b4962950902b15bc56464a380d869f59d27dbf9ab423b23e8f9"}, + {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, + {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, ] zipp = [ - {file = "zipp-3.1.0-py3-none-any.whl", hash = "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b"}, - {file = "zipp-3.1.0.tar.gz", hash = "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"}, + {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, + {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"}, ] "zope.event" = [ - {file = "zope.event-4.4-py2.py3-none-any.whl", hash = "sha256:d8e97d165fd5a0997b45f5303ae11ea3338becfe68c401dd88ffd2113fe5cae7"}, - {file = "zope.event-4.4.tar.gz", hash = "sha256:69c27debad9bdacd9ce9b735dad382142281ac770c4a432b533d6d65c4614bcf"}, + {file = "zope.event-4.5.0-py2.py3-none-any.whl", hash = "sha256:2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42"}, + {file = "zope.event-4.5.0.tar.gz", hash = "sha256:5e76517f5b9b119acf37ca8819781db6c16ea433f7e2062c4afc2b6fbedb1330"}, ] "zope.interface" = [ - {file = "zope.interface-5.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:645a7092b77fdbc3f68d3cc98f9d3e71510e419f54019d6e282328c0dd140dcd"}, - {file = "zope.interface-5.1.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:d1fe9d7d09bb07228650903d6a9dc48ea649e3b8c69b1d263419cc722b3938e8"}, - {file = "zope.interface-5.1.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:a744132d0abaa854d1aad50ba9bc64e79c6f835b3e92521db4235a1991176813"}, - {file = "zope.interface-5.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:461d4339b3b8f3335d7e2c90ce335eb275488c587b61aca4b305196dde2ff086"}, - {file = "zope.interface-5.1.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:269b27f60bcf45438e8683269f8ecd1235fa13e5411de93dae3b9ee4fe7f7bc7"}, - {file = "zope.interface-5.1.0-cp27-cp27m-win32.whl", hash = "sha256:6874367586c020705a44eecdad5d6b587c64b892e34305bb6ed87c9bbe22a5e9"}, - {file = "zope.interface-5.1.0-cp27-cp27m-win_amd64.whl", hash = "sha256:8149ded7f90154fdc1a40e0c8975df58041a6f693b8f7edcd9348484e9dc17fe"}, - {file = "zope.interface-5.1.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:0103cba5ed09f27d2e3de7e48bb320338592e2fabc5ce1432cf33808eb2dfd8b"}, - {file = "zope.interface-5.1.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:b0becb75418f8a130e9d465e718316cd17c7a8acce6fe8fe07adc72762bee425"}, - {file = "zope.interface-5.1.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:fb55c182a3f7b84c1a2d6de5fa7b1a05d4660d866b91dbf8d74549c57a1499e8"}, - {file = "zope.interface-5.1.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:4f98f70328bc788c86a6a1a8a14b0ea979f81ae6015dd6c72978f1feff70ecda"}, - {file = "zope.interface-5.1.0-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:af2c14efc0bb0e91af63d00080ccc067866fb8cbbaca2b0438ab4105f5e0f08d"}, - {file = "zope.interface-5.1.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:f68bf937f113b88c866d090fea0bc52a098695173fc613b055a17ff0cf9683b6"}, - {file = "zope.interface-5.1.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:d7804f6a71fc2dda888ef2de266727ec2f3915373d5a785ed4ddc603bbc91e08"}, - {file = "zope.interface-5.1.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:74bf0a4f9091131de09286f9a605db449840e313753949fe07c8d0fe7659ad1e"}, - {file = "zope.interface-5.1.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:ba4261c8ad00b49d48bbb3b5af388bb7576edfc0ca50a49c11dcb77caa1d897e"}, - {file = "zope.interface-5.1.0-cp35-cp35m-win32.whl", hash = "sha256:ebb4e637a1fb861c34e48a00d03cffa9234f42bef923aec44e5625ffb9a8e8f9"}, - {file = "zope.interface-5.1.0-cp35-cp35m-win_amd64.whl", hash = "sha256:911714b08b63d155f9c948da2b5534b223a1a4fc50bb67139ab68b277c938578"}, - {file = "zope.interface-5.1.0-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:e74671e43ed4569fbd7989e5eecc7d06dc134b571872ab1d5a88f4a123814e9f"}, - {file = "zope.interface-5.1.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:b1d2ed1cbda2ae107283befd9284e650d840f8f7568cb9060b5466d25dc48975"}, - {file = "zope.interface-5.1.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ef739fe89e7f43fb6494a43b1878a36273e5924869ba1d866f752c5812ae8d58"}, - {file = "zope.interface-5.1.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:eb9b92f456ff3ec746cd4935b73c1117538d6124b8617bc0fe6fda0b3816e345"}, - {file = "zope.interface-5.1.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:dcefc97d1daf8d55199420e9162ab584ed0893a109f45e438b9794ced44c9fd0"}, - {file = "zope.interface-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:f40db0e02a8157d2b90857c24d89b6310f9b6c3642369852cdc3b5ac49b92afc"}, - {file = "zope.interface-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:14415d6979356629f1c386c8c4249b4d0082f2ea7f75871ebad2e29584bd16c5"}, - {file = "zope.interface-5.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5e86c66a6dea8ab6152e83b0facc856dc4d435fe0f872f01d66ce0a2131b7f1d"}, - {file = "zope.interface-5.1.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:39106649c3082972106f930766ae23d1464a73b7d30b3698c986f74bf1256a34"}, - {file = "zope.interface-5.1.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8cccf7057c7d19064a9e27660f5aec4e5c4001ffcf653a47531bde19b5aa2a8a"}, - {file = "zope.interface-5.1.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:562dccd37acec149458c1791da459f130c6cf8902c94c93b8d47c6337b9fb826"}, - {file = "zope.interface-5.1.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:da2844fba024dd58eaa712561da47dcd1e7ad544a257482392472eae1c86d5e5"}, - {file = "zope.interface-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:1ae4693ccee94c6e0c88a4568fb3b34af8871c60f5ba30cf9f94977ed0e53ddd"}, - {file = "zope.interface-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:dd98c436a1fc56f48c70882cc243df89ad036210d871c7427dc164b31500dc11"}, - {file = "zope.interface-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b87ed2dc05cb835138f6a6e3595593fea3564d712cb2eb2de963a41fd35758c"}, - {file = "zope.interface-5.1.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:558a20a0845d1a5dc6ff87cd0f63d7dac982d7c3be05d2ffb6322a87c17fa286"}, - {file = "zope.interface-5.1.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b726194f938791a6691c7592c8b9e805fc6d1b9632a833b9c0640828cd49cbc"}, - {file = "zope.interface-5.1.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:60a207efcd8c11d6bbeb7862e33418fba4e4ad79846d88d160d7231fcb42a5ee"}, - {file = "zope.interface-5.1.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:b054eb0a8aa712c8e9030065a59b5e6a5cf0746ecdb5f087cca5ec7685690c19"}, - {file = "zope.interface-5.1.0-cp38-cp38-win32.whl", hash = "sha256:27d287e61639d692563d9dab76bafe071fbeb26818dd6a32a0022f3f7ca884b5"}, - {file = "zope.interface-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:a5f8f85986197d1dd6444763c4a15c991bfed86d835a1f6f7d476f7198d5f56a"}, - {file = "zope.interface-5.1.0.tar.gz", hash = "sha256:40e4c42bd27ed3c11b2c983fecfb03356fae1209de10686d03c02c8696a1d90e"}, + {file = "zope.interface-5.4.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:7df1e1c05304f26faa49fa752a8c690126cf98b40b91d54e6e9cc3b7d6ffe8b7"}, + {file = "zope.interface-5.4.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c98384b254b37ce50eddd55db8d381a5c53b4c10ee66e1e7fe749824f894021"}, + {file = "zope.interface-5.4.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:08f9636e99a9d5410181ba0729e0408d3d8748026ea938f3b970a0249daa8192"}, + {file = "zope.interface-5.4.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:0ea1d73b7c9dcbc5080bb8aaffb776f1c68e807767069b9ccdd06f27a161914a"}, + {file = "zope.interface-5.4.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:273f158fabc5ea33cbc936da0ab3d4ba80ede5351babc4f577d768e057651531"}, + {file = "zope.interface-5.4.0-cp27-cp27m-win32.whl", hash = "sha256:a1e6e96217a0f72e2b8629e271e1b280c6fa3fe6e59fa8f6701bec14e3354325"}, + {file = "zope.interface-5.4.0-cp27-cp27m-win_amd64.whl", hash = "sha256:877473e675fdcc113c138813a5dd440da0769a2d81f4d86614e5d62b69497155"}, + {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f7ee479e96f7ee350db1cf24afa5685a5899e2b34992fb99e1f7c1b0b758d263"}, + {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:b0297b1e05fd128d26cc2460c810d42e205d16d76799526dfa8c8ccd50e74959"}, + {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:af310ec8335016b5e52cae60cda4a4f2a60a788cbb949a4fbea13d441aa5a09e"}, + {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:9a9845c4c6bb56e508651f005c4aeb0404e518c6f000d5a1123ab077ab769f5c"}, + {file = "zope.interface-5.4.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0b465ae0962d49c68aa9733ba92a001b2a0933c317780435f00be7ecb959c702"}, + {file = "zope.interface-5.4.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:5dd9ca406499444f4c8299f803d4a14edf7890ecc595c8b1c7115c2342cadc5f"}, + {file = "zope.interface-5.4.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:469e2407e0fe9880ac690a3666f03eb4c3c444411a5a5fddfdabc5d184a79f05"}, + {file = "zope.interface-5.4.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:52de7fc6c21b419078008f697fd4103dbc763288b1406b4562554bd47514c004"}, + {file = "zope.interface-5.4.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:3dd4952748521205697bc2802e4afac5ed4b02909bb799ba1fe239f77fd4e117"}, + {file = "zope.interface-5.4.0-cp35-cp35m-win32.whl", hash = "sha256:dd93ea5c0c7f3e25335ab7d22a507b1dc43976e1345508f845efc573d3d779d8"}, + {file = "zope.interface-5.4.0-cp35-cp35m-win_amd64.whl", hash = "sha256:3748fac0d0f6a304e674955ab1365d515993b3a0a865e16a11ec9d86fb307f63"}, + {file = "zope.interface-5.4.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:66c0061c91b3b9cf542131148ef7ecbecb2690d48d1612ec386de9d36766058f"}, + {file = "zope.interface-5.4.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:d0c1bc2fa9a7285719e5678584f6b92572a5b639d0e471bb8d4b650a1a910920"}, + {file = "zope.interface-5.4.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2876246527c91e101184f63ccd1d716ec9c46519cc5f3d5375a3351c46467c46"}, + {file = "zope.interface-5.4.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:334701327f37c47fa628fc8b8d28c7d7730ce7daaf4bda1efb741679c2b087fc"}, + {file = "zope.interface-5.4.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:71aace0c42d53abe6fc7f726c5d3b60d90f3c5c055a447950ad6ea9cec2e37d9"}, + {file = "zope.interface-5.4.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:5bb3489b4558e49ad2c5118137cfeaf59434f9737fa9c5deefc72d22c23822e2"}, + {file = "zope.interface-5.4.0-cp36-cp36m-win32.whl", hash = "sha256:1c0e316c9add0db48a5b703833881351444398b04111188069a26a61cfb4df78"}, + {file = "zope.interface-5.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f0c02cbb9691b7c91d5009108f975f8ffeab5dff8f26d62e21c493060eff2a1"}, + {file = "zope.interface-5.4.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:7d97a4306898b05404a0dcdc32d9709b7d8832c0c542b861d9a826301719794e"}, + {file = "zope.interface-5.4.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:867a5ad16892bf20e6c4ea2aab1971f45645ff3102ad29bd84c86027fa99997b"}, + {file = "zope.interface-5.4.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5f931a1c21dfa7a9c573ec1f50a31135ccce84e32507c54e1ea404894c5eb96f"}, + {file = "zope.interface-5.4.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:194d0bcb1374ac3e1e023961610dc8f2c78a0f5f634d0c737691e215569e640d"}, + {file = "zope.interface-5.4.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:8270252effc60b9642b423189a2fe90eb6b59e87cbee54549db3f5562ff8d1b8"}, + {file = "zope.interface-5.4.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:15e7d1f7a6ee16572e21e3576d2012b2778cbacf75eb4b7400be37455f5ca8bf"}, + {file = "zope.interface-5.4.0-cp37-cp37m-win32.whl", hash = "sha256:8892f89999ffd992208754851e5a052f6b5db70a1e3f7d54b17c5211e37a98c7"}, + {file = "zope.interface-5.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2e5a26f16503be6c826abca904e45f1a44ff275fdb7e9d1b75c10671c26f8b94"}, + {file = "zope.interface-5.4.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:0f91b5b948686659a8e28b728ff5e74b1be6bf40cb04704453617e5f1e945ef3"}, + {file = "zope.interface-5.4.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:4de4bc9b6d35c5af65b454d3e9bc98c50eb3960d5a3762c9438df57427134b8e"}, + {file = "zope.interface-5.4.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:bf68f4b2b6683e52bec69273562df15af352e5ed25d1b6641e7efddc5951d1a7"}, + {file = "zope.interface-5.4.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:63b82bb63de7c821428d513607e84c6d97d58afd1fe2eb645030bdc185440120"}, + {file = "zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48"}, + {file = "zope.interface-5.4.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:f44e517131a98f7a76696a7b21b164bcb85291cee106a23beccce454e1f433a4"}, + {file = "zope.interface-5.4.0-cp38-cp38-win32.whl", hash = "sha256:a9506a7e80bcf6eacfff7f804c0ad5350c8c95b9010e4356a4b36f5322f09abb"}, + {file = "zope.interface-5.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:3c02411a3b62668200910090a0dff17c0b25aaa36145082a5a6adf08fa281e54"}, + {file = "zope.interface-5.4.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:0cee5187b60ed26d56eb2960136288ce91bcf61e2a9405660d271d1f122a69a4"}, + {file = "zope.interface-5.4.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a8156e6a7f5e2a0ff0c5b21d6bcb45145efece1909efcbbbf48c56f8da68221d"}, + {file = "zope.interface-5.4.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:205e40ccde0f37496904572035deea747390a8b7dc65146d30b96e2dd1359a83"}, + {file = "zope.interface-5.4.0-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:3f24df7124c323fceb53ff6168da70dbfbae1442b4f3da439cd441681f54fe25"}, + {file = "zope.interface-5.4.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:5208ebd5152e040640518a77827bdfcc73773a15a33d6644015b763b9c9febc1"}, + {file = "zope.interface-5.4.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:17776ecd3a1fdd2b2cd5373e5ef8b307162f581c693575ec62e7c5399d80794c"}, + {file = "zope.interface-5.4.0-cp39-cp39-win32.whl", hash = "sha256:d4d9d6c1a455d4babd320203b918ccc7fcbefe308615c521062bc2ba1aa4d26e"}, + {file = "zope.interface-5.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:0cba8477e300d64a11a9789ed40ee8932b59f9ee05f85276dbb4b59acee5dd09"}, + {file = "zope.interface-5.4.0.tar.gz", hash = "sha256:5dba5f530fec3f0988d83b78cc591b58c0b6eb8431a85edd1569a0539a8a5a0e"}, ] diff --git a/pyproject.toml b/pyproject.toml index ff1ec765..f44ceeb3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,15 +20,16 @@ classifiers = [ "Operating System :: MacOS", "Operating System :: POSIX :: Linux", "Operating System :: Microsoft :: Windows", - "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8" + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10" ] include = ["docs/CHANGELOG.md"] [tool.poetry.dependencies] -python = "^3.6.2" +python = "^3.7" requests = "^2.22.0" pyyaml = "^5.4.1" jinja2 = "^2.10.3" From ab6772a63c4ba49a60332163af663bfdb735594d Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 21 Mar 2022 15:16:09 +0800 Subject: [PATCH 18/27] fix: unittests --- tests/make_test.py | 4 ++-- tests/scaffold_test.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/make_test.py b/tests/make_test.py index 934feadb..339910ce 100644 --- a/tests/make_test.py +++ b/tests/make_test.py @@ -107,8 +107,8 @@ from request_methods.request_with_functions_test import ( ) loader.project_meta = None self.assertEqual( - ensure_file_abs_path_valid(os.path.join(os.getcwd(), "README.md")), - os.path.join(os.getcwd(), "README.md"), + ensure_file_abs_path_valid(os.path.join(os.getcwd(), "pyproject.toml")), + os.path.join(os.getcwd(), "pyproject.toml"), ) loader.project_meta = None self.assertEqual( diff --git a/tests/scaffold_test.py b/tests/scaffold_test.py index 3a6b7073..fbb2ed64 100644 --- a/tests/scaffold_test.py +++ b/tests/scaffold_test.py @@ -19,7 +19,7 @@ class TestScaffold(unittest.TestCase): # run demo testcases try: - if platform.system() is "Windows": + if platform.system() == "Windows": subprocess.check_call(["hrun", project_name], shell=True) else: subprocess.check_call(["hrun", project_name]) From d8e67e889e42f3956a3e372ccf27e934959c1a41 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 21 Mar 2022 15:21:58 +0800 Subject: [PATCH 19/27] fix: python version recongizing --- .github/workflows/integration_test.yml | 2 +- .github/workflows/unittest.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml index c8cd766e..0d7f5614 100644 --- a/.github/workflows/integration_test.yml +++ b/.github/workflows/integration_test.yml @@ -13,7 +13,7 @@ jobs: strategy: max-parallel: 6 matrix: - python-version: [3.7, 3.8, 3.9, 3.10] + python-version: ['3.7', '3.8', '3.9', '3.10'] os: [ubuntu-latest, macos-latest] # TODO: windows-latest steps: diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index d12858fb..8a68a68e 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -13,7 +13,7 @@ jobs: strategy: max-parallel: 12 matrix: - python-version: [3.7, 3.8, 3.9, 3.10] + python-version: ['3.7', '3.8', '3.9', '3.10'] os: [ubuntu-latest, macos-latest, windows-latest] steps: From d873a5e74b815916593db3865df69f75cf9a3fdd Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 21 Mar 2022 15:33:36 +0800 Subject: [PATCH 20/27] fix #1165: ImportError caused by jinja2 version --- docs/CHANGELOG.md | 5 +++-- poetry.lock | 14 +++++++------- pyproject.toml | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 133565ac..e565afcd 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -2,10 +2,11 @@ ## 3.1.7 (2022-03-21) -- fix: ignore comments and blank lines when parsing .env file +- fix #1117: ignore comments and blank lines when parsing .env file +- fix #1141: parameterize failure caused by pydantic version +- fix #1165: ImportError caused by jinja2 version - fix: failure in getting client and server IP/port when requesting HTTPS - fix: upgrade dependencies for security -- fix: parameterize failure caused by pydantic version - change: upgrade python support version to ^3.7 ## 3.1.6 (2021-07-18) diff --git a/poetry.lock b/poetry.lock index aac3c0e4..2b494b11 100644 --- a/poetry.lock +++ b/poetry.lock @@ -474,17 +474,17 @@ reference = "tsinghua" [[package]] name = "jinja2" -version = "2.11.3" +version = "3.0.3" description = "A very fast and expressive template engine." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.6" [package.dependencies] -MarkupSafe = ">=0.23" +MarkupSafe = ">=2.0" [package.extras] -i18n = ["Babel (>=0.8)"] +i18n = ["Babel (>=2.7)"] [package.source] type = "legacy" @@ -1165,7 +1165,7 @@ upload = ["requests-toolbelt", "filetype"] [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "a822ce5885d150e332076e7600bd3cd840aa48911ca1c9456b540136136f727a" +content-hash = "e88a29114170c024f84dd0685455573623a8c60d9d10e0fcdf99a91c26ece954" [metadata.files] allure-pytest = [ @@ -1540,8 +1540,8 @@ itsdangerous = [ {file = "itsdangerous-2.1.1.tar.gz", hash = "sha256:7b7d3023cd35d9cb0c1fd91392f8c95c6fa02c59bf8ad64b8849be3401b95afb"}, ] jinja2 = [ - {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"}, - {file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"}, + {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, + {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"}, ] jmespath = [ {file = "jmespath-0.9.5-py2.py3-none-any.whl", hash = "sha256:695cb76fa78a10663425d5b73ddc5714eb711157e52704d69be03b1a02ba4fec"}, diff --git a/pyproject.toml b/pyproject.toml index f44ceeb3..c75b7bda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,6 @@ include = ["docs/CHANGELOG.md"] python = "^3.7" requests = "^2.22.0" pyyaml = "^5.4.1" -jinja2 = "^2.10.3" pydantic = "~1.8" # >=1.8.0 <1.9.0 loguru = "^0.4.1" jmespath = "^0.9.5" @@ -45,6 +44,7 @@ requests-toolbelt = {version = "^0.9.1", optional = true} filetype = {version = "^1.0.7", optional = true} locust = {version = "^1.0.3", optional = true} Brotli = "^1.0.9" +jinja2 = "^3.0.3" [tool.poetry.extras] allure = ["allure-pytest"] # pip install "httprunner[allure]", poetry install -E allure From 5aba08b8b454ea97e2451d946d401e1429e80001 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 21 Mar 2022 15:53:01 +0800 Subject: [PATCH 21/27] change: upgrade pytest denpendencies --- .github/workflows/integration_test.yml | 1 + .github/workflows/unittest.yml | 1 + poetry.lock | 99 +++++++++++++------------- pyproject.toml | 4 +- 4 files changed, 53 insertions(+), 52 deletions(-) diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml index 0d7f5614..89b94888 100644 --- a/.github/workflows/integration_test.yml +++ b/.github/workflows/integration_test.yml @@ -11,6 +11,7 @@ jobs: name: integration_test - ${{ matrix.python-version }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: + fail-fast: false max-parallel: 6 matrix: python-version: ['3.7', '3.8', '3.9', '3.10'] diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 8a68a68e..769b6f71 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -11,6 +11,7 @@ jobs: name: unittest - ${{ matrix.python-version }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: + fail-fast: false max-parallel: 12 matrix: python-version: ['3.7', '3.8', '3.9', '3.10'] diff --git a/poetry.lock b/poetry.lock index 2b494b11..c99e01f1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -459,6 +459,19 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "main" +optional = false +python-versions = "*" + +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "itsdangerous" version = "2.1.1" @@ -564,19 +577,6 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" -[[package]] -name = "more-itertools" -version = "8.12.0" -description = "More routines for operating on iterables, beyond itertools" -category = "main" -optional = false -python-versions = ">=3.5" - -[package.source] -type = "legacy" -url = "https://pypi.tuna.tsinghua.edu.cn/simple" -reference = "tsinghua" - [[package]] name = "msgpack" version = "1.0.3" @@ -718,26 +718,25 @@ reference = "tsinghua" [[package]] name = "pytest" -version = "5.4.3" +version = "7.1.1" description = "pytest: simple powerful testing with Python" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" [package.dependencies] atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=17.4.0" +attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} -more-itertools = ">=4.0.0" +iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<1.0" -py = ">=1.5.0" -wcwidth = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +tomli = ">=1.0.0" [package.extras] -checkqa-mypy = ["mypy (==v0.761)"] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] [package.source] type = "legacy" @@ -746,14 +745,14 @@ reference = "tsinghua" [[package]] name = "pytest-html" -version = "2.1.1" +version = "3.1.1" description = "pytest plugin for generating HTML reports" category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -pytest = ">=5.0" +pytest = ">=5.0,<6.0.0 || >6.0.0" pytest-metadata = "*" [package.source] @@ -962,6 +961,19 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "typed-ast" version = "1.5.2" @@ -1047,19 +1059,6 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" -[[package]] -name = "wcwidth" -version = "0.2.5" -description = "Measures the displayed width of unicode strings in a terminal" -category = "main" -optional = false -python-versions = "*" - -[package.source] -type = "legacy" -url = "https://pypi.tuna.tsinghua.edu.cn/simple" -reference = "tsinghua" - [[package]] name = "websockets" version = "8.1" @@ -1165,7 +1164,7 @@ upload = ["requests-toolbelt", "filetype"] [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "e88a29114170c024f84dd0685455573623a8c60d9d10e0fcdf99a91c26ece954" +content-hash = "c92a3ad9ae96032709d1f074a1e6962fa386680a8a85555b9ecc7054434e4aa0" [metadata.files] allure-pytest = [ @@ -1535,6 +1534,10 @@ importlib-metadata = [ {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, ] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] itsdangerous = [ {file = "itsdangerous-2.1.1-py3-none-any.whl", hash = "sha256:935642cd4b987cdbee7210080004033af76306757ff8b4c0a506a4b6e06f02cf"}, {file = "itsdangerous-2.1.1.tar.gz", hash = "sha256:7b7d3023cd35d9cb0c1fd91392f8c95c6fa02c59bf8ad64b8849be3401b95afb"}, @@ -1597,10 +1600,6 @@ markupsafe = [ {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] -more-itertools = [ - {file = "more-itertools-8.12.0.tar.gz", hash = "sha256:7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064"}, - {file = "more_itertools-8.12.0-py3-none-any.whl", hash = "sha256:43e6dd9942dffd72661a2c4ef383ad7da1e6a3e968a927ad7a6083ab410a688b"}, -] msgpack = [ {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96acc674bb9c9be63fa8b6dabc3248fdc575c4adc005c440ad02f87ca7edd079"}, {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c3ca57c96c8e69c1a0d2926a6acf2d9a522b41dc4253a8945c4c6cd4981a4e3"}, @@ -1720,12 +1719,12 @@ pyparsing = [ {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, ] pytest = [ - {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, - {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, + {file = "pytest-7.1.1-py3-none-any.whl", hash = "sha256:92f723789a8fdd7180b6b06483874feca4c48a5c76968e03bb3e7f806a1869ea"}, + {file = "pytest-7.1.1.tar.gz", hash = "sha256:841132caef6b1ad17a9afde46dc4f6cfa59a05f9555aae5151f73bdf2820ca63"}, ] pytest-html = [ - {file = "pytest-html-2.1.1.tar.gz", hash = "sha256:6a4ac391e105e391208e3eb9bd294a60dd336447fd8e1acddff3a6de7f4e57c5"}, - {file = "pytest_html-2.1.1-py2.py3-none-any.whl", hash = "sha256:9e4817e8be8ddde62e8653c8934d0f296b605da3d2277a052f762c56a8b32df2"}, + {file = "pytest-html-3.1.1.tar.gz", hash = "sha256:3ee1cf319c913d19fe53aeb0bc400e7b0bc2dbeb477553733db1dad12eb75ee3"}, + {file = "pytest_html-3.1.1-py3-none-any.whl", hash = "sha256:b7f82f123936a3f4d2950bc993c2c1ca09ce262c9ae12f9ac763a2401380b455"}, ] pytest-metadata = [ {file = "pytest-metadata-1.11.0.tar.gz", hash = "sha256:71b506d49d34e539cc3cfdb7ce2c5f072bea5c953320002c95968e0238f8ecf1"}, @@ -1929,6 +1928,10 @@ toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] typed-ast = [ {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"}, {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"}, @@ -1985,10 +1988,6 @@ uvloop = [ {file = "uvloop-0.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e5f2e2ff51aefe6c19ee98af12b4ae61f5be456cd24396953244a30880ad861"}, {file = "uvloop-0.16.0.tar.gz", hash = "sha256:f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228"}, ] -wcwidth = [ - {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, - {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, -] websockets = [ {file = "websockets-8.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c"}, {file = "websockets-8.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170"}, diff --git a/pyproject.toml b/pyproject.toml index c75b7bda..9dbc57d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,8 +36,8 @@ pydantic = "~1.8" # >=1.8.0 <1.9.0 loguru = "^0.4.1" jmespath = "^0.9.5" black = "^19.10b0" -pytest = "^5.4.2" -pytest-html = "^2.1.1" +pytest = "^7.1.1" +pytest-html = "^3.1.1" sentry-sdk = "^0.14.4" allure-pytest = {version = "^2.8.16", optional = true} requests-toolbelt = {version = "^0.9.1", optional = true} From 13a284bb5399aebc1e42223e344553c349d63a25 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 21 Mar 2022 15:57:45 +0800 Subject: [PATCH 22/27] change: upgrade websockets for security --- poetry.lock | 152 +++++++++++-------------------------------------- pyproject.toml | 2 +- 2 files changed, 35 insertions(+), 119 deletions(-) diff --git a/poetry.lock b/poetry.lock index c99e01f1..611d2123 100644 --- a/poetry.lock +++ b/poetry.lock @@ -70,6 +70,25 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" +[[package]] +name = "asgiref" +version = "3.5.0" +description = "ASGI specs, helper code, and adapters" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] + +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "atomicwrites" version = "1.4.0" @@ -408,22 +427,6 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" -[[package]] -name = "httptools" -version = "0.1.2" -description = "A collection of framework independent HTTP protocol utils." -category = "dev" -optional = false -python-versions = "*" - -[package.extras] -test = ["Cython (==0.29.22)"] - -[package.source] -type = "legacy" -url = "https://pypi.tuna.tsinghua.edu.cn/simple" -reference = "tsinghua" - [[package]] name = "idna" version = "3.3" @@ -1020,52 +1023,20 @@ reference = "tsinghua" [[package]] name = "uvicorn" -version = "0.11.8" +version = "0.17.6" description = "The lightning-fast ASGI server." category = "dev" optional = false -python-versions = "*" - -[package.dependencies] -click = ">=7.0.0,<8.0.0" -h11 = ">=0.8,<0.10" -httptools = {version = ">=0.1.0,<0.2.0", markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\""} -uvloop = {version = ">=0.14.0", markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\""} -websockets = ">=8.0.0,<9.0.0" - -[package.extras] -watchgodreload = ["watchgod (>=0.6,<0.7)"] - -[package.source] -type = "legacy" -url = "https://pypi.tuna.tsinghua.edu.cn/simple" -reference = "tsinghua" - -[[package]] -name = "uvloop" -version = "0.16.0" -description = "Fast implementation of asyncio event loop on top of libuv" -category = "dev" -optional = false python-versions = ">=3.7" +[package.dependencies] +asgiref = ">=3.4.0" +click = ">=7.0" +h11 = ">=0.8" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + [package.extras] -dev = ["Cython (>=0.29.24,<0.30.0)", "pytest (>=3.6.0)", "Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx_rtd_theme (>=0.5.2,<0.6.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "psutil", "pycodestyle (>=2.7.0,<2.8.0)", "pyOpenSSL (>=19.0.0,<19.1.0)", "mypy (>=0.800)"] -docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx_rtd_theme (>=0.5.2,<0.6.0)"] -test = ["aiohttp", "flake8 (>=3.9.2,<3.10.0)", "psutil", "pycodestyle (>=2.7.0,<2.8.0)", "pyOpenSSL (>=19.0.0,<19.1.0)", "mypy (>=0.800)"] - -[package.source] -type = "legacy" -url = "https://pypi.tuna.tsinghua.edu.cn/simple" -reference = "tsinghua" - -[[package]] -name = "websockets" -version = "8.1" -description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -category = "dev" -optional = false -python-versions = ">=3.6.1" +standard = ["websockets (>=10.0)", "httptools (>=0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] [package.source] type = "legacy" @@ -1164,7 +1135,7 @@ upload = ["requests-toolbelt", "filetype"] [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "c92a3ad9ae96032709d1f074a1e6962fa386680a8a85555b9ecc7054434e4aa0" +content-hash = "32778bf7f65f9a923dbb14acc6d0818863787fc70266b78f61bc03738181f47d" [metadata.files] allure-pytest = [ @@ -1183,6 +1154,10 @@ appdirs = [ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, ] +asgiref = [ + {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, + {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, +] atomicwrites = [ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, @@ -1509,23 +1484,6 @@ h11 = [ {file = "h11-0.9.0-py2.py3-none-any.whl", hash = "sha256:4bc6d6a1238b7615b266ada57e0618568066f57dd6fa967d1290ec9309b2f2f1"}, {file = "h11-0.9.0.tar.gz", hash = "sha256:33d4bca7be0fa039f4e84d50ab00531047e53d6ee8ffbc83501ea602c169cae1"}, ] -httptools = [ - {file = "httptools-0.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:1e35aa179b67086cc600a984924a88589b90793c9c1b260152ca4908786e09df"}, - {file = "httptools-0.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c4111a0a8a00eff1e495d43ea5230aaf64968a48ddba8ea2d5f982efae827404"}, - {file = "httptools-0.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:dce59ee45dd6ee6c434346a5ac527c44014326f560866b4b2f414a692ee1aca8"}, - {file = "httptools-0.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:f759717ca1b2ef498c67ba4169c2b33eecf943a89f5329abcff8b89d153eb500"}, - {file = "httptools-0.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:08b79e09114e6ab5c3dbf560bba2cb2257ea38cdaeaf99b7cb80d8f92622fcd9"}, - {file = "httptools-0.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:8fcca4b7efe353b13a24017211334c57d055a6e132c7adffed13a10d28efca57"}, - {file = "httptools-0.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:aebdf0bd7bf7c90ae6b3be458692bf6e9e5b610b501f9f74c7979015a51db4c4"}, - {file = "httptools-0.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:fbf7ecd31c39728f251b1c095fd27c84e4d21f60a1d079a0333472ff3ae59d34"}, - {file = "httptools-0.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:c1c63d860749841024951b0a78e4dec6f543d23751ef061d6ab60064c7b8b524"}, - {file = "httptools-0.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fb7199b8fb0c50a22e77260bb59017e0c075fa80cb03bb2c8692de76e7bb7fe7"}, - {file = "httptools-0.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bda99a5723e7eab355ce57435c70853fc137a65aebf2f1cd4d15d96e2956da7b"}, - {file = "httptools-0.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:851026bd63ec0af7e7592890d97d15c92b62d9e17094353f19a52c8e2b33710a"}, - {file = "httptools-0.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:31629e1f1b89959f8c0927bad12184dc07977dcf71e24f4772934aa490aa199b"}, - {file = "httptools-0.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:9abd788465aa46a0f288bd3a99e53edd184177d6379e2098fd6097bb359ad9d6"}, - {file = "httptools-0.1.2.tar.gz", hash = "sha256:07659649fe6b3948b6490825f89abe5eb1cec79ebfaaa0b4bf30f3f33f3c2ba8"}, -] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, @@ -1967,50 +1925,8 @@ urllib3 = [ {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, ] uvicorn = [ - {file = "uvicorn-0.11.8-py3-none-any.whl", hash = "sha256:4b70ddb4c1946e39db9f3082d53e323dfd50634b95fd83625d778729ef1730ef"}, - {file = "uvicorn-0.11.8.tar.gz", hash = "sha256:46a83e371f37ea7ff29577d00015f02c942410288fb57def6440f2653fff1d26"}, -] -uvloop = [ - {file = "uvloop-0.16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6224f1401025b748ffecb7a6e2652b17768f30b1a6a3f7b44660e5b5b690b12d"}, - {file = "uvloop-0.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:30ba9dcbd0965f5c812b7c2112a1ddf60cf904c1c160f398e7eed3a6b82dcd9c"}, - {file = "uvloop-0.16.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bd53f7f5db562f37cd64a3af5012df8cac2c464c97e732ed556800129505bd64"}, - {file = "uvloop-0.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:772206116b9b57cd625c8a88f2413df2fcfd0b496eb188b82a43bed7af2c2ec9"}, - {file = "uvloop-0.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b572256409f194521a9895aef274cea88731d14732343da3ecdb175228881638"}, - {file = "uvloop-0.16.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:04ff57aa137230d8cc968f03481176041ae789308b4d5079118331ab01112450"}, - {file = "uvloop-0.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a19828c4f15687675ea912cc28bbcb48e9bb907c801873bd1519b96b04fb805"}, - {file = "uvloop-0.16.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e814ac2c6f9daf4c36eb8e85266859f42174a4ff0d71b99405ed559257750382"}, - {file = "uvloop-0.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd8f42ea1ea8f4e84d265769089964ddda95eb2bb38b5cbe26712b0616c3edee"}, - {file = "uvloop-0.16.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:647e481940379eebd314c00440314c81ea547aa636056f554d491e40503c8464"}, - {file = "uvloop-0.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e0d26fa5875d43ddbb0d9d79a447d2ace4180d9e3239788208527c4784f7cab"}, - {file = "uvloop-0.16.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6ccd57ae8db17d677e9e06192e9c9ec4bd2066b77790f9aa7dede2cc4008ee8f"}, - {file = "uvloop-0.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:089b4834fd299d82d83a25e3335372f12117a7d38525217c2258e9b9f4578897"}, - {file = "uvloop-0.16.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98d117332cc9e5ea8dfdc2b28b0a23f60370d02e1395f88f40d1effd2cb86c4f"}, - {file = "uvloop-0.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e5f2e2ff51aefe6c19ee98af12b4ae61f5be456cd24396953244a30880ad861"}, - {file = "uvloop-0.16.0.tar.gz", hash = "sha256:f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228"}, -] -websockets = [ - {file = "websockets-8.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c"}, - {file = "websockets-8.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170"}, - {file = "websockets-8.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4f9f7d28ce1d8f1295717c2c25b732c2bc0645db3215cf757551c392177d7cb8"}, - {file = "websockets-8.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:295359a2cc78736737dd88c343cd0747546b2174b5e1adc223824bcaf3e164cb"}, - {file = "websockets-8.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:1d3f1bf059d04a4e0eb4985a887d49195e15ebabc42364f4eb564b1d065793f5"}, - {file = "websockets-8.1-cp36-cp36m-win32.whl", hash = "sha256:2db62a9142e88535038a6bcfea70ef9447696ea77891aebb730a333a51ed559a"}, - {file = "websockets-8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:0e4fb4de42701340bd2353bb2eee45314651caa6ccee80dbd5f5d5978888fed5"}, - {file = "websockets-8.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:9b248ba3dd8a03b1a10b19efe7d4f7fa41d158fdaa95e2cf65af5a7b95a4f989"}, - {file = "websockets-8.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ce85b06a10fc65e6143518b96d3dca27b081a740bae261c2fb20375801a9d56d"}, - {file = "websockets-8.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:965889d9f0e2a75edd81a07592d0ced54daa5b0785f57dc429c378edbcffe779"}, - {file = "websockets-8.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:751a556205d8245ff94aeef23546a1113b1dd4f6e4d102ded66c39b99c2ce6c8"}, - {file = "websockets-8.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:3ef56fcc7b1ff90de46ccd5a687bbd13a3180132268c4254fc0fa44ecf4fc422"}, - {file = "websockets-8.1-cp37-cp37m-win32.whl", hash = "sha256:7ff46d441db78241f4c6c27b3868c9ae71473fe03341340d2dfdbe8d79310acc"}, - {file = "websockets-8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:20891f0dddade307ffddf593c733a3fdb6b83e6f9eef85908113e628fa5a8308"}, - {file = "websockets-8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c1ec8db4fac31850286b7cd3b9c0e1b944204668b8eb721674916d4e28744092"}, - {file = "websockets-8.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:5c01fd846263a75bc8a2b9542606927cfad57e7282965d96b93c387622487485"}, - {file = "websockets-8.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9bef37ee224e104a413f0780e29adb3e514a5b698aabe0d969a6ba426b8435d1"}, - {file = "websockets-8.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d705f8aeecdf3262379644e4b55107a3b55860eb812b673b28d0fbc347a60c55"}, - {file = "websockets-8.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:c8a116feafdb1f84607cb3b14aa1418424ae71fee131642fc568d21423b51824"}, - {file = "websockets-8.1-cp38-cp38-win32.whl", hash = "sha256:e898a0863421650f0bebac8ba40840fc02258ef4714cb7e1fd76b6a6354bda36"}, - {file = "websockets-8.1-cp38-cp38-win_amd64.whl", hash = "sha256:f8a7bff6e8664afc4e6c28b983845c5bc14965030e3fb98789734d416af77c4b"}, - {file = "websockets-8.1.tar.gz", hash = "sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f"}, + {file = "uvicorn-0.17.6-py3-none-any.whl", hash = "sha256:19e2a0e96c9ac5581c01eb1a79a7d2f72bb479691acd2b8921fce48ed5b961a6"}, + {file = "uvicorn-0.17.6.tar.gz", hash = "sha256:5180f9d059611747d841a4a4c4ab675edf54c8489e97f96d0583ee90ac3bfc23"}, ] werkzeug = [ {file = "Werkzeug-2.0.3-py3-none-any.whl", hash = "sha256:1421ebfc7648a39a5c58c601b154165d05cf47a3cd0ccb70857cbdacf6c8f2b8"}, diff --git a/pyproject.toml b/pyproject.toml index 9dbc57d8..627acd15 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,8 +53,8 @@ locust = ["locust"] # pip install "httprunner[locust]", [tool.poetry.dev-dependencies] coverage = "^4.5.4" -uvicorn = "^0.11.3" fastapi = "^0.70.0" +uvicorn = "^0.17.6" [tool.poetry.scripts] httprunner = "httprunner.cli:main" From f5aba034de5e440e9780d70ac3e21b498600e4d8 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 21 Mar 2022 16:08:35 +0800 Subject: [PATCH 23/27] change: add integration test for windows --- .github/workflows/integration_test.yml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml index 89b94888..8050ddd4 100644 --- a/.github/workflows/integration_test.yml +++ b/.github/workflows/integration_test.yml @@ -15,7 +15,7 @@ jobs: max-parallel: 6 matrix: python-version: ['3.7', '3.8', '3.9', '3.10'] - os: [ubuntu-latest, macos-latest] # TODO: windows-latest + os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v2 @@ -26,19 +26,20 @@ jobs: architecture: x64 - name: Install dependencies run: | - python -m pip install --upgrade pip pip install poetry poetry --version poetry install -vv -E upload - - name: Test package installation + - name: Test build package run: | poetry build - ls dist/*.whl | xargs pip install # test installation - hrun -V - har2case -h - httprunner run -h - httprunner startproject -h - httprunner har2case -h + ls -l dist/ + - name: Test commands + run: | + poetry run hrun -V + poetry run har2case -h + poetry run httprunner run -h + poetry run httprunner startproject -h + poetry run httprunner har2case -h - name: Run smoketest - postman echo run: | poetry run hrun examples/postman_echo/request_methods From fa81c55941c896c2e1734e05c3c7a50ef83da07d Mon Sep 17 00:00:00 2001 From: debugtalk Date: Tue, 22 Mar 2022 11:39:12 +0800 Subject: [PATCH 24/27] feat: report events with Google Analytics --- docs/CHANGELOG.md | 5 +-- httprunner/cli.py | 3 +- httprunner/ext/har2case/__init__.py | 2 ++ httprunner/ext/locust/__init__.py | 2 ++ httprunner/make.py | 28 +++++++--------- httprunner/scaffold.py | 3 ++ httprunner/utils.py | 50 ++++++++++++++++++++++++++--- 7 files changed, 69 insertions(+), 24 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index e565afcd..c35bcbb1 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,13 +1,14 @@ # Release History -## 3.1.7 (2022-03-21) +## 3.1.7 (2022-03-22) +- feat: report events with Google Analytics - fix #1117: ignore comments and blank lines when parsing .env file - fix #1141: parameterize failure caused by pydantic version - fix #1165: ImportError caused by jinja2 version - fix: failure in getting client and server IP/port when requesting HTTPS - fix: upgrade dependencies for security -- change: upgrade python support version to ^3.7 +- change: remove support for dead python 3.6, upgrade supported python version to 3.7/3.8/3.9/3.10 ## 3.1.6 (2021-07-18) diff --git a/httprunner/cli.py b/httprunner/cli.py index 70a4fca6..636f4ca3 100644 --- a/httprunner/cli.py +++ b/httprunner/cli.py @@ -12,7 +12,7 @@ from httprunner.compat import ensure_cli_args from httprunner.ext.har2case import init_har2case_parser, main_har2case from httprunner.make import init_make_parser, main_make from httprunner.scaffold import init_parser_scaffold, main_scaffold -from httprunner.utils import init_sentry_sdk +from httprunner.utils import init_sentry_sdk, ga_client init_sentry_sdk() @@ -26,6 +26,7 @@ def init_parser_run(subparsers): def main_run(extra_args) -> enum.IntEnum: capture_message("start to run") + ga_client.track_event("RunAPITests", "hrun") # keep compatibility with v2 extra_args = ensure_cli_args(extra_args) diff --git a/httprunner/ext/har2case/__init__.py b/httprunner/ext/har2case/__init__.py index dcc316b5..3c1733f6 100644 --- a/httprunner/ext/har2case/__init__.py +++ b/httprunner/ext/har2case/__init__.py @@ -10,6 +10,7 @@ Usage: """ from httprunner.ext.har2case.core import HarParser +from httprunner.utils import ga_client from sentry_sdk import capture_message @@ -60,6 +61,7 @@ def main_har2case(args): output_file_type = "pytest" capture_message(f"har2case {output_file_type}") + ga_client.track_event("ConvertTests", f"har2case {output_file_type}") HarParser(har_source_file, args.filter, args.exclude).gen_testcase(output_file_type) return 0 diff --git a/httprunner/ext/locust/__init__.py b/httprunner/ext/locust/__init__.py index 38214567..04c4fa18 100644 --- a/httprunner/ext/locust/__init__.py +++ b/httprunner/ext/locust/__init__.py @@ -23,6 +23,7 @@ from typing import List from loguru import logger +from httprunner.utils import ga_client """ converted pytest files from YAML/JSON testcases """ @@ -75,6 +76,7 @@ def main_locusts(): init_sentry_sdk() capture_message("start to run locusts") + ga_client.track_event("RunLoadTests", "locust") # avoid print too much log details in console logger.remove() diff --git a/httprunner/make.py b/httprunner/make.py index f644a421..f452eb4b 100644 --- a/httprunner/make.py +++ b/httprunner/make.py @@ -2,29 +2,21 @@ import os import string import subprocess import sys -from typing import Text, List, Tuple, Dict, Set, NoReturn +from typing import Dict, List, NoReturn, Set, Text, Tuple import jinja2 from loguru import logger from sentry_sdk import capture_exception -from httprunner import exceptions, __version__ -from httprunner.compat import ( - ensure_testcase_v3_api, - ensure_testcase_v3, - convert_variables, - ensure_path_sep, -) -from httprunner.loader import ( - load_folder_files, - load_test_file, - load_testcase, - load_testsuite, - load_project_meta, - convert_relative_project_root_dir, -) +from httprunner import __version__, exceptions +from httprunner.compat import (convert_variables, ensure_path_sep, + ensure_testcase_v3, ensure_testcase_v3_api) +from httprunner.loader import (convert_relative_project_root_dir, + load_folder_files, load_project_meta, + load_test_file, load_testcase, load_testsuite) from httprunner.response import uniform_validator -from httprunner.utils import merge_variables, is_support_multiprocessing +from httprunner.utils import (ga_client, is_support_multiprocessing, + merge_variables) """ cache converted pytest files, avoid duplicate making """ @@ -590,6 +582,8 @@ def main_make(tests_paths: List[Text]) -> List[Text]: if not tests_paths: return [] + ga_client.track_event("ConvertTests", "hmake") + for tests_path in tests_paths: tests_path = ensure_path_sep(tests_path) if not os.path.isabs(tests_path): diff --git a/httprunner/scaffold.py b/httprunner/scaffold.py index c56c4021..207d62cc 100644 --- a/httprunner/scaffold.py +++ b/httprunner/scaffold.py @@ -5,6 +5,8 @@ import sys from loguru import logger from sentry_sdk import capture_message +from httprunner.utils import ga_client + def init_parser_scaffold(subparsers): sub_parser_scaffold = subparsers.add_parser( @@ -200,4 +202,5 @@ def sleep(n_secs): def main_scaffold(args): capture_message("startproject with scaffold") + ga_client.track_event("Scaffold", "startproject") sys.exit(create_scaffold(args.project_name)) diff --git a/httprunner/utils.py b/httprunner/utils.py index feb10283..03f7171b 100644 --- a/httprunner/utils.py +++ b/httprunner/utils.py @@ -1,18 +1,18 @@ import collections import copy +import itertools import json import os.path import platform import uuid from multiprocessing import Queue -import itertools -from typing import Dict, List, Any, Union, Text +from typing import Any, Dict, List, Text +import requests import sentry_sdk from loguru import logger -from httprunner import __version__ -from httprunner import exceptions +from httprunner import __version__, exceptions from httprunner.models import VariablesMapping @@ -25,6 +25,48 @@ def init_sentry_sdk(): scope.set_user({"id": uuid.getnode()}) +class GAClient(object): + + version = '1' # GA API Version + report_url = 'https://www.google-analytics.com/collect' + report_debug_url = 'https://www.google-analytics.com/debug/collect' # used for debug + + def __init__(self, tracking_id: Text): + self.http_client = requests.Session() + self.label = str(__version__) + self.common_params = { + 'v': self.version, + 'tid': tracking_id, # Tracking ID / Property ID, XX-XXXXXXX-X + 'cid': uuid.getnode(), # Anonymous Client ID + 'ua': f'HttpRunner/{__version__}', + } + + def track_event(self, category: Text, action: Text, value: int = 0): + data = { + 't': 'event', # Event hit type = event + 'ec': category, # Required. Event Category. + 'ea': action, # Required. Event Action. + 'el': self.label, # Optional. Event label, used as version. + 'ev': value, # Optional. Event value, must be non-negative integer + } + data.update(self.common_params) + self.http_client.post(self.report_url, data=data) + + def track_user_timing(self, category: Text, variable: Text, duration: int): + data = { + 't': 'timing', # Event hit type = timing + 'utc': category, # Required. user timing category. e.g. jsonLoader + 'utv': variable, # Required. timing variable. e.g. load + 'utt': duration, # Required. time took duration. + 'utl': self.label, # Optional. user timing label, used as version. + } + data.update(self.common_params) + self.http_client.post(self.report_url, data=data) + + +ga_client = GAClient("UA-114587036-1") + + def set_os_environ(variables_mapping): """ set variables mapping to os.environ """ From ffa2bf21d10ee991737a151ebe3bf0c5d862e711 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Tue, 22 Mar 2022 12:04:46 +0800 Subject: [PATCH 25/27] change: replace events reporter from sentry to Google Analytics --- docs/CHANGELOG.md | 2 +- httprunner/cli.py | 2 -- httprunner/ext/har2case/__init__.py | 2 -- httprunner/ext/locust/__init__.py | 7 +------ httprunner/scaffold.py | 2 -- 5 files changed, 2 insertions(+), 13 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index c35bcbb1..fbf2320a 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -2,13 +2,13 @@ ## 3.1.7 (2022-03-22) -- feat: report events with Google Analytics - fix #1117: ignore comments and blank lines when parsing .env file - fix #1141: parameterize failure caused by pydantic version - fix #1165: ImportError caused by jinja2 version - fix: failure in getting client and server IP/port when requesting HTTPS - fix: upgrade dependencies for security - change: remove support for dead python 3.6, upgrade supported python version to 3.7/3.8/3.9/3.10 +- change: replace events reporter from sentry to Google Analytics ## 3.1.6 (2021-07-18) diff --git a/httprunner/cli.py b/httprunner/cli.py index 636f4ca3..9041258d 100644 --- a/httprunner/cli.py +++ b/httprunner/cli.py @@ -5,7 +5,6 @@ import sys import pytest from loguru import logger -from sentry_sdk import capture_message from httprunner import __description__, __version__ from httprunner.compat import ensure_cli_args @@ -25,7 +24,6 @@ def init_parser_run(subparsers): def main_run(extra_args) -> enum.IntEnum: - capture_message("start to run") ga_client.track_event("RunAPITests", "hrun") # keep compatibility with v2 extra_args = ensure_cli_args(extra_args) diff --git a/httprunner/ext/har2case/__init__.py b/httprunner/ext/har2case/__init__.py index 3c1733f6..fb6ca4d2 100644 --- a/httprunner/ext/har2case/__init__.py +++ b/httprunner/ext/har2case/__init__.py @@ -11,7 +11,6 @@ Usage: from httprunner.ext.har2case.core import HarParser from httprunner.utils import ga_client -from sentry_sdk import capture_message def init_har2case_parser(subparsers): @@ -60,7 +59,6 @@ def main_har2case(args): else: output_file_type = "pytest" - capture_message(f"har2case {output_file_type}") ga_client.track_event("ConvertTests", f"har2case {output_file_type}") HarParser(har_source_file, args.filter, args.exclude).gen_testcase(output_file_type) diff --git a/httprunner/ext/locust/__init__.py b/httprunner/ext/locust/__init__.py index 04c4fa18..eb4f4c69 100644 --- a/httprunner/ext/locust/__init__.py +++ b/httprunner/ext/locust/__init__.py @@ -23,7 +23,6 @@ from typing import List from loguru import logger -from httprunner.utils import ga_client """ converted pytest files from YAML/JSON testcases """ @@ -71,11 +70,7 @@ def prepare_locust_tests() -> List: def main_locusts(): """ locusts entrance """ - from httprunner.utils import init_sentry_sdk - from sentry_sdk import capture_message - - init_sentry_sdk() - capture_message("start to run locusts") + from httprunner.utils import ga_client ga_client.track_event("RunLoadTests", "locust") # avoid print too much log details in console diff --git a/httprunner/scaffold.py b/httprunner/scaffold.py index 207d62cc..282bfb08 100644 --- a/httprunner/scaffold.py +++ b/httprunner/scaffold.py @@ -3,7 +3,6 @@ import subprocess import sys from loguru import logger -from sentry_sdk import capture_message from httprunner.utils import ga_client @@ -201,6 +200,5 @@ def sleep(n_secs): def main_scaffold(args): - capture_message("startproject with scaffold") ga_client.track_event("Scaffold", "startproject") sys.exit(create_scaffold(args.project_name)) From bc9681b3559808c456fdb3da3774a25a12be5520 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Tue, 22 Mar 2022 12:28:21 +0800 Subject: [PATCH 26/27] docs: update tests --- examples/httpbin/basic_test.py | 2 +- examples/httpbin/hooks_test.py | 2 +- examples/httpbin/load_image_test.py | 2 +- examples/httpbin/upload_test.py | 2 +- examples/httpbin/validate_test.py | 2 +- .../cookie_manipulation/__init__.py | 1 + .../cookie_manipulation/hardcode.yml | 12 ++--- .../cookie_manipulation/hardcode_test.py | 43 +++++++++++++++++ .../set_delete_cookies_test.py | 46 +++++++++++++++++++ 9 files changed, 101 insertions(+), 11 deletions(-) create mode 100644 examples/postman_echo/cookie_manipulation/__init__.py create mode 100644 examples/postman_echo/cookie_manipulation/hardcode_test.py create mode 100644 examples/postman_echo/cookie_manipulation/set_delete_cookies_test.py diff --git a/examples/httpbin/basic_test.py b/examples/httpbin/basic_test.py index 5565c15e..c16102bb 100644 --- a/examples/httpbin/basic_test.py +++ b/examples/httpbin/basic_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: basic.yml diff --git a/examples/httpbin/hooks_test.py b/examples/httpbin/hooks_test.py index 832b3b17..ef4fce08 100644 --- a/examples/httpbin/hooks_test.py +++ b/examples/httpbin/hooks_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: hooks.yml diff --git a/examples/httpbin/load_image_test.py b/examples/httpbin/load_image_test.py index 61b05f3f..a3827b85 100644 --- a/examples/httpbin/load_image_test.py +++ b/examples/httpbin/load_image_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: load_image.yml diff --git a/examples/httpbin/upload_test.py b/examples/httpbin/upload_test.py index 134a5575..c3886e0c 100644 --- a/examples/httpbin/upload_test.py +++ b/examples/httpbin/upload_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: upload.yml diff --git a/examples/httpbin/validate_test.py b/examples/httpbin/validate_test.py index 87b16aa7..c6ddd3f9 100644 --- a/examples/httpbin/validate_test.py +++ b/examples/httpbin/validate_test.py @@ -1,4 +1,4 @@ -# NOTE: Generated By HttpRunner v3.1.4 +# NOTE: Generated By HttpRunner v3.1.7 # FROM: validate.yml diff --git a/examples/postman_echo/cookie_manipulation/__init__.py b/examples/postman_echo/cookie_manipulation/__init__.py new file mode 100644 index 00000000..70cfba53 --- /dev/null +++ b/examples/postman_echo/cookie_manipulation/__init__.py @@ -0,0 +1 @@ +# NOTICE: Generated By HttpRunner. DO NOT EDIT! diff --git a/examples/postman_echo/cookie_manipulation/hardcode.yml b/examples/postman_echo/cookie_manipulation/hardcode.yml index f81c5f7c..d3b00354 100644 --- a/examples/postman_echo/cookie_manipulation/hardcode.yml +++ b/examples/postman_echo/cookie_manipulation/hardcode.yml @@ -2,7 +2,7 @@ config: name: "set & delete cookies." base_url: "https://postman-echo.com" verify: False - export: ["cookie_foo1", "cookie_foo3"] + export: ["cookie_foo1"] teststeps: - @@ -16,10 +16,11 @@ teststeps: headers: User-Agent: HttpRunner/${get_httprunner_version()} extract: - cookie_foo1: $.cookies.foo1 + cookie_foo1: body.cookies.foo1 validate: - eq: ["status_code", 200] - - eq: ["cookies.foo1", "bar1"] + - eq: ["body.cookies.foo1", "bar1"] + - eq: ["body.cookies.foo2", "bar2"] - name: delete cookie foo2 request: @@ -29,6 +30,5 @@ teststeps: User-Agent: HttpRunner/${get_httprunner_version()} validate: - eq: ["status_code", 200] - - ne: ["$.cookies.foo1", "$foo1"] - - eq: ["$.cookies.foo1", "$cookie_foo1"] - - eq: ["$.cookies.foo3", "$cookie_foo3"] + - eq: ["body.cookies.foo1", "bar1"] + - eq: ["body.cookies.foo2", null] diff --git a/examples/postman_echo/cookie_manipulation/hardcode_test.py b/examples/postman_echo/cookie_manipulation/hardcode_test.py new file mode 100644 index 00000000..b69b0e40 --- /dev/null +++ b/examples/postman_echo/cookie_manipulation/hardcode_test.py @@ -0,0 +1,43 @@ +# NOTE: Generated By HttpRunner v3.1.7 +# FROM: cookie_manipulation/hardcode.yml + + +from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase + + +class TestCaseHardcode(HttpRunner): + + config = ( + Config("set & delete cookies.") + .base_url("https://postman-echo.com") + .verify(False) + .export(*["cookie_foo1"]) + ) + + teststeps = [ + Step( + RunRequest("set cookie foo1 & foo2 & foo3") + .get("/cookies/set") + .with_params(**{"foo1": "bar1", "foo2": "bar2"}) + .with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"}) + .extract() + .with_jmespath("body.cookies.foo1", "cookie_foo1") + .validate() + .assert_equal("status_code", 200) + .assert_equal("body.cookies.foo1", "bar1") + .assert_equal("body.cookies.foo2", "bar2") + ), + Step( + RunRequest("delete cookie foo2") + .get("/cookies/delete?foo2") + .with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"}) + .validate() + .assert_equal("status_code", 200) + .assert_equal("body.cookies.foo1", "bar1") + .assert_equal("body.cookies.foo2", None) + ), + ] + + +if __name__ == "__main__": + TestCaseHardcode().test_start() diff --git a/examples/postman_echo/cookie_manipulation/set_delete_cookies_test.py b/examples/postman_echo/cookie_manipulation/set_delete_cookies_test.py new file mode 100644 index 00000000..77347c7a --- /dev/null +++ b/examples/postman_echo/cookie_manipulation/set_delete_cookies_test.py @@ -0,0 +1,46 @@ +# NOTE: Generated By HttpRunner v3.1.7 +# FROM: cookie_manipulation/set_delete_cookies.yml + + +from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase + + +class TestCaseSetDeleteCookies(HttpRunner): + + config = ( + Config("set & delete cookies.") + .variables(**{"foo1": "bar1", "foo2": "bar2"}) + .base_url("https://postman-echo.com") + .verify(False) + .export(*["cookie_foo1", "cookie_foo3"]) + ) + + teststeps = [ + Step( + RunRequest("set cookie foo1 & foo2 & foo3") + .with_variables(**{"foo3": "bar3"}) + .get("/cookies/set") + .with_params(**{"foo1": "bar111", "foo2": "$foo2", "foo3": "$foo3"}) + .with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"}) + .extract() + .with_jmespath("$.cookies.foo1", "cookie_foo1") + .with_jmespath("$.cookies.foo3", "cookie_foo3") + .validate() + .assert_equal("status_code", 200) + .assert_not_equal("$.cookies.foo3", "$foo3") + ), + Step( + RunRequest("delete cookie foo2") + .get("/cookies/delete?foo2") + .with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"}) + .validate() + .assert_equal("status_code", 200) + .assert_not_equal("$.cookies.foo1", "$foo1") + .assert_equal("$.cookies.foo1", "$cookie_foo1") + .assert_equal("$.cookies.foo3", "$cookie_foo3") + ), + ] + + +if __name__ == "__main__": + TestCaseSetDeleteCookies().test_start() From c57714bbfef23f0adeb049ccf9323b6894391410 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Tue, 22 Mar 2022 16:34:07 +0800 Subject: [PATCH 27/27] change: load yaml file with FullLoader --- docs/CHANGELOG.md | 4 ++++ httprunner/__init__.py | 2 +- httprunner/loader.py | 11 ++++------- pyproject.toml | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index fbf2320a..ebffeb3f 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,9 @@ # Release History +## 3.1.8 (2022-03-22) + +- change: load yaml file with FullLoader + ## 3.1.7 (2022-03-22) - fix #1117: ignore comments and blank lines when parsing .env file diff --git a/httprunner/__init__.py b/httprunner/__init__.py index d57ef6ff..74e8cf1d 100644 --- a/httprunner/__init__.py +++ b/httprunner/__init__.py @@ -1,4 +1,4 @@ -__version__ = "3.1.7" +__version__ = "3.1.8-beta" __description__ = "One-stop solution for HTTP(S) testing." # import firstly for monkey patch if needed diff --git a/httprunner/loader.py b/httprunner/loader.py index fdb7edc4..6c81fd82 100644 --- a/httprunner/loader.py +++ b/httprunner/loader.py @@ -4,17 +4,14 @@ import json import os import sys import types -from typing import Tuple, Dict, Union, Text, List, Callable +from typing import Callable, Dict, List, Text, Tuple, Union import yaml from loguru import logger from pydantic import ValidationError -from yaml.loader import FullLoader - -from httprunner import builtin, utils -from httprunner import exceptions -from httprunner.models import TestCase, ProjectMeta, TestSuite +from httprunner import builtin, exceptions, utils +from httprunner.models import ProjectMeta, TestCase, TestSuite project_meta: Union[ProjectMeta, None] = None @@ -24,7 +21,7 @@ def _load_yaml_file(yaml_file: Text) -> Dict: """ with open(yaml_file, mode="rb") as stream: try: - yaml_content = yaml.load(stream, loader=FullLoader) + yaml_content = yaml.load(stream, Loader=yaml.FullLoader) except yaml.YAMLError as ex: err_msg = f"YAMLError:\nfile: {yaml_file}\nerror: {ex}" logger.error(err_msg) diff --git a/pyproject.toml b/pyproject.toml index 627acd15..a17c0b43 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "httprunner" -version = "3.1.7" +version = "3.1.8-beta" description = "One-stop solution for HTTP(S) testing." license = "Apache-2.0" readme = "docs/README.md"