From 73e58f59dd1ee659db0eb2d8ac965b093d9d1dfc Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Fri, 21 Jan 2022 02:37:37 -0500 Subject: [PATCH 1/6] [UPD] python version 3.7.12 --- .python-version | 2 +- doc/DEVELOPMENT.md | 10 ++++++++++ docker/Dockerfile.base | 2 +- docker/python-versions.txt | 2 +- pyproject.toml | 2 +- script/install_OSX_dependency.sh | 4 ++-- script/install_locally.sh | 2 +- script/version/change_python_version.sh | 20 ++++++++++++++++++++ 8 files changed, 37 insertions(+), 7 deletions(-) create mode 100755 script/version/change_python_version.sh diff --git a/.python-version b/.python-version index d2577d9..f7e5aa8 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.7.7 +3.7.12 diff --git a/doc/DEVELOPMENT.md b/doc/DEVELOPMENT.md index b4df330..af10163 100644 --- a/doc/DEVELOPMENT.md +++ b/doc/DEVELOPMENT.md @@ -197,6 +197,16 @@ source ./.venv/bin/activate python odoo/odoo-bin scaffold MODULE_NAME addons/REPO_NAME/ ``` +## Python version + +Your actual version is in file .python-version. Use script `./script/version/change_python_version.sh 3.7.12` to change to version 3.7.12 . + +Run the installation, `make install_dev`. + +Update poetry, `./script/poetry_update.py`. + +Create docker, `make docker_build`. + # Pull request ## Show all pull requests from organization diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base index f6e408a..10fd213 100644 --- a/docker/Dockerfile.base +++ b/docker/Dockerfile.base @@ -1,4 +1,4 @@ -FROM python:3.7.7-slim-buster +FROM python:3.7.12-slim-buster MAINTAINER TechnoLibre SHELL ["/bin/bash", "-xo", "pipefail", "-c"] diff --git a/docker/python-versions.txt b/docker/python-versions.txt index cbbb5ee..b44c537 100644 --- a/docker/python-versions.txt +++ b/docker/python-versions.txt @@ -1 +1 @@ -3.7.7 \ No newline at end of file +3.7.12 \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 76db0fe..e1c71d2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ license = "AGPL-3.0-or-later" authors = [ "Mathieu Benoit ",] [tool.poetry.dependencies] -python = "^3.7.7" +python = "^3.7.12" Asterisk = "^0.0.8" Babel = "2.3.4" BeautifulSoup4 = "^4.10.0" diff --git a/script/install_OSX_dependency.sh b/script/install_OSX_dependency.sh index 61756db..1340d9b 100755 --- a/script/install_OSX_dependency.sh +++ b/script/install_OSX_dependency.sh @@ -37,8 +37,8 @@ sudo npm install -g rtlcss sudo npm install -g less sudo npm install -g prettier sudo npm install -g prettier @prettier/plugin-xml -yes n|pyenv install 3.7.7 -pyenv local 3.7.7 +yes n|pyenv install 3.7.12 +pyenv local 3.7.12 echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc diff --git a/script/install_locally.sh b/script/install_locally.sh index 9cf672d..a728292 100755 --- a/script/install_locally.sh +++ b/script/install_locally.sh @@ -25,7 +25,7 @@ if [[ ! -d "./addons/addons" ]]; then fi PYENV_PATH=~/.pyenv -PYTHON_VERSION=3.7.7 +PYTHON_VERSION=3.7.12 PYENV_VERSION_PATH=${PYENV_PATH}/versions/${PYTHON_VERSION} PYTHON_EXEC=${PYENV_VERSION_PATH}/bin/python POETRY_PATH=~/.poetry diff --git a/script/version/change_python_version.sh b/script/version/change_python_version.sh new file mode 100755 index 0000000..eadaf5c --- /dev/null +++ b/script/version/change_python_version.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +# $1 new version version, like 3.7.12 + +input=".python-version" +while IFS= read -r line +do + echo -e "Actual version $line" + sed -i -e "s/$line/$1/g" ./.python-version + sed -i -e "s/$line/$1/g" ./docker/Dockerfile.base + sed -i -e "s/$line/$1/g" ./docker/python-versions.txt + sed -i -e "s/$line/$1/g" ./script/install_locally.sh + sed -i -e "s/$line/$1/g" ./script/install_OSX_dependency.sh + sed -i -e "s/$line/$1/g" ./pyproject.toml +done < "$input" + +while IFS= read -r line +do + echo -e "New version $line" +done < "$input" From 028ff27498d6d90a45594e35040c8fa1e164e8a7 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Mon, 24 Jan 2022 01:38:07 -0500 Subject: [PATCH 2/6] [ADD] manifest: remote novacode-nl and project design-themes - security update lxml and pillow - downgrade Werkzeug, odoo12 need this version --- ignore_requirements.txt | 1 + manifest/default.dev.xml | 11 +- poetry.lock | 2216 +++++++++++++++++++++++-------------- pyproject.toml | 56 +- requirements.txt | 10 +- script/generate_config.sh | 2 + source_repo_addons.csv | 2 + 7 files changed, 1434 insertions(+), 864 deletions(-) diff --git a/ignore_requirements.txt b/ignore_requirements.txt index 11636aa..d8f1103 100644 --- a/ignore_requirements.txt +++ b/ignore_requirements.txt @@ -15,3 +15,4 @@ pythonjsonlogger python-alipay-sdk pyrfc MySQLdb +formiodata \ No newline at end of file diff --git a/manifest/default.dev.xml b/manifest/default.dev.xml index cfde160..4f8d1b1 100644 --- a/manifest/default.dev.xml +++ b/manifest/default.dev.xml @@ -13,6 +13,7 @@ + @@ -59,6 +60,7 @@ + @@ -85,7 +87,7 @@ - + @@ -98,9 +100,10 @@ + - + @@ -133,8 +136,8 @@ - - + + diff --git a/poetry.lock b/poetry.lock index 2cec97e..b4673ed 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,19 +19,19 @@ category = "main" description = "Altair: A declarative statistical visualization library for Python." name = "altair" optional = false -python-versions = ">=3.6" -version = "4.1.0" +python-versions = ">=3.7" +version = "4.2.0" [package.dependencies] entrypoints = "*" jinja2 = "*" -jsonschema = "*" +jsonschema = ">=3.0" numpy = "*" pandas = ">=0.18" toolz = "*" [package.extras] -dev = ["black", "docutils", "ipython", "flake8", "pytest", "sphinx", "m2r", "vega-datasets", "recommonmark"] +dev = ["black", "docutils", "ipython", "flake8", "pytest", "sphinx", "mistune (<2.0.0)", "m2r", "vega-datasets", "recommonmark"] [[package]] category = "main" @@ -46,8 +46,8 @@ category = "main" description = "Bash tab completion for argparse" name = "argcomplete" optional = false -python-versions = "*" -version = "1.12.3" +python-versions = ">=3.6" +version = "2.0.0" [package.dependencies] [package.dependencies.importlib-metadata] @@ -76,54 +76,79 @@ version = "0.0.8" [package.dependencies] requests = "*" +[[package]] +category = "main" +description = "Read/rewrite/write Python ASTs" +name = "astor" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +version = "0.8.1" + [[package]] category = "main" description = "An abstract syntax tree for Python with inference support." name = "astroid" optional = false -python-versions = ">=3.6" -version = "2.5" +python-versions = "~=3.6" +version = "2.8.6" [package.dependencies] lazy-object-proxy = ">=1.4.0" -wrapt = ">=1.11,<1.13" +setuptools = ">=20.0" +wrapt = ">=1.11,<1.14" [package.dependencies.typed-ast] python = "<3.8" -version = ">=1.4.0,<1.5" +version = ">=1.4.0,<2.0" + +[package.dependencies.typing-extensions] +python = "<3.10" +version = ">=3.10" [[package]] category = "main" description = "Classes Without Boilerplate" name = "attrs" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "19.3.0" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "21.2.0" [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 (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"] +tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"] [[package]] category = "main" description = "Internationalization utilities" name = "babel" optional = false -python-versions = "*" -version = "2.3.4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.9.1" [package.dependencies] -pytz = ">=0a" +pytz = ">=2015.7" + +[[package]] +category = "main" +description = "Backport of the standard library zoneinfo module" +marker = "python_version >= \"3.6\" and python_version < \"3.9\" or python_version < \"3.9\"" +name = "backports.zoneinfo" +optional = false +python-versions = ">=3.6" +version = "0.2.1" + +[package.extras] +tzdata = ["tzdata"] [[package]] category = "main" description = "Modern password hashing for your software and your servers" name = "bcrypt" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "3.1.7" +python-versions = ">=3.6" +version = "3.2.0" [package.dependencies] cffi = ">=1.1" @@ -131,6 +156,7 @@ six = ">=1.4.1" [package.extras] tests = ["pytest (>=3.2.1,<3.3.0 || >3.3.0)"] +typecheck = ["mypy"] [[package]] category = "main" @@ -173,7 +199,7 @@ version = ">=3.7.4" [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.6.0)", "aiohttp-cors (>=0.4.0)"] +d = ["aiohttp-cors (>=0.4.0)", "aiohttp (>=3.6.0)"] python2 = ["typed-ast (>=1.4.2)"] uvloop = ["uvloop (>=0.15.2)"] @@ -238,15 +264,15 @@ description = "A decorator for caching properties in classes." name = "cached-property" optional = false python-versions = "*" -version = "1.5.1" +version = "1.5.2" [[package]] category = "main" description = "Extensible memoizing collections and decorators" name = "cachetools" optional = false -python-versions = "~=3.5" -version = "4.2.2" +python-versions = "~=3.7" +version = "5.0.0" [[package]] category = "main" @@ -265,7 +291,7 @@ description = "Python package for providing Mozilla's CA Bundle." name = "certifi" optional = false python-versions = "*" -version = "2020.6.20" +version = "2021.10.8" [[package]] category = "main" @@ -273,7 +299,7 @@ description = "Foreign Function Interface for Python calling C code." name = "cffi" optional = false python-versions = "*" -version = "1.14.1" +version = "1.15.0" [package.dependencies] pycparser = "*" @@ -292,7 +318,7 @@ description = "Composable command line interface toolkit" name = "click" optional = false python-versions = ">=3.6" -version = "8.0.1" +version = "8.0.3" [package.dependencies] colorama = "*" @@ -382,19 +408,25 @@ category = "main" description = "A CSS Cascading Style Sheets library for Python" name = "cssutils" optional = false -python-versions = "*" -version = "1.0.2" +python-versions = ">=3.6" +version = "2.3.0" + +[package.dependencies] +[package.dependencies.importlib-metadata] +python = "<3.8" +version = "*" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "mock", "lxml", "cssselect", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources"] [[package]] category = "main" description = "Composable style cycles" name = "cycler" optional = false -python-versions = "*" -version = "0.10.0" - -[package.dependencies] -six = "*" +python-versions = ">=3.6" +version = "0.11.0" [[package]] category = "main" @@ -402,22 +434,27 @@ description = "The Cython compiler for writing C extensions for the Python langu name = "cython" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.29.24" +version = "0.29.26" [[package]] category = "main" description = "Date parsing library designed to parse dates from HTML pages" name = "dateparser" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.7.6" +python-versions = ">=3.5" +version = "1.1.0" [package.dependencies] python-dateutil = "*" pytz = "*" -regex = "!=2019.02.19" +regex = "<2019.02.19 || >2019.02.19,<2021.8.27 || >2021.8.27" tzlocal = "*" +[package.extras] +calendars = ["convertdate", "hijri-converter", "convertdate"] +fasttext = ["fasttext"] +langdetect = ["langdetect"] + [[package]] category = "main" description = "Data-Driven/Decorated Tests" @@ -432,13 +469,17 @@ description = "A collection of Python deprecation patterns and strategies that h name = "debtcollector" optional = false python-versions = ">=3.6" -version = "2.2.0" +version = "2.3.0" [package.dependencies] pbr = ">=2.0.0,<2.1.0 || >2.1.0" six = ">=1.10.0" wrapt = ">=1.7.0" +[package.dependencies.importlib-metadata] +python = "<3.8" +version = ">=1.7.0" + [[package]] category = "main" description = "Better living through Python with decorators" @@ -453,7 +494,7 @@ description = "XML bomb protection for Python stdlib modules" name = "defusedxml" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.6.0" +version = "0.7.1" [[package]] category = "main" @@ -484,7 +525,7 @@ description = "DNS toolkit" name = "dnspython" optional = false python-versions = ">=3.6" -version = "2.0.0" +version = "2.1.0" [package.extras] curio = ["curio (>=1.2)", "sniffio (>=1.1)"] @@ -539,7 +580,7 @@ description = "Emoji for Python" name = "emoji" optional = false python-versions = "*" -version = "1.5.0" +version = "1.6.3" [package.extras] dev = ["pytest", "coverage", "coveralls"] @@ -588,8 +629,8 @@ category = "main" description = "An implementation of lxml.xmlfile for the standard library" name = "et-xmlfile" optional = false -python-versions = "*" -version = "1.0.1" +python-versions = ">=3.6" +version = "1.1.0" [[package]] category = "main" @@ -597,7 +638,7 @@ description = "Extracts emails and attachments saved in Microsoft Outlook's .msg name = "extract-msg" optional = false python-versions = "*" -version = "0.28.7" +version = "0.30.0" [package.dependencies] compressed-rtf = ">=1.0.6" @@ -631,17 +672,28 @@ category = "main" description = "the modular source code checker: pep8 pyflakes and co" name = "flake8" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -version = "3.9.2" +python-versions = ">=3.6" +version = "4.0.1" [package.dependencies] mccabe = ">=0.6.0,<0.7.0" -pycodestyle = ">=2.7.0,<2.8.0" -pyflakes = ">=2.3.0,<2.4.0" +pycodestyle = ">=2.8.0,<2.9.0" +pyflakes = ">=2.4.0,<2.5.0" [package.dependencies.importlib-metadata] python = "<3.8" -version = "*" +version = "<4.3" + +[[package]] +category = "main" +description = "formio.js JSON-data API" +name = "formio-data" +optional = false +python-versions = "*" +version = "0.3.14" + +[package.extras] +json_logic = ["json-logic-qubit"] [[package]] category = "main" @@ -669,7 +721,10 @@ description = "A toolkit for generation of output for the web" name = "genshi" optional = false python-versions = "*" -version = "0.7.3" +version = "0.7.5" + +[package.dependencies] +six = "*" [package.extras] i18n = ["Babel (>=0.8)"] @@ -706,11 +761,11 @@ category = "main" description = "Git Object Database" name = "gitdb" optional = false -python-versions = ">=3.4" -version = "4.0.5" +python-versions = ">=3.6" +version = "4.0.9" [package.dependencies] -smmap = ">=3.0.1,<4" +smmap = ">=3.0.1,<6" [[package]] category = "main" @@ -787,8 +842,13 @@ category = "main" description = "Python humanize utilities" name = "humanize" optional = false -python-versions = ">=3.5" -version = "2.5.0" +python-versions = ">=3.6" +version = "3.13.1" + +[package.dependencies] +[package.dependencies.importlib-metadata] +python = "<3.8" +version = "*" [package.extras] tests = ["freezegun", "pytest", "pytest-cov"] @@ -807,7 +867,7 @@ description = "Getting image size from png/jpeg/jpeg2000/gif file" name = "imagesize" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.2.0" +version = "1.3.0" [[package]] category = "main" @@ -830,15 +890,37 @@ description = "Read metadata from Python packages" marker = "python_version < \"3.8\"" name = "importlib-metadata" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -version = "1.7.0" +python-versions = ">=3.6" +version = "4.2.0" [package.dependencies] zipp = ">=0.5" +[package.dependencies.typing-extensions] +python = "<3.8" +version = ">=3.6.4" + [package.extras] -docs = ["sphinx", "rst.linker"] -testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] + +[[package]] +category = "main" +description = "Read resources from Python packages" +marker = "python_version < \"3.9\"" +name = "importlib-resources" +optional = false +python-versions = ">=3.6" +version = "5.4.0" + +[package.dependencies] +[package.dependencies.zipp] +python = "<3.10" +version = ">=3.1.0" + +[package.extras] +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)", "pytest-black (>=0.3.7)", "pytest-mypy"] [[package]] category = "main" @@ -871,8 +953,8 @@ category = "main" description = "Simple module to parse ISO 8601 dates" name = "iso8601" optional = false -python-versions = "*" -version = "0.1.12" +python-versions = ">=3.6.2,<4.0" +version = "1.0.2" [[package]] category = "main" @@ -880,7 +962,7 @@ description = "An ISO 8601 date/time/duration parser and formatter" name = "isodate" optional = false python-versions = "*" -version = "0.6.0" +version = "0.6.1" [package.dependencies] six = "*" @@ -891,7 +973,7 @@ description = "A Python utility / library to sort Python imports." name = "isort" optional = false python-versions = ">=3.6.1,<4.0" -version = "5.9.1" +version = "5.10.1" [package.extras] colors = ["colorama (>=0.4.3,<0.5.0)"] @@ -966,29 +1048,42 @@ description = "Library with helpers for the jsonlines file format" name = "jsonlines" optional = false python-versions = ">=3.6" -version = "2.0.0" +version = "3.0.0" + +[package.dependencies] +attrs = ">=19.2.0" + +[package.dependencies.typing-extensions] +python = "<3.8" +version = "*" [[package]] category = "main" description = "An implementation of JSON Schema validation for Python" name = "jsonschema" optional = false -python-versions = "*" -version = "3.2.0" +python-versions = ">=3.7" +version = "4.3.0" [package.dependencies] attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" +pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" [package.dependencies.importlib-metadata] python = "<3.8" version = "*" +[package.dependencies.importlib-resources] +python = "<3.9" +version = ">=1.4.0" + +[package.dependencies.typing-extensions] +python = "<3.8" +version = "*" + [package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format_nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] [[package]] category = "main" @@ -996,11 +1091,12 @@ description = "Placeholder description" name = "jtutils" optional = false python-versions = "*" -version = "0.0.6" +version = "0.0.8" [package.dependencies] beautifulsoup4 = "*" requests = "*" +selenium = "*" [[package]] category = "main" @@ -1030,8 +1126,8 @@ category = "main" description = "A fast implementation of the Cassowary constraint solver" name = "kiwisolver" optional = false -python-versions = ">=3.6" -version = "1.2.0" +python-versions = ">=3.7" +version = "1.3.2" [[package]] category = "main" @@ -1050,8 +1146,8 @@ category = "main" description = "A fast and thorough lazy object proxy." name = "lazy-object-proxy" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -version = "1.6.0" +python-versions = ">=3.6" +version = "1.7.1" [[package]] category = "main" @@ -1085,7 +1181,7 @@ description = "Powerful and Pythonic XML processing library combining libxml2/li name = "lxml" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" -version = "4.6.3" +version = "4.7.1" [package.extras] cssselect = ["cssselect (>=0.7)"] @@ -1166,7 +1262,7 @@ description = "MessagePack (de)serializer." name = "msgpack" optional = false python-versions = "*" -version = "1.0.0" +version = "1.0.3" [[package]] category = "main" @@ -1174,8 +1270,8 @@ description = "multidict implementation" marker = "python_version >= \"3.6\"" name = "multidict" optional = false -python-versions = ">=3.5" -version = "4.7.6" +python-versions = ">=3.6" +version = "5.2.0" [[package]] category = "main" @@ -1191,7 +1287,7 @@ description = "Python interface to MySQL" name = "mysqlclient" optional = false python-versions = ">=3.5" -version = "2.0.3" +version = "2.1.0" [[package]] category = "main" @@ -1207,7 +1303,7 @@ description = "Portable network interface information." name = "netifaces" optional = false python-versions = "*" -version = "0.10.9" +version = "0.11.0" [[package]] category = "main" @@ -1296,7 +1392,7 @@ description = "A library with support functions to be called from Odoo migration name = "openupgradelib" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "3.1.1" +version = "3.3.1" [package.dependencies] cssselect = "*" @@ -1312,7 +1408,7 @@ description = "A dict-like object that ignore NoneType values for Python" name = "optionaldict" optional = false python-versions = "*" -version = "0.1.1" +version = "0.1.2" [[package]] category = "main" @@ -1331,7 +1427,7 @@ description = "Oslo Configuration API" name = "oslo.config" optional = false python-versions = ">=3.6" -version = "8.3.1" +version = "8.4.0" [package.dependencies] PyYAML = ">=3.12" @@ -1346,17 +1442,20 @@ stevedore = ">=1.20.0" python = "<3.8" version = ">=1.7.0" +[package.extras] +rst_generator = ["rst2txt (>=1.1.0)", "sphinx (>=1.8.0,<2.1.0 || >2.1.0)"] +test = ["bandit (>=1.6.0,<1.7.0)", "coverage (>=4.0,<4.4 || >4.4)", "fixtures (>=3.0.0)", "hacking (>=3.0.1,<3.1.0)", "mypy (>=0.720)", "oslo.log (>=3.36.0)", "oslotest (>=3.2.0)", "pre-commit (>=2.6.0)", "requests-mock (>=1.5.0)", "stestr (>=2.1.0)", "testscenarios (>=0.4)", "testtools (>=2.2.0)"] + [[package]] category = "main" description = "Oslo i18n library" name = "oslo.i18n" optional = false python-versions = ">=3.6" -version = "5.0.0" +version = "5.1.0" [package.dependencies] pbr = ">=2.0.0,<2.1.0 || >2.1.0" -six = ">=1.10.0" [[package]] category = "main" @@ -1364,7 +1463,7 @@ description = "Oslo Serialization library" name = "oslo.serialization" optional = false python-versions = ">=3.6" -version = "4.0.0" +version = "4.2.0" [package.dependencies] msgpack = ">=0.5.2" @@ -1378,7 +1477,7 @@ description = "Oslo Utility library" name = "oslo.utils" optional = false python-versions = ">=3.6" -version = "4.4.0" +version = "4.12.0" [package.dependencies] debtcollector = ">=1.2.0" @@ -1390,19 +1489,17 @@ packaging = ">=20.4" pbr = ">=2.0.0,<2.1.0 || >2.1.0" pyparsing = ">=2.1.0" pytz = ">=2013.6" -six = ">=1.10.0" [[package]] category = "main" description = "Core utilities for Python packages" name = "packaging" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "20.4" +python-versions = ">=3.6" +version = "21.3" [package.dependencies] -pyparsing = ">=2.0.2" -six = "*" +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] category = "main" @@ -1426,7 +1523,7 @@ description = "SSH2 protocol library" name = "paramiko" optional = false python-versions = "*" -version = "2.7.2" +version = "2.9.2" [package.dependencies] bcrypt = ">=3.1.3" @@ -1452,16 +1549,16 @@ category = "main" description = "Utility library for gitignore style pattern matching of file paths." name = "pathspec" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.8.1" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +version = "0.9.0" [[package]] category = "main" description = "Python Build Reasonableness" name = "pbr" optional = false -python-versions = "*" -version = "5.4.5" +python-versions = ">=2.6" +version = "5.8.0" [[package]] category = "main" @@ -1502,15 +1599,15 @@ description = "Python version of Google's common library for parsing, formatting name = "phonenumbers" optional = false python-versions = "*" -version = "8.12.33" +version = "8.12.41" [[package]] category = "main" description = "Python Imaging Library (Fork)" name = "pillow" optional = false -python-versions = ">=3.6" -version = "8.3.2" +python-versions = ">=3.7" +version = "9.0.0" [[package]] category = "main" @@ -1550,7 +1647,7 @@ description = "A library to manipulate gettext files (po and mo files)." name = "polib" optional = false python-versions = "*" -version = "1.1.0" +version = "1.1.1" [[package]] category = "main" @@ -1596,7 +1693,7 @@ description = "Run a subprocess in a pseudo terminal" name = "ptyprocess" optional = false python-versions = "*" -version = "0.6.0" +version = "0.7.0" [[package]] category = "main" @@ -1639,16 +1736,19 @@ category = "main" description = "Python style guide checker" name = "pycodestyle" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.7.0" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.8.0" [[package]] category = "main" description = "ISO country, subdivision, language, currency and script definitions and their translations" name = "pycountry" optional = false -python-versions = "*" -version = "20.7.3" +python-versions = ">=3.5, <4" +version = "22.1.10" + +[package.dependencies] +setuptools = "*" [[package]] category = "main" @@ -1656,7 +1756,15 @@ description = "C parser in Python" name = "pycparser" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.20" +version = "2.21" + +[[package]] +category = "main" +description = "Cryptographic modules for Python." +name = "pycrypto" +optional = false +python-versions = "*" +version = "2.6.1" [[package]] category = "main" @@ -1664,7 +1772,7 @@ description = "Cryptographic library for Python" name = "pycryptodome" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "3.10.1" +version = "3.12.0" [[package]] category = "main" @@ -1683,7 +1791,7 @@ description = "passive checker of Python programs" name = "pyflakes" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.3.1" +version = "2.4.0" [[package]] category = "main" @@ -1691,7 +1799,7 @@ description = "Pygments is a syntax highlighting package written in Python." name = "pygments" optional = false python-versions = ">=3.5" -version = "2.6.1" +version = "2.10.0" [[package]] category = "main" @@ -1752,23 +1860,28 @@ category = "main" description = "python code static checker" name = "pylint" optional = false -python-versions = ">=3.5.*" -version = "2.6.0" +python-versions = "~=3.6" +version = "2.11.1" [package.dependencies] -astroid = ">=2.4.0,<=2.5" +astroid = ">=2.8.0,<2.9" colorama = "*" isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.7" +platformdirs = ">=2.2.0" toml = ">=0.7.1" +[package.dependencies.typing-extensions] +python = "<3.10" +version = ">=3.10.0" + [[package]] category = "main" description = "Pylint plugin for Odoo" name = "pylint-odoo" optional = false python-versions = ">=2.7" -version = "5.0.1.dev1" +version = "5.0.5" [package.dependencies] Pygments = "<=2.10.0" @@ -1776,7 +1889,7 @@ docutils = "<=0.17.1" lxml = ">=4.2.3" pbr = "*" polib = "<=1.1.1" -pylint = "<=2.10.2" +pylint = "<=2.11.1" pylint-plugin-utils = "0.6" restructuredtext_lint = "<=1.3.2" rfc3986 = "*" @@ -1784,7 +1897,7 @@ six = "*" whichcraft = "*" [package.source] -reference = "0829a0ea6479650572d9b996a0658b0fb9934a7b" +reference = "c03dd158acd79dea665588af38a00a49f54e210a" type = "git" url = "https://github.com/oca/pylint-odoo.git" [[package]] @@ -1804,7 +1917,7 @@ description = "DB-API interface to Microsoft SQL Server for Python. (new Cython- name = "pymssql" optional = false python-versions = "*" -version = "2.2.2" +version = "2.2.3" [[package]] category = "main" @@ -1882,11 +1995,8 @@ category = "main" description = "Persistent/Functional/Immutable data structures" name = "pyrsistent" optional = false -python-versions = "*" -version = "0.16.0" - -[package.dependencies] -six = "*" +python-versions = ">=3.6" +version = "0.18.0" [[package]] category = "main" @@ -2021,7 +2131,7 @@ description = "Python module to handle standardized numbers and codes" name = "python-stdnum" optional = false python-versions = "*" -version = "1.16" +version = "1.17" [package.extras] soap = ["zeep"] @@ -2068,6 +2178,23 @@ optional = false python-versions = "*" version = "2017.3" +[[package]] +category = "main" +description = "Shims to make deprecation of pytz easier" +name = "pytz-deprecation-shim" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +version = "0.1.0.post0" + +[package.dependencies] +[package.dependencies."backports.zoneinfo"] +python = ">=3.6,<3.9" +version = "*" + +[package.dependencies.tzdata] +python = ">=3.6" +version = "*" + [[package]] category = "main" description = "Python USB access module" @@ -2132,7 +2259,7 @@ description = "Alternative regular expression module, to replace re." name = "regex" optional = false python-versions = "*" -version = "2020.7.14" +version = "2021.11.10" [[package]] category = "main" @@ -2220,7 +2347,7 @@ description = "reStructuredText linter" name = "restructuredtext-lint" optional = false python-versions = "*" -version = "1.3.1" +version = "1.3.2" [package.dependencies] docutils = ">=0.11,<1.0" @@ -2242,7 +2369,7 @@ description = "Validating URI References per RFC 3986" name = "rfc3986" optional = false python-versions = "*" -version = "1.4.0" +version = "1.5.0" [package.extras] idna2008 = ["idna"] @@ -2266,13 +2393,29 @@ optional = false python-versions = "*" version = "0.3.1" +[[package]] +category = "main" +description = "Python bindings for Selenium" +name = "selenium" +optional = false +python-versions = "*" +version = "3.141.0" + +[package.dependencies] +urllib3 = "*" + [[package]] category = "main" description = "Send file to trash natively under Mac OS X, Windows and Linux." name = "send2trash" optional = false python-versions = "*" -version = "1.5.0" +version = "1.8.0" + +[package.extras] +nativelib = ["pyobjc-framework-cocoa", "pywin32"] +objc = ["pyobjc-framework-cocoa"] +win32 = ["pywin32"] [[package]] category = "main" @@ -2306,7 +2449,7 @@ description = "Simple, fast, extensible JSON encoder/decoder for Python" name = "simplejson" optional = false python-versions = ">=2.5, !=3.0.*, !=3.1.*, !=3.2.*" -version = "3.17.5" +version = "3.17.6" [[package]] category = "main" @@ -2314,7 +2457,7 @@ description = "Python 2 and 3 compatibility utilities" name = "six" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -version = "1.15.0" +version = "1.16.0" [[package]] category = "main" @@ -2340,16 +2483,16 @@ category = "main" description = "A pure Python implementation of a sliding window memory map manager" name = "smmap" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "3.0.4" +python-versions = ">=3.6" +version = "5.0.0" [[package]] category = "main" -description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms." +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." name = "snowballstemmer" optional = false python-versions = "*" -version = "2.0.0" +version = "2.2.0" [[package]] category = "main" @@ -2368,8 +2511,8 @@ category = "main" description = "A modern CSS selector implementation for Beautiful Soup." name = "soupsieve" optional = false -python-versions = "*" -version = "1.9.6" +python-versions = ">=3.6" +version = "2.3.1" [[package]] category = "main" @@ -2377,7 +2520,7 @@ description = "Python documentation generator" name = "sphinx" optional = false python-versions = ">=3.6" -version = "4.2.0" +version = "4.3.2" [package.dependencies] Jinja2 = ">=2.3" @@ -2400,7 +2543,7 @@ sphinxcontrib-serializinghtml = ">=1.1.5" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.900)", "docutils-stubs", "types-typed-ast", "types-pkg-resources", "types-requests"] +lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.920)", "docutils-stubs", "types-typed-ast", "types-pkg-resources", "types-requests"] test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"] [[package]] @@ -2525,7 +2668,7 @@ description = "Database Abstraction Library" name = "sqlalchemy" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -version = "1.4.25" +version = "1.4.31" [package.dependencies] [package.dependencies.greenlet] @@ -2540,7 +2683,7 @@ version = "*" aiomysql = ["greenlet (!=0.4.17)", "aiomysql"] aiosqlite = ["typing_extensions (!=3.10.0.1)", "greenlet (!=0.4.17)", "aiosqlite"] asyncio = ["greenlet (!=0.4.17)"] -asyncmy = ["greenlet (!=0.4.17)", "asyncmy (>=0.2.0)"] +asyncmy = ["greenlet (!=0.4.17)", "asyncmy (>=0.2.3)"] mariadb_connector = ["mariadb (>=1.0.1)"] mssql = ["pyodbc"] mssql_pymssql = ["pymssql"] @@ -2571,7 +2714,7 @@ description = "Manage dynamic plugins for Python applications" name = "stevedore" optional = false python-versions = ">=3.6" -version = "3.2.0" +version = "3.5.0" [package.dependencies] pbr = ">=2.0.0,<2.1.0 || >2.1.0" @@ -2598,11 +2741,11 @@ version = "1.3" [[package]] category = "main" -description = "tinycss2" +description = "A tiny CSS parser" name = "tinycss2" optional = false python-versions = ">=3.6" -version = "1.1.0" +version = "1.1.1" [package.dependencies] webencodings = ">=0.4" @@ -2624,8 +2767,8 @@ category = "main" description = "List processing tools and functional utilities" name = "toolz" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.10.0" +python-versions = ">=3.5" +version = "0.11.2" [[package]] category = "main" @@ -2633,7 +2776,7 @@ description = "Tornado is a Python web framework and asynchronous networking lib name = "tornado" optional = false python-versions = ">= 3.5" -version = "6.0.4" +version = "6.1" [[package]] category = "main" @@ -2653,28 +2796,46 @@ description = "a fork of Python 2 and 3 ast modules with type comment support" marker = "implementation_name == \"cpython\" and python_version < \"3.8\" or python_version < \"3.8\"" name = "typed-ast" optional = false -python-versions = "*" -version = "1.4.3" +python-versions = ">=3.6" +version = "1.5.1" [[package]] category = "main" -description = "Backported and Experimental Type Hints for Python 3.5+" -marker = "python_version >= \"3.6\" and python_version < \"3.8\" or python_version < \"3.8\"" +description = "Backported and Experimental Type Hints for Python 3.6+" +marker = "python_version < \"3.10\" or python_version >= \"3.6\" and python_version < \"3.8\"" name = "typing-extensions" optional = false -python-versions = "*" -version = "3.7.4.2" +python-versions = ">=3.6" +version = "4.0.1" + +[[package]] +category = "main" +description = "Provider of IANA time zone data" +marker = "python_version >= \"3.6\" or platform_system == \"Windows\"" +name = "tzdata" +optional = false +python-versions = ">=2" +version = "2021.5" [[package]] category = "main" description = "tzinfo object for the local timezone" name = "tzlocal" optional = false -python-versions = "*" -version = "2.1" +python-versions = ">=3.6" +version = "4.1" [package.dependencies] -pytz = "*" +pytz-deprecation-shim = "*" +tzdata = "*" + +[package.dependencies."backports.zoneinfo"] +python = "<3.9" +version = "*" + +[package.extras] +devenv = ["black", "pyroma", "pytest-cov", "zest.releaser"] +test = ["pytest-mock (>=3.3)", "pytest (>=4.3)"] [[package]] category = "main" @@ -2801,9 +2962,10 @@ description = "WebSocket client for Python with low level API options" name = "websocket-client" optional = false python-versions = ">=3.6" -version = "1.2.1" +version = "1.2.3" [package.extras] +docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"] optional = ["python-socks", "wsaccel"] test = ["websockets"] @@ -2813,7 +2975,7 @@ description = "WeChat SDK for Python" name = "wechatpy" optional = false python-versions = "*" -version = "1.8.15" +version = "1.8.18" [package.dependencies] optionaldict = ">=0.1.0" @@ -2823,21 +2985,16 @@ six = ">=1.8.0" xmltodict = ">=0.11.0" [package.extras] -cryptography = ["cryptography"] +cryptography = ["cryptography (>=3.1)"] pycrypto = ["pycryptodome"] [[package]] category = "main" -description = "The comprehensive WSGI web application library." +description = "The Swiss Army knife of Python web development" name = "werkzeug" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.15.3" - -[package.extras] -dev = ["pytest", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"] -termcolor = ["termcolor"] -watchdog = ["watchdog"] +python-versions = "*" +version = "0.11.15" [[package]] category = "main" @@ -2853,7 +3010,7 @@ description = "A built-package format for Python" name = "wheel" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -version = "0.37.0" +version = "0.37.1" [package.extras] test = ["pytest (>=3.0.0)", "pytest-cov"] @@ -2871,8 +3028,8 @@ category = "main" description = "Module for decorators, wrappers and monkey patching." name = "wrapt" optional = false -python-versions = "*" -version = "1.12.1" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +version = "1.13.3" [[package]] category = "main" @@ -2933,8 +3090,8 @@ description = "Yet another URL library" marker = "python_version >= \"3.6\"" name = "yarl" optional = false -python-versions = ">=3.5" -version = "1.5.1" +python-versions = ">=3.6" +version = "1.7.2" [package.dependencies] idna = ">=2.0" @@ -2972,15 +3129,15 @@ xmlsec = ["xmlsec (>=0.6.1)"] [[package]] category = "main" description = "Backport of pathlib-compatible object wrapper for zip files" -marker = "python_version < \"3.8\"" +marker = "python_version < \"3.9\"" name = "zipp" optional = false python-versions = ">=3.6" -version = "3.1.0" +version = "3.6.0" [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 (>=4.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]] category = "main" @@ -2991,9 +3148,9 @@ python-versions = "*" version = "4.4.28" [metadata] -content-hash = "90dc43b28e07899fec98d3ec479284350b6ed838337d3bdc5d06893986ee3bda" +content-hash = "82f087e84dba14770e649cec1707d735f8edfec973c46c07f208261e416144fc" lock-version = "1.0" -python-versions = "^3.7.7" +python-versions = "^3.7.12" [metadata.files] agithub = [ @@ -3005,16 +3162,16 @@ alabaster = [ {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, ] altair = [ - {file = "altair-4.1.0-py3-none-any.whl", hash = "sha256:7748841a1bea8354173d1140bef6d3b58bea21d201f562528e9599ea384feb7f"}, - {file = "altair-4.1.0.tar.gz", hash = "sha256:3edd30d4f4bb0a37278b72578e7e60bc72045a8e6704179e2f4738e35bc12931"}, + {file = "altair-4.2.0-py3-none-any.whl", hash = "sha256:0c724848ae53410c13fa28be2b3b9a9dcb7b5caa1a70f7f217bd663bb419935a"}, + {file = "altair-4.2.0.tar.gz", hash = "sha256:d87d9372e63b48cd96b2a6415f0cf9457f50162ab79dc7a31cd7e024dd840026"}, ] appdirs = [ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, ] argcomplete = [ - {file = "argcomplete-1.12.3-py2.py3-none-any.whl", hash = "sha256:291f0beca7fd49ce285d2f10e4c1c77e9460cf823eef2de54df0c0fec88b0d81"}, - {file = "argcomplete-1.12.3.tar.gz", hash = "sha256:2c7dbffd8c045ea534921e63b0be6fe65e88599990d8dc408ac8c542b72a5445"}, + {file = "argcomplete-2.0.0-py2.py3-none-any.whl", hash = "sha256:cffa11ea77999bb0dd27bb25ff6dc142a6796142f68d45b1a26b11f58724561e"}, + {file = "argcomplete-2.0.0.tar.gz", hash = "sha256:6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20"}, ] argparse = [ {file = "argparse-1.4.0-py2.py3-none-any.whl", hash = "sha256:c31647edb69fd3d465a847ea3157d37bed1f95f19760b11a47aa91c04b666314"}, @@ -3023,38 +3180,51 @@ argparse = [ asterisk = [ {file = "asterisk-0.0.8.tar.gz", hash = "sha256:a7813896f355f8ed0ca1bdea05938a10c2788255332fc826cf87a4cb34308f37"}, ] +astor = [ + {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"}, + {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"}, +] astroid = [ - {file = "astroid-2.5-py3-none-any.whl", hash = "sha256:87ae7f2398b8a0ae5638ddecf9987f081b756e0e9fc071aeebdca525671fc4dc"}, - {file = "astroid-2.5.tar.gz", hash = "sha256:b31c92f545517dcc452f284bc9c044050862fbe6d93d2b3de4a215a6b384bf0d"}, + {file = "astroid-2.8.6-py3-none-any.whl", hash = "sha256:cd8326b424c971e7d87678609cf6275d22028afd37d6ac59c16d47f1245882f6"}, + {file = "astroid-2.8.6.tar.gz", hash = "sha256:5f6f75e45f15290e73b56f9dfde95b4bf96382284cde406ef4203e928335a495"}, ] 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.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"}, + {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"}, ] babel = [ - {file = "Babel-2.3.4-py2.py3-none-any.whl", hash = "sha256:3318ed2960240d61cbc6558858ee00c10eed77a6508c4d1ed8e6f7f48399c975"}, - {file = "Babel-2.3.4.tar.gz", hash = "sha256:c535c4403802f6eb38173cd4863e419e2274921a01a8aad8a5b497c131c62875"}, + {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"}, + {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"}, +] +"backports.zoneinfo" = [ + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, + {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, ] bcrypt = [ - {file = "bcrypt-3.1.7-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:d7bdc26475679dd073ba0ed2766445bb5b20ca4793ca0db32b399dccc6bc84b7"}, - {file = "bcrypt-3.1.7-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:69361315039878c0680be456640f8705d76cb4a3a3fe1e057e0f261b74be4b31"}, - {file = "bcrypt-3.1.7-cp27-cp27m-win32.whl", hash = "sha256:5432dd7b34107ae8ed6c10a71b4397f1c853bd39a4d6ffa7e35f40584cffd161"}, - {file = "bcrypt-3.1.7-cp27-cp27m-win_amd64.whl", hash = "sha256:9fe92406c857409b70a38729dbdf6578caf9228de0aef5bc44f859ffe971a39e"}, - {file = "bcrypt-3.1.7-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:763669a367869786bb4c8fcf731f4175775a5b43f070f50f46f0b59da45375d0"}, - {file = "bcrypt-3.1.7-cp34-abi3-macosx_10_6_intel.whl", hash = "sha256:a190f2a5dbbdbff4b74e3103cef44344bc30e61255beb27310e2aec407766052"}, - {file = "bcrypt-3.1.7-cp34-abi3-manylinux1_x86_64.whl", hash = "sha256:c9457fa5c121e94a58d6505cadca8bed1c64444b83b3204928a866ca2e599105"}, - {file = "bcrypt-3.1.7-cp34-cp34m-win32.whl", hash = "sha256:8b10acde4e1919d6015e1df86d4c217d3b5b01bb7744c36113ea43d529e1c3de"}, - {file = "bcrypt-3.1.7-cp34-cp34m-win_amd64.whl", hash = "sha256:cb93f6b2ab0f6853550b74e051d297c27a638719753eb9ff66d1e4072be67133"}, - {file = "bcrypt-3.1.7-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:436a487dec749bca7e6e72498a75a5fa2433bda13bac91d023e18df9089ae0b8"}, - {file = "bcrypt-3.1.7-cp35-cp35m-win32.whl", hash = "sha256:6fe49a60b25b584e2f4ef175b29d3a83ba63b3a4df1b4c0605b826668d1b6be5"}, - {file = "bcrypt-3.1.7-cp35-cp35m-win_amd64.whl", hash = "sha256:a595c12c618119255c90deb4b046e1ca3bcfad64667c43d1166f2b04bc72db09"}, - {file = "bcrypt-3.1.7-cp36-cp36m-win32.whl", hash = "sha256:74a015102e877d0ccd02cdeaa18b32aa7273746914a6c5d0456dd442cb65b99c"}, - {file = "bcrypt-3.1.7-cp36-cp36m-win_amd64.whl", hash = "sha256:0258f143f3de96b7c14f762c770f5fc56ccd72f8a1857a451c1cd9a655d9ac89"}, - {file = "bcrypt-3.1.7-cp37-cp37m-win32.whl", hash = "sha256:19a4b72a6ae5bb467fea018b825f0a7d917789bcfe893e53f15c92805d187294"}, - {file = "bcrypt-3.1.7-cp37-cp37m-win_amd64.whl", hash = "sha256:ff032765bb8716d9387fd5376d987a937254b0619eff0972779515b5c98820bc"}, - {file = "bcrypt-3.1.7-cp38-cp38-win32.whl", hash = "sha256:ce4e4f0deb51d38b1611a27f330426154f2980e66582dc5f438aad38b5f24fc1"}, - {file = "bcrypt-3.1.7-cp38-cp38-win_amd64.whl", hash = "sha256:6305557019906466fc42dbc53b46da004e72fd7a551c044a827e572c82191752"}, - {file = "bcrypt-3.1.7.tar.gz", hash = "sha256:0b0069c752ec14172c5f78208f1863d7ad6755a6fae6fe76ec2c80d13be41e42"}, + {file = "bcrypt-3.2.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b589229207630484aefe5899122fb938a5b017b0f4349f769b8c13e78d99a8fd"}, + {file = "bcrypt-3.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c95d4cbebffafcdd28bd28bb4e25b31c50f6da605c81ffd9ad8a3d1b2ab7b1b6"}, + {file = "bcrypt-3.2.0-cp36-abi3-manylinux1_x86_64.whl", hash = "sha256:63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7"}, + {file = "bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl", hash = "sha256:cd1ea2ff3038509ea95f687256c46b79f5fc382ad0aa3664d200047546d511d1"}, + {file = "bcrypt-3.2.0-cp36-abi3-manylinux2014_aarch64.whl", hash = "sha256:cdcdcb3972027f83fe24a48b1e90ea4b584d35f1cc279d76de6fc4b13376239d"}, + {file = "bcrypt-3.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a0584a92329210fcd75eb8a3250c5a941633f8bfaf2a18f81009b097732839b7"}, + {file = "bcrypt-3.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:56e5da069a76470679f312a7d3d23deb3ac4519991a0361abc11da837087b61d"}, + {file = "bcrypt-3.2.0-cp36-abi3-win32.whl", hash = "sha256:a67fb841b35c28a59cebed05fbd3e80eea26e6d75851f0574a9273c80f3e9b55"}, + {file = "bcrypt-3.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:81fec756feff5b6818ea7ab031205e1d323d8943d237303baca2c5f9c7846f34"}, + {file = "bcrypt-3.2.0.tar.gz", hash = "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29"}, ] beautifulsoup4 = [ {file = "beautifulsoup4-4.10.0-py3-none-any.whl", hash = "sha256:9a315ce70049920ea4572a4055bc4bd700c940521d36fc858205ad4fcde149bf"}, @@ -3073,57 +3243,79 @@ botocore = [ {file = "botocore-1.12.191.tar.gz", hash = "sha256:971bfcce68b0c92cb8ff6c43a080a2baa07f0f6809582d758da19c14fc039da0"}, ] cached-property = [ - {file = "cached-property-1.5.1.tar.gz", hash = "sha256:9217a59f14a5682da7c4b8829deadbfc194ac22e9908ccf7c8820234e80a1504"}, - {file = "cached_property-1.5.1-py2.py3-none-any.whl", hash = "sha256:3a026f1a54135677e7da5ce819b0c690f156f37976f3e30c5430740725203d7f"}, + {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, + {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"}, ] cachetools = [ - {file = "cachetools-4.2.2-py3-none-any.whl", hash = "sha256:2cc0b89715337ab6dbba85b5b50effe2b0c74e035d83ee8ed637cf52f12ae001"}, - {file = "cachetools-4.2.2.tar.gz", hash = "sha256:61b5ed1e22a0924aed1d23b478f37e8d52549ff8a961de2909c69bf950020cff"}, + {file = "cachetools-5.0.0-py3-none-any.whl", hash = "sha256:8fecd4203a38af17928be7b90689d8083603073622229ca7077b72d8e5a976e4"}, + {file = "cachetools-5.0.0.tar.gz", hash = "sha256:486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6"}, ] cerberus = [ {file = "Cerberus-1.3.4.tar.gz", hash = "sha256:d1b21b3954b2498d9a79edf16b3170a3ac1021df88d197dc2ce5928ba519237c"}, ] certifi = [ - {file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"}, - {file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"}, + {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.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:66dd45eb9530e3dde8f7c009f84568bc7cac489b93d04ac86e3111fb46e470c2"}, - {file = "cffi-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:4f53e4128c81ca3212ff4cf097c797ab44646a40b42ec02a891155cd7a2ba4d8"}, - {file = "cffi-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:833401b15de1bb92791d7b6fb353d4af60dc688eaa521bd97203dcd2d124a7c1"}, - {file = "cffi-1.14.1-cp27-cp27m-win32.whl", hash = "sha256:26f33e8f6a70c255767e3c3f957ccafc7f1f706b966e110b855bfe944511f1f9"}, - {file = "cffi-1.14.1-cp27-cp27m-win_amd64.whl", hash = "sha256:b87dfa9f10a470eee7f24234a37d1d5f51e5f5fa9eeffda7c282e2b8f5162eb1"}, - {file = "cffi-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:effd2ba52cee4ceff1a77f20d2a9f9bf8d50353c854a282b8760ac15b9833168"}, - {file = "cffi-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bac0d6f7728a9cc3c1e06d4fcbac12aaa70e9379b3025b27ec1226f0e2d404cf"}, - {file = "cffi-1.14.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d6033b4ffa34ef70f0b8086fd4c3df4bf801fee485a8a7d4519399818351aa8e"}, - {file = "cffi-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:8416ed88ddc057bab0526d4e4e9f3660f614ac2394b5e019a628cdfff3733849"}, - {file = "cffi-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:892daa86384994fdf4856cb43c93f40cbe80f7f95bb5da94971b39c7f54b3a9c"}, - {file = "cffi-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:c991112622baee0ae4d55c008380c32ecfd0ad417bcd0417ba432e6ba7328caa"}, - {file = "cffi-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fcf32bf76dc25e30ed793145a57426064520890d7c02866eb93d3e4abe516948"}, - {file = "cffi-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f960375e9823ae6a07072ff7f8a85954e5a6434f97869f50d0e41649a1c8144f"}, - {file = "cffi-1.14.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a6d28e7f14ecf3b2ad67c4f106841218c8ab12a0683b1528534a6c87d2307af3"}, - {file = "cffi-1.14.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:cda422d54ee7905bfc53ee6915ab68fe7b230cacf581110df4272ee10462aadc"}, - {file = "cffi-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:4a03416915b82b81af5502459a8a9dd62a3c299b295dcdf470877cb948d655f2"}, - {file = "cffi-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:4ce1e995aeecf7cc32380bc11598bfdfa017d592259d5da00fc7ded11e61d022"}, - {file = "cffi-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e23cb7f1d8e0f93addf0cae3c5b6f00324cccb4a7949ee558d7b6ca973ab8ae9"}, - {file = "cffi-1.14.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ddff0b2bd7edcc8c82d1adde6dbbf5e60d57ce985402541cd2985c27f7bec2a0"}, - {file = "cffi-1.14.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f90c2267101010de42f7273c94a1f026e56cbc043f9330acd8a80e64300aba33"}, - {file = "cffi-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:3cd2c044517f38d1b577f05927fb9729d3396f1d44d0c659a445599e79519792"}, - {file = "cffi-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fa72a52a906425416f41738728268072d5acfd48cbe7796af07a923236bcf96"}, - {file = "cffi-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:267adcf6e68d77ba154334a3e4fc921b8e63cbb38ca00d33d40655d4228502bc"}, - {file = "cffi-1.14.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d3148b6ba3923c5850ea197a91a42683f946dba7e8eb82dfa211ab7e708de939"}, - {file = "cffi-1.14.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:98be759efdb5e5fa161e46d404f4e0ce388e72fbf7d9baf010aff16689e22abe"}, - {file = "cffi-1.14.1-cp38-cp38-win32.whl", hash = "sha256:6923d077d9ae9e8bacbdb1c07ae78405a9306c8fd1af13bfa06ca891095eb995"}, - {file = "cffi-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:b1d6ebc891607e71fd9da71688fcf332a6630b7f5b7f5549e6e631821c0e5d90"}, - {file = "cffi-1.14.1.tar.gz", hash = "sha256:b2a2b0d276a136146e012154baefaea2758ef1f56ae9f4e01c612b0831e0bd2f"}, + {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"}, ] click = [ - {file = "click-8.0.1-py3-none-any.whl", hash = "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"}, - {file = "click-8.0.1.tar.gz", hash = "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a"}, + {file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"}, + {file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"}, ] cloudflare = [ {file = "cloudflare-2.8.15.tar.gz", hash = "sha256:1f47bd324f80e91487dea2c79be934b1dc612bcfa63e784dcf74c6a2f52a41cc"}, @@ -3170,73 +3362,80 @@ cssselect = [ {file = "cssselect-1.1.0.tar.gz", hash = "sha256:f95f8dedd925fd8f54edb3d2dfb44c190d9d18512377d3c1e2388d16126879bc"}, ] cssutils = [ - {file = "cssutils-1.0.2-py3-none-any.whl", hash = "sha256:c74dbe19c92f5052774eadb15136263548dd013250f1ed1027988e7fef125c8d"}, - {file = "cssutils-1.0.2.tar.gz", hash = "sha256:a2fcf06467553038e98fea9cfe36af2bf14063eb147a70958cfcaa8f5786acaf"}, + {file = "cssutils-2.3.0-py3-none-any.whl", hash = "sha256:0cf1f6086b020dee18048ff3999339499f725934017ef9ae2cd5bb77f9ab5f46"}, + {file = "cssutils-2.3.0.tar.gz", hash = "sha256:b2d3b16047caae82e5c590036935bafa1b621cf45c2f38885af4be4838f0fd00"}, ] cycler = [ - {file = "cycler-0.10.0-py2.py3-none-any.whl", hash = "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d"}, - {file = "cycler-0.10.0.tar.gz", hash = "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"}, + {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, + {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, ] cython = [ - {file = "Cython-0.29.24-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:6a2cf2ccccc25413864928dfd730c29db6f63eaf98206c1e600003a445ca7f58"}, - {file = "Cython-0.29.24-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b28f92e617f540d3f21f8fd479a9c6491be920ffff672a4c61b7fc4d7f749f39"}, - {file = "Cython-0.29.24-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:37bcfa5df2a3009f49624695d917c3804fccbdfcdc5eda6378754a879711a4d5"}, - {file = "Cython-0.29.24-cp27-cp27m-win32.whl", hash = "sha256:9164aeef1af6f837e4fc20402a31d256188ba4d535e262c6cb78caf57ad744f8"}, - {file = "Cython-0.29.24-cp27-cp27m-win_amd64.whl", hash = "sha256:73ac33a4379056a02031baa4def255717fadb9181b5ac2b244792d53eae1c925"}, - {file = "Cython-0.29.24-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:09ac3087ac7a3d489ebcb3fb8402e00c13d1a3a1c6bc73fd3b0d756a3e341e79"}, - {file = "Cython-0.29.24-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:774cb8fd931ee1ba52c472bc1c19077cd6895c1b24014ae07bb27df59aed5ebe"}, - {file = "Cython-0.29.24-cp34-cp34m-win32.whl", hash = "sha256:5dd56d0be50073f0e54825a8bc3393852de0eed126339ecbca0ae149dba55cfc"}, - {file = "Cython-0.29.24-cp34-cp34m-win_amd64.whl", hash = "sha256:88dc3c250dec280b0489a83950b15809762e27232f4799b1b8d0bad503f5ab84"}, - {file = "Cython-0.29.24-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:5fa12ebafc2f688ea6d26ab6d1d2e634a9872509ba7135b902bb0d8b368fb04b"}, - {file = "Cython-0.29.24-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:60c958bcab0ff315b4036a949bed1c65334e1f6a69e17e9966d742febb59043a"}, - {file = "Cython-0.29.24-cp35-cp35m-win32.whl", hash = "sha256:166f9f29cd0058ce1a14a7b3a2458b849ed34b1ec5fd4108af3fdd2c24afcbb0"}, - {file = "Cython-0.29.24-cp35-cp35m-win_amd64.whl", hash = "sha256:76cbca0188d278e93d12ebdaf5990678e6e436485fdfad49dbe9b07717d41a3c"}, - {file = "Cython-0.29.24-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f2e9381497b12e8f622af620bde0d1d094035d79b899abb2ddd3a7891f535083"}, - {file = "Cython-0.29.24-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:d8d1a087f35e39384303f5e6b75d465d6f29d746d7138eae9d3b6e8e6f769eae"}, - {file = "Cython-0.29.24-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:112efa54a58293a4fb0acf0dd8e5b3736e95b595eee24dd88615648e445abe41"}, - {file = "Cython-0.29.24-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cf4452f0e4d50e11701bca38f3857fe6fa16593e7fd6a4d5f7be66f611b7da2"}, - {file = "Cython-0.29.24-cp36-cp36m-win32.whl", hash = "sha256:854fe2193d3ad4c8b61932ff54d6dbe10c5fa8749eb8958d72cc0ab28243f833"}, - {file = "Cython-0.29.24-cp36-cp36m-win_amd64.whl", hash = "sha256:84826ec1c11cda56261a252ddecac0c7d6b02e47e81b94f40b27b4c23c29c17c"}, - {file = "Cython-0.29.24-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6ade74eece909fd3a437d9a5084829180751d7ade118e281e9824dd75eafaff2"}, - {file = "Cython-0.29.24-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0a142c6b862e6ed6b02209d543062c038c110585b5e32d1ad7c9717af4f07e41"}, - {file = "Cython-0.29.24-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:10cb3def9774fa99e4583617a5616874aed3255dc241fd1f4a3c2978c78e1c53"}, - {file = "Cython-0.29.24-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f41ef7edd76dd23315925e003f0c58c8585f3ab24be6885c4b3f60e77c82746"}, - {file = "Cython-0.29.24-cp37-cp37m-win32.whl", hash = "sha256:821c2d416ad7d006b069657ee1034c0e0cb45bdbe9ab6ab631e8c495dfcfa4ac"}, - {file = "Cython-0.29.24-cp37-cp37m-win_amd64.whl", hash = "sha256:2d9e61ed1056a3b6a4b9156b62297ad18b357a7948e57a2f49b061217696567e"}, - {file = "Cython-0.29.24-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b0ee28c2c8118bfb3ad9b25cf7a6cbd724e442ea96956e32ccd908d5e3e043"}, - {file = "Cython-0.29.24-cp38-cp38-manylinux1_i686.whl", hash = "sha256:eb2843f8cc01c645725e6fc690a84e99cdb266ce8ebe427cf3a680ff09f876aa"}, - {file = "Cython-0.29.24-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:661dbdea519d9cfb288867252b75fef73ffa8e8bb674cec27acf70646afb369b"}, - {file = "Cython-0.29.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc05de569f811be1fcfde6756c9048ae518f0c4b6d9f8f024752c5365d934cac"}, - {file = "Cython-0.29.24-cp38-cp38-win32.whl", hash = "sha256:a102cfa795c6b3b81a29bdb9dbec545367cd7f353c03e6f30a056fdfefd92854"}, - {file = "Cython-0.29.24-cp38-cp38-win_amd64.whl", hash = "sha256:416046a98255eff97ec02077d20ebeaae52682dfca1c35aadf31260442b92514"}, - {file = "Cython-0.29.24-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ad43e684ade673565f6f9d6638015112f6c7f11aa2a632167b79014f613f0f5f"}, - {file = "Cython-0.29.24-cp39-cp39-manylinux1_i686.whl", hash = "sha256:afb521523cb46ddaa8d269b421f88ea2731fee05e65b952b96d4db760f5a2a1c"}, - {file = "Cython-0.29.24-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:0d414458cb22f8a90d64260da6dace5d5fcebde43f31be52ca51f818c46db8cb"}, - {file = "Cython-0.29.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb87777e82d1996aef6c146560a19270684271c9c669ba62ac6803b3cd2ff82"}, - {file = "Cython-0.29.24-cp39-cp39-win32.whl", hash = "sha256:91339ee4b465924a3ea4b2a9cec7f7227bc4cadf673ce859d24c2b9ef60b1214"}, - {file = "Cython-0.29.24-cp39-cp39-win_amd64.whl", hash = "sha256:5fb977945a2111f6b64501fdf7ed0ec162cc502b84457fd648d6a558ea8de0d6"}, - {file = "Cython-0.29.24-py2.py3-none-any.whl", hash = "sha256:f96411f0120b5cae483923aaacd2872af8709be4b46522daedc32f051d778385"}, - {file = "Cython-0.29.24.tar.gz", hash = "sha256:cdf04d07c3600860e8c2ebaad4e8f52ac3feb212453c1764a49ac08c827e8443"}, + {file = "Cython-0.29.26-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c4b003b6b7aa9e74552ef8d4e6009b3e3c3e8fa585710b3a6d062e088e460c1b"}, + {file = "Cython-0.29.26-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ce804a021c92fea66c8c100781a111706f21bade7a546895c5a9c57fe2df8b24"}, + {file = "Cython-0.29.26-cp27-cp27m-win32.whl", hash = "sha256:8e07121b34221458a2151d37e137b8f5b011a9c51dd38db2499a6198590aa319"}, + {file = "Cython-0.29.26-cp27-cp27m-win_amd64.whl", hash = "sha256:233a87db76941626f1db08f4b25a4a5b425b13b64ed0e673c3641f7b650a48d8"}, + {file = "Cython-0.29.26-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:93840f2071c1f15e613509eadee1fbcd335e8666772437fe5038e24059edd48c"}, + {file = "Cython-0.29.26-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:10402f0f1564ffc6ecb9c45e07f995771d05bb0b0e1d151e40574638292ee3a5"}, + {file = "Cython-0.29.26-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:6773cce9d4b3b6168d8feb2b6f06b658ef1e11cbfec075041745666d8e2a5e45"}, + {file = "Cython-0.29.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c813799d533194b7d85203d881d8b4f567a8c644a67f50d47f1ffbf316df412f"}, + {file = "Cython-0.29.26-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:362fbb9cb4627c7786231429768b54aaba5459a2a0e46c25e59f202ca6155437"}, + {file = "Cython-0.29.26-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b834ff6e4d10ba6d7a0d676dd71c1b427a181ddbbbbf79e91d1861557aab59f"}, + {file = "Cython-0.29.26-cp34-cp34m-win32.whl", hash = "sha256:0c3093bc99facfc97e5019f6c5bc39987663792265c1334d9fc9e37c3a3dcd6f"}, + {file = "Cython-0.29.26-cp34-cp34m-win_amd64.whl", hash = "sha256:bbf0149680c1fca07200a3ed372b22e6bad7851d191b717a61f9a68af370e180"}, + {file = "Cython-0.29.26-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a1cc55db32cd39474081d478263b96e036552cdbbab8831c90ea43fb385a9b66"}, + {file = "Cython-0.29.26-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ebe32e002a9e6553de399033e259ece72aa17c77f740b265e66f122572a8a278"}, + {file = "Cython-0.29.26-cp35-cp35m-win32.whl", hash = "sha256:6b385f68789c3e8a75b4827e8a4970ff04605ad3cb1c0b41005cc69368dad65d"}, + {file = "Cython-0.29.26-cp35-cp35m-win_amd64.whl", hash = "sha256:1519eb639de308f5763eb0666b4cc7bd3958268f3f6228cc610b7b4d6c94b68b"}, + {file = "Cython-0.29.26-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e118525defec3f67471d8ee5ce04340d43195410a87e5d7ec8a1a9e953c0066a"}, + {file = "Cython-0.29.26-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:706ea55f58c2722206e51cd9a8754ed0995c4c4231d24b095875d2641d745222"}, + {file = "Cython-0.29.26-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:77913fe27c5e22c995bac090d01e200ff91e5f58aa944e2d2e94cbf67ea2ae34"}, + {file = "Cython-0.29.26-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:51923120f57a42c59f5ee6bba9e89a31a394ae8cd419c753f64d8a3aea1ee8b7"}, + {file = "Cython-0.29.26-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:82881565d04027728d7762edd8c085927a840873af7ee049d703e0ca226bc08d"}, + {file = "Cython-0.29.26-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:531303085503959338e6cdac630626280ef111aecbb22d48321673a8c3897c0a"}, + {file = "Cython-0.29.26-cp36-cp36m-win32.whl", hash = "sha256:0205b685802eb4c039b14f67b7ac3f00c55ff04b9e3871df2249576d3e59ba42"}, + {file = "Cython-0.29.26-cp36-cp36m-win_amd64.whl", hash = "sha256:7df94e56872df8f396ca669466fee60256f69f678654239f706b1e643c2ac4a5"}, + {file = "Cython-0.29.26-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4b7d04b393d9a4b5fec0cbc4b0f29fe083a9d862d95231a6e7608978bd661d7e"}, + {file = "Cython-0.29.26-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:af91dd63ac5f1f7fc70dc91ea063f727db42b5eb934d1f3832611be18e25171e"}, + {file = "Cython-0.29.26-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:d83dad8dc6c63706cb3178dc79010b3865b1345090727189d2cd61758a825ee8"}, + {file = "Cython-0.29.26-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca10e9fde0eaba1407ab353ff07a26daaa3e4dbe356108a149e482d441f070dd"}, + {file = "Cython-0.29.26-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:fec66cd0a48697fab903854566235aecf1084f62e3163d6589ae7335a1b4d448"}, + {file = "Cython-0.29.26-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b3041e45aefaa4449fd671902132c0ac1f72eedaedac745c0e1a70a13bf990bb"}, + {file = "Cython-0.29.26-cp37-cp37m-win32.whl", hash = "sha256:ed76fb98979f02b5e89079906071983a36f3634d3028b86f935cf0196f24fcaa"}, + {file = "Cython-0.29.26-cp37-cp37m-win_amd64.whl", hash = "sha256:4d868e1a41f5123f51a20c1b8e82f7cb6fa3370c104e98e707f7c910e8cadad1"}, + {file = "Cython-0.29.26-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:868f309095e557f06dc58723ae865e8c65cfedb2646a562bd8080c92d69e4e4b"}, + {file = "Cython-0.29.26-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:be550b566345bf53b95616334793ce42a128cf1d9dcde1e28cbf7ce52ea61d6d"}, + {file = "Cython-0.29.26-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:be13be1e2b9b7395588f2a23bfa692f2f3e6f7936ccf7825c83431b8c8c3452b"}, + {file = "Cython-0.29.26-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:41ee918480371ae5e5851ba9b1ead5a183e24aedb27bf807c7405d124e943f40"}, + {file = "Cython-0.29.26-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c91b1ba0d43f7f7ccde8121c672207c7891735ddcc83496af1e0ab617ddc4aba"}, + {file = "Cython-0.29.26-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5ecf5cf5b57086cc6c1cfc76d6353bbd7023e95da32e0883f1302ca50e481c33"}, + {file = "Cython-0.29.26-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:0ffce25bf50fa926ec6bf8d6f29650e7cb33fae445938c9880e1ce9b776353ef"}, + {file = "Cython-0.29.26-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:5041adfef502d67ecd5e291a7cf645a37fed7a9dac557f40d491053f35204d00"}, + {file = "Cython-0.29.26-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:5fd5db458c9d3d2c2abd047f3190624d9cce8a80a8e0ca0baa69cfd133a523bc"}, + {file = "Cython-0.29.26-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:75eaa22911d2ec37a3841f77b710b178c805cd378b5e1c4fb82dbc35620d2062"}, + {file = "Cython-0.29.26-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3aed8c642e8fb27024bca46830b7f62335a44a92354acf708d6b8d050f945a3a"}, + {file = "Cython-0.29.26-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b5ca05c2bfba0c2480b5fd390ecffe46b8da574d887d600388d6e3caf3f99a88"}, + {file = "Cython-0.29.26-py2.py3-none-any.whl", hash = "sha256:f5e15ff892c8afad64931ee3dd723c4755c2c516606f9aae7613bebfac62b0f6"}, + {file = "Cython-0.29.26.tar.gz", hash = "sha256:af377d543a762867da11fcf6e558f7a4a535ff8693f30cce123fab10c00fa312"}, ] dateparser = [ - {file = "dateparser-0.7.6-py2.py3-none-any.whl", hash = "sha256:7552c994f893b5cb8fcf103b4cd2ff7f57aab9bfd2619fdf0cf571c0740fd90b"}, - {file = "dateparser-0.7.6.tar.gz", hash = "sha256:e875efd8c57c85c2d02b238239878db59ff1971f5a823457fcc69e493bf6ebfa"}, + {file = "dateparser-1.1.0-py2.py3-none-any.whl", hash = "sha256:fec344db1f73d005182e214c0ff27313c748bbe0c1638ce9d48a809ddfdab2a0"}, + {file = "dateparser-1.1.0.tar.gz", hash = "sha256:faa2b97f51f3b5ff1ba2f17be90de2b733fb6191f89b4058787473e8202f3044"}, ] ddt = [ {file = "ddt-1.2.0-py2.py3-none-any.whl", hash = "sha256:68fe764903149edf84b02952c9a67792c9a62d104c730588fe8b1ee40944b33d"}, {file = "ddt-1.2.0.tar.gz", hash = "sha256:898364fc34b27981b925171a0011c174c94633cb678eb1fac05fe7a234c7912c"}, ] debtcollector = [ - {file = "debtcollector-2.2.0-py3-none-any.whl", hash = "sha256:34663e5de257c67bf38827cfbea259c4d4ad27eba6b5a9d9242cb54076bfb4ad"}, - {file = "debtcollector-2.2.0.tar.gz", hash = "sha256:787981f4d235841bf6eb0467e23057fb1ac7ee24047c32028a8498b9128b6829"}, + {file = "debtcollector-2.3.0-py3-none-any.whl", hash = "sha256:6f1fae29c9091a6f7e8f68da7ec17f3167f98abac13c019968e144108f381b7e"}, + {file = "debtcollector-2.3.0.tar.gz", hash = "sha256:c7a9fac814ab5904e23905516b18356cc907e7d27c05da58d37103f001967846"}, ] decorator = [ {file = "decorator-4.0.10-py2.py3-none-any.whl", hash = "sha256:5aff536ed9a65c99e8465c774d5859e56e52300aea0a5012c7a1c4a781fbdddb"}, {file = "decorator-4.0.10.tar.gz", hash = "sha256:9c6e98edcb33499881b86ede07d9968c81ab7c769e28e9af24075f0a5379f070"}, ] defusedxml = [ - {file = "defusedxml-0.6.0-py2.py3-none-any.whl", hash = "sha256:6687150770438374ab581bb7a1b327a847dd9c5749e396102de3fad4e8a3ef93"}, - {file = "defusedxml-0.6.0.tar.gz", hash = "sha256:f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5"}, + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] delorean = [ {file = "Delorean-1.0.0.tar.gz", hash = "sha256:fe67786e12338523848bec5588a658c4d425e12d53eb51cfef870bec8f576134"}, @@ -3245,8 +3444,8 @@ demjson = [ {file = "demjson-2.2.4.tar.gz", hash = "sha256:31de2038a0fdd9c4c11f8bf3b13fe77bc2a128307f965c8d5fb4dc6d6f6beb79"}, ] dnspython = [ - {file = "dnspython-2.0.0-py3-none-any.whl", hash = "sha256:40bb3c24b9d4ec12500f0124288a65df232a3aa749bb0c39734b782873a2544d"}, - {file = "dnspython-2.0.0.zip", hash = "sha256:044af09374469c3a39eeea1a146e8cac27daec951f1f1f157b1962fc7cb9d1b7"}, + {file = "dnspython-2.1.0-py3-none-any.whl", hash = "sha256:95d12f6ef0317118d2a1a6fc49aac65ffec7eb8087474158f42f26a639135216"}, + {file = "dnspython-2.1.0.zip", hash = "sha256:e4a87f0b573201a0f3727fa18a516b055fd1107e0e5477cded4a2de497df1dd4"}, ] docutils = [ {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"}, @@ -3264,7 +3463,7 @@ email-validator = [ {file = "email_validator-1.1.3.tar.gz", hash = "sha256:aa237a65f6f4da067119b7df3f13e89c25c051327b2b5b66dc075f33d62480d7"}, ] emoji = [ - {file = "emoji-1.5.0.tar.gz", hash = "sha256:2eddd062f940924fb25a3108d84d77dc571927d91a419b4c30f37e253c791b19"}, + {file = "emoji-1.6.3.tar.gz", hash = "sha256:cc28bdc1010b1c03c241f69c7af1e8715144ef45a273bfadc14dc89319ba26d0"}, ] entrypoints = [ {file = "entrypoints-0.3-py2.py3-none-any.whl", hash = "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19"}, @@ -3280,11 +3479,12 @@ escpos = [ {file = "escpos-1.9.tar.gz", hash = "sha256:5acc126fa5ddd6ec395ccd9c7729545e91d85ebb2f5b17e9ab88e33d6925f501"}, ] et-xmlfile = [ - {file = "et_xmlfile-1.0.1.tar.gz", hash = "sha256:614d9722d572f6246302c4491846d2c393c199cfa4edc9af593437691683335b"}, + {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, + {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, ] extract-msg = [ - {file = "extract_msg-0.28.7-py2.py3-none-any.whl", hash = "sha256:6ad2702bef86e6c1b8505e2993c7f3d37a1f3d140903138ee2df4a299dd2a29c"}, - {file = "extract_msg-0.28.7.tar.gz", hash = "sha256:7ebdbd7863a3699080a69f71ec0cd30ed9bfee70bad9acc6a8e6abe9523c78c0"}, + {file = "extract_msg-0.30.0-py2.py3-none-any.whl", hash = "sha256:bd745b0da524299628721bd7994d7a96450adbd818112fbd0b3450fa12ff91f8"}, + {file = "extract_msg-0.30.0.tar.gz", hash = "sha256:445b19f088aee2d9bde35296a1715578ed8fe18e740eb5cd9e31fd2b1c65c48f"}, ] factur-x = [ {file = "factur-x-2.3.tar.gz", hash = "sha256:1b930a09ae6df3c9ed7bdf5d7088e7160304310840a7f29847c4e7296d5b1f0e"}, @@ -3295,8 +3495,12 @@ feedparser = [ {file = "feedparser-5.2.1.zip", hash = "sha256:cd2485472e41471632ed3029d44033ee420ad0b57111db95c240c9160a85831c"}, ] flake8 = [ - {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, - {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, + {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"}, + {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, +] +formio-data = [ + {file = "formio-data-0.3.14.tar.gz", hash = "sha256:900e910652e36698ccc9daaa7ef7a6806866b6a751441c416db73d2a27dd4103"}, + {file = "formio_data-0.3.14-py3-none-any.whl", hash = "sha256:823db4f985be5acf95aeca2ab969fa50b9834283927846a2292597bc072dd556"}, ] freezegun = [ {file = "freezegun-0.3.11-py2.py3-none-any.whl", hash = "sha256:6cb82b276f83f2acce67f121dc2656f4df26c71e32238334eb071170b892a278"}, @@ -3306,8 +3510,8 @@ future = [ {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, ] genshi = [ - {file = "Genshi-0.7.3-py3-none-any.whl", hash = "sha256:5e92e278ca1ea395349a451d54fc81dc3c1b543c48939a15bd36b7b3335e1560"}, - {file = "Genshi-0.7.3.tar.gz", hash = "sha256:7933c95151d7dd2124a2b4c8dd85bb6aec881ca17c0556da0b40e56434b313a0"}, + {file = "Genshi-0.7.5-py3-none-any.whl", hash = "sha256:507edff06388c7d8136fecbd9f4e09bc8e199af1a45238be304ce60523f2efa7"}, + {file = "Genshi-0.7.5.tar.gz", hash = "sha256:c12d6c2abf7df0ec661d9ff2e197522eae846e43dc58abd5a36443d05bc41135"}, ] geojson = [ {file = "geojson-2.4.1-py2.py3-none-any.whl", hash = "sha256:b2bfb5c8e6b4b0c55dd139996317145aa8526146b3f8570586f9613c527a648a"}, @@ -3338,8 +3542,8 @@ gevent = [ {file = "gevent-1.3.4.tar.gz", hash = "sha256:53c4dc705886d028f5d81e698b1d1479994a421498cd6529cb9711b5e2a84f74"}, ] gitdb = [ - {file = "gitdb-4.0.5-py3-none-any.whl", hash = "sha256:91f36bfb1ab7949b3b40e23736db18231bf7593edada2ba5c3a174a7b23657ac"}, - {file = "gitdb-4.0.5.tar.gz", hash = "sha256:c9e1f2d0db7ddb9a704c2a0217be31214e91a4fe1dea1efad19ae42ba0c285c9"}, + {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, + {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, ] gitpython = [ {file = "GitPython-3.1.12-py3-none-any.whl", hash = "sha256:867ec3dfb126aac0f8296b19fb63b8c4a399f32b4b6fafe84c4b10af5fa9f7b5"}, @@ -3380,24 +3584,28 @@ html5print = [ {file = "html5print-0.1.2.tar.gz", hash = "sha256:1ff645698a7192a61f8a5963f23dc894d16fa3346804a2d1ac462683f6e44d4b"}, ] humanize = [ - {file = "humanize-2.5.0-py3-none-any.whl", hash = "sha256:89062c6db8601693b7d223443d0d7529aa9577df43a1387ddd4b9c273abb4a51"}, - {file = "humanize-2.5.0.tar.gz", hash = "sha256:8a68bd9bccb899fd9bfb1e6d96c1e84e4475551cc9a5b5bdbd69b9b1cfd19c80"}, + {file = "humanize-3.13.1-py3-none-any.whl", hash = "sha256:a6f7cc1597db69a4e571ad5e19b4da07ee871da5a9de2b233dbfab02d98e9754"}, + {file = "humanize-3.13.1.tar.gz", hash = "sha256:12f113f2e369dac7f35d3823f49262934f4a22a53a6d3d4c86b736f50db88c7b"}, ] idna = [ {file = "idna-2.7-py2.py3-none-any.whl", hash = "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e"}, {file = "idna-2.7.tar.gz", hash = "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16"}, ] imagesize = [ - {file = "imagesize-1.2.0-py2.py3-none-any.whl", hash = "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1"}, - {file = "imagesize-1.2.0.tar.gz", hash = "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"}, + {file = "imagesize-1.3.0-py2.py3-none-any.whl", hash = "sha256:1db2f82529e53c3e929e8926a1fa9235aa82d0bd0c580359c67ec31b2fddaa8c"}, + {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"}, ] imapclient = [ {file = "IMAPClient-2.1.0-py2.py3-none-any.whl", hash = "sha256:3eeb97b9aa8faab0caa5024d74bfde59408fbd542781246f6960873c7bf0dd01"}, {file = "IMAPClient-2.1.0.zip", hash = "sha256:60ba79758cc9f13ec910d7a3df9acaaf2bb6c458720d9a02ec33a41352fd1b99"}, ] importlib-metadata = [ - {file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"}, - {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"}, + {file = "importlib_metadata-4.2.0-py3-none-any.whl", hash = "sha256:057e92c15bc8d9e8109738a48db0ccb31b4d9d5cfbee5a8670879a30be66304b"}, + {file = "importlib_metadata-4.2.0.tar.gz", hash = "sha256:b7e52a1f8dec14a75ea73e0891f3060099ca1d8e6a462a4dff11c3e119ea1b31"}, +] +importlib-resources = [ + {file = "importlib_resources-5.4.0-py3-none-any.whl", hash = "sha256:33a95faed5fc19b4bc16b29a6eeae248a3fe69dd55d4d229d2b480e23eeaad45"}, + {file = "importlib_resources-5.4.0.tar.gz", hash = "sha256:d756e2f85dd4de2ba89be0b21dba2a3bbec2e871a42a3a16719258a11f87506b"}, ] invoice2data = [ {file = "invoice2data-0.3.6-py3.9.egg", hash = "sha256:ff3b767056dfac473037d6caa1165e6a2b1c2683913d6df0a83a381f81ca48fa"}, @@ -3407,17 +3615,16 @@ iscompatible = [ {file = "iscompatible-0.1.1.tar.gz", hash = "sha256:0ef45bd23569df4ba01d66e4ab7a25f07db934bba235e706a85d26417d676f83"}, ] iso8601 = [ - {file = "iso8601-0.1.12-py2.py3-none-any.whl", hash = "sha256:210e0134677cc0d02f6028087fee1df1e1d76d372ee1db0bf30bf66c5c1c89a3"}, - {file = "iso8601-0.1.12-py3-none-any.whl", hash = "sha256:bbbae5fb4a7abfe71d4688fd64bff70b91bbd74ef6a99d964bab18f7fdf286dd"}, - {file = "iso8601-0.1.12.tar.gz", hash = "sha256:49c4b20e1f38aa5cf109ddcd39647ac419f928512c869dc01d5c7098eddede82"}, + {file = "iso8601-1.0.2-py3-none-any.whl", hash = "sha256:d7bc01b1c2a43b259570bb307f057abc578786ea734ba2b87b836c5efc5bd443"}, + {file = "iso8601-1.0.2.tar.gz", hash = "sha256:27f503220e6845d9db954fb212b95b0362d8b7e6c1b2326a87061c3de93594b1"}, ] isodate = [ - {file = "isodate-0.6.0-py2.py3-none-any.whl", hash = "sha256:aa4d33c06640f5352aca96e4b81afd8ab3b47337cc12089822d6f322ac772c81"}, - {file = "isodate-0.6.0.tar.gz", hash = "sha256:2e364a3d5759479cdb2d37cce6b9376ea504db2ff90252a2e5b7cc89cc9ff2d8"}, + {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, + {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, ] isort = [ - {file = "isort-5.9.1-py3-none-any.whl", hash = "sha256:8e2c107091cfec7286bc0f68a547d0ba4c094d460b732075b6fba674f1035c0c"}, - {file = "isort-5.9.1.tar.gz", hash = "sha256:83510593e07e433b77bd5bff0f6f607dbafa06d1a89022616f02d8b699cfcd56"}, + {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, + {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, ] jinja2 = [ {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"}, @@ -3436,67 +3643,107 @@ js2py = [ {file = "Js2Py-0.71.tar.gz", hash = "sha256:a41b1009dd1498ae7d436bfa5ac952a08ca92a4bb9e31dca6e8bb966b49f7fce"}, ] jsonlines = [ - {file = "jsonlines-2.0.0-py3-none-any.whl", hash = "sha256:bfb043d4e25fd894dca67b1f2adf014e493cb65d0f18b3a74a98bfcd97c3d983"}, - {file = "jsonlines-2.0.0.tar.gz", hash = "sha256:6fdd03104c9a421a1ba587a121aaac743bf02d8f87fa9cdaa3b852249a241fe8"}, + {file = "jsonlines-3.0.0-py3-none-any.whl", hash = "sha256:15f93e1817162c85bc268c7428952beec4fc4a41f118abf891c4bedf5653624f"}, + {file = "jsonlines-3.0.0.tar.gz", hash = "sha256:72c8ca6c056906d6acb058dd5fdd5e072a58b9c6753ce0c9ec6f2b0a1853eba4"}, ] jsonschema = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, + {file = "jsonschema-4.3.0-py3-none-any.whl", hash = "sha256:ab7069946a3ad2037e79a5cdc8d0e9a74cd00721d426d75c5d69a6707c778218"}, + {file = "jsonschema-4.3.0.tar.gz", hash = "sha256:cb7f57b40f870409d7571844d0623f66d8078c90a9c255d9a4d4314b5ec3fc7c"}, ] jtutils = [ - {file = "jtutils-0.0.6.tar.gz", hash = "sha256:87f23b22dd1f5b77f3fd32f992335447c45dd1118e34e502d43cab35e1d2a554"}, + {file = "jtutils-0.0.8.tar.gz", hash = "sha256:d2a3089f95e741154a46d31e48816188ea873c80bb819f57d340705d8b5480fb"}, ] keystoneauth1 = [ {file = "keystoneauth1-3.14.0-py2.py3-none-any.whl", hash = "sha256:b1e3910e09b01f88e84ce4c873f271f2b076b4ad266c2815c16ee3aef8319192"}, {file = "keystoneauth1-3.14.0.tar.gz", hash = "sha256:b14f363d02142177c968cfffeb9eb37113682c03ac3c65d483424e203dd602c3"}, ] kiwisolver = [ - {file = "kiwisolver-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:443c2320520eda0a5b930b2725b26f6175ca4453c61f739fef7a5847bd262f74"}, - {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:efcf3397ae1e3c3a4a0a0636542bcad5adad3b1dd3e8e629d0b6e201347176c8"}, - {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fccefc0d36a38c57b7bd233a9b485e2f1eb71903ca7ad7adacad6c28a56d62d2"}, - {file = "kiwisolver-1.2.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:be046da49fbc3aa9491cc7296db7e8d27bcf0c3d5d1a40259c10471b014e4e0c"}, - {file = "kiwisolver-1.2.0-cp36-none-win32.whl", hash = "sha256:60a78858580761fe611d22127868f3dc9f98871e6fdf0a15cc4203ed9ba6179b"}, - {file = "kiwisolver-1.2.0-cp36-none-win_amd64.whl", hash = "sha256:556da0a5f60f6486ec4969abbc1dd83cf9b5c2deadc8288508e55c0f5f87d29c"}, - {file = "kiwisolver-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cc095a4661bdd8a5742aaf7c10ea9fac142d76ff1770a0f84394038126d8fc7"}, - {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c955791d80e464da3b471ab41eb65cf5a40c15ce9b001fdc5bbc241170de58ec"}, - {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:603162139684ee56bcd57acc74035fceed7dd8d732f38c0959c8bd157f913fec"}, - {file = "kiwisolver-1.2.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:63f55f490b958b6299e4e5bdac66ac988c3d11b7fafa522800359075d4fa56d1"}, - {file = "kiwisolver-1.2.0-cp37-none-win32.whl", hash = "sha256:03662cbd3e6729f341a97dd2690b271e51a67a68322affab12a5b011344b973c"}, - {file = "kiwisolver-1.2.0-cp37-none-win_amd64.whl", hash = "sha256:4eadb361baf3069f278b055e3bb53fa189cea2fd02cb2c353b7a99ebb4477ef1"}, - {file = "kiwisolver-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c31bc3c8e903d60a1ea31a754c72559398d91b5929fcb329b1c3a3d3f6e72113"}, - {file = "kiwisolver-1.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d52b989dc23cdaa92582ceb4af8d5bcc94d74b2c3e64cd6785558ec6a879793e"}, - {file = "kiwisolver-1.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:e586b28354d7b6584d8973656a7954b1c69c93f708c0c07b77884f91640b7657"}, - {file = "kiwisolver-1.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:38d05c9ecb24eee1246391820ed7137ac42a50209c203c908154782fced90e44"}, - {file = "kiwisolver-1.2.0-cp38-none-win32.whl", hash = "sha256:d069ef4b20b1e6b19f790d00097a5d5d2c50871b66d10075dab78938dc2ee2cf"}, - {file = "kiwisolver-1.2.0-cp38-none-win_amd64.whl", hash = "sha256:18d749f3e56c0480dccd1714230da0f328e6e4accf188dd4e6884bdd06bf02dd"}, - {file = "kiwisolver-1.2.0.tar.gz", hash = "sha256:247800260cd38160c362d211dcaf4ed0f7816afb5efe56544748b21d6ad6d17f"}, + {file = "kiwisolver-1.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1d819553730d3c2724582124aee8a03c846ec4362ded1034c16fb3ef309264e6"}, + {file = "kiwisolver-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8d93a1095f83e908fc253f2fb569c2711414c0bfd451cab580466465b235b470"}, + {file = "kiwisolver-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4550a359c5157aaf8507e6820d98682872b9100ce7607f8aa070b4b8af6c298"}, + {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2210f28778c7d2ee13f3c2a20a3a22db889e75f4ec13a21072eabb5693801e84"}, + {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:82f49c5a79d3839bc8f38cb5f4bfc87e15f04cbafa5fbd12fb32c941cb529cfb"}, + {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9661a04ca3c950a8ac8c47f53cbc0b530bce1b52f516a1e87b7736fec24bfff0"}, + {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ddb500a2808c100e72c075cbb00bf32e62763c82b6a882d403f01a119e3f402"}, + {file = "kiwisolver-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72be6ebb4e92520b9726d7146bc9c9b277513a57a38efcf66db0620aec0097e0"}, + {file = "kiwisolver-1.3.2-cp310-cp310-win32.whl", hash = "sha256:83d2c9db5dfc537d0171e32de160461230eb14663299b7e6d18ca6dca21e4977"}, + {file = "kiwisolver-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:cba430db673c29376135e695c6e2501c44c256a81495da849e85d1793ee975ad"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4116ba9a58109ed5e4cb315bdcbff9838f3159d099ba5259c7c7fb77f8537492"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19554bd8d54cf41139f376753af1a644b63c9ca93f8f72009d50a2080f870f77"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7a4cf5bbdc861987a7745aed7a536c6405256853c94abc9f3287c3fa401b174"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0007840186bacfaa0aba4466d5890334ea5938e0bb7e28078a0eb0e63b5b59d5"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec2eba188c1906b05b9b49ae55aae4efd8150c61ba450e6721f64620c50b59eb"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3dbb3cea20b4af4f49f84cffaf45dd5f88e8594d18568e0225e6ad9dec0e7967"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-win32.whl", hash = "sha256:5326ddfacbe51abf9469fe668944bc2e399181a2158cb5d45e1d40856b2a0589"}, + {file = "kiwisolver-1.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c6572c2dab23c86a14e82c245473d45b4c515314f1f859e92608dcafbd2f19b8"}, + {file = "kiwisolver-1.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b5074fb09429f2b7bc82b6fb4be8645dcbac14e592128beeff5461dcde0af09f"}, + {file = "kiwisolver-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:22521219ca739654a296eea6d4367703558fba16f98688bd8ce65abff36eaa84"}, + {file = "kiwisolver-1.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c358721aebd40c243894298f685a19eb0491a5c3e0b923b9f887ef1193ddf829"}, + {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ba5a1041480c6e0a8b11a9544d53562abc2d19220bfa14133e0cdd9967e97af"}, + {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44e6adf67577dbdfa2d9f06db9fbc5639afefdb5bf2b4dfec25c3a7fbc619536"}, + {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d45d1c74f88b9f41062716c727f78f2a59a5476ecbe74956fafb423c5c87a76"}, + {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70adc3658138bc77a36ce769f5f183169bc0a2906a4f61f09673f7181255ac9b"}, + {file = "kiwisolver-1.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6a5431940f28b6de123de42f0eb47b84a073ee3c3345dc109ad550a3307dd28"}, + {file = "kiwisolver-1.3.2-cp38-cp38-win32.whl", hash = "sha256:ee040a7de8d295dbd261ef2d6d3192f13e2b08ec4a954de34a6fb8ff6422e24c"}, + {file = "kiwisolver-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:8dc3d842fa41a33fe83d9f5c66c0cc1f28756530cd89944b63b072281e852031"}, + {file = "kiwisolver-1.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a498bcd005e8a3fedd0022bb30ee0ad92728154a8798b703f394484452550507"}, + {file = "kiwisolver-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80efd202108c3a4150e042b269f7c78643420cc232a0a771743bb96b742f838f"}, + {file = "kiwisolver-1.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f8eb7b6716f5b50e9c06207a14172cf2de201e41912ebe732846c02c830455b9"}, + {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f441422bb313ab25de7b3dbfd388e790eceb76ce01a18199ec4944b369017009"}, + {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:30fa008c172355c7768159983a7270cb23838c4d7db73d6c0f6b60dde0d432c6"}, + {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f8f6c8f4f1cff93ca5058d6ec5f0efda922ecb3f4c5fb76181f327decff98b8"}, + {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba677bcaff9429fd1bf01648ad0901cea56c0d068df383d5f5856d88221fe75b"}, + {file = "kiwisolver-1.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7843b1624d6ccca403a610d1277f7c28ad184c5aa88a1750c1a999754e65b439"}, + {file = "kiwisolver-1.3.2-cp39-cp39-win32.whl", hash = "sha256:e6f5eb2f53fac7d408a45fbcdeda7224b1cfff64919d0f95473420a931347ae9"}, + {file = "kiwisolver-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:eedd3b59190885d1ebdf6c5e0ca56828beb1949b4dfe6e5d0256a461429ac386"}, + {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:dedc71c8eb9c5096037766390172c34fb86ef048b8e8958b4e484b9e505d66bc"}, + {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:bf7eb45d14fc036514c09554bf983f2a72323254912ed0c3c8e697b62c4c158f"}, + {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2b65bd35f3e06a47b5c30ea99e0c2b88f72c6476eedaf8cfbc8e66adb5479dcf"}, + {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25405f88a37c5f5bcba01c6e350086d65e7465fd1caaf986333d2a045045a223"}, + {file = "kiwisolver-1.3.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:bcadb05c3d4794eb9eee1dddf1c24215c92fb7b55a80beae7a60530a91060560"}, + {file = "kiwisolver-1.3.2.tar.gz", hash = "sha256:fc4453705b81d03568d5b808ad8f09c77c47534f6ac2e72e733f9ca4714aa75c"}, ] lasso = [ {file = "lasso-0.0.5.tar.gz", hash = "sha256:e64abaeef6f3e3e5f669cc44ca1423e69ad59360625269f50ee6ecb2172aa824"}, ] lazy-object-proxy = [ - {file = "lazy-object-proxy-1.6.0.tar.gz", hash = "sha256:489000d368377571c6f982fba6497f2aa13c6d1facc40660963da62f5c379726"}, - {file = "lazy_object_proxy-1.6.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:c6938967f8528b3668622a9ed3b31d145fab161a32f5891ea7b84f6b790be05b"}, - {file = "lazy_object_proxy-1.6.0-cp27-cp27m-win32.whl", hash = "sha256:ebfd274dcd5133e0afae738e6d9da4323c3eb021b3e13052d8cbd0e457b1256e"}, - {file = "lazy_object_proxy-1.6.0-cp27-cp27m-win_amd64.whl", hash = "sha256:ed361bb83436f117f9917d282a456f9e5009ea12fd6de8742d1a4752c3017e93"}, - {file = "lazy_object_proxy-1.6.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d900d949b707778696fdf01036f58c9876a0d8bfe116e8d220cfd4b15f14e741"}, - {file = "lazy_object_proxy-1.6.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5743a5ab42ae40caa8421b320ebf3a998f89c85cdc8376d6b2e00bd12bd1b587"}, - {file = "lazy_object_proxy-1.6.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:bf34e368e8dd976423396555078def5cfc3039ebc6fc06d1ae2c5a65eebbcde4"}, - {file = "lazy_object_proxy-1.6.0-cp36-cp36m-win32.whl", hash = "sha256:b579f8acbf2bdd9ea200b1d5dea36abd93cabf56cf626ab9c744a432e15c815f"}, - {file = "lazy_object_proxy-1.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:4f60460e9f1eb632584c9685bccea152f4ac2130e299784dbaf9fae9f49891b3"}, - {file = "lazy_object_proxy-1.6.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d7124f52f3bd259f510651450e18e0fd081ed82f3c08541dffc7b94b883aa981"}, - {file = "lazy_object_proxy-1.6.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:22ddd618cefe54305df49e4c069fa65715be4ad0e78e8d252a33debf00f6ede2"}, - {file = "lazy_object_proxy-1.6.0-cp37-cp37m-win32.whl", hash = "sha256:9d397bf41caad3f489e10774667310d73cb9c4258e9aed94b9ec734b34b495fd"}, - {file = "lazy_object_proxy-1.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a5045889cc2729033b3e604d496c2b6f588c754f7a62027ad4437a7ecc4837"}, - {file = "lazy_object_proxy-1.6.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:17e0967ba374fc24141738c69736da90e94419338fd4c7c7bef01ee26b339653"}, - {file = "lazy_object_proxy-1.6.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:410283732af311b51b837894fa2f24f2c0039aa7f220135192b38fcc42bd43d3"}, - {file = "lazy_object_proxy-1.6.0-cp38-cp38-win32.whl", hash = "sha256:85fb7608121fd5621cc4377a8961d0b32ccf84a7285b4f1d21988b2eae2868e8"}, - {file = "lazy_object_proxy-1.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:d1c2676e3d840852a2de7c7d5d76407c772927addff8d742b9808fe0afccebdf"}, - {file = "lazy_object_proxy-1.6.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b865b01a2e7f96db0c5d12cfea590f98d8c5ba64ad222300d93ce6ff9138bcad"}, - {file = "lazy_object_proxy-1.6.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:4732c765372bd78a2d6b2150a6e99d00a78ec963375f236979c0626b97ed8e43"}, - {file = "lazy_object_proxy-1.6.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9698110e36e2df951c7c36b6729e96429c9c32b3331989ef19976592c5f3c77a"}, - {file = "lazy_object_proxy-1.6.0-cp39-cp39-win32.whl", hash = "sha256:1fee665d2638491f4d6e55bd483e15ef21f6c8c2095f235fef72601021e64f61"}, - {file = "lazy_object_proxy-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:f5144c75445ae3ca2057faac03fda5a902eff196702b0a24daf1d6ce0650514b"}, + {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, + {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, + {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, + {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, + {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, + {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, + {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, ] leven = [ {file = "leven-1.0.4.tar.gz", hash = "sha256:732474a3b9e94003aab61fd57eb2cbdaf0ed32f9a85b63073bcc4fa1ed5d0aff"}, @@ -3522,54 +3769,66 @@ libsass = [ {file = "libsass-0.12.3.tar.gz", hash = "sha256:236762af9c693bb72ed92d65ff4a5a77d27af9494b6174fbec7e6308416673b0"}, ] lxml = [ - {file = "lxml-4.6.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:df7c53783a46febb0e70f6b05df2ba104610f2fb0d27023409734a3ecbb78fb2"}, - {file = "lxml-4.6.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:1b7584d421d254ab86d4f0b13ec662a9014397678a7c4265a02a6d7c2b18a75f"}, - {file = "lxml-4.6.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:079f3ae844f38982d156efce585bc540c16a926d4436712cf4baee0cce487a3d"}, - {file = "lxml-4.6.3-cp27-cp27m-win32.whl", hash = "sha256:bc4313cbeb0e7a416a488d72f9680fffffc645f8a838bd2193809881c67dd106"}, - {file = "lxml-4.6.3-cp27-cp27m-win_amd64.whl", hash = "sha256:8157dadbb09a34a6bd95a50690595e1fa0af1a99445e2744110e3dca7831c4ee"}, - {file = "lxml-4.6.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7728e05c35412ba36d3e9795ae8995e3c86958179c9770e65558ec3fdfd3724f"}, - {file = "lxml-4.6.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:4bff24dfeea62f2e56f5bab929b4428ae6caba2d1eea0c2d6eb618e30a71e6d4"}, - {file = "lxml-4.6.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:64812391546a18896adaa86c77c59a4998f33c24788cadc35789e55b727a37f4"}, - {file = "lxml-4.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c1a40c06fd5ba37ad39caa0b3144eb3772e813b5fb5b084198a985431c2f1e8d"}, - {file = "lxml-4.6.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:74f7d8d439b18fa4c385f3f5dfd11144bb87c1da034a466c5b5577d23a1d9b51"}, - {file = "lxml-4.6.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f90ba11136bfdd25cae3951af8da2e95121c9b9b93727b1b896e3fa105b2f586"}, - {file = "lxml-4.6.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:4c61b3a0db43a1607d6264166b230438f85bfed02e8cff20c22e564d0faff354"}, - {file = "lxml-4.6.3-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:5c8c163396cc0df3fd151b927e74f6e4acd67160d6c33304e805b84293351d16"}, - {file = "lxml-4.6.3-cp35-cp35m-win32.whl", hash = "sha256:f2380a6376dfa090227b663f9678150ef27543483055cc327555fb592c5967e2"}, - {file = "lxml-4.6.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c4f05c5a7c49d2fb70223d0d5bcfbe474cf928310ac9fa6a7c6dddc831d0b1d4"}, - {file = "lxml-4.6.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d2e35d7bf1c1ac8c538f88d26b396e73dd81440d59c1ef8522e1ea77b345ede4"}, - {file = "lxml-4.6.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:289e9ca1a9287f08daaf796d96e06cb2bc2958891d7911ac7cae1c5f9e1e0ee3"}, - {file = "lxml-4.6.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:bccbfc27563652de7dc9bdc595cb25e90b59c5f8e23e806ed0fd623755b6565d"}, - {file = "lxml-4.6.3-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:d916d31fd85b2f78c76400d625076d9124de3e4bda8b016d25a050cc7d603f24"}, - {file = "lxml-4.6.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:820628b7b3135403540202e60551e741f9b6d3304371712521be939470b454ec"}, - {file = "lxml-4.6.3-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:c47ff7e0a36d4efac9fd692cfa33fbd0636674c102e9e8d9b26e1b93a94e7617"}, - {file = "lxml-4.6.3-cp36-cp36m-win32.whl", hash = "sha256:5a0a14e264069c03e46f926be0d8919f4105c1623d620e7ec0e612a2e9bf1c04"}, - {file = "lxml-4.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:92e821e43ad382332eade6812e298dc9701c75fe289f2a2d39c7960b43d1e92a"}, - {file = "lxml-4.6.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efd7a09678fd8b53117f6bae4fa3825e0a22b03ef0a932e070c0bdbb3a35e654"}, - {file = "lxml-4.6.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:efac139c3f0bf4f0939f9375af4b02c5ad83a622de52d6dfa8e438e8e01d0eb0"}, - {file = "lxml-4.6.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0fbcf5565ac01dff87cbfc0ff323515c823081c5777a9fc7703ff58388c258c3"}, - {file = "lxml-4.6.3-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:36108c73739985979bf302006527cf8a20515ce444ba916281d1c43938b8bb96"}, - {file = "lxml-4.6.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:122fba10466c7bd4178b07dba427aa516286b846b2cbd6f6169141917283aae2"}, - {file = "lxml-4.6.3-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:cdaf11d2bd275bf391b5308f86731e5194a21af45fbaaaf1d9e8147b9160ea92"}, - {file = "lxml-4.6.3-cp37-cp37m-win32.whl", hash = "sha256:3439c71103ef0e904ea0a1901611863e51f50b5cd5e8654a151740fde5e1cade"}, - {file = "lxml-4.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:4289728b5e2000a4ad4ab8da6e1db2e093c63c08bdc0414799ee776a3f78da4b"}, - {file = "lxml-4.6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b007cbb845b28db4fb8b6a5cdcbf65bacb16a8bd328b53cbc0698688a68e1caa"}, - {file = "lxml-4.6.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:76fa7b1362d19f8fbd3e75fe2fb7c79359b0af8747e6f7141c338f0bee2f871a"}, - {file = "lxml-4.6.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:26e761ab5b07adf5f555ee82fb4bfc35bf93750499c6c7614bd64d12aaa67927"}, - {file = "lxml-4.6.3-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:e1cbd3f19a61e27e011e02f9600837b921ac661f0c40560eefb366e4e4fb275e"}, - {file = "lxml-4.6.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:66e575c62792c3f9ca47cb8b6fab9e35bab91360c783d1606f758761810c9791"}, - {file = "lxml-4.6.3-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:1b38116b6e628118dea5b2186ee6820ab138dbb1e24a13e478490c7db2f326ae"}, - {file = "lxml-4.6.3-cp38-cp38-win32.whl", hash = "sha256:89b8b22a5ff72d89d48d0e62abb14340d9e99fd637d046c27b8b257a01ffbe28"}, - {file = "lxml-4.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:2a9d50e69aac3ebee695424f7dbd7b8c6d6eb7de2a2eb6b0f6c7db6aa41e02b7"}, - {file = "lxml-4.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ce256aaa50f6cc9a649c51be3cd4ff142d67295bfc4f490c9134d0f9f6d58ef0"}, - {file = "lxml-4.6.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:7610b8c31688f0b1be0ef882889817939490a36d0ee880ea562a4e1399c447a1"}, - {file = "lxml-4.6.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f8380c03e45cf09f8557bdaa41e1fa7c81f3ae22828e1db470ab2a6c96d8bc23"}, - {file = "lxml-4.6.3-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:3082c518be8e97324390614dacd041bb1358c882d77108ca1957ba47738d9d59"}, - {file = "lxml-4.6.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:884ab9b29feaca361f7f88d811b1eea9bfca36cf3da27768d28ad45c3ee6f969"}, - {file = "lxml-4.6.3-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:6f12e1427285008fd32a6025e38e977d44d6382cf28e7201ed10d6c1698d2a9a"}, - {file = "lxml-4.6.3-cp39-cp39-win32.whl", hash = "sha256:33bb934a044cf32157c12bfcfbb6649807da20aa92c062ef51903415c704704f"}, - {file = "lxml-4.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:542d454665a3e277f76954418124d67516c5f88e51a900365ed54a9806122b83"}, - {file = "lxml-4.6.3.tar.gz", hash = "sha256:39b78571b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468"}, + {file = "lxml-4.7.1-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:d546431636edb1d6a608b348dd58cc9841b81f4116745857b6cb9f8dadb2725f"}, + {file = "lxml-4.7.1-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6308062534323f0d3edb4e702a0e26a76ca9e0e23ff99be5d82750772df32a9e"}, + {file = "lxml-4.7.1-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f76dbe44e31abf516114f6347a46fa4e7c2e8bceaa4b6f7ee3a0a03c8eba3c17"}, + {file = "lxml-4.7.1-cp27-cp27m-win32.whl", hash = "sha256:d5618d49de6ba63fe4510bdada62d06a8acfca0b4b5c904956c777d28382b419"}, + {file = "lxml-4.7.1-cp27-cp27m-win_amd64.whl", hash = "sha256:9393a05b126a7e187f3e38758255e0edf948a65b22c377414002d488221fdaa2"}, + {file = "lxml-4.7.1-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:50d3dba341f1e583265c1a808e897b4159208d814ab07530202b6036a4d86da5"}, + {file = "lxml-4.7.1-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:44f552e0da3c8ee3c28e2eb82b0b784200631687fc6a71277ea8ab0828780e7d"}, + {file = "lxml-4.7.1-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:e662c6266e3a275bdcb6bb049edc7cd77d0b0f7e119a53101d367c841afc66dc"}, + {file = "lxml-4.7.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4c093c571bc3da9ebcd484e001ba18b8452903cd428c0bc926d9b0141bcb710e"}, + {file = "lxml-4.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3e26ad9bc48d610bf6cc76c506b9e5ad9360ed7a945d9be3b5b2c8535a0145e3"}, + {file = "lxml-4.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a5f623aeaa24f71fce3177d7fee875371345eb9102b355b882243e33e04b7175"}, + {file = "lxml-4.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7b5e2acefd33c259c4a2e157119c4373c8773cf6793e225006a1649672ab47a6"}, + {file = "lxml-4.7.1-cp310-cp310-win32.whl", hash = "sha256:67fa5f028e8a01e1d7944a9fb616d1d0510d5d38b0c41708310bd1bc45ae89f6"}, + {file = "lxml-4.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:b1d381f58fcc3e63fcc0ea4f0a38335163883267f77e4c6e22d7a30877218a0e"}, + {file = "lxml-4.7.1-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:38d9759733aa04fb1697d717bfabbedb21398046bd07734be7cccc3d19ea8675"}, + {file = "lxml-4.7.1-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:dfd0d464f3d86a1460683cd742306d1138b4e99b79094f4e07e1ca85ee267fe7"}, + {file = "lxml-4.7.1-cp35-cp35m-win32.whl", hash = "sha256:534e946bce61fd162af02bad7bfd2daec1521b71d27238869c23a672146c34a5"}, + {file = "lxml-4.7.1-cp35-cp35m-win_amd64.whl", hash = "sha256:6ec829058785d028f467be70cd195cd0aaf1a763e4d09822584ede8c9eaa4b03"}, + {file = "lxml-4.7.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:ade74f5e3a0fd17df5782896ddca7ddb998845a5f7cd4b0be771e1ffc3b9aa5b"}, + {file = "lxml-4.7.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:41358bfd24425c1673f184d7c26c6ae91943fe51dfecc3603b5e08187b4bcc55"}, + {file = "lxml-4.7.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6e56521538f19c4a6690f439fefed551f0b296bd785adc67c1777c348beb943d"}, + {file = "lxml-4.7.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5b0f782f0e03555c55e37d93d7a57454efe7495dab33ba0ccd2dbe25fc50f05d"}, + {file = "lxml-4.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:490712b91c65988012e866c411a40cc65b595929ececf75eeb4c79fcc3bc80a6"}, + {file = "lxml-4.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c22eb8c819d59cec4444d9eebe2e38b95d3dcdafe08965853f8799fd71161d"}, + {file = "lxml-4.7.1-cp36-cp36m-win32.whl", hash = "sha256:2a906c3890da6a63224d551c2967413b8790a6357a80bf6b257c9a7978c2c42d"}, + {file = "lxml-4.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:36b16fecb10246e599f178dd74f313cbdc9f41c56e77d52100d1361eed24f51a"}, + {file = "lxml-4.7.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:a5edc58d631170de90e50adc2cc0248083541affef82f8cd93bea458e4d96db8"}, + {file = "lxml-4.7.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:87c1b0496e8c87ec9db5383e30042357b4839b46c2d556abd49ec770ce2ad868"}, + {file = "lxml-4.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:0a5f0e4747f31cff87d1eb32a6000bde1e603107f632ef4666be0dc065889c7a"}, + {file = "lxml-4.7.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:bf6005708fc2e2c89a083f258b97709559a95f9a7a03e59f805dd23c93bc3986"}, + {file = "lxml-4.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc15874816b9320581133ddc2096b644582ab870cf6a6ed63684433e7af4b0d3"}, + {file = "lxml-4.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0b5e96e25e70917b28a5391c2ed3ffc6156513d3db0e1476c5253fcd50f7a944"}, + {file = "lxml-4.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ec9027d0beb785a35aa9951d14e06d48cfbf876d8ff67519403a2522b181943b"}, + {file = "lxml-4.7.1-cp37-cp37m-win32.whl", hash = "sha256:9fbc0dee7ff5f15c4428775e6fa3ed20003140560ffa22b88326669d53b3c0f4"}, + {file = "lxml-4.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:1104a8d47967a414a436007c52f533e933e5d52574cab407b1e49a4e9b5ddbd1"}, + {file = "lxml-4.7.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:fc9fb11b65e7bc49f7f75aaba1b700f7181d95d4e151cf2f24d51bfd14410b77"}, + {file = "lxml-4.7.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:317bd63870b4d875af3c1be1b19202de34c32623609ec803b81c99193a788c1e"}, + {file = "lxml-4.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:610807cea990fd545b1559466971649e69302c8a9472cefe1d6d48a1dee97440"}, + {file = "lxml-4.7.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:09b738360af8cb2da275998a8bf79517a71225b0de41ab47339c2beebfff025f"}, + {file = "lxml-4.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a2ab9d089324d77bb81745b01f4aeffe4094306d939e92ba5e71e9a6b99b71e"}, + {file = "lxml-4.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eed394099a7792834f0cb4a8f615319152b9d801444c1c9e1b1a2c36d2239f9e"}, + {file = "lxml-4.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:735e3b4ce9c0616e85f302f109bdc6e425ba1670a73f962c9f6b98a6d51b77c9"}, + {file = "lxml-4.7.1-cp38-cp38-win32.whl", hash = "sha256:772057fba283c095db8c8ecde4634717a35c47061d24f889468dc67190327bcd"}, + {file = "lxml-4.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:13dbb5c7e8f3b6a2cf6e10b0948cacb2f4c9eb05029fe31c60592d08ac63180d"}, + {file = "lxml-4.7.1-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:718d7208b9c2d86aaf0294d9381a6acb0158b5ff0f3515902751404e318e02c9"}, + {file = "lxml-4.7.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:5bee1b0cbfdb87686a7fb0e46f1d8bd34d52d6932c0723a86de1cc532b1aa489"}, + {file = "lxml-4.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e410cf3a2272d0a85526d700782a2fa92c1e304fdcc519ba74ac80b8297adf36"}, + {file = "lxml-4.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:585ea241ee4961dc18a95e2f5581dbc26285fcf330e007459688096f76be8c42"}, + {file = "lxml-4.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a555e06566c6dc167fbcd0ad507ff05fd9328502aefc963cb0a0547cfe7f00db"}, + {file = "lxml-4.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:adaab25be351fff0d8a691c4f09153647804d09a87a4e4ea2c3f9fe9e8651851"}, + {file = "lxml-4.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:82d16a64236970cb93c8d63ad18c5b9f138a704331e4b916b2737ddfad14e0c4"}, + {file = "lxml-4.7.1-cp39-cp39-win32.whl", hash = "sha256:59e7da839a1238807226f7143c68a479dee09244d1b3cf8c134f2fce777d12d0"}, + {file = "lxml-4.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:a1bbc4efa99ed1310b5009ce7f3a1784698082ed2c1ef3895332f5df9b3b92c2"}, + {file = "lxml-4.7.1-pp37-pypy37_pp73-macosx_10_14_x86_64.whl", hash = "sha256:0607ff0988ad7e173e5ddf7bf55ee65534bd18a5461183c33e8e41a59e89edf4"}, + {file = "lxml-4.7.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:6c198bfc169419c09b85ab10cb0f572744e686f40d1e7f4ed09061284fc1303f"}, + {file = "lxml-4.7.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a58d78653ae422df6837dd4ca0036610b8cb4962b5cfdbd337b7b24de9e5f98a"}, + {file = "lxml-4.7.1-pp38-pypy38_pp73-macosx_10_14_x86_64.whl", hash = "sha256:e18281a7d80d76b66a9f9e68a98cf7e1d153182772400d9a9ce855264d7d0ce7"}, + {file = "lxml-4.7.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8e54945dd2eeb50925500957c7c579df3cd07c29db7810b83cf30495d79af267"}, + {file = "lxml-4.7.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:447d5009d6b5447b2f237395d0018901dcc673f7d9f82ba26c1b9f9c3b444b60"}, + {file = "lxml-4.7.1.tar.gz", hash = "sha256:a1613838aa6b89af4ba10a0f3a972836128801ed008078f8c1244e65958f1b24"}, ] mako = [ {file = "Mako-1.0.4.tar.gz", hash = "sha256:fed99dbe4d0ddb27a33ee4910d8708aca9ef1fe854e668387a9ab9a90cbf9059"}, @@ -3616,82 +3875,161 @@ mpld3 = [ {file = "mpld3-0.3.tar.gz", hash = "sha256:4d455884a211bf99b37ecc760759435c7bb6a5955de47d8daf4967e301878ab7"}, ] 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"}, ] multidict = [ - {file = "multidict-4.7.6-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:275ca32383bc5d1894b6975bb4ca6a7ff16ab76fa622967625baeebcf8079000"}, - {file = "multidict-4.7.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:1ece5a3369835c20ed57adadc663400b5525904e53bae59ec854a5d36b39b21a"}, - {file = "multidict-4.7.6-cp35-cp35m-win32.whl", hash = "sha256:5141c13374e6b25fe6bf092052ab55c0c03d21bd66c94a0e3ae371d3e4d865a5"}, - {file = "multidict-4.7.6-cp35-cp35m-win_amd64.whl", hash = "sha256:9456e90649005ad40558f4cf51dbb842e32807df75146c6d940b6f5abb4a78f3"}, - {file = "multidict-4.7.6-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:e0d072ae0f2a179c375f67e3da300b47e1a83293c554450b29c900e50afaae87"}, - {file = "multidict-4.7.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:3750f2205b800aac4bb03b5ae48025a64e474d2c6cc79547988ba1d4122a09e2"}, - {file = "multidict-4.7.6-cp36-cp36m-win32.whl", hash = "sha256:f07acae137b71af3bb548bd8da720956a3bc9f9a0b87733e0899226a2317aeb7"}, - {file = "multidict-4.7.6-cp36-cp36m-win_amd64.whl", hash = "sha256:6513728873f4326999429a8b00fc7ceddb2509b01d5fd3f3be7881a257b8d463"}, - {file = "multidict-4.7.6-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:feed85993dbdb1dbc29102f50bca65bdc68f2c0c8d352468c25b54874f23c39d"}, - {file = "multidict-4.7.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fcfbb44c59af3f8ea984de67ec7c306f618a3ec771c2843804069917a8f2e255"}, - {file = "multidict-4.7.6-cp37-cp37m-win32.whl", hash = "sha256:4538273208e7294b2659b1602490f4ed3ab1c8cf9dbdd817e0e9db8e64be2507"}, - {file = "multidict-4.7.6-cp37-cp37m-win_amd64.whl", hash = "sha256:d14842362ed4cf63751648e7672f7174c9818459d169231d03c56e84daf90b7c"}, - {file = "multidict-4.7.6-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:c026fe9a05130e44157b98fea3ab12969e5b60691a276150db9eda71710cd10b"}, - {file = "multidict-4.7.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:51a4d210404ac61d32dada00a50ea7ba412e6ea945bbe992e4d7a595276d2ec7"}, - {file = "multidict-4.7.6-cp38-cp38-win32.whl", hash = "sha256:5cf311a0f5ef80fe73e4f4c0f0998ec08f954a6ec72b746f3c179e37de1d210d"}, - {file = "multidict-4.7.6-cp38-cp38-win_amd64.whl", hash = "sha256:7388d2ef3c55a8ba80da62ecfafa06a1c097c18032a501ffd4cabbc52d7f2b19"}, - {file = "multidict-4.7.6.tar.gz", hash = "sha256:fbb77a75e529021e7c4a8d4e823d88ef4d23674a202be4f5addffc72cbb91430"}, + {file = "multidict-5.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3822c5894c72e3b35aae9909bef66ec83e44522faf767c0ad39e0e2de11d3b55"}, + {file = "multidict-5.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:28e6d883acd8674887d7edc896b91751dc2d8e87fbdca8359591a13872799e4e"}, + {file = "multidict-5.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b61f85101ef08cbbc37846ac0e43f027f7844f3fade9b7f6dd087178caedeee7"}, + {file = "multidict-5.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9b668c065968c5979fe6b6fa6760bb6ab9aeb94b75b73c0a9c1acf6393ac3bf"}, + {file = "multidict-5.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517d75522b7b18a3385726b54a081afd425d4f41144a5399e5abd97ccafdf36b"}, + {file = "multidict-5.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b4ac3ba7a97b35a5ccf34f41b5a8642a01d1e55454b699e5e8e7a99b5a3acf5"}, + {file = "multidict-5.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:df23c83398715b26ab09574217ca21e14694917a0c857e356fd39e1c64f8283f"}, + {file = "multidict-5.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e58a9b5cc96e014ddf93c2227cbdeca94b56a7eb77300205d6e4001805391747"}, + {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f76440e480c3b2ca7f843ff8a48dc82446b86ed4930552d736c0bac507498a52"}, + {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cfde464ca4af42a629648c0b0d79b8f295cf5b695412451716531d6916461628"}, + {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:0fed465af2e0eb6357ba95795d003ac0bdb546305cc2366b1fc8f0ad67cc3fda"}, + {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:b70913cbf2e14275013be98a06ef4b412329fe7b4f83d64eb70dce8269ed1e1a"}, + {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5635bcf1b75f0f6ef3c8a1ad07b500104a971e38d3683167b9454cb6465ac86"}, + {file = "multidict-5.2.0-cp310-cp310-win32.whl", hash = "sha256:77f0fb7200cc7dedda7a60912f2059086e29ff67cefbc58d2506638c1a9132d7"}, + {file = "multidict-5.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:9416cf11bcd73c861267e88aea71e9fcc35302b3943e45e1dbb4317f91a4b34f"}, + {file = "multidict-5.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fd77c8f3cba815aa69cb97ee2b2ef385c7c12ada9c734b0f3b32e26bb88bbf1d"}, + {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98ec9aea6223adf46999f22e2c0ab6cf33f5914be604a404f658386a8f1fba37"}, + {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e5283c0a00f48e8cafcecadebfa0ed1dac8b39e295c7248c44c665c16dc1138b"}, + {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5f79c19c6420962eb17c7e48878a03053b7ccd7b69f389d5831c0a4a7f1ac0a1"}, + {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e4a67f1080123de76e4e97a18d10350df6a7182e243312426d508712e99988d4"}, + {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:94b117e27efd8e08b4046c57461d5a114d26b40824995a2eb58372b94f9fca02"}, + {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2e77282fd1d677c313ffcaddfec236bf23f273c4fba7cdf198108f5940ae10f5"}, + {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:116347c63ba049c1ea56e157fa8aa6edaf5e92925c9b64f3da7769bdfa012858"}, + {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:dc3a866cf6c13d59a01878cd806f219340f3e82eed514485e094321f24900677"}, + {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ac42181292099d91217a82e3fa3ce0e0ddf3a74fd891b7c2b347a7f5aa0edded"}, + {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:f0bb0973f42ffcb5e3537548e0767079420aefd94ba990b61cf7bb8d47f4916d"}, + {file = "multidict-5.2.0-cp36-cp36m-win32.whl", hash = "sha256:ea21d4d5104b4f840b91d9dc8cbc832aba9612121eaba503e54eaab1ad140eb9"}, + {file = "multidict-5.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:e6453f3cbeb78440747096f239d282cc57a2997a16b5197c9bc839099e1633d0"}, + {file = "multidict-5.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d3def943bfd5f1c47d51fd324df1e806d8da1f8e105cc7f1c76a1daf0f7e17b0"}, + {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35591729668a303a02b06e8dba0eb8140c4a1bfd4c4b3209a436a02a5ac1de11"}, + {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8cacda0b679ebc25624d5de66c705bc53dcc7c6f02a7fb0f3ca5e227d80422"}, + {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:baf1856fab8212bf35230c019cde7c641887e3fc08cadd39d32a421a30151ea3"}, + {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a43616aec0f0d53c411582c451f5d3e1123a68cc7b3475d6f7d97a626f8ff90d"}, + {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25cbd39a9029b409167aa0a20d8a17f502d43f2efebfe9e3ac019fe6796c59ac"}, + {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a2cbcfbea6dc776782a444db819c8b78afe4db597211298dd8b2222f73e9cd0"}, + {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3d2d7d1fff8e09d99354c04c3fd5b560fb04639fd45926b34e27cfdec678a704"}, + {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a37e9a68349f6abe24130846e2f1d2e38f7ddab30b81b754e5a1fde32f782b23"}, + {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:637c1896497ff19e1ee27c1c2c2ddaa9f2d134bbb5e0c52254361ea20486418d"}, + {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9815765f9dcda04921ba467957be543423e5ec6a1136135d84f2ae092c50d87b"}, + {file = "multidict-5.2.0-cp37-cp37m-win32.whl", hash = "sha256:8b911d74acdc1fe2941e59b4f1a278a330e9c34c6c8ca1ee21264c51ec9b67ef"}, + {file = "multidict-5.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:380b868f55f63d048a25931a1632818f90e4be71d2081c2338fcf656d299949a"}, + {file = "multidict-5.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e7d81ce5744757d2f05fc41896e3b2ae0458464b14b5a2c1e87a6a9d69aefaa8"}, + {file = "multidict-5.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d1d55cdf706ddc62822d394d1df53573d32a7a07d4f099470d3cb9323b721b6"}, + {file = "multidict-5.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4771d0d0ac9d9fe9e24e33bed482a13dfc1256d008d101485fe460359476065"}, + {file = "multidict-5.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da7d57ea65744d249427793c042094c4016789eb2562576fb831870f9c878d9e"}, + {file = "multidict-5.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdd68778f96216596218b4e8882944d24a634d984ee1a5a049b300377878fa7c"}, + {file = "multidict-5.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ecc99bce8ee42dcad15848c7885197d26841cb24fa2ee6e89d23b8993c871c64"}, + {file = "multidict-5.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:067150fad08e6f2dd91a650c7a49ba65085303fcc3decbd64a57dc13a2733031"}, + {file = "multidict-5.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:78c106b2b506b4d895ddc801ff509f941119394b89c9115580014127414e6c2d"}, + {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e6c4fa1ec16e01e292315ba76eb1d012c025b99d22896bd14a66628b245e3e01"}, + {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b227345e4186809d31f22087d0265655114af7cda442ecaf72246275865bebe4"}, + {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:06560fbdcf22c9387100979e65b26fba0816c162b888cb65b845d3def7a54c9b"}, + {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7878b61c867fb2df7a95e44b316f88d5a3742390c99dfba6c557a21b30180cac"}, + {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:246145bff76cc4b19310f0ad28bd0769b940c2a49fc601b86bfd150cbd72bb22"}, + {file = "multidict-5.2.0-cp38-cp38-win32.whl", hash = "sha256:c30ac9f562106cd9e8071c23949a067b10211917fdcb75b4718cf5775356a940"}, + {file = "multidict-5.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:f19001e790013ed580abfde2a4465388950728861b52f0da73e8e8a9418533c0"}, + {file = "multidict-5.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c1ff762e2ee126e6f1258650ac641e2b8e1f3d927a925aafcfde943b77a36d24"}, + {file = "multidict-5.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bd6c9c50bf2ad3f0448edaa1a3b55b2e6866ef8feca5d8dbec10ec7c94371d21"}, + {file = "multidict-5.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc66d4016f6e50ed36fb39cd287a3878ffcebfa90008535c62e0e90a7ab713ae"}, + {file = "multidict-5.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9acb76d5f3dd9421874923da2ed1e76041cb51b9337fd7f507edde1d86535d6"}, + {file = "multidict-5.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dfc924a7e946dd3c6360e50e8f750d51e3ef5395c95dc054bc9eab0f70df4f9c"}, + {file = "multidict-5.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32fdba7333eb2351fee2596b756d730d62b5827d5e1ab2f84e6cbb287cc67fe0"}, + {file = "multidict-5.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b9aad49466b8d828b96b9e3630006234879c8d3e2b0a9d99219b3121bc5cdb17"}, + {file = "multidict-5.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:93de39267c4c676c9ebb2057e98a8138bade0d806aad4d864322eee0803140a0"}, + {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f9bef5cff994ca3026fcc90680e326d1a19df9841c5e3d224076407cc21471a1"}, + {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5f841c4f14331fd1e36cbf3336ed7be2cb2a8f110ce40ea253e5573387db7621"}, + {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:38ba256ee9b310da6a1a0f013ef4e422fca30a685bcbec86a969bd520504e341"}, + {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3bc3b1621b979621cee9f7b09f024ec76ec03cc365e638126a056317470bde1b"}, + {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6ee908c070020d682e9b42c8f621e8bb10c767d04416e2ebe44e37d0f44d9ad5"}, + {file = "multidict-5.2.0-cp39-cp39-win32.whl", hash = "sha256:1c7976cd1c157fa7ba5456ae5d31ccdf1479680dc9b8d8aa28afabc370df42b8"}, + {file = "multidict-5.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:c9631c642e08b9fff1c6255487e62971d8b8e821808ddd013d8ac058087591ac"}, + {file = "multidict-5.2.0.tar.gz", hash = "sha256:0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce"}, ] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] mysqlclient = [ - {file = "mysqlclient-2.0.3-cp36-cp36m-win_amd64.whl", hash = "sha256:3381ca1a4f37ff1155fcfde20836b46416d66531add8843f6aa6d968982731c3"}, - {file = "mysqlclient-2.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0ac0dd759c4ca02c35a9fedc24bc982cf75171651e8187c2495ec957a87dfff7"}, - {file = "mysqlclient-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:71c4b330cf2313bbda0307fc858cc9055e64493ba9bf28454d25cf8b3ee8d7f5"}, - {file = "mysqlclient-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:fc575093cf81b6605bed84653e48b277318b880dc9becf42dd47fa11ffd3e2b6"}, - {file = "mysqlclient-2.0.3.tar.gz", hash = "sha256:f6ebea7c008f155baeefe16c56cd3ee6239f7a5a9ae42396c2f1860f08a7c432"}, + {file = "mysqlclient-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:02c8826e6add9b20f4cb12dcf016485f7b1d6e30356a1204d05431867a1b3947"}, + {file = "mysqlclient-2.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b62d23c11c516cedb887377c8807628c1c65d57593b57853186a6ee18b0c6a5b"}, + {file = "mysqlclient-2.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2c8410f54492a3d2488a6a53e2d85b7e016751a1e7d116e7aea9c763f59f5e8c"}, + {file = "mysqlclient-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6279263d5a9feca3e0edbc2b2a52c057375bf301d47da2089c075ff76331d14"}, + {file = "mysqlclient-2.1.0.tar.gz", hash = "sha256:973235686f1b720536d417bf0a0d39b4ab3d5086b2b6ad5e6752393428c02b12"}, ] netaddr = [ {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, ] netifaces = [ - {file = "netifaces-0.10.9-cp27-cp27m-macosx_10_13_x86_64.whl", hash = "sha256:b2ff3a0a4f991d2da5376efd3365064a43909877e9fabfa801df970771161d29"}, - {file = "netifaces-0.10.9-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:0c4304c6d5b33fbd9b20fdc369f3a2fef1a8bbacfb6fd05b9708db01333e9e7b"}, - {file = "netifaces-0.10.9-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:7a25a8e28281504f0e23e181d7a9ed699c72f061ca6bdfcd96c423c2a89e75fc"}, - {file = "netifaces-0.10.9-cp27-cp27m-win32.whl", hash = "sha256:6d84e50ec28e5d766c9911dce945412dc5b1ce760757c224c71e1a9759fa80c2"}, - {file = "netifaces-0.10.9-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f911b7f0083d445c8d24cfa5b42ad4996e33250400492080f5018a28c026db2b"}, - {file = "netifaces-0.10.9-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:4921ed406386246b84465950d15a4f63480c1458b0979c272364054b29d73084"}, - {file = "netifaces-0.10.9-cp33-cp33m-manylinux1_i686.whl", hash = "sha256:5b3167f923f67924b356c1338eb9ba275b2ba8d64c7c2c47cf5b5db49d574994"}, - {file = "netifaces-0.10.9-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:db881478f1170c6dd524175ba1c83b99d3a6f992a35eca756de0ddc4690a1940"}, - {file = "netifaces-0.10.9-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:f0427755c68571df37dc58835e53a4307884a48dec76f3c01e33eb0d4a3a81d7"}, - {file = "netifaces-0.10.9-cp34-cp34m-win32.whl", hash = "sha256:7cc6fd1eca65be588f001005446a47981cbe0b2909f5be8feafef3bf351a4e24"}, - {file = "netifaces-0.10.9-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:b47e8f9ff6846756be3dc3fb242ca8e86752cd35a08e06d54ffc2e2a2aca70ea"}, - {file = "netifaces-0.10.9-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f8885cc48c8c7ad51f36c175e462840f163cb4687eeb6c6d7dfaf7197308e36b"}, - {file = "netifaces-0.10.9-cp35-cp35m-win32.whl", hash = "sha256:755050799b5d5aedb1396046f270abfc4befca9ccba3074f3dbbb3cb34f13aae"}, - {file = "netifaces-0.10.9-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:ad10acab2ef691eb29a1cc52c3be5ad1423700e993cc035066049fa72999d0dc"}, - {file = "netifaces-0.10.9-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:563a1a366ee0fb3d96caab79b7ac7abd2c0a0577b157cc5a40301373a0501f89"}, - {file = "netifaces-0.10.9-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:30ed89ab8aff715caf9a9d827aa69cd02ad9f6b1896fd3fb4beb998466ed9a3c"}, - {file = "netifaces-0.10.9-cp36-cp36m-win32.whl", hash = "sha256:75d3a4ec5035db7478520ac547f7c176e9fd438269e795819b67223c486e5cbe"}, - {file = "netifaces-0.10.9-cp36-cp36m-win_amd64.whl", hash = "sha256:078986caf4d6a602a4257d3686afe4544ea74362b8928e9f4389b5cd262bc215"}, - {file = "netifaces-0.10.9-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:3095218b66d359092b82f07c5422293c2f6559cf8d36b96b379cc4cdc26eeffa"}, - {file = "netifaces-0.10.9-cp37-cp37m-win32.whl", hash = "sha256:da298241d87bcf468aa0f0705ba14572ad296f24c4fda5055d6988701d6fd8e1"}, - {file = "netifaces-0.10.9-cp37-cp37m-win_amd64.whl", hash = "sha256:86b8a140e891bb23c8b9cb1804f1475eb13eea3dbbebef01fcbbf10fbafbee42"}, - {file = "netifaces-0.10.9.tar.gz", hash = "sha256:2dee9ffdd16292878336a58d04a20f0ffe95555465fee7c9bd23b3490ef2abf3"}, + {file = "netifaces-0.11.0-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eb4813b77d5df99903af4757ce980a98c4d702bbcb81f32a0b305a1537bdf0b1"}, + {file = "netifaces-0.11.0-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:5f9ca13babe4d845e400921973f6165a4c2f9f3379c7abfc7478160e25d196a4"}, + {file = "netifaces-0.11.0-cp27-cp27m-win32.whl", hash = "sha256:7dbb71ea26d304e78ccccf6faccef71bb27ea35e259fb883cfd7fd7b4f17ecb1"}, + {file = "netifaces-0.11.0-cp27-cp27m-win_amd64.whl", hash = "sha256:0f6133ac02521270d9f7c490f0c8c60638ff4aec8338efeff10a1b51506abe85"}, + {file = "netifaces-0.11.0-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:08e3f102a59f9eaef70948340aeb6c89bd09734e0dca0f3b82720305729f63ea"}, + {file = "netifaces-0.11.0-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c03fb2d4ef4e393f2e6ffc6376410a22a3544f164b336b3a355226653e5efd89"}, + {file = "netifaces-0.11.0-cp34-cp34m-win32.whl", hash = "sha256:73ff21559675150d31deea8f1f8d7e9a9a7e4688732a94d71327082f517fc6b4"}, + {file = "netifaces-0.11.0-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:815eafdf8b8f2e61370afc6add6194bd5a7252ae44c667e96c4c1ecf418811e4"}, + {file = "netifaces-0.11.0-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:50721858c935a76b83dd0dd1ab472cad0a3ef540a1408057624604002fcfb45b"}, + {file = "netifaces-0.11.0-cp35-cp35m-win32.whl", hash = "sha256:c9a3a47cd3aaeb71e93e681d9816c56406ed755b9442e981b07e3618fb71d2ac"}, + {file = "netifaces-0.11.0-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:aab1dbfdc55086c789f0eb37affccf47b895b98d490738b81f3b2360100426be"}, + {file = "netifaces-0.11.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c37a1ca83825bc6f54dddf5277e9c65dec2f1b4d0ba44b8fd42bc30c91aa6ea1"}, + {file = "netifaces-0.11.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:28f4bf3a1361ab3ed93c5ef360c8b7d4a4ae060176a3529e72e5e4ffc4afd8b0"}, + {file = "netifaces-0.11.0-cp36-cp36m-win32.whl", hash = "sha256:2650beee182fed66617e18474b943e72e52f10a24dc8cac1db36c41ee9c041b7"}, + {file = "netifaces-0.11.0-cp36-cp36m-win_amd64.whl", hash = "sha256:cb925e1ca024d6f9b4f9b01d83215fd00fe69d095d0255ff3f64bffda74025c8"}, + {file = "netifaces-0.11.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:84e4d2e6973eccc52778735befc01638498781ce0e39aa2044ccfd2385c03246"}, + {file = "netifaces-0.11.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18917fbbdcb2d4f897153c5ddbb56b31fa6dd7c3fa9608b7e3c3a663df8206b5"}, + {file = "netifaces-0.11.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:48324183af7f1bc44f5f197f3dad54a809ad1ef0c78baee2c88f16a5de02c4c9"}, + {file = "netifaces-0.11.0-cp37-cp37m-win32.whl", hash = "sha256:8f7da24eab0d4184715d96208b38d373fd15c37b0dafb74756c638bd619ba150"}, + {file = "netifaces-0.11.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2479bb4bb50968089a7c045f24d120f37026d7e802ec134c4490eae994c729b5"}, + {file = "netifaces-0.11.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:3ecb3f37c31d5d51d2a4d935cfa81c9bc956687c6f5237021b36d6fdc2815b2c"}, + {file = "netifaces-0.11.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:96c0fe9696398253f93482c84814f0e7290eee0bfec11563bd07d80d701280c3"}, + {file = "netifaces-0.11.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c92ff9ac7c2282009fe0dcb67ee3cd17978cffbe0c8f4b471c00fe4325c9b4d4"}, + {file = "netifaces-0.11.0-cp38-cp38-win32.whl", hash = "sha256:d07b01c51b0b6ceb0f09fc48ec58debd99d2c8430b09e56651addeaf5de48048"}, + {file = "netifaces-0.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:469fc61034f3daf095e02f9f1bbac07927b826c76b745207287bc594884cfd05"}, + {file = "netifaces-0.11.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5be83986100ed1fdfa78f11ccff9e4757297735ac17391b95e17e74335c2047d"}, + {file = "netifaces-0.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:54ff6624eb95b8a07e79aa8817288659af174e954cca24cdb0daeeddfc03c4ff"}, + {file = "netifaces-0.11.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:841aa21110a20dc1621e3dd9f922c64ca64dd1eb213c47267a2c324d823f6c8f"}, + {file = "netifaces-0.11.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e76c7f351e0444721e85f975ae92718e21c1f361bda946d60a214061de1f00a1"}, + {file = "netifaces-0.11.0.tar.gz", hash = "sha256:043a79146eb2907edf439899f262b3dfe41717d34124298ed281139a8b93ca32"}, ] nose = [ {file = "nose-1.3.7-py2-none-any.whl", hash = "sha256:dadcddc0aefbf99eea214e0f1232b94f2fa9bd98fa8353711dacb112bfcbbb2a"}, @@ -3752,37 +4090,36 @@ openpyxl = [ {file = "openpyxl-3.0.9.tar.gz", hash = "sha256:40f568b9829bf9e446acfffce30250ac1fa39035124d55fc024025c41481c90f"}, ] openupgradelib = [ - {file = "openupgradelib-3.1.1-py2.py3-none-any.whl", hash = "sha256:7724ad3966938d12d0311ff83a2a49fae3ef4363525e050754fa34c6a79b9751"}, - {file = "openupgradelib-3.1.1.tar.gz", hash = "sha256:988ecb0cd2b235c996710509484b1ab4094916a6d5c55dd47b8e6b70633c4099"}, + {file = "openupgradelib-3.3.1-py2.py3-none-any.whl", hash = "sha256:a4b788312084ea24cc4dac2a60c384794b5d2bd57ed51822a5c7ebfa0dd1f6b5"}, + {file = "openupgradelib-3.3.1.tar.gz", hash = "sha256:ea05e6ae1f22ccb54377e31483248304273c8af4a9d894b264d130bc769eed1e"}, ] optionaldict = [ - {file = "optionaldict-0.1.1-py2.py3-none-any.whl", hash = "sha256:0bfb42d10f0a79b062ec2bdfa010f8346005ec21afdb73d541d13723b128b121"}, - {file = "optionaldict-0.1.1.tar.gz", hash = "sha256:0bcf077ca329ae337995fc8fe847b580eadbd7f39b3483b274425874a9407768"}, - {file = "optionaldict-0.1.1.zip", hash = "sha256:2e02e35d80177457f241d841be9f8b3bf1847d72f81be1aab7814885b43b4320"}, + {file = "optionaldict-0.1.2-py2.py3-none-any.whl", hash = "sha256:278d9b79b3d6a55b1b8ff5f9017bff6383a33426348d09e699ff50162bbcdab7"}, + {file = "optionaldict-0.1.2.tar.gz", hash = "sha256:175b62ee8259af703def42e0b44b413ea55e7b0732456cb2fd5cbbc998605966"}, ] os-service-types = [ {file = "os-service-types-1.7.0.tar.gz", hash = "sha256:31800299a82239363995b91f1ebf9106ac7758542a1e4ef6dc737a5932878c6c"}, {file = "os_service_types-1.7.0-py2.py3-none-any.whl", hash = "sha256:0505c72205690910077fb72b88f2a1f07533c8d39f2fe75b29583481764965d6"}, ] "oslo.config" = [ - {file = "oslo.config-8.3.1-py3-none-any.whl", hash = "sha256:5ef9382983e7be5d44a2bc05b87c858dc9d8c8c409f8856eeeb6d4933a17bc20"}, - {file = "oslo.config-8.3.1.tar.gz", hash = "sha256:dfbb83dc5b4c86ddf8b96f3967252f17586a67f2cef65309df2fd510bf9e87fc"}, + {file = "oslo.config-8.4.0-py3-none-any.whl", hash = "sha256:4532e94c2da67cdeeebfb82c517073e66ec5d944bbb34cb824a4c0541b3206fb"}, + {file = "oslo.config-8.4.0.tar.gz", hash = "sha256:537d62c581de2227aebfc4c71ee6fb455b853be920e0b30b65ebbe8d8128725c"}, ] "oslo.i18n" = [ - {file = "oslo.i18n-5.0.0-py3-none-any.whl", hash = "sha256:55914fbdcb7de1d766bc3910c61b5071fe1288ba605bfe90f635000a033c4ec4"}, - {file = "oslo.i18n-5.0.0.tar.gz", hash = "sha256:2e71ae3ec73a74ac71f8f407e6653243dc267eed404624255a296c34f1fc6887"}, + {file = "oslo.i18n-5.1.0-py3-none-any.whl", hash = "sha256:75086cfd898819638ca741159f677e2073a78ca86a9c9be8d38b46800cdf2dc9"}, + {file = "oslo.i18n-5.1.0.tar.gz", hash = "sha256:6bf111a6357d5449640852de4640eae4159b5562bbba4c90febb0034abc095d0"}, ] "oslo.serialization" = [ - {file = "oslo.serialization-4.0.0-py3-none-any.whl", hash = "sha256:292bf1eac8930d9d89a64f8c7b3871eb2cfc990078b89c432edfe863da0df3d9"}, - {file = "oslo.serialization-4.0.0.tar.gz", hash = "sha256:f465df171be564282cb3e86ec895f5b6ae5e5b0760e9af2be96a942a5255a860"}, + {file = "oslo.serialization-4.2.0-py3-none-any.whl", hash = "sha256:11ec9eeaddcd5ec99c88e2b46c1584915311e858c442319bdab5e5e2ec05f20e"}, + {file = "oslo.serialization-4.2.0.tar.gz", hash = "sha256:3007e1b017ad3754cce54def894054cbcd05887e85928556657434b0fc7e4d83"}, ] "oslo.utils" = [ - {file = "oslo.utils-4.4.0-py3-none-any.whl", hash = "sha256:50cf1099ab8c3419990f43a2b11d06f14951600f9cd3ff3ca9352b0ff5aff9e3"}, - {file = "oslo.utils-4.4.0.tar.gz", hash = "sha256:1603e1b0e3d1def57c51f4d5c82871ea05e221f7dac5d4f6eeb56e6cb19284fb"}, + {file = "oslo.utils-4.12.0-py3-none-any.whl", hash = "sha256:38c8909e4018a9d120ed208496ccc493f76ca46b02dc726c521427141b8cd87e"}, + {file = "oslo.utils-4.12.0.tar.gz", hash = "sha256:37aa1ee2c6cd8f3933912dd4323cbf7cd2d141e6dedb3debb764e491a9c9cf4d"}, ] 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"}, ] pandas = [ {file = "pandas-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cba93d4fd3b0a42858b2b599495aff793fb5d94587979f45a14177d1217ba446"}, @@ -3804,20 +4141,20 @@ pandas = [ {file = "pandas-1.2.0.tar.gz", hash = "sha256:e03386615b970b8b41da6a68afe717626741bb2431cec993640685614c0680e4"}, ] paramiko = [ - {file = "paramiko-2.7.2-py2.py3-none-any.whl", hash = "sha256:4f3e316fef2ac628b05097a637af35685183111d4bc1b5979bd397c2ab7b5898"}, - {file = "paramiko-2.7.2.tar.gz", hash = "sha256:7f36f4ba2c0d81d219f4595e35f70d56cc94f9ac40a6acdf51d6ca210ce65035"}, + {file = "paramiko-2.9.2-py2.py3-none-any.whl", hash = "sha256:04097dbd96871691cdb34c13db1883066b8a13a0df2afd4cb0a92221f51c2603"}, + {file = "paramiko-2.9.2.tar.gz", hash = "sha256:944a9e5dbdd413ab6c7951ea46b0ab40713235a9c4c5ca81cfe45c6f14fa677b"}, ] passlib = [ {file = "passlib-1.6.5-py2.py3-none-any.whl", hash = "sha256:ad631a58dc8abeb0f48016c13f4b3b0f3a7b1045a8cb3c61dd15e2d95b45c472"}, {file = "passlib-1.6.5.tar.gz", hash = "sha256:a83d34f53dc9b17aa42c9a35c3fbcc5120f3fcb07f7f8721ec45e6a27be347fc"}, ] pathspec = [ - {file = "pathspec-0.8.1-py2.py3-none-any.whl", hash = "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d"}, - {file = "pathspec-0.8.1.tar.gz", hash = "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd"}, + {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, + {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, ] pbr = [ - {file = "pbr-5.4.5-py2.py3-none-any.whl", hash = "sha256:579170e23f8e0c2f24b0de612f71f648eccb79fb1322c814ae6b3c07b5ba23e8"}, - {file = "pbr-5.4.5.tar.gz", hash = "sha256:07f558fece33b05caf857474a366dfcc00562bca13dd8b47b2b3e22d9f9bf55c"}, + {file = "pbr-5.8.0-py2.py3-none-any.whl", hash = "sha256:176e8560eaf61e127817ef93d8a844803abb27a4d4637f0ff3bb783129be2e0a"}, + {file = "pbr-5.8.0.tar.gz", hash = "sha256:672d8ebee84921862110f23fcec2acea191ef58543d34dfe9ef3d9f13c31cddf"}, ] pdf2image = [ {file = "pdf2image-1.16.0-py3-none-any.whl", hash = "sha256:84f79f2b8fad943e36323ea4e937fcb05f26ded0caa0a01181df66049e42fb65"}, @@ -3831,63 +4168,42 @@ pexpect = [ {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, ] phonenumbers = [ - {file = "phonenumbers-8.12.33-py2.py3-none-any.whl", hash = "sha256:758d7f654b1eaec9a637510bf773b64833c6a417e7cf43ba9dccbcc2a16e44e1"}, - {file = "phonenumbers-8.12.33.tar.gz", hash = "sha256:de3d5a3cb421c7421f584bb13cb9287e23ee2dd97d832fc35c9b55b96a576a3c"}, + {file = "phonenumbers-8.12.41-py2.py3-none-any.whl", hash = "sha256:2b8c7a7ffac4fe2be3d8bf20dad316ea1292f27422c9e18b1f3cd16734d4a5ed"}, + {file = "phonenumbers-8.12.41.tar.gz", hash = "sha256:f477da623a51cba084567d6a67b1882a8aaaf3e7beadad655f8613a8f887ac62"}, ] pillow = [ - {file = "Pillow-8.3.2-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:c691b26283c3a31594683217d746f1dad59a7ae1d4cfc24626d7a064a11197d4"}, - {file = "Pillow-8.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f514c2717012859ccb349c97862568fdc0479aad85b0270d6b5a6509dbc142e2"}, - {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be25cb93442c6d2f8702c599b51184bd3ccd83adebd08886b682173e09ef0c3f"}, - {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d675a876b295afa114ca8bf42d7f86b5fb1298e1b6bb9a24405a3f6c8338811c"}, - {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59697568a0455764a094585b2551fd76bfd6b959c9f92d4bdec9d0e14616303a"}, - {file = "Pillow-8.3.2-cp310-cp310-win32.whl", hash = "sha256:2d5e9dc0bf1b5d9048a94c48d0813b6c96fccfa4ccf276d9c36308840f40c228"}, - {file = "Pillow-8.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:11c27e74bab423eb3c9232d97553111cc0be81b74b47165f07ebfdd29d825875"}, - {file = "Pillow-8.3.2-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:11eb7f98165d56042545c9e6db3ce394ed8b45089a67124298f0473b29cb60b2"}, - {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f23b2d3079522fdf3c09de6517f625f7a964f916c956527bed805ac043799b8"}, - {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19ec4cfe4b961edc249b0e04b5618666c23a83bc35842dea2bfd5dfa0157f81b"}, - {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5a31c07cea5edbaeb4bdba6f2b87db7d3dc0f446f379d907e51cc70ea375629"}, - {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15ccb81a6ffc57ea0137f9f3ac2737ffa1d11f786244d719639df17476d399a7"}, - {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8f284dc1695caf71a74f24993b7c7473d77bc760be45f776a2c2f4e04c170550"}, - {file = "Pillow-8.3.2-cp36-cp36m-win32.whl", hash = "sha256:4abc247b31a98f29e5224f2d31ef15f86a71f79c7f4d2ac345a5d551d6393073"}, - {file = "Pillow-8.3.2-cp36-cp36m-win_amd64.whl", hash = "sha256:a048dad5ed6ad1fad338c02c609b862dfaa921fcd065d747194a6805f91f2196"}, - {file = "Pillow-8.3.2-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:06d1adaa284696785375fa80a6a8eb309be722cf4ef8949518beb34487a3df71"}, - {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd24054aaf21e70a51e2a2a5ed1183560d3a69e6f9594a4bfe360a46f94eba83"}, - {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a330bf7014ee034046db43ccbb05c766aa9e70b8d6c5260bfc38d73103b0ba"}, - {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13654b521fb98abdecec105ea3fb5ba863d1548c9b58831dd5105bb3873569f1"}, - {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a1bd983c565f92779be456ece2479840ec39d386007cd4ae83382646293d681b"}, - {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4326ea1e2722f3dc00ed77c36d3b5354b8fb7399fb59230249ea6d59cbed90da"}, - {file = "Pillow-8.3.2-cp37-cp37m-win32.whl", hash = "sha256:085a90a99404b859a4b6c3daa42afde17cb3ad3115e44a75f0d7b4a32f06a6c9"}, - {file = "Pillow-8.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:18a07a683805d32826c09acfce44a90bf474e6a66ce482b1c7fcd3757d588df3"}, - {file = "Pillow-8.3.2-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4e59e99fd680e2b8b11bbd463f3c9450ab799305d5f2bafb74fefba6ac058616"}, - {file = "Pillow-8.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4d89a2e9219a526401015153c0e9dd48319ea6ab9fe3b066a20aa9aee23d9fd3"}, - {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fd98c8294f57636084f4b076b75f86c57b2a63a8410c0cd172bc93695ee979"}, - {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b11c9d310a3522b0fd3c35667914271f570576a0e387701f370eb39d45f08a4"}, - {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0412516dcc9de9b0a1e0ae25a280015809de8270f134cc2c1e32c4eeb397cf30"}, - {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bcb04ff12e79b28be6c9988f275e7ab69f01cc2ba319fb3114f87817bb7c74b6"}, - {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0b9911ec70731711c3b6ebcde26caea620cbdd9dcb73c67b0730c8817f24711b"}, - {file = "Pillow-8.3.2-cp38-cp38-win32.whl", hash = "sha256:ce2e5e04bb86da6187f96d7bab3f93a7877830981b37f0287dd6479e27a10341"}, - {file = "Pillow-8.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:35d27687f027ad25a8d0ef45dd5208ef044c588003cdcedf05afb00dbc5c2deb"}, - {file = "Pillow-8.3.2-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:04835e68ef12904bc3e1fd002b33eea0779320d4346082bd5b24bec12ad9c3e9"}, - {file = "Pillow-8.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:10e00f7336780ca7d3653cf3ac26f068fa11b5a96894ea29a64d3dc4b810d630"}, - {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cde7a4d3687f21cffdf5bb171172070bb95e02af448c4c8b2f223d783214056"}, - {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c3ff00110835bdda2b1e2b07f4a2548a39744bb7de5946dc8e95517c4fb2ca6"}, - {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35d409030bf3bd05fa66fb5fdedc39c521b397f61ad04309c90444e893d05f7d"}, - {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bff50ba9891be0a004ef48828e012babaaf7da204d81ab9be37480b9020a82b"}, - {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7dbfbc0020aa1d9bc1b0b8bcf255a7d73f4ad0336f8fd2533fcc54a4ccfb9441"}, - {file = "Pillow-8.3.2-cp39-cp39-win32.whl", hash = "sha256:963ebdc5365d748185fdb06daf2ac758116deecb2277ec5ae98139f93844bc09"}, - {file = "Pillow-8.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:cc9d0dec711c914ed500f1d0d3822868760954dce98dfb0b7382a854aee55d19"}, - {file = "Pillow-8.3.2-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2c661542c6f71dfd9dc82d9d29a8386287e82813b0375b3a02983feac69ef864"}, - {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:548794f99ff52a73a156771a0402f5e1c35285bd981046a502d7e4793e8facaa"}, - {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b68f565a4175e12e68ca900af8910e8fe48aaa48fd3ca853494f384e11c8bcd"}, - {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:838eb85de6d9307c19c655c726f8d13b8b646f144ca6b3771fa62b711ebf7624"}, - {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:feb5db446e96bfecfec078b943cc07744cc759893cef045aa8b8b6d6aaa8274e"}, - {file = "Pillow-8.3.2-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:fc0db32f7223b094964e71729c0361f93db43664dd1ec86d3df217853cedda87"}, - {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fd4fd83aa912d7b89b4b4a1580d30e2a4242f3936882a3f433586e5ab97ed0d5"}, - {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0c8ebbfd439c37624db98f3877d9ed12c137cadd99dde2d2eae0dab0bbfc355"}, - {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cb3dd7f23b044b0737317f892d399f9e2f0b3a02b22b2c692851fb8120d82c6"}, - {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66566f8a22561fc1a88dc87606c69b84fa9ce724f99522cf922c801ec68f5c1"}, - {file = "Pillow-8.3.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ce651ca46d0202c302a535d3047c55a0131a720cf554a578fc1b8a2aff0e7d96"}, - {file = "Pillow-8.3.2.tar.gz", hash = "sha256:dde3f3ed8d00c72631bc19cbfff8ad3b6215062a5eed402381ad365f82f0c18c"}, + {file = "Pillow-9.0.0-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:113723312215b25c22df1fdf0e2da7a3b9c357a7d24a93ebbe80bfda4f37a8d4"}, + {file = "Pillow-9.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bb47a548cea95b86494a26c89d153fd31122ed65255db5dcbc421a2d28eb3379"}, + {file = "Pillow-9.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31b265496e603985fad54d52d11970383e317d11e18e856971bdbb86af7242a4"}, + {file = "Pillow-9.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d154ed971a4cc04b93a6d5b47f37948d1f621f25de3e8fa0c26b2d44f24e3e8f"}, + {file = "Pillow-9.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80fe92813d208ce8aa7d76da878bdc84b90809f79ccbad2a288e9bcbeac1d9bd"}, + {file = "Pillow-9.0.0-cp310-cp310-win32.whl", hash = "sha256:d5dcea1387331c905405b09cdbfb34611050cc52c865d71f2362f354faee1e9f"}, + {file = "Pillow-9.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:52abae4c96b5da630a8b4247de5428f593465291e5b239f3f843a911a3cf0105"}, + {file = "Pillow-9.0.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:72c3110228944019e5f27232296c5923398496b28be42535e3b2dc7297b6e8b6"}, + {file = "Pillow-9.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b6d21771da41497b81652d44191489296555b761684f82b7b544c49989110f"}, + {file = "Pillow-9.0.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72f649d93d4cc4d8cf79c91ebc25137c358718ad75f99e99e043325ea7d56100"}, + {file = "Pillow-9.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aaf07085c756f6cb1c692ee0d5a86c531703b6e8c9cae581b31b562c16b98ce"}, + {file = "Pillow-9.0.0-cp37-cp37m-win32.whl", hash = "sha256:03b27b197deb4ee400ed57d8d4e572d2d8d80f825b6634daf6e2c18c3c6ccfa6"}, + {file = "Pillow-9.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a09a9d4ec2b7887f7a088bbaacfd5c07160e746e3d47ec5e8050ae3b2a229e9f"}, + {file = "Pillow-9.0.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:490e52e99224858f154975db61c060686df8a6b3f0212a678e5d2e2ce24675c9"}, + {file = "Pillow-9.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:500d397ddf4bbf2ca42e198399ac13e7841956c72645513e8ddf243b31ad2128"}, + {file = "Pillow-9.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ebd8b9137630a7bbbff8c4b31e774ff05bbb90f7911d93ea2c9371e41039b52"}, + {file = "Pillow-9.0.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd0e5062f11cb3e730450a7d9f323f4051b532781026395c4323b8ad055523c4"}, + {file = "Pillow-9.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f3b4522148586d35e78313db4db0df4b759ddd7649ef70002b6c3767d0fdeb7"}, + {file = "Pillow-9.0.0-cp38-cp38-win32.whl", hash = "sha256:0b281fcadbb688607ea6ece7649c5d59d4bbd574e90db6cd030e9e85bde9fecc"}, + {file = "Pillow-9.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:b5050d681bcf5c9f2570b93bee5d3ec8ae4cf23158812f91ed57f7126df91762"}, + {file = "Pillow-9.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:c2067b3bb0781f14059b112c9da5a91c80a600a97915b4f48b37f197895dd925"}, + {file = "Pillow-9.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d16b6196fb7a54aff6b5e3ecd00f7c0bab1b56eee39214b2b223a9d938c50af"}, + {file = "Pillow-9.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98cb63ca63cb61f594511c06218ab4394bf80388b3d66cd61d0b1f63ee0ea69f"}, + {file = "Pillow-9.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc462d24500ba707e9cbdef436c16e5c8cbf29908278af053008d9f689f56dee"}, + {file = "Pillow-9.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3586e12d874ce2f1bc875a3ffba98732ebb12e18fb6d97be482bd62b56803281"}, + {file = "Pillow-9.0.0-cp39-cp39-win32.whl", hash = "sha256:68e06f8b2248f6dc8b899c3e7ecf02c9f413aab622f4d6190df53a78b93d97a5"}, + {file = "Pillow-9.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:6579f9ba84a3d4f1807c4aab4be06f373017fc65fff43498885ac50a9b47a553"}, + {file = "Pillow-9.0.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:47f5cf60bcb9fbc46011f75c9b45a8b5ad077ca352a78185bd3e7f1d294b98bb"}, + {file = "Pillow-9.0.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fd8053e1f8ff1844419842fd474fc359676b2e2a2b66b11cc59f4fa0a301315"}, + {file = "Pillow-9.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c5439bfb35a89cac50e81c751317faea647b9a3ec11c039900cd6915831064d"}, + {file = "Pillow-9.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95545137fc56ce8c10de646074d242001a112a92de169986abd8c88c27566a05"}, + {file = "Pillow-9.0.0.tar.gz", hash = "sha256:ee6e2963e92762923956fe5d3479b1fdc3b76c83f290aad131a2f98c3df0593e"}, ] platformdirs = [ {file = "platformdirs-2.4.0-py3-none-any.whl", hash = "sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d"}, @@ -3901,8 +4217,8 @@ ply = [ {file = "ply-3.4.tar.gz", hash = "sha256:af435f11b7bdd69da5ffbc3fecb8d70a7073ec952e101764c88720cdefb2546b"}, ] polib = [ - {file = "polib-1.1.0-py2.py3-none-any.whl", hash = "sha256:93b730477c16380c9a96726c54016822ff81acfa553977fdd131f2b90ba858d7"}, - {file = "polib-1.1.0.tar.gz", hash = "sha256:fad87d13696127ffb27ea0882d6182f1a9cf8a5e2b37a587751166c51e5a332a"}, + {file = "polib-1.1.1-py2.py3-none-any.whl", hash = "sha256:d3ee85e0c6788f789353416b1612c6c92d75fe6ccfac0029711974d6abd0f86d"}, + {file = "polib-1.1.1.tar.gz", hash = "sha256:e02c355ae5e054912e3b0d16febc56510eff7e49d60bf22aecb463bd2f2a2dfa"}, ] premailer = [ {file = "premailer-3.10.0-py2.py3-none-any.whl", hash = "sha256:021b8196364d7df96d04f9ade51b794d0b77bcc19e998321c515633a2273be1a"}, @@ -3955,8 +4271,8 @@ psycopg2 = [ {file = "psycopg2-2.7.3.1.tar.gz", hash = "sha256:9b7b16e26448b43cf167f785d8b5345007731ebf153a510e12dae826800caa65"}, ] ptyprocess = [ - {file = "ptyprocess-0.6.0-py2.py3-none-any.whl", hash = "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"}, - {file = "ptyprocess-0.6.0.tar.gz", hash = "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0"}, + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] py-asterisk = [ {file = "py-Asterisk-0.5.18.tar.gz", hash = "sha256:f2e9319626bbc5346ac9cbddfb73480d5fcdf25c1e9d78775c3061a1c01462f1"}, @@ -3972,58 +4288,61 @@ py-asterisk = [ {file = "py3o.template-0.10.0.tar.gz", hash = "sha256:ea544e76ad519172fc49a621e999a1438fc8aa8869762db913fbc336518606d3"}, ] pycodestyle = [ - {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, - {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, + {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, + {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, ] pycountry = [ - {file = "pycountry-20.7.3.tar.gz", hash = "sha256:81084a53d3454344c0292deebc20fcd0a1488c136d4900312cbd465cf552cb42"}, + {file = "pycountry-22.1.10.tar.gz", hash = "sha256:b9a6d9cdbf53f81ccdf73f6f5de01b0d8493cab2213a230af3e34458de85ea32"}, ] 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"}, +] +pycrypto = [ + {file = "pycrypto-2.6.1.tar.gz", hash = "sha256:f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c"}, ] pycryptodome = [ - {file = "pycryptodome-3.10.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1c5e1ca507de2ad93474be5cfe2bfa76b7cf039a1a32fc196f40935944871a06"}, - {file = "pycryptodome-3.10.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:6260e24d41149268122dd39d4ebd5941e9d107f49463f7e071fd397e29923b0c"}, - {file = "pycryptodome-3.10.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:3f840c49d38986f6e17dbc0673d37947c88bc9d2d9dba1c01b979b36f8447db1"}, - {file = "pycryptodome-3.10.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:2dea65df54349cdfa43d6b2e8edb83f5f8d6861e5cf7b1fbc3e34c5694c85e27"}, - {file = "pycryptodome-3.10.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:e61e363d9a5d7916f3a4ce984a929514c0df3daf3b1b2eb5e6edbb131ee771cf"}, - {file = "pycryptodome-3.10.1-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:2603c98ae04aac675fefcf71a6c87dc4bb74a75e9071ae3923bbc91a59f08d35"}, - {file = "pycryptodome-3.10.1-cp27-cp27m-win32.whl", hash = "sha256:38661348ecb71476037f1e1f553159b80d256c00f6c0b00502acac891f7116d9"}, - {file = "pycryptodome-3.10.1-cp27-cp27m-win_amd64.whl", hash = "sha256:1723ebee5561628ce96748501cdaa7afaa67329d753933296321f0be55358dce"}, - {file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:77997519d8eb8a4adcd9a47b9cec18f9b323e296986528186c0e9a7a15d6a07e"}, - {file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:99b2f3fc51d308286071d0953f92055504a6ffe829a832a9fc7a04318a7683dd"}, - {file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e0a4d5933a88a2c98bbe19c0c722f5483dc628d7a38338ac2cb64a7dbd34064b"}, - {file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d3d6958d53ad307df5e8469cc44474a75393a434addf20ecd451f38a72fe29b8"}, - {file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:a8eb8b6ea09ec1c2535bf39914377bc8abcab2c7d30fa9225eb4fe412024e427"}, - {file = "pycryptodome-3.10.1-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:31c1df17b3dc5f39600a4057d7db53ac372f492c955b9b75dd439f5d8b460129"}, - {file = "pycryptodome-3.10.1-cp35-abi3-manylinux1_i686.whl", hash = "sha256:a3105a0eb63eacf98c2ecb0eb4aa03f77f40fbac2bdde22020bb8a536b226bb8"}, - {file = "pycryptodome-3.10.1-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:a92d5c414e8ee1249e850789052608f582416e82422502dc0ac8c577808a9067"}, - {file = "pycryptodome-3.10.1-cp35-abi3-manylinux2010_i686.whl", hash = "sha256:60386d1d4cfaad299803b45a5bc2089696eaf6cdd56f9fc17479a6f89595cfc8"}, - {file = "pycryptodome-3.10.1-cp35-abi3-manylinux2010_x86_64.whl", hash = "sha256:501ab36aae360e31d0ec370cf5ce8ace6cb4112060d099b993bc02b36ac83fb6"}, - {file = "pycryptodome-3.10.1-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:fc7489a50323a0df02378bc2fff86eb69d94cc5639914346c736be981c6a02e7"}, - {file = "pycryptodome-3.10.1-cp35-abi3-win32.whl", hash = "sha256:9b6f711b25e01931f1c61ce0115245a23cdc8b80bf8539ac0363bdcf27d649b6"}, - {file = "pycryptodome-3.10.1-cp35-abi3-win_amd64.whl", hash = "sha256:7fd519b89585abf57bf47d90166903ec7b43af4fe23c92273ea09e6336af5c07"}, - {file = "pycryptodome-3.10.1-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:09c1555a3fa450e7eaca41ea11cd00afe7c91fef52353488e65663777d8524e0"}, - {file = "pycryptodome-3.10.1-pp27-pypy_73-manylinux1_x86_64.whl", hash = "sha256:758949ca62690b1540dfb24ad773c6da9cd0e425189e83e39c038bbd52b8e438"}, - {file = "pycryptodome-3.10.1-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:e3bf558c6aeb49afa9f0c06cee7fb5947ee5a1ff3bd794b653d39926b49077fa"}, - {file = "pycryptodome-3.10.1-pp27-pypy_73-win32.whl", hash = "sha256:f977cdf725b20f6b8229b0c87acb98c7717e742ef9f46b113985303ae12a99da"}, - {file = "pycryptodome-3.10.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6d2df5223b12437e644ce0a3be7809471ffa71de44ccd28b02180401982594a6"}, - {file = "pycryptodome-3.10.1-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:98213ac2b18dc1969a47bc65a79a8fca02a414249d0c8635abb081c7f38c91b6"}, - {file = "pycryptodome-3.10.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:12222a5edc9ca4a29de15fbd5339099c4c26c56e13c2ceddf0b920794f26165d"}, - {file = "pycryptodome-3.10.1-pp36-pypy36_pp73-win32.whl", hash = "sha256:6bbf7fee7b7948b29d7e71fcacf48bac0c57fb41332007061a933f2d996f9713"}, - {file = "pycryptodome-3.10.1.tar.gz", hash = "sha256:3e2e3a06580c5f190df843cdb90ea28d61099cf4924334d5297a995de68e4673"}, + {file = "pycryptodome-3.12.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:90ad3381ccdc6a24cc2841e295706a168f32abefe64c679695712acac71fd5da"}, + {file = "pycryptodome-3.12.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e80f7469b0b3ea0f694230477d8501dc5a30a717e94fddd4821e6721f3053eae"}, + {file = "pycryptodome-3.12.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:b91404611767a7485837a6f1fd20cf9a5ae0ad362040a022cd65827ecb1b0d00"}, + {file = "pycryptodome-3.12.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:db66ccda65d5d20c17b00768e462a86f6f540f9aea8419a7f76cc7d9effd82cd"}, + {file = "pycryptodome-3.12.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:dc88355c4b261ed259268e65705b28b44d99570337694d593f06e3b1698eaaf3"}, + {file = "pycryptodome-3.12.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:6f8f5b7b53516da7511951910ab458e799173722c91fea54e2ba2f56d102e4aa"}, + {file = "pycryptodome-3.12.0-cp27-cp27m-win32.whl", hash = "sha256:93acad54a72d81253242eb0a15064be559ec9d989e5173286dc21cad19f01765"}, + {file = "pycryptodome-3.12.0-cp27-cp27m-win_amd64.whl", hash = "sha256:5a8c24d39d4a237dbfe181ea6593792bf9b5582c7fcfa7b8e0e12fda5eec07af"}, + {file = "pycryptodome-3.12.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:32d15da81959faea6cbed95df2bb44f7f796211c110cf90b5ad3b2aeeb97fc8e"}, + {file = "pycryptodome-3.12.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:aed7eb4b64c600fbc5e6d4238991ad1b4179a558401f203d1fcbd24883748982"}, + {file = "pycryptodome-3.12.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:341c6bbf932c406b4f3ee2372e8589b67ac0cf4e99e7dc081440f43a3cde9f0f"}, + {file = "pycryptodome-3.12.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:de0b711d673904dd6c65307ead36cb76622365a393569bf880895cba21195b7a"}, + {file = "pycryptodome-3.12.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:3558616f45d8584aee3eba27559bc6fd0ba9be6c076610ed3cc62bd5229ffdc3"}, + {file = "pycryptodome-3.12.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a78e4324e566b5fbc2b51e9240950d82fa9e1c7eb77acdf27f58712f65622c1d"}, + {file = "pycryptodome-3.12.0-cp35-abi3-manylinux1_i686.whl", hash = "sha256:3f2f3dd596c6128d91314e60a6bcf4344610ef0e97f4ae4dd1770f86dd0748d8"}, + {file = "pycryptodome-3.12.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:e05f994f30f1cda3cbe57441f41220d16731cf99d868bb02a8f6484c454c206b"}, + {file = "pycryptodome-3.12.0-cp35-abi3-manylinux2010_i686.whl", hash = "sha256:4cded12e13785bbdf4ba1ff5fb9d261cd98162145f869e4fbc4a4b9083392f0b"}, + {file = "pycryptodome-3.12.0-cp35-abi3-manylinux2010_x86_64.whl", hash = "sha256:1181c90d1a6aee68a84826825548d0db1b58d8541101f908d779d601d1690586"}, + {file = "pycryptodome-3.12.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:6bb0d340c93bcb674ea8899e2f6408ec64c6c21731a59481332b4b2a8143cc60"}, + {file = "pycryptodome-3.12.0-cp35-abi3-win32.whl", hash = "sha256:39da5807aa1ff820799c928f745f89432908bf6624b9e981d2d7f9e55d91b860"}, + {file = "pycryptodome-3.12.0-cp35-abi3-win_amd64.whl", hash = "sha256:212c7f7fe11cad9275fbcff50ca977f1c6643f13560d081e7b0f70596df447b8"}, + {file = "pycryptodome-3.12.0-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:b07a4238465eb8c65dd5df2ab8ba6df127e412293c0ed7656c003336f557a100"}, + {file = "pycryptodome-3.12.0-pp27-pypy_73-manylinux1_x86_64.whl", hash = "sha256:a6e1bcd9d5855f1a3c0f8d585f44c81b08f39a02754007f374fb8db9605ba29c"}, + {file = "pycryptodome-3.12.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:aceb1d217c3a025fb963849071446cf3aca1353282fe1c3cb7bd7339a4d47947"}, + {file = "pycryptodome-3.12.0-pp27-pypy_73-win32.whl", hash = "sha256:f699360ae285fcae9c8f53ca6acf33796025a82bb0ccd7c1c551b04c1726def3"}, + {file = "pycryptodome-3.12.0-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d845c587ceb82ac7cbac7d0bf8c62a1a0fe7190b028b322da5ca65f6e5a18b9e"}, + {file = "pycryptodome-3.12.0-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:d8083de50f6dec56c3c6f270fb193590999583a1b27c9c75bc0b5cac22d438cc"}, + {file = "pycryptodome-3.12.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:9ea2f6674c803602a7c0437fccdc2ea036707e60456974fe26ca263bd501ec45"}, + {file = "pycryptodome-3.12.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:5d4264039a2087977f50072aaff2346d1c1c101cb359f9444cf92e3d1f42b4cd"}, + {file = "pycryptodome-3.12.0.zip", hash = "sha256:12c7343aec5a3b3df5c47265281b12b611f26ec9367b6129199d67da54b768c1"}, ] pydot = [ {file = "pydot-1.2.3.tar.gz", hash = "sha256:edb5d3f249f97fbd9c4bb16959e61bc32ecf40eee1a9f6d27abe8d01c0a73502"}, ] pyflakes = [ - {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, - {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, + {file = "pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"}, + {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, ] pygments = [ - {file = "Pygments-2.6.1-py3-none-any.whl", hash = "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324"}, - {file = "Pygments-2.6.1.tar.gz", hash = "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44"}, + {file = "Pygments-2.10.0-py3-none-any.whl", hash = "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380"}, + {file = "Pygments-2.10.0.tar.gz", hash = "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"}, ] pygount = [ {file = "pygount-1.1.0-py3-none-any.whl", hash = "sha256:253aff3b9c247e42208bf7f5fd46bebe4bbc221446095cd06df72addaf36bbc3"}, @@ -4048,8 +4367,8 @@ pyldap = [ {file = "pyldap-2.4.28.tar.gz", hash = "sha256:d38f31018f0c15925f50aec39f7255c15463f98797af53931e0e2a9ac21f6661"}, ] pylint = [ - {file = "pylint-2.6.0-py3-none-any.whl", hash = "sha256:bfe68f020f8a0fece830a22dd4d5dddb4ecc6137db04face4c3420a46a52239f"}, - {file = "pylint-2.6.0.tar.gz", hash = "sha256:bb4a908c9dadbc3aac18860550e870f58e1a02c9f2c204fdf5693d73be061210"}, + {file = "pylint-2.11.1-py3-none-any.whl", hash = "sha256:0f358e221c45cbd4dad2a1e4b883e75d28acdcccd29d40c76eb72b307269b126"}, + {file = "pylint-2.11.1.tar.gz", hash = "sha256:2c9843fff1a88ca0ad98a256806c82c5a8f86086e7ccbdb93297d86c3f90c436"}, ] pylint-odoo = [] pylint-plugin-utils = [ @@ -4057,48 +4376,51 @@ pylint-plugin-utils = [ {file = "pylint_plugin_utils-0.6-py3-none-any.whl", hash = "sha256:2f30510e1c46edf268d3a195b2849bd98a1b9433229bb2ba63b8d776e1fc4d0a"}, ] pymssql = [ - {file = "pymssql-2.2.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0fc1723898fba044cd7e63741eb2dfbd09083aca5b9365b88e1757786bb559ac"}, - {file = "pymssql-2.2.2-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:645e0b90bf969464e1f6868270c81bb1ac2f7b00bc793dc06eed15068f39dfd6"}, - {file = "pymssql-2.2.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:03469104efd5e5469b6c1892a0393e1fb4cd3169422e88537bec1b4294c98528"}, - {file = "pymssql-2.2.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ab97afa1a5bd7bceb45fb0ab3c6387dfa138752115441babfa4e7988036d4d7"}, - {file = "pymssql-2.2.2-cp36-cp36m-manylinux_2_24_i686.whl", hash = "sha256:3655b20f08efa9d5127c1d9d2da5d5c7a0206a55e37a0b5e45620c30d7461948"}, - {file = "pymssql-2.2.2-cp36-cp36m-manylinux_2_24_x86_64.whl", hash = "sha256:494471e3df2f27668f65025be2a62807ea7df4776d5a1717710ce7b5b42a1b6d"}, - {file = "pymssql-2.2.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:66b121b0ccb38ec240701fd0fd04d8d5923385b03950d930eff1936ec455afe9"}, - {file = "pymssql-2.2.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:642b423d0f78ec2a5c2fb31ed248399ac43dce2a8abec11b4a9fe0e7f1a38c5d"}, - {file = "pymssql-2.2.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:c3d860cf0e5685675bf06146eb5a0457589580dd04c41571efe940cbc0c2de4e"}, - {file = "pymssql-2.2.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:bd00d3fab48fc931db305e378f706ce73abc8aba0969fdf8fb2ac6df00d6e4ad"}, - {file = "pymssql-2.2.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9912b240ca776d7e842b44ed858b4946aaeb1863da9410f3cd4d241afcf0a99f"}, - {file = "pymssql-2.2.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a563cccc730cf25af262a767746451e3b11c243c9fa2c141f23d7a9b3c808ce6"}, - {file = "pymssql-2.2.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9987a0af5bc66dd9bd9391ec2f24cbc53bf0bd1ca3f581bc183bfd4ca5ddc204"}, - {file = "pymssql-2.2.2-cp37-cp37m-manylinux_2_24_i686.whl", hash = "sha256:26f365b03893179dee76bb337315d99f4605c1634dd5538ed85dd1822eb41e71"}, - {file = "pymssql-2.2.2-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:0423cc3b3fc6ea249b13794d727e6e727bc070a14a7840977ae92117d3d091bd"}, - {file = "pymssql-2.2.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:50e81c18aceaf2e254e0085d503451429210896f0d27912fb928329b1eda00cd"}, - {file = "pymssql-2.2.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:553e6b7f6fbb1da6167b58a6ed7f8ff5261a073fa04d7b72a8384659c9bcb06f"}, - {file = "pymssql-2.2.2-cp37-cp37m-win32.whl", hash = "sha256:70a68a95a072199522433b84fe4996157ddb64a1d008435aa54d4b9f004831b7"}, - {file = "pymssql-2.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6e37b57d1f0c40c4cee9a75fb55964fc6685d2223dbedf9bd1b87f0274e118cc"}, - {file = "pymssql-2.2.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:41fbb522decbd7f225f72ac1e2ccf7bb343c58f516ea3165855245b7e22877d2"}, - {file = "pymssql-2.2.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a9f28819181b386c45de261c289bdec15f87807d3c03e61b00fa85beffbed621"}, - {file = "pymssql-2.2.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f7eedf5b8bd55115a2cab130068b4dccb526fbe8c7bab54468ec31feeb6513d3"}, - {file = "pymssql-2.2.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cab9ecb7cec689177955728d116788be27fc65b9d4001ba8e6d8c6e5a5ddf677"}, - {file = "pymssql-2.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71f4eeb68a12981095b62e3170c94a5414f3c428aa90fd7bd3b4ce751d578912"}, - {file = "pymssql-2.2.2-cp38-cp38-manylinux_2_24_i686.whl", hash = "sha256:463308e52e978d6b7301bbcdf47f866163a57f0783ec0b581e196d7752d05811"}, - {file = "pymssql-2.2.2-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:7432101f86151a93e77b00c5f36cef0ecd2ac6029d1f9751656647c05ab9ee93"}, - {file = "pymssql-2.2.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6988e0e0683fb46b59349927453afc7d75a745aff71d801ebf9ba699e4d815f5"}, - {file = "pymssql-2.2.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:16d2bd236ef02052b96025d0ca0de436182e36cd95afe7617d8106d2ff7f9485"}, - {file = "pymssql-2.2.2-cp38-cp38-win32.whl", hash = "sha256:16907b8d272945ee8861ef13c9657348d2aee1e06434e4a0487988eb1b6938c8"}, - {file = "pymssql-2.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:846a90124e4798a5957996653d71b5ec49931c99fe91b5d9f0e73cdca51e85d3"}, - {file = "pymssql-2.2.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b243405d6e24a35f123d8a4a3258659fc920a23b2f2b3dbaace097c093f45dba"}, - {file = "pymssql-2.2.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0440a138eaac30a449cab497757a849b40c2d0b180b48a8c4151de9bf3bf7e61"}, - {file = "pymssql-2.2.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:27c4d80c3086ed56ccf93dc03262db7a823d8979dd17e84c8f629a0eeef0526d"}, - {file = "pymssql-2.2.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:182c6f3a3ba67bf7f750cfce0b3c20abb588b5ae0ffa9387645f0dfd76791b7a"}, - {file = "pymssql-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae5c4f582d45fed36bbdc1ebf960f6dbe227c6666e3a927f8c99b76e9e18de7b"}, - {file = "pymssql-2.2.2-cp39-cp39-manylinux_2_24_i686.whl", hash = "sha256:9755267acc83568adc4e89cc5668424d34ef651d0a2e827304e7f995b5dcbca8"}, - {file = "pymssql-2.2.2-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:0932ed12474cb926a33ba5b623506d29cf1c170e2ea7ca75f342bb5fe3a67906"}, - {file = "pymssql-2.2.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b8c3bb372a6609f5e46a6702f18bc8370e0f4a53f73ef8559e4a7df58ae4afa"}, - {file = "pymssql-2.2.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4df67d7c6e2cd99cbf8a1c2d4236a3b81c3bbd7602b95a211ff4da7460ffa83c"}, - {file = "pymssql-2.2.2-cp39-cp39-win32.whl", hash = "sha256:00b5d8d0e6e99dd07677f663a42fe3b53285db02682f9ea8271dab0e30e4404f"}, - {file = "pymssql-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:213fc0f970324ed5eac25d9442e5b516724f65ed1a96ed6c0a474dd7419b6a97"}, - {file = "pymssql-2.2.2.tar.gz", hash = "sha256:db3b31b1e73a856aa5a5181ff9f2b0c595611f5661aaeffee7c12a4a57b62fc8"}, + {file = "pymssql-2.2.3-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:852fe689b4630aa453eb02b091240d98e07eb60fd7a3c150396d0eb7fa10780a"}, + {file = "pymssql-2.2.3-cp310-cp310-win32.whl", hash = "sha256:2bffb7d07a3914b73086a17583f0a0ca68dfc93f7c70b3e214beeacbd2339e12"}, + {file = "pymssql-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:75e65e53f5014f24dae8c150f532e9313ce0c166123b0951a334d61ada0aaece"}, + {file = "pymssql-2.2.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d90eb4dd06f1b8eb4805d137e8a0747665ec15c46736a4f1cc01afe6da4d07b7"}, + {file = "pymssql-2.2.3-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:52a8163fcbdb1ebe2756d5a9f439ea8f30b9748855e782c1f98465050e8bab61"}, + {file = "pymssql-2.2.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:873d026423768f4e1ec0b452ff9fe951beb4632e3f314c19b22a30586db1de02"}, + {file = "pymssql-2.2.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cb52bf5d0eabf510b1ebc8b38e71cd3ca877e69e0e424f15e1f7b319e49b10e"}, + {file = "pymssql-2.2.3-cp36-cp36m-manylinux_2_24_i686.whl", hash = "sha256:d402ed357f5da445a29a6a844ac4359872d3870e6ee034ec049e83095d6cd00e"}, + {file = "pymssql-2.2.3-cp36-cp36m-manylinux_2_24_x86_64.whl", hash = "sha256:538b5a4ca9b4bd3f0719acb608e08e1d586a08ed9ed0d7ea1ffa3ef03518df68"}, + {file = "pymssql-2.2.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0bc2e51739d932fc7af44354c00297baa451f99a3e3d7a59a6aa3be5b2534076"}, + {file = "pymssql-2.2.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3f7def19af5af2d83f2f7559b67ae37315d76807e4e6d7957d53755f982d1d8b"}, + {file = "pymssql-2.2.3-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:0a1ccec4eb9bb35ad9f211428793fd29e59f3902279ad2903133d6c2081550c1"}, + {file = "pymssql-2.2.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5cc68a295207ced45c0155e263ecdd249cbcfac2d77a58d2dbda5c54a532044f"}, + {file = "pymssql-2.2.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8eaba0e0fe013dd727f960e7d025071d3b03123eb41b9fc11f225728e00cc2b4"}, + {file = "pymssql-2.2.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d06c950d13c198a6a70f846298d3f4ba820b998341b61c487049c3e5dd19223"}, + {file = "pymssql-2.2.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b13bc9d7c82ef24fd2df690747e99160bd6611d97b875518757836ab3c3fea0"}, + {file = "pymssql-2.2.3-cp37-cp37m-manylinux_2_24_i686.whl", hash = "sha256:2c08ed13f090b9df251ba2590a1316939dea1744679ec3f164968e4b51263b53"}, + {file = "pymssql-2.2.3-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:6bfd0859201095b4a8913e88ec9999c72053e2f92aa05413b32ac5855970b726"}, + {file = "pymssql-2.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:860979466f9dd6d7d20fb83db2498aa67bab172a85e660a93a93c9d716b8e268"}, + {file = "pymssql-2.2.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7b7d04c3abf78961d04c5c620118e5b34589619cd9f7a95a4dbc439186095bc4"}, + {file = "pymssql-2.2.3-cp37-cp37m-win32.whl", hash = "sha256:bd6b49ad64026eac1b23c2ab8d237b81d0eb83fc3872562b9101cc970581735d"}, + {file = "pymssql-2.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:7d3ccb1fe4fa957ad0d430c0efa342c3ead9fd3d546cc867042b146620d524ee"}, + {file = "pymssql-2.2.3-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8f81d90d711a151a72960e3ad1dd8cb71b9d288979e1ead913e1e654e7ee504d"}, + {file = "pymssql-2.2.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6a09fb8456279acd87615708a60bc299640e0be149a117508eba6f1c4ad0fb3e"}, + {file = "pymssql-2.2.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec76e9773d7af22f39cc902e92946f453efec1af3037e8b95dcdf568d3bdbee2"}, + {file = "pymssql-2.2.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d995b0e20961e4366ecbef34faf2ef8a05a963780fb5f7ca35c07c61369c889"}, + {file = "pymssql-2.2.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de6aa047efe4ba438261477ebcb11bba6d913bbaae114d55d95f04760c3be6df"}, + {file = "pymssql-2.2.3-cp38-cp38-manylinux_2_24_i686.whl", hash = "sha256:6ee59e594c10bd7dab7776ff6278f318625b79d7c8e9ef9813af6bd953d7d748"}, + {file = "pymssql-2.2.3-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:fc103b304a9bf2a6f92f2dee12b6a9212000781c17a9aa280621cd09f0f5eda0"}, + {file = "pymssql-2.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e83e049b1d7a64d5aab9fc31477ebeb7ae4a0dcd40f273ee5cfd22b3ed87004d"}, + {file = "pymssql-2.2.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:46a8ad501353de0539b35d4a8b6a0f27430e9e240377673b42e9aceedb5313e4"}, + {file = "pymssql-2.2.3-cp38-cp38-win32.whl", hash = "sha256:df3c039679df3ce1ad3e55a8daccfd5afd65d2e2aed738515ecad6ad778fb160"}, + {file = "pymssql-2.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:aab0a93cab37273228b859cf674449b0781df605a26739b72e5bb029682bd618"}, + {file = "pymssql-2.2.3-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:8a526ae0ce3f3c9acdfc4db1e61cf82bac528ee2848496c7d7eb25881e4824af"}, + {file = "pymssql-2.2.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b21db3e4e946b947076b915cc2a91e5c052ff1c81409fb33f1d954554600e866"}, + {file = "pymssql-2.2.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4cc13762966ddd1e06d324662bee967fdbc8924872cde4a891556f0401ef9de0"}, + {file = "pymssql-2.2.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:deab7a7e9dfaf11f04234d60faa821244fb820db104dc5c47aedf8c4751d9c6b"}, + {file = "pymssql-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ded7fca8bf196b86c1cccb833960b48d946b437849a08a8a25c476ab1b335fb"}, + {file = "pymssql-2.2.3-cp39-cp39-manylinux_2_24_i686.whl", hash = "sha256:f53203f91baa569606c1731d2ac4fb5d79cbce28fa7d902a2938c31a96b984e5"}, + {file = "pymssql-2.2.3-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:d4f6ae1888fc41e2fabfad16806699c0b0ffdc1ac22c2962f5918c69b5d58ca6"}, + {file = "pymssql-2.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8ab926fc78108e9e76e844794b5de5fca20ed2f0326d788ecc529072ce9bd6c0"}, + {file = "pymssql-2.2.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d9cc4ef9ce01f14ab435e72914719a0f37999bae60b82d50bd1f0ce865083011"}, + {file = "pymssql-2.2.3-cp39-cp39-win32.whl", hash = "sha256:ddd9c6ddf8966292d3a4f1eff27757d91d7f572f8b8c34ec3aa0eebb1c1f5da2"}, + {file = "pymssql-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:496ad5ee139f6d15c5006f614e602891f89740205e58b3aee67d9a22e6bc941c"}, + {file = "pymssql-2.2.3.tar.gz", hash = "sha256:b94fddc6d5f168205d14294d36969025967ff1837adcc1664c19968de61dca80"}, ] pymysql = [ {file = "PyMySQL-1.0.2-py3-none-any.whl", hash = "sha256:41fc3a0c5013d5f039639442321185532e3e2c8924687abe6537de157d403641"}, @@ -4167,7 +4489,27 @@ pyproj = [ {file = "pyproj-3.2.1.tar.gz", hash = "sha256:4a936093825ff55b24c1fc6cc093541fcf6d0f6d406589ed699e62048ebf3877"}, ] pyrsistent = [ - {file = "pyrsistent-0.16.0.tar.gz", hash = "sha256:28669905fe725965daa16184933676547c5bb40a5153055a8dee2a4bd7933ad3"}, + {file = "pyrsistent-0.18.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f4c8cabb46ff8e5d61f56a037974228e978f26bfefce4f61a4b1ac0ba7a2ab72"}, + {file = "pyrsistent-0.18.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:da6e5e818d18459fa46fac0a4a4e543507fe1110e808101277c5a2b5bab0cd2d"}, + {file = "pyrsistent-0.18.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5e4395bbf841693eaebaa5bb5c8f5cdbb1d139e07c975c682ec4e4f8126e03d2"}, + {file = "pyrsistent-0.18.0-cp36-cp36m-win32.whl", hash = "sha256:527be2bfa8dc80f6f8ddd65242ba476a6c4fb4e3aedbf281dfbac1b1ed4165b1"}, + {file = "pyrsistent-0.18.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2aaf19dc8ce517a8653746d98e962ef480ff34b6bc563fc067be6401ffb457c7"}, + {file = "pyrsistent-0.18.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58a70d93fb79dc585b21f9d72487b929a6fe58da0754fa4cb9f279bb92369396"}, + {file = "pyrsistent-0.18.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4916c10896721e472ee12c95cdc2891ce5890898d2f9907b1b4ae0f53588b710"}, + {file = "pyrsistent-0.18.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:73ff61b1411e3fb0ba144b8f08d6749749775fe89688093e1efef9839d2dcc35"}, + {file = "pyrsistent-0.18.0-cp37-cp37m-win32.whl", hash = "sha256:b29b869cf58412ca5738d23691e96d8aff535e17390128a1a52717c9a109da4f"}, + {file = "pyrsistent-0.18.0-cp37-cp37m-win_amd64.whl", hash = "sha256:097b96f129dd36a8c9e33594e7ebb151b1515eb52cceb08474c10a5479e799f2"}, + {file = "pyrsistent-0.18.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:772e94c2c6864f2cd2ffbe58bb3bdefbe2a32afa0acb1a77e472aac831f83427"}, + {file = "pyrsistent-0.18.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c1a9ff320fa699337e05edcaae79ef8c2880b52720bc031b219e5b5008ebbdef"}, + {file = "pyrsistent-0.18.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cd3caef37a415fd0dae6148a1b6957a8c5f275a62cca02e18474608cb263640c"}, + {file = "pyrsistent-0.18.0-cp38-cp38-win32.whl", hash = "sha256:e79d94ca58fcafef6395f6352383fa1a76922268fa02caa2272fff501c2fdc78"}, + {file = "pyrsistent-0.18.0-cp38-cp38-win_amd64.whl", hash = "sha256:a0c772d791c38bbc77be659af29bb14c38ced151433592e326361610250c605b"}, + {file = "pyrsistent-0.18.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d5ec194c9c573aafaceebf05fc400656722793dac57f254cd4741f3c27ae57b4"}, + {file = "pyrsistent-0.18.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:6b5eed00e597b5b5773b4ca30bd48a5774ef1e96f2a45d105db5b4ebb4bca680"}, + {file = "pyrsistent-0.18.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:48578680353f41dca1ca3dc48629fb77dfc745128b56fc01096b2530c13fd426"}, + {file = "pyrsistent-0.18.0-cp39-cp39-win32.whl", hash = "sha256:f3ef98d7b76da5eb19c37fda834d50262ff9167c65658d1d8f974d2e4d90676b"}, + {file = "pyrsistent-0.18.0-cp39-cp39-win_amd64.whl", hash = "sha256:404e1f1d254d314d55adb8d87f4f465c8693d6f902f67eb6ef5b4526dc58e6ea"}, + {file = "pyrsistent-0.18.0.tar.gz", hash = "sha256:773c781216f8c2900b42a7b638d5b517bb134ae1acbebe4d1e8f1f41ea60eb4b"}, ] pyserial = [ {file = "pyserial-3.1.1-py2.py3-none-any.whl", hash = "sha256:b4fcd6a7d329c844781df80fb06a4a9e21f3ac5623a687a975cbce8a8e4a82d2"}, @@ -4206,8 +4548,8 @@ python-slugify = [ {file = "python_slugify-5.0.2-py2.py3-none-any.whl", hash = "sha256:6d8c5df75cd4a7c3a2d21e257633de53f52ab0265cd2d1dc62a730e8194a7380"}, ] python-stdnum = [ - {file = "python-stdnum-1.16.tar.gz", hash = "sha256:4248d898042a801fc4eff96fbfe4bf63a43324854efe3b5534718c1c195c6f43"}, - {file = "python_stdnum-1.16-py2.py3-none-any.whl", hash = "sha256:2e2c56c548ca166b95547a8d748f4d71320a5b4896960717c8e6380e08d993a5"}, + {file = "python-stdnum-1.17.tar.gz", hash = "sha256:374e2b5e13912ccdbf50b0b23fca2c3e0531174805c32d74e145f37756328340"}, + {file = "python_stdnum-1.17-py2.py3-none-any.whl", hash = "sha256:a46e6cf9652807314d369b654b255c86a59f93d18be2834f3d567ed1a346c547"}, ] python-swiftclient = [ {file = "python-swiftclient-3.9.0.tar.gz", hash = "sha256:4f2097492e4c76e948882fc859bfa033ade09bed72f8e6b328e34a3467d9a377"}, @@ -4227,6 +4569,10 @@ pytz = [ {file = "pytz-2017.3-py3.5.egg", hash = "sha256:699d18a2a56f19ee5698ab1123bbcc1d269d061996aeb1eda6d89248d3542b82"}, {file = "pytz-2017.3.zip", hash = "sha256:fae4cffc040921b8a2d60c6cf0b5d662c1190fe54d718271db4eb17d44a185b7"}, ] +pytz-deprecation-shim = [ + {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"}, + {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"}, +] pyusb = [ {file = "PyUSB-1.0.0.tar.gz", hash = "sha256:5b34ffa74ac34f330bff949c94ee00ec4a9d147234db17ee2eed2a67c0275368"}, ] @@ -4259,27 +4605,80 @@ redis = [ {file = "redis-2.10.5.tar.gz", hash = "sha256:5dfbae6acfc54edf0a7a415b99e0b21c0a3c27a7f787b292eea727b1facc5533"}, ] regex = [ - {file = "regex-2020.7.14-cp27-cp27m-win32.whl", hash = "sha256:e46d13f38cfcbb79bfdb2964b0fe12561fe633caf964a77a5f8d4e45fe5d2ef7"}, - {file = "regex-2020.7.14-cp27-cp27m-win_amd64.whl", hash = "sha256:6961548bba529cac7c07af2fd4d527c5b91bb8fe18995fed6044ac22b3d14644"}, - {file = "regex-2020.7.14-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c50a724d136ec10d920661f1442e4a8b010a4fe5aebd65e0c2241ea41dbe93dc"}, - {file = "regex-2020.7.14-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8a51f2c6d1f884e98846a0a9021ff6861bdb98457879f412fdc2b42d14494067"}, - {file = "regex-2020.7.14-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:9c568495e35599625f7b999774e29e8d6b01a6fb684d77dee1f56d41b11b40cd"}, - {file = "regex-2020.7.14-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:51178c738d559a2d1071ce0b0f56e57eb315bcf8f7d4cf127674b533e3101f88"}, - {file = "regex-2020.7.14-cp36-cp36m-win32.whl", hash = "sha256:9eddaafb3c48e0900690c1727fba226c4804b8e6127ea409689c3bb492d06de4"}, - {file = "regex-2020.7.14-cp36-cp36m-win_amd64.whl", hash = "sha256:14a53646369157baa0499513f96091eb70382eb50b2c82393d17d7ec81b7b85f"}, - {file = "regex-2020.7.14-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:1269fef3167bb52631ad4fa7dd27bf635d5a0790b8e6222065d42e91bede4162"}, - {file = "regex-2020.7.14-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d0a5095d52b90ff38592bbdc2644f17c6d495762edf47d876049cfd2968fbccf"}, - {file = "regex-2020.7.14-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:4c037fd14c5f4e308b8370b447b469ca10e69427966527edcab07f52d88388f7"}, - {file = "regex-2020.7.14-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:bc3d98f621898b4a9bc7fecc00513eec8f40b5b83913d74ccb445f037d58cd89"}, - {file = "regex-2020.7.14-cp37-cp37m-win32.whl", hash = "sha256:46bac5ca10fb748d6c55843a931855e2727a7a22584f302dd9bb1506e69f83f6"}, - {file = "regex-2020.7.14-cp37-cp37m-win_amd64.whl", hash = "sha256:0dc64ee3f33cd7899f79a8d788abfbec168410be356ed9bd30bbd3f0a23a7204"}, - {file = "regex-2020.7.14-cp38-cp38-manylinux1_i686.whl", hash = "sha256:5ea81ea3dbd6767873c611687141ec7b06ed8bab43f68fad5b7be184a920dc99"}, - {file = "regex-2020.7.14-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:bbb332d45b32df41200380fff14712cb6093b61bd142272a10b16778c418e98e"}, - {file = "regex-2020.7.14-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:c11d6033115dc4887c456565303f540c44197f4fc1a2bfb192224a301534888e"}, - {file = "regex-2020.7.14-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:75aaa27aa521a182824d89e5ab0a1d16ca207318a6b65042b046053cfc8ed07a"}, - {file = "regex-2020.7.14-cp38-cp38-win32.whl", hash = "sha256:d6cff2276e502b86a25fd10c2a96973fdb45c7a977dca2138d661417f3728341"}, - {file = "regex-2020.7.14-cp38-cp38-win_amd64.whl", hash = "sha256:7a2dd66d2d4df34fa82c9dc85657c5e019b87932019947faece7983f2089a840"}, - {file = "regex-2020.7.14.tar.gz", hash = "sha256:3a3af27a8d23143c49a3420efe5b3f8cf1a48c6fc8bc6856b03f638abc1833bb"}, + {file = "regex-2021.11.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9345b6f7ee578bad8e475129ed40123d265464c4cfead6c261fd60fc9de00bcf"}, + {file = "regex-2021.11.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:416c5f1a188c91e3eb41e9c8787288e707f7d2ebe66e0a6563af280d9b68478f"}, + {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0538c43565ee6e703d3a7c3bdfe4037a5209250e8502c98f20fea6f5fdf2965"}, + {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee1227cf08b6716c85504aebc49ac827eb88fcc6e51564f010f11a406c0a667"}, + {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6650f16365f1924d6014d2ea770bde8555b4a39dc9576abb95e3cd1ff0263b36"}, + {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30ab804ea73972049b7a2a5c62d97687d69b5a60a67adca07eb73a0ddbc9e29f"}, + {file = "regex-2021.11.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68a067c11463de2a37157930d8b153005085e42bcb7ad9ca562d77ba7d1404e0"}, + {file = "regex-2021.11.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:162abfd74e88001d20cb73ceaffbfe601469923e875caf9118333b1a4aaafdc4"}, + {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9ed0b1e5e0759d6b7f8e2f143894b2a7f3edd313f38cf44e1e15d360e11749b"}, + {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:473e67837f786404570eae33c3b64a4b9635ae9f00145250851a1292f484c063"}, + {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2fee3ed82a011184807d2127f1733b4f6b2ff6ec7151d83ef3477f3b96a13d03"}, + {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d5fd67df77bab0d3f4ea1d7afca9ef15c2ee35dfb348c7b57ffb9782a6e4db6e"}, + {file = "regex-2021.11.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5d408a642a5484b9b4d11dea15a489ea0928c7e410c7525cd892f4d04f2f617b"}, + {file = "regex-2021.11.10-cp310-cp310-win32.whl", hash = "sha256:98ba568e8ae26beb726aeea2273053c717641933836568c2a0278a84987b2a1a"}, + {file = "regex-2021.11.10-cp310-cp310-win_amd64.whl", hash = "sha256:780b48456a0f0ba4d390e8b5f7c661fdd218934388cde1a974010a965e200e12"}, + {file = "regex-2021.11.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:dba70f30fd81f8ce6d32ddeef37d91c8948e5d5a4c63242d16a2b2df8143aafc"}, + {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1f54b9b4b6c53369f40028d2dd07a8c374583417ee6ec0ea304e710a20f80a0"}, + {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbb9dc00e39f3e6c0ef48edee202f9520dafb233e8b51b06b8428cfcb92abd30"}, + {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666abff54e474d28ff42756d94544cdfd42e2ee97065857413b72e8a2d6a6345"}, + {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5537f71b6d646f7f5f340562ec4c77b6e1c915f8baae822ea0b7e46c1f09b733"}, + {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2e07c6a26ed4bea91b897ee2b0835c21716d9a469a96c3e878dc5f8c55bb23"}, + {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ca5f18a75e1256ce07494e245cdb146f5a9267d3c702ebf9b65c7f8bd843431e"}, + {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:74cbeac0451f27d4f50e6e8a8f3a52ca074b5e2da9f7b505c4201a57a8ed6286"}, + {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:3598893bde43091ee5ca0a6ad20f08a0435e93a69255eeb5f81b85e81e329264"}, + {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:50a7ddf3d131dc5633dccdb51417e2d1910d25cbcf842115a3a5893509140a3a"}, + {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:61600a7ca4bcf78a96a68a27c2ae9389763b5b94b63943d5158f2a377e09d29a"}, + {file = "regex-2021.11.10-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:563d5f9354e15e048465061509403f68424fef37d5add3064038c2511c8f5e00"}, + {file = "regex-2021.11.10-cp36-cp36m-win32.whl", hash = "sha256:93a5051fcf5fad72de73b96f07d30bc29665697fb8ecdfbc474f3452c78adcf4"}, + {file = "regex-2021.11.10-cp36-cp36m-win_amd64.whl", hash = "sha256:b483c9d00a565633c87abd0aaf27eb5016de23fed952e054ecc19ce32f6a9e7e"}, + {file = "regex-2021.11.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fff55f3ce50a3ff63ec8e2a8d3dd924f1941b250b0aac3d3d42b687eeff07a8e"}, + {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32d2a2b02ccbef10145df9135751abea1f9f076e67a4e261b05f24b94219e36"}, + {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53db2c6be8a2710b359bfd3d3aa17ba38f8aa72a82309a12ae99d3c0c3dcd74d"}, + {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2207ae4f64ad3af399e2d30dde66f0b36ae5c3129b52885f1bffc2f05ec505c8"}, + {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5ca078bb666c4a9d1287a379fe617a6dccd18c3e8a7e6c7e1eb8974330c626a"}, + {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd33eb9bdcfbabab3459c9ee651d94c842bc8a05fabc95edf4ee0c15a072495e"}, + {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05b7d6d7e64efe309972adab77fc2af8907bb93217ec60aa9fe12a0dad35874f"}, + {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:42b50fa6666b0d50c30a990527127334d6b96dd969011e843e726a64011485da"}, + {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6e1d2cc79e8dae442b3fa4a26c5794428b98f81389af90623ffcc650ce9f6732"}, + {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:0416f7399e918c4b0e074a0f66e5191077ee2ca32a0f99d4c187a62beb47aa05"}, + {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:ce298e3d0c65bd03fa65ffcc6db0e2b578e8f626d468db64fdf8457731052942"}, + {file = "regex-2021.11.10-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dc07f021ee80510f3cd3af2cad5b6a3b3a10b057521d9e6aaeb621730d320c5a"}, + {file = "regex-2021.11.10-cp37-cp37m-win32.whl", hash = "sha256:e71255ba42567d34a13c03968736c5d39bb4a97ce98188fafb27ce981115beec"}, + {file = "regex-2021.11.10-cp37-cp37m-win_amd64.whl", hash = "sha256:07856afef5ffcc052e7eccf3213317fbb94e4a5cd8177a2caa69c980657b3cb4"}, + {file = "regex-2021.11.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba05430e819e58544e840a68b03b28b6d328aff2e41579037e8bab7653b37d83"}, + {file = "regex-2021.11.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7f301b11b9d214f83ddaf689181051e7f48905568b0c7017c04c06dfd065e244"}, + {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aaa4e0705ef2b73dd8e36eeb4c868f80f8393f5f4d855e94025ce7ad8525f50"}, + {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:788aef3549f1924d5c38263104dae7395bf020a42776d5ec5ea2b0d3d85d6646"}, + {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f8af619e3be812a2059b212064ea7a640aff0568d972cd1b9e920837469eb3cb"}, + {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85bfa6a5413be0ee6c5c4a663668a2cad2cbecdee367630d097d7823041bdeec"}, + {file = "regex-2021.11.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f23222527b307970e383433daec128d769ff778d9b29343fb3496472dc20dabe"}, + {file = "regex-2021.11.10-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:da1a90c1ddb7531b1d5ff1e171b4ee61f6345119be7351104b67ff413843fe94"}, + {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f5be7805e53dafe94d295399cfbe5227f39995a997f4fd8539bf3cbdc8f47ca8"}, + {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a955b747d620a50408b7fdf948e04359d6e762ff8a85f5775d907ceced715129"}, + {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:139a23d1f5d30db2cc6c7fd9c6d6497872a672db22c4ae1910be22d4f4b2068a"}, + {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ca49e1ab99593438b204e00f3970e7a5f70d045267051dfa6b5f4304fcfa1dbf"}, + {file = "regex-2021.11.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:96fc32c16ea6d60d3ca7f63397bff5c75c5a562f7db6dec7d412f7c4d2e78ec0"}, + {file = "regex-2021.11.10-cp38-cp38-win32.whl", hash = "sha256:0617383e2fe465732af4509e61648b77cbe3aee68b6ac8c0b6fe934db90be5cc"}, + {file = "regex-2021.11.10-cp38-cp38-win_amd64.whl", hash = "sha256:a3feefd5e95871872673b08636f96b61ebef62971eab044f5124fb4dea39919d"}, + {file = "regex-2021.11.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7f325be2804246a75a4f45c72d4ce80d2443ab815063cdf70ee8fb2ca59ee1b"}, + {file = "regex-2021.11.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:537ca6a3586931b16a85ac38c08cc48f10fc870a5b25e51794c74df843e9966d"}, + {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef2afb0fd1747f33f1ee3e209bce1ed582d1896b240ccc5e2697e3275f037c7"}, + {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:432bd15d40ed835a51617521d60d0125867f7b88acf653e4ed994a1f8e4995dc"}, + {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b43c2b8a330a490daaef5a47ab114935002b13b3f9dc5da56d5322ff218eeadb"}, + {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:962b9a917dd7ceacbe5cd424556914cb0d636001e393b43dc886ba31d2a1e449"}, + {file = "regex-2021.11.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa8c626d6441e2d04b6ee703ef2d1e17608ad44c7cb75258c09dd42bacdfc64b"}, + {file = "regex-2021.11.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3c5fb32cc6077abad3bbf0323067636d93307c9fa93e072771cf9a64d1c0f3ef"}, + {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cd410a1cbb2d297c67d8521759ab2ee3f1d66206d2e4328502a487589a2cb21b"}, + {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e6096b0688e6e14af6a1b10eaad86b4ff17935c49aa774eac7c95a57a4e8c296"}, + {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:529801a0d58809b60b3531ee804d3e3be4b412c94b5d267daa3de7fadef00f49"}, + {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0f594b96fe2e0821d026365f72ac7b4f0b487487fb3d4aaf10dd9d97d88a9737"}, + {file = "regex-2021.11.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2409b5c9cef7054dde93a9803156b411b677affc84fca69e908b1cb2c540025d"}, + {file = "regex-2021.11.10-cp39-cp39-win32.whl", hash = "sha256:3b5df18db1fccd66de15aa59c41e4f853b5df7550723d26aa6cb7f40e5d9da5a"}, + {file = "regex-2021.11.10-cp39-cp39-win_amd64.whl", hash = "sha256:83ee89483672b11f8952b158640d0c0ff02dc43d9cb1b70c1564b49abe92ce29"}, + {file = "regex-2021.11.10.tar.gz", hash = "sha256:f341ee2df0999bfdf7a95e448075effe0db212a59387de1a70690e4acb03d4c6"}, ] reportlab = [ {file = "reportlab-3.3.0-cp27-none-win32.whl", hash = "sha256:5e43daa9e0aa0bf039059534ada27078a225a9dc79c881b76c7a3da2fc8f3122"}, @@ -4314,14 +4713,14 @@ requests-toolbelt = [ {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"}, ] restructuredtext-lint = [ - {file = "restructuredtext_lint-1.3.1.tar.gz", hash = "sha256:470e53b64817211a42805c3a104d2216f6f5834b22fe7adb637d1de4d6501fb8"}, + {file = "restructuredtext_lint-1.3.2.tar.gz", hash = "sha256:d3b10a1fe2ecac537e51ae6d151b223b78de9fafdd50e5eb6b08c243df173c80"}, ] retrying = [ {file = "retrying-1.3.3.tar.gz", hash = "sha256:08c039560a6da2fe4f2c426d0766e284d3b736e355f8dd24b37367b0bb41973b"}, ] rfc3986 = [ - {file = "rfc3986-1.4.0-py2.py3-none-any.whl", hash = "sha256:af9147e9aceda37c91a05f4deb128d4b4b49d6b199775fd2d2927768abdc8f50"}, - {file = "rfc3986-1.4.0.tar.gz", hash = "sha256:112398da31a3344dc25dbf477d8df6cb34f9278a94fee2625d89e4514be8bb9d"}, + {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, + {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, ] s3transfer = [ {file = "s3transfer-0.2.1-py2.py3-none-any.whl", hash = "sha256:b780f2411b824cb541dbcd2c713d0cb61c7d1bcadae204cdddda2b35cef493ba"}, @@ -4330,9 +4729,13 @@ s3transfer = [ schema = [ {file = "schema-0.3.1.tar.gz", hash = "sha256:0b9e883edb898971125112f1737d403ffd777513caf69a44b3b0765239797c18"}, ] +selenium = [ + {file = "selenium-3.141.0-py2.py3-none-any.whl", hash = "sha256:2d7131d7bc5a5b99a2d9b04aaf2612c411b03b8ca1b1ee8d3de5845a9be2cb3c"}, + {file = "selenium-3.141.0.tar.gz", hash = "sha256:deaf32b60ad91a4611b98d8002757f29e6f2c2d5fcaf202e1c9ad06d6772300d"}, +] send2trash = [ - {file = "Send2Trash-1.5.0-py3-none-any.whl", hash = "sha256:f1691922577b6fa12821234aeb57599d887c4900b9ca537948d2dac34aea888b"}, - {file = "Send2Trash-1.5.0.tar.gz", hash = "sha256:60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2"}, + {file = "Send2Trash-1.8.0-py3-none-any.whl", hash = "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"}, + {file = "Send2Trash-1.8.0.tar.gz", hash = "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d"}, ] serial = [ {file = "serial-0.0.97-py2.py3-none-any.whl", hash = "sha256:e887f06e07e190e39174b694eee6724e3c48bd361be1d97964caef5d5b61c73b"}, @@ -4353,56 +4756,71 @@ shapely = [ {file = "Shapely-1.6.4.post2.tar.gz", hash = "sha256:c4b87bb61fc3de59fc1f85e71a79b0c709dc68364d9584473697aad4aa13240f"}, ] simplejson = [ - {file = "simplejson-3.17.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:376023f51edaf7290332dacfb055bc00ce864cb013c0338d0dea48731f37e42f"}, - {file = "simplejson-3.17.5-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b2a5688606dffbe95e1347a05b77eb90489fe337edde888e23bbb7fd81b0d93b"}, - {file = "simplejson-3.17.5-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:3ba82f8b421886f4a2311c43fb98faaf36c581976192349fef2a89ed0fcdbdef"}, - {file = "simplejson-3.17.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:7332f7b06d42153255f7bfeb10266141c08d48cc1a022a35473c95238ff2aebc"}, - {file = "simplejson-3.17.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:c2d5334d935af711f6d6dfeec2d34e071cdf73ec0df8e8bd35ac435b26d8da97"}, - {file = "simplejson-3.17.5-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:417b7e119d66085dc45bdd563dcb2c575ee10a3b1c492dd3502a029448d4be1c"}, - {file = "simplejson-3.17.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:42b7c7264229860fe879be961877f7466d9f7173bd6427b3ba98144a031d49fb"}, - {file = "simplejson-3.17.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5fe8c6dcb9e6f7066bdc07d3c410a2fca78c0d0b4e0e72510ffd20a60a20eb8e"}, - {file = "simplejson-3.17.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:b92fbc2bc549c5045c8233d954f3260ccf99e0f3ec9edfd2372b74b350917752"}, - {file = "simplejson-3.17.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5f7f53b1edd4b23fb112b89208377480c0bcee45d43a03ffacf30f3290e0ed85"}, - {file = "simplejson-3.17.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:40ece8fa730d1a947bff792bcc7824bd02d3ce6105432798e9a04a360c8c07b0"}, - {file = "simplejson-3.17.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:10defa88dd10a0a4763f16c1b5504e96ae6dc68953cfe5fc572b4a8fcaf9409b"}, - {file = "simplejson-3.17.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa86cfdeb118795875855589934013e32895715ec2d9e8eb7a59be3e7e07a7e1"}, - {file = "simplejson-3.17.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ce66f730031b9b3683b2fc6ad4160a18db86557c004c3d490a29bf8d450d7ab9"}, - {file = "simplejson-3.17.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:352c11582aa1e49a2f0f7f7d8fd5ec5311da890d1354287e83c63ab6af857cf5"}, - {file = "simplejson-3.17.5-cp310-cp310-win32.whl", hash = "sha256:8e595de17178dd3bbeb2c5b8ea97536341c63b7278639cb8ee2681a84c0ef037"}, - {file = "simplejson-3.17.5-cp310-cp310-win_amd64.whl", hash = "sha256:cb0afc3bad49eb89a579103616574a54b523856d20fc539a4f7a513a0a8ba4b2"}, - {file = "simplejson-3.17.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ade09aa3c284d11f39640aebdcbb748e1996f0c60504f8c4a0c5a9fec821e67a"}, - {file = "simplejson-3.17.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87572213965fd8a4fb7a97f837221e01d8fddcfb558363c671b8aa93477fb6a2"}, - {file = "simplejson-3.17.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2b59acd09b02da97728d0bae8ff48876d7efcbbb08e569c55e2d0c2e018324f5"}, - {file = "simplejson-3.17.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e29b9cea4216ec130df85d8c36efb9985fda1c9039e4706fb30e0fb6a67602ff"}, - {file = "simplejson-3.17.5-cp36-cp36m-win32.whl", hash = "sha256:f550730d18edec4ff9d4252784b62adfe885d4542946b6d5a54c8a6521b56afd"}, - {file = "simplejson-3.17.5-cp36-cp36m-win_amd64.whl", hash = "sha256:1c2688365743b0f190392e674af5e313ebe9d621813d15f9332e874b7c1f2d04"}, - {file = "simplejson-3.17.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f13c48cc4363829bdfecc0c181b6ddf28008931de54908a492dc8ccd0066cd60"}, - {file = "simplejson-3.17.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a6943816e10028eeed512ea03be52b54ea83108b408d1049b999f58a760089b"}, - {file = "simplejson-3.17.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3d72aa9e73134dacd049a2d6f9bd219f7be9c004d03d52395831611d66cedb71"}, - {file = "simplejson-3.17.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5b94df70bd34a3b946c0eb272022fb0f8a9eb27cad76e7f313fedbee2ebe4317"}, - {file = "simplejson-3.17.5-cp37-cp37m-win32.whl", hash = "sha256:065230b9659ac38c8021fa512802562d122afb0cf8d4b89e257014dcddb5730a"}, - {file = "simplejson-3.17.5-cp37-cp37m-win_amd64.whl", hash = "sha256:86fcffc06f1125cb443e2bed812805739d64ceb78597ac3c1b2d439471a09717"}, - {file = "simplejson-3.17.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:78c6f0ed72b440ebe1892d273c1e5f91e55e6861bea611d3b904e673152a7a4c"}, - {file = "simplejson-3.17.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:36b08b886027eac67e7a0e822e3a5bf419429efad7612e69501669d6252a21f2"}, - {file = "simplejson-3.17.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fe1c33f78d2060719d52ea9459d97d7ae3a5b707ec02548575c4fbed1d1d345b"}, - {file = "simplejson-3.17.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:140eb58809f24d843736edb8080b220417e22c82ac07a3dfa473f57e78216b5f"}, - {file = "simplejson-3.17.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7c9b30a2524ae6983b708f12741a31fbc2fb8d6fecd0b6c8584a62fd59f59e09"}, - {file = "simplejson-3.17.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:24e413bd845bd17d4d72063d64e053898543fb7abc81afeae13e5c43cef9c171"}, - {file = "simplejson-3.17.5-cp38-cp38-win32.whl", hash = "sha256:5f5051a13e7d53430a990604b532c9124253c5f348857e2d5106d45fc8533860"}, - {file = "simplejson-3.17.5-cp38-cp38-win_amd64.whl", hash = "sha256:188f2c78a8ac1eb7a70a4b2b7b9ad11f52181044957bf981fb3e399c719e30ee"}, - {file = "simplejson-3.17.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:457d9cfe7ece1571770381edccdad7fc255b12cd7b5b813219441146d4f47595"}, - {file = "simplejson-3.17.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa843ee0d34c7193f5a816e79df8142faff851549cab31e84b526f04878ac778"}, - {file = "simplejson-3.17.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e2cc4b68e59319e3de778325e34fbff487bfdb2225530e89995402989898d681"}, - {file = "simplejson-3.17.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e90d2e219c3dce1500dda95f5b893c293c4d53c4e330c968afbd4e7a90ff4a5b"}, - {file = "simplejson-3.17.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:917f01db71d5e720b731effa3ff4a2c702a1b6dacad9bcdc580d86a018dfc3ca"}, - {file = "simplejson-3.17.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:07707ba69324eaf58f0c6f59d289acc3e0ed9ec528dae5b0d4219c0d6da27dc5"}, - {file = "simplejson-3.17.5-cp39-cp39-win32.whl", hash = "sha256:2df15814529a4625ea6f7b354a083609b3944c269b954ece0d0e7455872e1b2a"}, - {file = "simplejson-3.17.5-cp39-cp39-win_amd64.whl", hash = "sha256:71a54815ec0212b0cba23adc1b2a731bdd2df7b9e4432718b2ed20e8aaf7f01a"}, - {file = "simplejson-3.17.5.tar.gz", hash = "sha256:91cfb43fb91ff6d1e4258be04eee84b51a4ef40a28d899679b9ea2556322fb50"}, + {file = "simplejson-3.17.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a89acae02b2975b1f8e4974cb8cdf9bf9f6c91162fb8dec50c259ce700f2770a"}, + {file = "simplejson-3.17.6-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:82ff356ff91be0ab2293fc6d8d262451eb6ac4fd999244c4b5f863e049ba219c"}, + {file = "simplejson-3.17.6-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:0de783e9c2b87bdd75b57efa2b6260c24b94605b5c9843517577d40ee0c3cc8a"}, + {file = "simplejson-3.17.6-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:d24a9e61df7a7787b338a58abfba975414937b609eb6b18973e25f573bc0eeeb"}, + {file = "simplejson-3.17.6-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:e8603e691580487f11306ecb066c76f1f4a8b54fb3bdb23fa40643a059509366"}, + {file = "simplejson-3.17.6-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:9b01e7b00654115965a206e3015f0166674ec1e575198a62a977355597c0bef5"}, + {file = "simplejson-3.17.6-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:37bc0cf0e5599f36072077e56e248f3336917ded1d33d2688624d8ed3cefd7d2"}, + {file = "simplejson-3.17.6-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:cf6e7d5fe2aeb54898df18db1baf479863eae581cce05410f61f6b4188c8ada1"}, + {file = "simplejson-3.17.6-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:bdfc54b4468ed4cd7415928cbe782f4d782722a81aeb0f81e2ddca9932632211"}, + {file = "simplejson-3.17.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dd16302d39c4d6f4afde80edd0c97d4db643327d355a312762ccd9bd2ca515ed"}, + {file = "simplejson-3.17.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:deac4bdafa19bbb89edfb73b19f7f69a52d0b5bd3bb0c4ad404c1bbfd7b4b7fd"}, + {file = "simplejson-3.17.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8bbdb166e2fb816e43ab034c865147edafe28e1b19c72433147789ac83e2dda"}, + {file = "simplejson-3.17.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7854326920d41c3b5d468154318fe6ba4390cb2410480976787c640707e0180"}, + {file = "simplejson-3.17.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:04e31fa6ac8e326480703fb6ded1488bfa6f1d3f760d32e29dbf66d0838982ce"}, + {file = "simplejson-3.17.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f63600ec06982cdf480899026f4fda622776f5fabed9a869fdb32d72bc17e99a"}, + {file = "simplejson-3.17.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e03c3b8cc7883a54c3f34a6a135c4a17bc9088a33f36796acdb47162791b02f6"}, + {file = "simplejson-3.17.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a2d30d6c1652140181dc6861f564449ad71a45e4f165a6868c27d36745b65d40"}, + {file = "simplejson-3.17.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a1aa6e4cae8e3b8d5321be4f51c5ce77188faf7baa9fe1e78611f93a8eed2882"}, + {file = "simplejson-3.17.6-cp310-cp310-win32.whl", hash = "sha256:97202f939c3ff341fc3fa84d15db86156b1edc669424ba20b0a1fcd4a796a045"}, + {file = "simplejson-3.17.6-cp310-cp310-win_amd64.whl", hash = "sha256:80d3bc9944be1d73e5b1726c3bbfd2628d3d7fe2880711b1eb90b617b9b8ac70"}, + {file = "simplejson-3.17.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9fa621b3c0c05d965882c920347b6593751b7ab20d8fa81e426f1735ca1a9fc7"}, + {file = "simplejson-3.17.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd2fb11922f58df8528adfca123f6a84748ad17d066007e7ac977720063556bd"}, + {file = "simplejson-3.17.6-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:724c1fe135aa437d5126138d977004d165a3b5e2ee98fc4eb3e7c0ef645e7e27"}, + {file = "simplejson-3.17.6-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4ff4ac6ff3aa8f814ac0f50bf218a2e1a434a17aafad4f0400a57a8cc62ef17f"}, + {file = "simplejson-3.17.6-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:67093a526e42981fdd954868062e56c9b67fdd7e712616cc3265ad0c210ecb51"}, + {file = "simplejson-3.17.6-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:5d6b4af7ad7e4ac515bc6e602e7b79e2204e25dbd10ab3aa2beef3c5a9cad2c7"}, + {file = "simplejson-3.17.6-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:1c9b1ed7ed282b36571638297525f8ef80f34b3e2d600a56f962c6044f24200d"}, + {file = "simplejson-3.17.6-cp36-cp36m-win32.whl", hash = "sha256:632ecbbd2228575e6860c9e49ea3cc5423764d5aa70b92acc4e74096fb434044"}, + {file = "simplejson-3.17.6-cp36-cp36m-win_amd64.whl", hash = "sha256:4c09868ddb86bf79b1feb4e3e7e4a35cd6e61ddb3452b54e20cf296313622566"}, + {file = "simplejson-3.17.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4b6bd8144f15a491c662f06814bd8eaa54b17f26095bb775411f39bacaf66837"}, + {file = "simplejson-3.17.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5decdc78849617917c206b01e9fc1d694fd58caa961be816cb37d3150d613d9a"}, + {file = "simplejson-3.17.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:521877c7bd060470806eb6335926e27453d740ac1958eaf0d8c00911bc5e1802"}, + {file = "simplejson-3.17.6-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:65b998193bd7b0c7ecdfffbc825d808eac66279313cb67d8892bb259c9d91494"}, + {file = "simplejson-3.17.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ac786f6cb7aa10d44e9641c7a7d16d7f6e095b138795cd43503769d4154e0dc2"}, + {file = "simplejson-3.17.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3ff5b3464e1ce86a8de8c88e61d4836927d5595c2162cab22e96ff551b916e81"}, + {file = "simplejson-3.17.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:69bd56b1d257a91e763256d63606937ae4eb890b18a789b66951c00062afec33"}, + {file = "simplejson-3.17.6-cp37-cp37m-win32.whl", hash = "sha256:b81076552d34c27e5149a40187a8f7e2abb2d3185576a317aaf14aeeedad862a"}, + {file = "simplejson-3.17.6-cp37-cp37m-win_amd64.whl", hash = "sha256:07ecaafc1b1501f275bf5acdee34a4ad33c7c24ede287183ea77a02dc071e0c0"}, + {file = "simplejson-3.17.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:068670af975247acbb9fc3d5393293368cda17026db467bf7a51548ee8f17ee1"}, + {file = "simplejson-3.17.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4d1c135af0c72cb28dd259cf7ba218338f4dc027061262e46fe058b4e6a4c6a3"}, + {file = "simplejson-3.17.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:23fe704da910ff45e72543cbba152821685a889cf00fc58d5c8ee96a9bad5f94"}, + {file = "simplejson-3.17.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f444762fed1bc1fd75187ef14a20ed900c1fbb245d45be9e834b822a0223bc81"}, + {file = "simplejson-3.17.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:681eb4d37c9a9a6eb9b3245a5e89d7f7b2b9895590bb08a20aa598c1eb0a1d9d"}, + {file = "simplejson-3.17.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8e8607d8f6b4f9d46fee11447e334d6ab50e993dd4dbfb22f674616ce20907ab"}, + {file = "simplejson-3.17.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b10556817f09d46d420edd982dd0653940b90151d0576f09143a8e773459f6fe"}, + {file = "simplejson-3.17.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e1ec8a9ee0987d4524ffd6299e778c16cc35fef6d1a2764e609f90962f0b293a"}, + {file = "simplejson-3.17.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0b4126cac7d69ac06ff22efd3e0b3328a4a70624fcd6bca4fc1b4e6d9e2e12bf"}, + {file = "simplejson-3.17.6-cp38-cp38-win32.whl", hash = "sha256:35a49ebef25f1ebdef54262e54ae80904d8692367a9f208cdfbc38dbf649e00a"}, + {file = "simplejson-3.17.6-cp38-cp38-win_amd64.whl", hash = "sha256:743cd768affaa508a21499f4858c5b824ffa2e1394ed94eb85caf47ac0732198"}, + {file = "simplejson-3.17.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fb62d517a516128bacf08cb6a86ecd39fb06d08e7c4980251f5d5601d29989ba"}, + {file = "simplejson-3.17.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:12133863178a8080a3dccbf5cb2edfab0001bc41e5d6d2446af2a1131105adfe"}, + {file = "simplejson-3.17.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5540fba2d437edaf4aa4fbb80f43f42a8334206ad1ad3b27aef577fd989f20d9"}, + {file = "simplejson-3.17.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d74ee72b5071818a1a5dab47338e87f08a738cb938a3b0653b9e4d959ddd1fd9"}, + {file = "simplejson-3.17.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:28221620f4dcabdeac310846629b976e599a13f59abb21616356a85231ebd6ad"}, + {file = "simplejson-3.17.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b09bc62e5193e31d7f9876220fb429ec13a6a181a24d897b9edfbbdbcd678851"}, + {file = "simplejson-3.17.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7255a37ff50593c9b2f1afa8fafd6ef5763213c1ed5a9e2c6f5b9cc925ab979f"}, + {file = "simplejson-3.17.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:401d40969cee3df7bda211e57b903a534561b77a7ade0dd622a8d1a31eaa8ba7"}, + {file = "simplejson-3.17.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a649d0f66029c7eb67042b15374bd93a26aae202591d9afd71e111dd0006b198"}, + {file = "simplejson-3.17.6-cp39-cp39-win32.whl", hash = "sha256:522fad7be85de57430d6d287c4b635813932946ebf41b913fe7e880d154ade2e"}, + {file = "simplejson-3.17.6-cp39-cp39-win_amd64.whl", hash = "sha256:3fe87570168b2ae018391e2b43fbf66e8593a86feccb4b0500d134c998983ccc"}, + {file = "simplejson-3.17.6.tar.gz", hash = "sha256:cf98038d2abf63a1ada5730e91e84c642ba6c225b0198c3684151b1f80c5f8a6"}, ] 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"}, ] slimit = [ {file = "slimit-0.8.1.zip", hash = "sha256:f433dcef899f166b207b67d91d3f7344659cb33b8259818f084167244e17720b"}, @@ -4411,23 +4829,23 @@ slugify = [ {file = "slugify-0.0.1.tar.gz", hash = "sha256:c5703cc11c1a6947536f3ce8bb306766b8bb5a84a53717f5a703ce0f18235e4c"}, ] smmap = [ - {file = "smmap-3.0.4-py2.py3-none-any.whl", hash = "sha256:54c44c197c819d5ef1991799a7e30b662d1e520f2ac75c9efbeb54a742214cf4"}, - {file = "smmap-3.0.4.tar.gz", hash = "sha256:9c98bbd1f9786d22f14b3d4126894d56befb835ec90cef151af566c7e19b5d24"}, + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, ] snowballstemmer = [ - {file = "snowballstemmer-2.0.0-py2.py3-none-any.whl", hash = "sha256:209f257d7533fdb3cb73bdbd24f436239ca3b2fa67d56f6ff88e86be08cc5ef0"}, - {file = "snowballstemmer-2.0.0.tar.gz", hash = "sha256:df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52"}, + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, ] soappy = [ {file = "SOAPpy-0.12.22.zip", hash = "sha256:e70845906bb625144ae6a8df4534d66d84431ff8e21835d7b401ec6d8eb447a5"}, ] soupsieve = [ - {file = "soupsieve-1.9.6-py2.py3-none-any.whl", hash = "sha256:feb1e937fa26a69e08436aad4a9037cd7e1d4c7212909502ba30701247ff8abd"}, - {file = "soupsieve-1.9.6.tar.gz", hash = "sha256:7985bacc98c34923a439967c1a602dc4f1e15f923b6fcf02344184f86cc7efaa"}, + {file = "soupsieve-2.3.1-py3-none-any.whl", hash = "sha256:1a3cca2617c6b38c0343ed661b1fa5de5637f257d4fe22bd9f1338010a1efefb"}, + {file = "soupsieve-2.3.1.tar.gz", hash = "sha256:b8d49b1cd4f037c7082a9683dfa1801aa2597fb11c3a1155b7a5b94829b4f1f9"}, ] sphinx = [ - {file = "Sphinx-4.2.0-py3-none-any.whl", hash = "sha256:98a535c62a4fcfcc362528592f69b26f7caec587d32cd55688db580be0287ae0"}, - {file = "Sphinx-4.2.0.tar.gz", hash = "sha256:94078db9184491e15bce0a56d9186e0aec95f16ac20b12d00e06d4e36f1058a6"}, + {file = "Sphinx-4.3.2-py3-none-any.whl", hash = "sha256:6a11ea5dd0bdb197f9c2abc2e0ce73e01340464feaece525e64036546d24c851"}, + {file = "Sphinx-4.3.2.tar.gz", hash = "sha256:0a8836751a68306b3fe97ecbe44db786f8479c3bf4b80e3a7f5c838657b4698c"}, ] sphinx-intl = [ {file = "sphinx-intl-2.0.1.tar.gz", hash = "sha256:b25a6ec169347909e8d983eefe2d8adecb3edc2f27760db79b965c69950638b4"}, @@ -4465,44 +4883,50 @@ sphinxcontrib-serializinghtml = [ {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, ] sqlalchemy = [ - {file = "SQLAlchemy-1.4.25-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:a36ea43919e51b0de0c0bc52bcfdad7683f6ea9fb81b340cdabb9df0e045e0f7"}, - {file = "SQLAlchemy-1.4.25-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:75cd5d48389a7635393ff5a9214b90695c06b3d74912109c3b00ce7392b69c6c"}, - {file = "SQLAlchemy-1.4.25-cp27-cp27m-win32.whl", hash = "sha256:16ef07e102d2d4f974ba9b0d4ac46345a411ad20ad988b3654d59ff08e553b1c"}, - {file = "SQLAlchemy-1.4.25-cp27-cp27m-win_amd64.whl", hash = "sha256:a79abdb404d9256afb8aeaa0d3a4bc7d3b6d8b66103d8b0f2f91febd3909976e"}, - {file = "SQLAlchemy-1.4.25-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7ad59e2e16578b6c1a2873e4888134112365605b08a6067dd91e899e026efa1c"}, - {file = "SQLAlchemy-1.4.25-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a505ecc0642f52e7c65afb02cc6181377d833b7df0994ecde15943b18d0fa89c"}, - {file = "SQLAlchemy-1.4.25-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a28fe28c359835f3be20c89efd517b35e8f97dbb2ca09c6cf0d9ac07f62d7ef6"}, - {file = "SQLAlchemy-1.4.25-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:41a916d815a3a23cb7fff8d11ad0c9b93369ac074e91e428075e088fe57d5358"}, - {file = "SQLAlchemy-1.4.25-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:842c49dd584aedd75c2ee05f6c950730c3ffcddd21c5824ed0f820808387e1e3"}, - {file = "SQLAlchemy-1.4.25-cp36-cp36m-win32.whl", hash = "sha256:6b602e3351f59f3999e9fb8b87e5b95cb2faab6a6ecdb482382ac6fdfbee5266"}, - {file = "SQLAlchemy-1.4.25-cp36-cp36m-win_amd64.whl", hash = "sha256:6400b22e4e41cc27623a9a75630b7719579cd9a3a2027bcf16ad5aaa9a7806c0"}, - {file = "SQLAlchemy-1.4.25-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:dd4ed12a775f2cde4519f4267d3601990a97d8ecde5c944ab06bfd6e8e8ea177"}, - {file = "SQLAlchemy-1.4.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b7778a205f956755e05721eebf9f11a6ac18b2409bff5db53ce5fe7ede79831"}, - {file = "SQLAlchemy-1.4.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:08d9396a2a38e672133266b31ed39b2b1f2b5ec712b5bff5e08033970563316a"}, - {file = "SQLAlchemy-1.4.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e93978993a2ad0af43f132be3ea8805f56b2f2cd223403ec28d3e7d5c6d39ed1"}, - {file = "SQLAlchemy-1.4.25-cp37-cp37m-win32.whl", hash = "sha256:0566a6e90951590c0307c75f9176597c88ef4be2724958ca1d28e8ae05ec8822"}, - {file = "SQLAlchemy-1.4.25-cp37-cp37m-win_amd64.whl", hash = "sha256:0b08a53e40b34205acfeb5328b832f44437956d673a6c09fce55c66ab0e54916"}, - {file = "SQLAlchemy-1.4.25-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:33a1e86abad782e90976de36150d910748b58e02cd7d35680d441f9a76806c18"}, - {file = "SQLAlchemy-1.4.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ed67aae8cde4d32aacbdba4f7f38183d14443b714498eada5e5a7a37769c0b7"}, - {file = "SQLAlchemy-1.4.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ebd69365717becaa1b618220a3df97f7c08aa68e759491de516d1c3667bba54"}, - {file = "SQLAlchemy-1.4.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0cd2d5c7ea96d3230cb20acac3d89de3b593339c1447b4d64bfcf4eac1110"}, - {file = "SQLAlchemy-1.4.25-cp38-cp38-win32.whl", hash = "sha256:c211e8ec81522ce87b0b39f0cf0712c998d4305a030459a0e115a2b3dc71598f"}, - {file = "SQLAlchemy-1.4.25-cp38-cp38-win_amd64.whl", hash = "sha256:9a1df8c93a0dd9cef0839917f0c6c49f46c75810cf8852be49884da4a7de3c59"}, - {file = "SQLAlchemy-1.4.25-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:1b38db2417b9f7005d6ceba7ce2a526bf10e3f6f635c0f163e6ed6a42b5b62b2"}, - {file = "SQLAlchemy-1.4.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e37621b37c73b034997b5116678862f38ee70e5a054821c7b19d0e55df270dec"}, - {file = "SQLAlchemy-1.4.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:91cd87d1de0111eaca11ccc3d31af441c753fa2bc22df72e5009cfb0a1af5b03"}, - {file = "SQLAlchemy-1.4.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90fe429285b171bcc252e21515703bdc2a4721008d1f13aa5b7150336f8a8493"}, - {file = "SQLAlchemy-1.4.25-cp39-cp39-win32.whl", hash = "sha256:6003771ea597346ab1e97f2f58405c6cacbf6a308af3d28a9201a643c0ac7bb3"}, - {file = "SQLAlchemy-1.4.25-cp39-cp39-win_amd64.whl", hash = "sha256:9ebe49c3960aa2219292ea2e5df6acdc425fc828f2f3d50b4cfae1692bcb5f02"}, - {file = "SQLAlchemy-1.4.25.tar.gz", hash = "sha256:1adf3d25e2e33afbcd48cfad8076f9378793be43e7fec3e4334306cac6bec138"}, + {file = "SQLAlchemy-1.4.31-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:c3abc34fed19fdeaead0ced8cf56dd121f08198008c033596aa6aae7cc58f59f"}, + {file = "SQLAlchemy-1.4.31-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8d0949b11681380b4a50ac3cd075e4816afe9fa4a8c8ae006c1ca26f0fa40ad8"}, + {file = "SQLAlchemy-1.4.31-cp27-cp27m-win32.whl", hash = "sha256:f3b7ec97e68b68cb1f9ddb82eda17b418f19a034fa8380a0ac04e8fe01532875"}, + {file = "SQLAlchemy-1.4.31-cp27-cp27m-win_amd64.whl", hash = "sha256:81f2dd355b57770fdf292b54f3e0a9823ec27a543f947fa2eb4ec0df44f35f0d"}, + {file = "SQLAlchemy-1.4.31-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4ad31cec8b49fd718470328ad9711f4dc703507d434fd45461096da0a7135ee0"}, + {file = "SQLAlchemy-1.4.31-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:05fa14f279d43df68964ad066f653193187909950aa0163320b728edfc400167"}, + {file = "SQLAlchemy-1.4.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dccff41478050e823271642837b904d5f9bda3f5cf7d371ce163f00a694118d6"}, + {file = "SQLAlchemy-1.4.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57205844f246bab9b666a32f59b046add8995c665d9ecb2b7b837b087df90639"}, + {file = "SQLAlchemy-1.4.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea8210090a816d48a4291a47462bac750e3bc5c2442e6d64f7b8137a7c3f9ac5"}, + {file = "SQLAlchemy-1.4.31-cp310-cp310-win32.whl", hash = "sha256:2e216c13ecc7fcdcbb86bb3225425b3ed338e43a8810c7089ddb472676124b9b"}, + {file = "SQLAlchemy-1.4.31-cp310-cp310-win_amd64.whl", hash = "sha256:e3a86b59b6227ef72ffc10d4b23f0fe994bef64d4667eab4fb8cd43de4223bec"}, + {file = "SQLAlchemy-1.4.31-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:2fd4d3ca64c41dae31228b80556ab55b6489275fb204827f6560b65f95692cf3"}, + {file = "SQLAlchemy-1.4.31-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f22c040d196f841168b1456e77c30a18a3dc16b336ddbc5a24ce01ab4e95ae0"}, + {file = "SQLAlchemy-1.4.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0c7171aa5a57e522a04a31b84798b6c926234cb559c0939840c3235cf068813"}, + {file = "SQLAlchemy-1.4.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d046a9aeba9bc53e88a41e58beb72b6205abb9a20f6c136161adf9128e589db5"}, + {file = "SQLAlchemy-1.4.31-cp36-cp36m-win32.whl", hash = "sha256:d86132922531f0dc5a4f424c7580a472a924dd737602638e704841c9cb24aea2"}, + {file = "SQLAlchemy-1.4.31-cp36-cp36m-win_amd64.whl", hash = "sha256:ca68c52e3cae491ace2bf39b35fef4ce26c192fd70b4cd90f040d419f70893b5"}, + {file = "SQLAlchemy-1.4.31-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:cf2cd387409b12d0a8b801610d6336ee7d24043b6dd965950eaec09b73e7262f"}, + {file = "SQLAlchemy-1.4.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb4b15fb1f0aafa65cbdc62d3c2078bea1ceecbfccc9a1f23a2113c9ac1191fa"}, + {file = "SQLAlchemy-1.4.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c317ddd7c586af350a6aef22b891e84b16bff1a27886ed5b30f15c1ed59caeaa"}, + {file = "SQLAlchemy-1.4.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c7ed6c69debaf6198fadb1c16ae1253a29a7670bbf0646f92582eb465a0b999"}, + {file = "SQLAlchemy-1.4.31-cp37-cp37m-win32.whl", hash = "sha256:6a01ec49ca54ce03bc14e10de55dfc64187a2194b3b0e5ac0fdbe9b24767e79e"}, + {file = "SQLAlchemy-1.4.31-cp37-cp37m-win_amd64.whl", hash = "sha256:330eb45395874cc7787214fdd4489e2afb931bc49e0a7a8f9cd56d6e9c5b1639"}, + {file = "SQLAlchemy-1.4.31-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:5e9c7b3567edbc2183607f7d9f3e7e89355b8f8984eec4d2cd1e1513c8f7b43f"}, + {file = "SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de85c26a5a1c72e695ab0454e92f60213b4459b8d7c502e0be7a6369690eeb1a"}, + {file = "SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:975f5c0793892c634c4920057da0de3a48bbbbd0a5c86f5fcf2f2fedf41b76da"}, + {file = "SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c"}, + {file = "SQLAlchemy-1.4.31-cp38-cp38-win32.whl", hash = "sha256:b35dca159c1c9fa8a5f9005e42133eed82705bf8e243da371a5e5826440e65ca"}, + {file = "SQLAlchemy-1.4.31-cp38-cp38-win_amd64.whl", hash = "sha256:b7b20c88873675903d6438d8b33fba027997193e274b9367421e610d9da76c08"}, + {file = "SQLAlchemy-1.4.31-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:85e4c244e1de056d48dae466e9baf9437980c19fcde493e0db1a0a986e6d75b4"}, + {file = "SQLAlchemy-1.4.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79e73d5ee24196d3057340e356e6254af4d10e1fc22d3207ea8342fc5ffb977"}, + {file = "SQLAlchemy-1.4.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:15a03261aa1e68f208e71ae3cd845b00063d242cbf8c87348a0c2c0fc6e1f2ac"}, + {file = "SQLAlchemy-1.4.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ddc5e5ccc0160e7ad190e5c61eb57560f38559e22586955f205e537cda26034"}, + {file = "SQLAlchemy-1.4.31-cp39-cp39-win32.whl", hash = "sha256:289465162b1fa1e7a982f8abe59d26a8331211cad4942e8031d2b7db1f75e649"}, + {file = "SQLAlchemy-1.4.31-cp39-cp39-win_amd64.whl", hash = "sha256:9e4fb2895b83993831ba2401b6404de953fdbfa9d7d4fa6a4756294a83bbc94f"}, + {file = "SQLAlchemy-1.4.31.tar.gz", hash = "sha256:582b59d1e5780a447aada22b461e50b404a9dc05768da1d87368ad8190468418"}, ] statsd = [ {file = "statsd-3.2.1-py2.py3-none-any.whl", hash = "sha256:7aff40c6cdda703193fac6231410c6c0ad5939ce053a168016501e982c755c84"}, {file = "statsd-3.2.1.tar.gz", hash = "sha256:3fa92bf0192af926f7a0d9be031fe3fd0fbaa1992d42cf2f07e68f76ac18288e"}, ] stevedore = [ - {file = "stevedore-3.2.0-py3-none-any.whl", hash = "sha256:c8f4f0ebbc394e52ddf49de8bcc3cf8ad2b4425ebac494106bbc5e3661ac7633"}, - {file = "stevedore-3.2.0.tar.gz", hash = "sha256:38791aa5bed922b0a844513c5f9ed37774b68edc609e5ab8ab8d8fe0ce4315e5"}, + {file = "stevedore-3.5.0-py3-none-any.whl", hash = "sha256:a547de73308fd7e90075bb4d301405bebf705292fa90a90fc3bcf9133f58616c"}, + {file = "stevedore-3.5.0.tar.gz", hash = "sha256:f40253887d8712eaa2bb0ea3830374416736dc8ec0e22f5a65092c1174c44335"}, ] suds-jurko = [ {file = "suds-jurko-0.6.tar.bz2", hash = "sha256:29edb72fd21e3044093d86f33c66cf847c5aaab26d64cb90e69e528ef014e57f"}, @@ -4513,71 +4937,96 @@ text-unidecode = [ {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, ] tinycss2 = [ - {file = "tinycss2-1.1.0-py3-none-any.whl", hash = "sha256:0353b5234bcaee7b1ac7ca3dea7e02cd338a9f8dcbb8f2dcd32a5795ec1e5f9a"}, - {file = "tinycss2-1.1.0.tar.gz", hash = "sha256:fbdcac3044d60eb85fdb2aa840ece43cf7dbe798e373e6ee0be545d4d134e18a"}, + {file = "tinycss2-1.1.1-py3-none-any.whl", hash = "sha256:fe794ceaadfe3cf3e686b22155d0da5780dd0e273471a51846d0a02bc204fec8"}, + {file = "tinycss2-1.1.1.tar.gz", hash = "sha256:b2e44dd8883c360c35dd0d1b5aad0b610e5156c2cb3b33434634e539ead9d8bf"}, ] toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] toolz = [ - {file = "toolz-0.10.0.tar.gz", hash = "sha256:08fdd5ef7c96480ad11c12d472de21acd32359996f69a5259299b540feba4560"}, + {file = "toolz-0.11.2-py3-none-any.whl", hash = "sha256:a5700ce83414c64514d82d60bcda8aabfde092d1c1a8663f9200c07fdcc6da8f"}, + {file = "toolz-0.11.2.tar.gz", hash = "sha256:6b312d5e15138552f1bda8a4e66c30e236c831b612b2bf0005f8a1df10a4bc33"}, ] tornado = [ - {file = "tornado-6.0.4-cp35-cp35m-win32.whl", hash = "sha256:5217e601700f24e966ddab689f90b7ea4bd91ff3357c3600fa1045e26d68e55d"}, - {file = "tornado-6.0.4-cp35-cp35m-win_amd64.whl", hash = "sha256:c98232a3ac391f5faea6821b53db8db461157baa788f5d6222a193e9456e1740"}, - {file = "tornado-6.0.4-cp36-cp36m-win32.whl", hash = "sha256:5f6a07e62e799be5d2330e68d808c8ac41d4a259b9cea61da4101b83cb5dc673"}, - {file = "tornado-6.0.4-cp36-cp36m-win_amd64.whl", hash = "sha256:c952975c8ba74f546ae6de2e226ab3cc3cc11ae47baf607459a6728585bb542a"}, - {file = "tornado-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:2c027eb2a393d964b22b5c154d1a23a5f8727db6fda837118a776b29e2b8ebc6"}, - {file = "tornado-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:5618f72e947533832cbc3dec54e1dffc1747a5cb17d1fd91577ed14fa0dc081b"}, - {file = "tornado-6.0.4-cp38-cp38-win32.whl", hash = "sha256:22aed82c2ea340c3771e3babc5ef220272f6fd06b5108a53b4976d0d722bcd52"}, - {file = "tornado-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:c58d56003daf1b616336781b26d184023ea4af13ae143d9dda65e31e534940b9"}, - {file = "tornado-6.0.4.tar.gz", hash = "sha256:0fe2d45ba43b00a41cd73f8be321a44936dc1aba233dee979f17a042b83eb6dc"}, + {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, + {file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"}, + {file = "tornado-6.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b"}, + {file = "tornado-6.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675"}, + {file = "tornado-6.1-cp35-cp35m-win32.whl", hash = "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5"}, + {file = "tornado-6.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68"}, + {file = "tornado-6.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb"}, + {file = "tornado-6.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c"}, + {file = "tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c"}, + {file = "tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085"}, + {file = "tornado-6.1-cp36-cp36m-win32.whl", hash = "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575"}, + {file = "tornado-6.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795"}, + {file = "tornado-6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f"}, + {file = "tornado-6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102"}, + {file = "tornado-6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01"}, + {file = "tornado-6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d"}, + {file = "tornado-6.1-cp37-cp37m-win32.whl", hash = "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df"}, + {file = "tornado-6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37"}, + {file = "tornado-6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95"}, + {file = "tornado-6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a"}, + {file = "tornado-6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5"}, + {file = "tornado-6.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288"}, + {file = "tornado-6.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f"}, + {file = "tornado-6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6"}, + {file = "tornado-6.1-cp38-cp38-win32.whl", hash = "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326"}, + {file = "tornado-6.1-cp38-cp38-win_amd64.whl", hash = "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c"}, + {file = "tornado-6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5"}, + {file = "tornado-6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe"}, + {file = "tornado-6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea"}, + {file = "tornado-6.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2"}, + {file = "tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0"}, + {file = "tornado-6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd"}, + {file = "tornado-6.1-cp39-cp39-win32.whl", hash = "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c"}, + {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, + {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, ] twython = [ {file = "twython-3.9.1-py3-none-any.whl", hash = "sha256:aef7ad4faabee91efcbe82a8618b38a948498fc6b3eca4cd76f642f957353818"}, {file = "twython-3.9.1.tar.gz", hash = "sha256:5a3f0ac24d10705257028fb4205bfedf432ff28d358b796e0c2f01a2f9990c84"}, ] typed-ast = [ - {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6"}, - {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075"}, - {file = "typed_ast-1.4.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528"}, - {file = "typed_ast-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428"}, - {file = "typed_ast-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3"}, - {file = "typed_ast-1.4.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f"}, - {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341"}, - {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace"}, - {file = "typed_ast-1.4.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f"}, - {file = "typed_ast-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363"}, - {file = "typed_ast-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7"}, - {file = "typed_ast-1.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266"}, - {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e"}, - {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04"}, - {file = "typed_ast-1.4.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899"}, - {file = "typed_ast-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c"}, - {file = "typed_ast-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805"}, - {file = "typed_ast-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a"}, - {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff"}, - {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41"}, - {file = "typed_ast-1.4.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39"}, - {file = "typed_ast-1.4.3-cp38-cp38-win32.whl", hash = "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927"}, - {file = "typed_ast-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40"}, - {file = "typed_ast-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3"}, - {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4"}, - {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0"}, - {file = "typed_ast-1.4.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3"}, - {file = "typed_ast-1.4.3-cp39-cp39-win32.whl", hash = "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808"}, - {file = "typed_ast-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c"}, - {file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"}, + {file = "typed_ast-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d8314c92414ce7481eee7ad42b353943679cf6f30237b5ecbf7d835519e1212"}, + {file = "typed_ast-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b53ae5de5500529c76225d18eeb060efbcec90ad5e030713fe8dab0fb4531631"}, + {file = "typed_ast-1.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:24058827d8f5d633f97223f5148a7d22628099a3d2efe06654ce872f46f07cdb"}, + {file = "typed_ast-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a6d495c1ef572519a7bac9534dbf6d94c40e5b6a608ef41136133377bba4aa08"}, + {file = "typed_ast-1.5.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:de4ecae89c7d8b56169473e08f6bfd2df7f95015591f43126e4ea7865928677e"}, + {file = "typed_ast-1.5.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:256115a5bc7ea9e665c6314ed6671ee2c08ca380f9d5f130bd4d2c1f5848d695"}, + {file = "typed_ast-1.5.1-cp36-cp36m-win_amd64.whl", hash = "sha256:7c42707ab981b6cf4b73490c16e9d17fcd5227039720ca14abe415d39a173a30"}, + {file = "typed_ast-1.5.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:71dcda943a471d826ea930dd449ac7e76db7be778fcd722deb63642bab32ea3f"}, + {file = "typed_ast-1.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4f30a2bcd8e68adbb791ce1567fdb897357506f7ea6716f6bbdd3053ac4d9471"}, + {file = "typed_ast-1.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ca9e8300d8ba0b66d140820cf463438c8e7b4cdc6fd710c059bfcfb1531d03fb"}, + {file = "typed_ast-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9caaf2b440efb39ecbc45e2fabde809cbe56272719131a6318fd9bf08b58e2cb"}, + {file = "typed_ast-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c9bcad65d66d594bffab8575f39420fe0ee96f66e23c4d927ebb4e24354ec1af"}, + {file = "typed_ast-1.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:591bc04e507595887160ed7aa8d6785867fb86c5793911be79ccede61ae96f4d"}, + {file = "typed_ast-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:a80d84f535642420dd17e16ae25bb46c7f4c16ee231105e7f3eb43976a89670a"}, + {file = "typed_ast-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:38cf5c642fa808300bae1281460d4f9b7617cf864d4e383054a5ef336e344d32"}, + {file = "typed_ast-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5b6ab14c56bc9c7e3c30228a0a0b54b915b1579613f6e463ba6f4eb1382e7fd4"}, + {file = "typed_ast-1.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2b8d7007f6280e36fa42652df47087ac7b0a7d7f09f9468f07792ba646aac2d"}, + {file = "typed_ast-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:b6d17f37f6edd879141e64a5db17b67488cfeffeedad8c5cec0392305e9bc775"}, + {file = "typed_ast-1.5.1.tar.gz", hash = "sha256:484137cab8ecf47e137260daa20bafbba5f4e3ec7fda1c1e69ab299b75fa81c5"}, ] typing-extensions = [ - {file = "typing_extensions-3.7.4.2-py2-none-any.whl", hash = "sha256:f8d2bd89d25bc39dabe7d23df520442fa1d8969b82544370e03d88b5a591c392"}, - {file = "typing_extensions-3.7.4.2-py3-none-any.whl", hash = "sha256:6e95524d8a547a91e08f404ae485bbb71962de46967e1b71a0cb89af24e761c5"}, - {file = "typing_extensions-3.7.4.2.tar.gz", hash = "sha256:79ee589a3caca649a9bfd2a8de4709837400dfa00b6cc81962a1e6a1815969ae"}, + {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"}, + {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"}, +] +tzdata = [ + {file = "tzdata-2021.5-py2.py3-none-any.whl", hash = "sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5"}, + {file = "tzdata-2021.5.tar.gz", hash = "sha256:68dbe41afd01b867894bbdfd54fa03f468cfa4f0086bfb4adcd8de8f24f3ee21"}, ] tzlocal = [ - {file = "tzlocal-2.1-py2.py3-none-any.whl", hash = "sha256:e2cb6c6b5b604af38597403e9852872d7f534962ae2954c7f35efcb1ccacf4a4"}, - {file = "tzlocal-2.1.tar.gz", hash = "sha256:643c97c5294aedc737780a49d9df30889321cbe1204eac2c2ec6134035a92e44"}, + {file = "tzlocal-4.1-py3-none-any.whl", hash = "sha256:28ba8d9fcb6c9a782d6e0078b4f6627af1ea26aeaa32b4eab5324abc7df4149f"}, + {file = "tzlocal-4.1.tar.gz", hash = "sha256:0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09"}, ] unidecode = [ {file = "Unidecode-1.0.22-py2.py3-none-any.whl", hash = "sha256:72f49d3729f3d8f5799f710b97c1451c5163102e76d64d20e170aedbbd923582"}, @@ -4621,30 +5070,80 @@ webencodings = [ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] websocket-client = [ - {file = "websocket-client-1.2.1.tar.gz", hash = "sha256:8dfb715d8a992f5712fff8c843adae94e22b22a99b2c5e6b0ec4a1a981cc4e0d"}, - {file = "websocket_client-1.2.1-py2.py3-none-any.whl", hash = "sha256:0133d2f784858e59959ce82ddac316634229da55b498aac311f1620567a710ec"}, + {file = "websocket-client-1.2.3.tar.gz", hash = "sha256:1315816c0acc508997eb3ae03b9d3ff619c9d12d544c9a9b553704b1cc4f6af5"}, + {file = "websocket_client-1.2.3-py3-none-any.whl", hash = "sha256:2eed4cc58e4d65613ed6114af2f380f7910ff416fc8c46947f6e76b6815f56c0"}, ] wechatpy = [ - {file = "wechatpy-1.8.15-py2.py3-none-any.whl", hash = "sha256:0ac7bd23725cc6cbcfcc45cc4864c2afb9e9b630a2fa6763b0fbed9fe714d5f6"}, - {file = "wechatpy-1.8.15.tar.gz", hash = "sha256:0724347ea9ede4f14b59acefd6e41c9baae25e822df204ece3eeba3d9e1dfd03"}, + {file = "wechatpy-1.8.18-py2.py3-none-any.whl", hash = "sha256:bfd0457dfd3f4623a490534cc9cb9c29b53f9397b3ebbee0f11ee7925b9b71f6"}, + {file = "wechatpy-1.8.18.tar.gz", hash = "sha256:b356d0181abcf8487268e5759f942c4ffbb5090c00197858109e90000a301d08"}, ] werkzeug = [ - {file = "Werkzeug-0.15.3-py2.py3-none-any.whl", hash = "sha256:97660b282aa7e29f94f3fe378e5c7162d7ab9d601a8dbb1cbb2ffc8f0e54607d"}, - {file = "Werkzeug-0.15.3.tar.gz", hash = "sha256:cfd1281b1748288e59762c0e174d64d8bcb2b70e7c57bc4a1203c8825af24ac3"}, + {file = "Werkzeug-0.11.15-py2.py3-none-any.whl", hash = "sha256:c6f6f89124df0514d886782c658c3e12f2caaa94da34cee3fd82eebf4ebf052b"}, + {file = "Werkzeug-0.11.15.tar.gz", hash = "sha256:455d7798ac263266dbd38d4841f7534dd35ca9c3da4a8df303f8488f38f3bcc0"}, ] wget = [ {file = "wget-3.2.zip", hash = "sha256:35e630eca2aa50ce998b9b1a127bb26b30dfee573702782aa982f875e3f16061"}, ] wheel = [ - {file = "wheel-0.37.0-py2.py3-none-any.whl", hash = "sha256:21014b2bd93c6d0034b6ba5d35e4eb284340e09d63c59aef6fc14b0f346146fd"}, - {file = "wheel-0.37.0.tar.gz", hash = "sha256:e2ef7239991699e3355d54f8e968a21bb940a1dbf34a4d226741e64462516fad"}, + {file = "wheel-0.37.1-py2.py3-none-any.whl", hash = "sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a"}, + {file = "wheel-0.37.1.tar.gz", hash = "sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4"}, ] whichcraft = [ {file = "whichcraft-0.6.1-py2.py3-none-any.whl", hash = "sha256:deda9266fbb22b8c64fd3ee45c050d61139cd87419765f588e37c8d23e236dd9"}, {file = "whichcraft-0.6.1.tar.gz", hash = "sha256:acdbb91b63d6a15efbd6430d1d7b2d36e44a71697e93e19b7ded477afd9fce87"}, ] wrapt = [ - {file = "wrapt-1.12.1.tar.gz", hash = "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"}, + {file = "wrapt-1.13.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca"}, + {file = "wrapt-1.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44"}, + {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056"}, + {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785"}, + {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096"}, + {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33"}, + {file = "wrapt-1.13.3-cp310-cp310-win32.whl", hash = "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f"}, + {file = "wrapt-1.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755"}, + {file = "wrapt-1.13.3-cp35-cp35m-win32.whl", hash = "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851"}, + {file = "wrapt-1.13.3-cp35-cp35m-win_amd64.whl", hash = "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13"}, + {file = "wrapt-1.13.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918"}, + {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade"}, + {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc"}, + {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf"}, + {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125"}, + {file = "wrapt-1.13.3-cp36-cp36m-win32.whl", hash = "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36"}, + {file = "wrapt-1.13.3-cp36-cp36m-win_amd64.whl", hash = "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10"}, + {file = "wrapt-1.13.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068"}, + {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709"}, + {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df"}, + {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2"}, + {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b"}, + {file = "wrapt-1.13.3-cp37-cp37m-win32.whl", hash = "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829"}, + {file = "wrapt-1.13.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea"}, + {file = "wrapt-1.13.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9"}, + {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554"}, + {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c"}, + {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b"}, + {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce"}, + {file = "wrapt-1.13.3-cp38-cp38-win32.whl", hash = "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79"}, + {file = "wrapt-1.13.3-cp38-cp38-win_amd64.whl", hash = "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb"}, + {file = "wrapt-1.13.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb"}, + {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32"}, + {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7"}, + {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e"}, + {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640"}, + {file = "wrapt-1.13.3-cp39-cp39-win32.whl", hash = "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374"}, + {file = "wrapt-1.13.3-cp39-cp39-win_amd64.whl", hash = "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb"}, + {file = "wrapt-1.13.3.tar.gz", hash = "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185"}, ] wstools = [ {file = "wstools-0.4.8-py2.py3-none-any.whl", hash = "sha256:e78cea7e6c3ff658d120b36b2151ad52c4daf4f1d0617ebf82b54ffc3bb694dd"}, @@ -4670,31 +5169,86 @@ xmltodict = [ {file = "xmltodict-0.12.0.tar.gz", hash = "sha256:50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21"}, ] yarl = [ - {file = "yarl-1.5.1-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:db6db0f45d2c63ddb1a9d18d1b9b22f308e52c83638c26b422d520a815c4b3fb"}, - {file = "yarl-1.5.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:17668ec6722b1b7a3a05cc0167659f6c95b436d25a36c2d52db0eca7d3f72593"}, - {file = "yarl-1.5.1-cp35-cp35m-win32.whl", hash = "sha256:040b237f58ff7d800e6e0fd89c8439b841f777dd99b4a9cca04d6935564b9409"}, - {file = "yarl-1.5.1-cp35-cp35m-win_amd64.whl", hash = "sha256:f18d68f2be6bf0e89f1521af2b1bb46e66ab0018faafa81d70f358153170a317"}, - {file = "yarl-1.5.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:c52ce2883dc193824989a9b97a76ca86ecd1fa7955b14f87bf367a61b6232511"}, - {file = "yarl-1.5.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ce584af5de8830d8701b8979b18fcf450cef9a382b1a3c8ef189bedc408faf1e"}, - {file = "yarl-1.5.1-cp36-cp36m-win32.whl", hash = "sha256:df89642981b94e7db5596818499c4b2219028f2a528c9c37cc1de45bf2fd3a3f"}, - {file = "yarl-1.5.1-cp36-cp36m-win_amd64.whl", hash = "sha256:3a584b28086bc93c888a6c2aa5c92ed1ae20932f078c46509a66dce9ea5533f2"}, - {file = "yarl-1.5.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:da456eeec17fa8aa4594d9a9f27c0b1060b6a75f2419fe0c00609587b2695f4a"}, - {file = "yarl-1.5.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:bc2f976c0e918659f723401c4f834deb8a8e7798a71be4382e024bcc3f7e23a8"}, - {file = "yarl-1.5.1-cp37-cp37m-win32.whl", hash = "sha256:4439be27e4eee76c7632c2427ca5e73703151b22cae23e64adb243a9c2f565d8"}, - {file = "yarl-1.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:48e918b05850fffb070a496d2b5f97fc31d15d94ca33d3d08a4f86e26d4e7c5d"}, - {file = "yarl-1.5.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9b930776c0ae0c691776f4d2891ebc5362af86f152dd0da463a6614074cb1b02"}, - {file = "yarl-1.5.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:b3b9ad80f8b68519cc3372a6ca85ae02cc5a8807723ac366b53c0f089db19e4a"}, - {file = "yarl-1.5.1-cp38-cp38-win32.whl", hash = "sha256:f379b7f83f23fe12823085cd6b906edc49df969eb99757f58ff382349a3303c6"}, - {file = "yarl-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:9102b59e8337f9874638fcfc9ac3734a0cfadb100e47d55c20d0dc6087fb4692"}, - {file = "yarl-1.5.1.tar.gz", hash = "sha256:c22c75b5f394f3d47105045ea551e08a3e804dc7e01b37800ca35b58f856c3d6"}, + {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95"}, + {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b"}, + {file = "yarl-1.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125"}, + {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739"}, + {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72"}, + {file = "yarl-1.7.2-cp310-cp310-win32.whl", hash = "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c"}, + {file = "yarl-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265"}, + {file = "yarl-1.7.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c"}, + {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa"}, + {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d"}, + {file = "yarl-1.7.2-cp36-cp36m-win32.whl", hash = "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1"}, + {file = "yarl-1.7.2-cp36-cp36m-win_amd64.whl", hash = "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913"}, + {file = "yarl-1.7.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e"}, + {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4"}, + {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b"}, + {file = "yarl-1.7.2-cp37-cp37m-win32.whl", hash = "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1"}, + {file = "yarl-1.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271"}, + {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576"}, + {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d"}, + {file = "yarl-1.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1"}, + {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8"}, + {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b"}, + {file = "yarl-1.7.2-cp38-cp38-win32.whl", hash = "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef"}, + {file = "yarl-1.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f"}, + {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0"}, + {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1"}, + {file = "yarl-1.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b"}, + {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8"}, + {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8"}, + {file = "yarl-1.7.2-cp39-cp39-win32.whl", hash = "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d"}, + {file = "yarl-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58"}, + {file = "yarl-1.7.2.tar.gz", hash = "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd"}, ] zeep = [ {file = "zeep-4.1.0-py2.py3-none-any.whl", hash = "sha256:81c491092b71f5b276de8c63dfd452be3f322622c48a54f3a497cf913bdfb2f4"}, {file = "zeep-4.1.0.tar.gz", hash = "sha256:5867f2eadd6b028d9751f4155af590d3aaf9280e3a0ed5e15a53343921c956e5"}, ] 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.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"}, + {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"}, ] zxcvbn = [ {file = "zxcvbn-4.4.28.tar.gz", hash = "sha256:151bd816817e645e9064c354b13544f85137ea3320ca3be1fb6873ea75ef7dc1"}, diff --git a/pyproject.toml b/pyproject.toml index e1c71d2..9bde480 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.masonry.api" [tool.poetry] name = "ERPLibre" -version = "1.1.0" +version = "1.2.1" description = "Easy way to configure Odoo community" license = "AGPL-3.0-or-later" authors = [ "Mathieu Benoit ",] @@ -12,48 +12,50 @@ authors = [ "Mathieu Benoit ",] [tool.poetry.dependencies] python = "^3.7.12" Asterisk = "^0.0.8" -Babel = "2.3.4" +Babel = "2.9.1" BeautifulSoup4 = "^4.10.0" GitPython = "3.1.12" Jinja2 = "2.11.3" Mako = "1.0.4" MarkupSafe = "0.23" -Pillow = "8.3.2" +Pillow = "9.0.0" PyJWT = "1.7.1" PyPDF2 = "1.26.0" PyYAML = "4.2b4" SOAPpy = "^0.12.22" Sphinx = ">=2.4.0" Voicent-Python = "^1.0" -Werkzeug = "0.15.3" +Werkzeug = "0.11.15" XlsxWriter = "0.9.3" agithub = "^2.2.2" -altair = "^4.1.0" -argcomplete = "^1.12.3" +altair = "^4.2.0" +argcomplete = "^2.0.0" +astor = "^0.8.1" bokeh = "1.1.0" boto3 = "1.9.102" cachetools = ">=2.0.1" cerberus = "^1.3.4" chardet = "3.0.4" -click = "^8.0.1" +click = "^8.0.3" cloudflare = "^2.8.15" code_writer = "^1.1.1" colorama = "^0.4.4" cryptography = "3.4.8" css-html-prettify = "^2.5.5" -cython = "^0.29.24" +cython = "^0.29.26" ddt = "1.2.0" decorator = "4.0.10" docutils = "0.16" ebaysdk = "2.1.5" email_validator = "^1.1.3" -emoji = "^1.5.0" +emoji = "^1.6.3" escpos = "^1.9" -extract-msg = "^0.28.7" -extract_msg = "^0.28.7" +extract-msg = "^0.30.0" +extract_msg = "^0.30.0" factur-x = "^2.3" feedparser = "5.2.1" -flake8 = "^3.9.2" +flake8 = "^4.0.1" +formio-data = "^0.3.14" freezegun = "0.3.11" geojson = "2.4.1" gevent = "1.3.4" @@ -68,25 +70,25 @@ js2py = "^0.71" keystoneauth1 = "3.14.0" lasso = "^0.0.5" libsass = "0.12.3" -lxml = "4.6.3" +lxml = "4.7.1" matplotlib = ">=2.0.0" mock = "2.0.0" mpld3 = "0.3" -mysqlclient = "^2.0.3" +mysqlclient = "^2.1.0" num2words = "0.5.6" numpy = "1.21.1" oauthlib = "2.1.0" "oca.decorators" = "^0.0.1" ofxparse = "0.16" openpyxl = "^3.0.9" -openupgradelib = "^3.1.1" +openupgradelib = "^3.3.1" pandas = "1.2.0" -paramiko = "^2.7.2" +paramiko = "^2.9.2" passlib = "1.6.5" pdf2image = "^1.16.0" pdfminer = "^20191125" pexpect = "^4.8.0" -phonenumbers = "^8.12.33" +phonenumbers = "^8.12.41" plotly = "4.1.0" premailer = "^3.10.0" psutil = "5.6.6" @@ -94,15 +96,17 @@ psycopg2 = "2.7.3.1" py-Asterisk = "^0.5.18" "py3o.formats" = "^0.3" "py3o.template" = "^0.10.0" -pycountry = "^20.7.3" +pycountry = "^22.1.10" +pycrypto = "^2.6.1" pydot = "1.2.3" pygount = "<1.2.0" +pyjsparser = "^2.7.1" pyldap = "2.4.28" -pymssql = "^2.2.2" +pymssql = "^2.2.3" pymysql = "^1.0.2" pyotp = "^2.6.0" pyparsing = "2.1.10" -pyproj = "^3.2.1" +pyproj = "3.2.1" pyserial = "3.1.1" pysftp = "^0.2.9" python-chess = "<0.24" @@ -112,7 +116,7 @@ python-git = "^2018.2.1" python-json-logger = "0.1.5" python-keystoneclient = "3.22.0" python-slugify = ">=3.0.2" -python-stdnum = "^1.16" +python-stdnum = "^1.17" python-swiftclient = "3.9.0" python-u2flib-server = "^5.0.1" python-u2flib_server = "^5.0.1" @@ -130,13 +134,13 @@ requests-toolbelt = "0.9.1" retrying = "^1.3.3" serial = "^0.0.97" shapely = "1.6.4.post2" -simplejson = "^3.17.5" +simplejson = "^3.17.6" slugify = "^0.0.1" sphinx = ">=1.6.7" sphinx-intl = "^2.0.1" sphinx-patchqueue = ">=1.0" sphinx_rtd_theme = "^1.0.0" -sqlalchemy = "^1.4.25" +sqlalchemy = "^1.4.31" statsd = "3.2.1" suds-jurko = "0.6" toml = "^0.10.2" @@ -149,10 +153,10 @@ vcrpy-unittest = "^0.1.7" vobject = "0.9.3" voicent-python = "^1.0" webcolors = "1.10" -websocket-client = "^1.2.1" -wechatpy = "^1.8.15" +websocket-client = "^1.2.3" +wechatpy = "^1.8.18" wget = "^3.2" -wheel = "^0.37.0" +wheel = "^0.37.1" xlrd = "1.0.0" xlwt = "1.3" xmlformatter = "^0.2.4" diff --git a/requirements.txt b/requirements.txt index f691a74..ff609e1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -59,6 +59,9 @@ emoji # Code generator mysqlclient +# pyproj >=3.3.0 is not compatible with python 3.7 +pyproj==3.2.1 + # Force update dependency to fix poetry numpy==1.21.1 @@ -67,8 +70,9 @@ numpy==1.21.1 # error with 5.x (ConstructorError: could not determine a constructor for the tag '!record') # pyyaml==5.4 Jinja2==2.11.3 -lxml==4.6.3 +lxml==4.7.1 cryptography==3.4.8 psutil==5.6.6 -Pillow==8.3.2 -Werkzeug==0.15.3 +Pillow==9.0.0 +Werkzeug==0.11.15 +Babel==2.9.1 diff --git a/script/generate_config.sh b/script/generate_config.sh index d845885..3c0fc2d 100755 --- a/script/generate_config.sh +++ b/script/generate_config.sh @@ -142,7 +142,9 @@ if [[ ${EL_MINIMAL_ADDONS} = "False" ]]; then printf "${EL_HOME}/addons/muk-it_muk_quality," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons/muk-it_muk_web," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons/muk-it_muk_website," >> ${EL_CONFIG_FILE} + printf "${EL_HOME}/addons/novacode-nl_odoo-formio," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons/obayit_odoo_dhtmlxgantt," >> ${EL_CONFIG_FILE} + printf "${EL_HOME}/addons/odoo_design-themes," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons/odooaktiv_QuotationRevision," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons/odooaktiv_product_rating_app," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons/odoomates_odooapps," >> ${EL_CONFIG_FILE} diff --git a/source_repo_addons.csv b/source_repo_addons.csv index 1364175..4f3ec07 100644 --- a/source_repo_addons.csv +++ b/source_repo_addons.csv @@ -129,3 +129,5 @@ https://github.com/OCA/maintainer-tools.git,script,master, https://github.com/TechnoLibre/odoo-code-generator.git,addons,, https://github.com/TechnoLibre/odoo-code-generator-template.git,addons,, https://github.com/ERPLibre/ERPLibre_image_db.git,,, +https://github.com/odoo/design-themes.git,addons,, +https://github.com/novacode-nl/odoo-formio.git,addons,, From a9eeb562e68e009c84b8145dad0cbe7f8a0d7112 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Mon, 24 Jan 2022 01:39:00 -0500 Subject: [PATCH 3/6] [UPD] gitignore: support script/addons --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b725e9e..379ae5f 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,9 @@ config.conf *.pyc .repo -addons +!addons/ +addons/* +!script/addons doc/itpp* doc/odoo* script/OCA* From 24e5cba22b761bf3a6f5faa3cb54c67b6f529291 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Mon, 24 Jan 2022 14:00:47 -0500 Subject: [PATCH 4/6] [UPD] makefile: improve test - prevent makefile cache to ignore test - update image_db_create_erplibre_base - add mariadb migrator test - add helloworld test - fix other test - add isort format - add show log of test - add clean to remove temporary file --- Makefile | 302 ++- pyproject.toml | 9 + requirements.txt | 1 + script/addons/check_addons_exist.py | 115 + script/addons/install_addons.sh | 8 +- script/addons/install_addons_dev.sh | 8 +- script/addons/reinstall_addons.sh | 10 +- script/addons/uninstall_addons.sh | 8 +- .../check_git_change_code_generator.sh | 34 +- .../create_from_existing_module.py | 60 + .../install_and_test_code_generator.sh | 32 +- script/code_generator/new_project.py | 498 ++++ script/code_generator/search_class_model.py | 223 ++ .../test_code_generator_update_module.py | 89 + script/database/README.md | 14 + script/database/db_drop_all.py | 44 + script/database/fix_mariadb_sql_example_1.py | 2086 +++++++++++++++++ script/database/mariadb_sql_example_1.sql | 1297 ++++++++++ .../database/restore_mariadb_sql_example_1.sh | 29 + .../git/remote_code_generation_git_compare.py | 104 + script/install_OSX_dependency.sh | 6 +- script/install_debian_dependency.sh | 4 +- script/install_dev.sh | 15 +- script/install_dev_extra_ubuntu.sh | 40 + script/make.sh | 15 +- script/open_terminal_code_generator.sh | 3 +- ...evert_git_diff_date_from_code_generator.py | 12 +- script/test/check_result_test.sh | 77 + script/test/run_parallel_test.py | 607 +++++ test/code_generator/hello_world.sh | 18 + 30 files changed, 5686 insertions(+), 82 deletions(-) create mode 100755 script/addons/check_addons_exist.py create mode 100755 script/code_generator/create_from_existing_module.py create mode 100755 script/code_generator/new_project.py create mode 100755 script/code_generator/search_class_model.py create mode 100755 script/code_generator/test_code_generator_update_module.py create mode 100644 script/database/README.md create mode 100755 script/database/db_drop_all.py create mode 100755 script/database/fix_mariadb_sql_example_1.py create mode 100644 script/database/mariadb_sql_example_1.sql create mode 100755 script/database/restore_mariadb_sql_example_1.sh create mode 100755 script/git/remote_code_generation_git_compare.py create mode 100755 script/install_dev_extra_ubuntu.sh create mode 100755 script/test/check_result_test.sh create mode 100755 script/test/run_parallel_test.py create mode 100755 test/code_generator/hello_world.sh diff --git a/Makefile b/Makefile index bb9ec9d..752ce25 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ SHELL := /bin/bash +LOG_FILE := ./.venv/make_test.log ############# # General # ############# @@ -112,6 +113,10 @@ db_drop_db_code_generator: db_drop_db_template: ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database template +.PHONY: db_drop_all +db_drop_all: + ./script/database/db_drop_all.py + .PHONY: db_clean_cache db_clean_cache: ./script/db_restore.py --clean_cache @@ -121,7 +126,8 @@ db_restore_erplibre_base_db_test: ./script/db_restore.py --database test .PHONY: db_restore_erplibre_base_db_test_module_test -db_restore_erplibre_base_db_test_module_test: db_restore_erplibre_base_db_test +db_restore_erplibre_base_db_test_module_test: + ./script/make.sh db_restore_erplibre_base_db_test ./script/addons/install_addons.sh test test .PHONY: db_restore_erplibre_base_db_test_image_test @@ -157,7 +163,8 @@ db_restore_erplibre_base_db_template: ./script/db_restore.py --database template .PHONY: db_create_db_test -db_create_db_test: db_drop_db_test +db_create_db_test: + ./script/make.sh db_drop_db_test ./.venv/bin/python3 ./odoo/odoo-bin db --create --database test ######################## @@ -166,7 +173,7 @@ db_create_db_test: db_drop_db_test .PHONY: image_db_create_erplibre_base image_db_create_erplibre_base: ./script/make.sh db_create_db_test - ./script/addons/install_addons.sh test web_responsive,disable_odoo_online,remove_odoo_enterprise,auth_user_case_insensitive,muk_web_theme,muk_utils,muk_branding,muk_mail_branding,muk_web_branding,muk_web_theme_mail,muk_web_utils,fetchmail_notify_error_to_sender,mail_debrand,partner_quebec_tz,erplibre_info + ./script/addons/install_addons.sh test web_responsive,disable_odoo_online,remove_odoo_enterprise,auth_user_case_insensitive,muk_web_theme,muk_utils,muk_branding,muk_mail_branding,muk_web_branding,muk_web_theme_mail,muk_web_utils,fetchmail_notify_error_to_sender,mail_debrand,partner_quebec_tz,erplibre_info,web_timeline,web_diagram_position ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_base .PHONY: image_db_create_erplibre_website @@ -216,15 +223,18 @@ image_diff_base_website: # Addons installation # ######################### .PHONY: addons_install_code_generator_basic -addons_install_code_generator_basic: db_restore_erplibre_base_db_code_generator +addons_install_code_generator_basic: + ./script/make.sh db_restore_erplibre_base_db_code_generator ./script/addons/install_addons_dev.sh code_generator code_generator .PHONY: addons_install_code_generator_featured -addons_install_code_generator_featured: db_restore_erplibre_base_db_code_generator +addons_install_code_generator_featured: + ./script/make.sh db_restore_erplibre_base_db_code_generator ./script/addons/install_addons_dev.sh code_generator code_generator_cron,code_generator_hook,code_generator_portal .PHONY: addons_install_code_generator_full -addons_install_code_generator_full: db_restore_erplibre_base_db_code_generator +addons_install_code_generator_full: + ./script/make.sh db_restore_erplibre_base_db_code_generator ./script/addons/install_addons_dev.sh code_generator code_generator_cron,code_generator_hook,code_generator_portal,code_generator_db_servers,code_generator_website_snippet,code_generator_geoengine,code_generator_theme_website,code_generator_website_leaflet .PHONY: addons_install_code_generator_demo @@ -236,27 +246,40 @@ addons_uninstall_code_generator_demo: ./script/addons/uninstall_addons.sh code_generator code_generator_demo .PHONY: addons_reinstall_code_generator_demo -addons_reinstall_code_generator_demo: addons_uninstall_code_generator_demo addons_install_code_generator_demo +addons_reinstall_code_generator_demo: + ./script/make.sh addons_uninstall_code_generator_demo + ./script/make.sh addons_install_code_generator_demo .PHONY: addons_install_all_code_generator_demo -addons_install_all_code_generator_demo: db_restore_erplibre_base_db_code_generator - ./script/addons/install_addons_dev.sh code_generator code_generator_demo,code_generator_demo_export_helpdesk,code_generator_demo_internal,code_generator_demo_portal,code_generator_demo_theme_website,code_generator_demo_website_leaflet,code_generator_demo_website_snippet +addons_install_all_code_generator_demo: + ./script/make.sh db_restore_erplibre_base_db_code_generator + ./script/addons/install_addons_dev.sh code_generator code_generator_demo,code_generator_demo_export_helpdesk,code_generator_demo_internal,code_generator_demo_internal_inherit,code_generator_demo_portal,code_generator_demo_theme_website,code_generator_demo_website_leaflet,code_generator_demo_website_snippet,code_generator_auto_backup # ./script/addons/install_addons_dev.sh code_generator code_generator_demo # ./script/addons/install_addons_dev.sh code_generator code_generator_demo_export_helpdesk # ./script/addons/install_addons_dev.sh code_generator code_generator_demo_internal +# ./script/addons/install_addons_dev.sh code_generator code_generator_demo_internal_inherit # ./script/addons/install_addons_dev.sh code_generator code_generator_demo_portal +# ./script/addons/install_addons_dev.sh code_generator code_generator_auto_backup # ./script/addons/install_addons_dev.sh code_generator code_generator_demo_theme_website # ./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_leaflet # ./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_snippet .PHONY: addons_install_all_code_generator_template addons_install_all_code_generator_template: - ./script/addons/install_addons_dev.sh template demo_portal,auto_backup - ./script/addons/install_addons_dev.sh template code_generator_template_demo_portal code_generator_template_demo_sysadmin_cron + ./script/make.sh db_restore_erplibre_base_db_template + ./script/addons/install_addons_dev.sh template demo_portal,auto_backup,demo_internal_inherit + ./script/addons/install_addons_dev.sh template code_generator_template_demo_portal,code_generator_template_demo_sysadmin_cron,code_generator_template_demo_internal_inherit + #./script/addons/install_addons_dev.sh template demo_portal + #./script/addons/install_addons_dev.sh template code_generator_template_demo_portal + #./script/addons/install_addons_dev.sh template auto_backup + #./script/addons/install_addons_dev.sh template code_generator_template_demo_sysadmin_cron + #./script/addons/install_addons_dev.sh template demo_internal_inherit + #./script/addons/install_addons_dev.sh template code_generator_template_demo_internal_inherit .PHONY: addons_install_all_generated_demo addons_install_all_generated_demo: - ./script/addons/install_addons_dev.sh template demo_export_helpdesk,demo_internal,demo_portal,demo_website_leaflet,demo_website_snippet + ./script/make.sh db_restore_erplibre_base_db_template + ./script/addons/install_addons_dev.sh template demo_helpdesk_data,demo_internal,demo_internal_inherit,demo_portal,demo_website_leaflet,demo_website_snippet,auto_backup # TODO support installation theme with cli #./script/addons/install_addons_dev.sh template theme_website_demo_code_generator @@ -264,51 +287,196 @@ addons_install_all_generated_demo: addons_install_all_code_generator: ./script/addons/install_addons_dev.sh code_generator code_generator_auto_backup +################## +# Code generator # +################## +.PHONY: addons_install_code_generator_template_code_generator +addons_install_code_generator_template_code_generator: + ./script/db_restore.py --database template + ./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator/code_generator -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_code_generator --with_inherit + ./script/maintenance/black.sh ./addons/TechnoLibre_odoo-code-generator-template/code_generator_template_code_generator + ./script/addons/install_addons_dev.sh template code_generator + ./script/addons/install_addons_dev.sh template code_generator_template_code_generator + ./script/git/remote_code_generation_git_compare.py --quiet --git_gui --clear --replace_directory --directory1 ./addons/TechnoLibre_odoo-code-generator-template/code_generator_code_generator --directory2 ./addons/TechnoLibre_odoo-code-generator/code_generator_code_generator + +.PHONY: addons_install_code_generator_code_generator +addons_install_code_generator_code_generator: + ./script/db_restore.py --database code_generator + ./script/addons/install_addons_dev.sh code_generator code_generator_code_generator + ./script/git/remote_code_generation_git_compare.py --quiet --git_gui --clear --replace_directory --directory1 ./addons/TechnoLibre_odoo-code-generator/code_generator --directory2 ./addons/TechnoLibre_odoo-code-generator-template/code_generator + +.PHONY: meld_code_generator_template_code_generator +meld_code_generator_template_code_generator: + ./script/make.sh clean + meld ./addons/TechnoLibre_odoo-code-generator/code_generator_code_generator ./addons/TechnoLibre_odoo-code-generator-template/code_generator_code_generator + +.PHONY: meld_code_generator_code_generator +meld_code_generator_code_generator: + ./script/make.sh clean + meld ./addons/TechnoLibre_odoo-code-generator-template/code_generator ./addons/TechnoLibre_odoo-code-generator/code_generator + +######################## +# Extra migrator sql # +######################## +.PHONY: addons_install_code_generator_mariadb_sql_example_1 +addons_install_code_generator_mariadb_sql_example_1: + ./script/database/restore_mariadb_sql_example_1.sh + ./script/db_restore.py --database code_generator + ./script/addons/install_addons_dev.sh code_generator code_generator_portal + ./script/addons/install_addons_dev.sh code_generator code_generator_migrator_demo_mariadb_sql_example_1 + + ./script/db_restore.py --database template + ./script/addons/install_addons_dev.sh template code_generator_portal,demo_mariadb_sql_example_1 + ./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_mariadb_sql_example_1 -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_mariadb_sql_example_1 + ./script/addons/install_addons_dev.sh template code_generator_template_demo_mariadb_sql_example_1 + + ./script/db_restore.py --database code_generator + ./script/addons/install_addons_dev.sh code_generator code_generator_portal + ./script/addons/install_addons_dev.sh code_generator code_generator_demo_mariadb_sql_example_1 + ########## # test # ########## .PHONY: test -test: test_format test_code_generator_generation test_code_generator_generation_extra test_code_generator_code_i18n test_code_generator_code_i18n_extra +test: + ./script/make.sh clean + -rm ${LOG_FILE} + ./script/make.sh test_base |& tee -a ${LOG_FILE} + ./script/test/check_result_test.sh ${LOG_FILE} + +.PHONY: test_full +test_full: + ./script/make.sh clean + -rm ${LOG_FILE} + ./script/make.sh test_base |& tee -a ${LOG_FILE} + ./script/make.sh test_extra |& tee -a ${LOG_FILE} + #./script/make.sh doc |& tee -a ${LOG_FILE} + ./script/test/check_result_test.sh ${LOG_FILE} + +.PHONY: test_full_fast +test_full_fast: + ./script/make.sh clean + ./script/test/run_parallel_test.py + +.PHONY: test_base +test_base: + ./script/make.sh test_format + ./script/make.sh test_code_generator_hello_world + ./script/make.sh test_installation_demo + ./script/make.sh test_code_generator_generation + ./script/make.sh test_code_generator_generation_template + +.PHONY: test_extra +test_extra: + ./script/make.sh test_code_generator_migrator_demo_mariadb_sql_example_1 + ./script/make.sh test_code_generator_template_demo_mariadb_sql_example_1 + ./script/make.sh test_code_generator_demo_mariadb_sql_example_1 .PHONY: test_format test_format: ./script/maintenance/black.sh --check ./addons/TechnoLibre_odoo-code-generator/ ./script/maintenance/black.sh --check ./addons/TechnoLibre_odoo-code-generator-template/ +.PHONY: test_code_generator_hello_world +test_code_generator_hello_world: + ./test/code_generator/hello_world.sh + +.PHONY: test_installation_demo +test_installation_demo: + ./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template + ./script/db_restore.py --database test_demo + ./script/addons/install_addons.sh test_demo demo_helpdesk_data,demo_internal,demo_internal_inherit,demo_mariadb_sql_example_1,demo_portal,demo_website_data,demo_website_leaflet,demo_website_snippet + # TODO cannot install from command line (CLI) + #./script/addons/install_addons.sh test_demo theme_website_demo_code_generator ./addons/TechnoLibre_odoo-code-generator-template + .PHONY: test_code_generator_generation test_code_generator_generation: ./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template - ./script/db_restore.py --database code_generator - ./script/code_generator/install_and_test_code_generator.sh code_generator code_generator_demo,code_generator_demo_export_helpdesk,code_generator_demo_internal,code_generator_demo_portal,code_generator_demo_theme_website,code_generator_demo_website_leaflet,code_generator_demo_website_snippet ./addons/TechnoLibre_odoo-code-generator-template -# ./script/code_generator/install_and_test_code_generator.sh code_generator code_generator_demo ./addons/TechnoLibre_odoo-code-generator-template -# ./script/code_generator/install_and_test_code_generator.sh code_generator code_generator_demo_export_helpdesk ./addons/TechnoLibre_odoo-code-generator-template -# ./script/code_generator/install_and_test_code_generator.sh code_generator code_generator_demo_internal ./addons/TechnoLibre_odoo-code-generator-template -# ./script/code_generator/install_and_test_code_generator.sh code_generator code_generator_demo_portal ./addons/TechnoLibre_odoo-code-generator-template -# ./script/code_generator/install_and_test_code_generator.sh code_generator code_generator_demo_theme_website ./addons/TechnoLibre_odoo-code-generator-template -# ./script/code_generator/install_and_test_code_generator.sh code_generator code_generator_demo_website_leaflet ./addons/TechnoLibre_odoo-code-generator-template -# ./script/code_generator/install_and_test_code_generator.sh code_generator code_generator_demo_website_snippet ./addons/TechnoLibre_odoo-code-generator-template - -.PHONY: test_code_generator_generation_extra -test_code_generator_generation_extra: ./script/code_generator/check_git_change_code_generator.sh ./addons/OCA_server-tools/auto_backup - ./script/db_restore.py --database code_generator - ./script/code_generator/install_and_test_code_generator.sh code_generator code_generator_auto_backup ./addons/OCA_server-tools/auto_backup + # Multiple + ./script/db_restore.py --database test_code_generator + ./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo,code_generator_demo_export_helpdesk,code_generator_demo_export_website,code_generator_demo_internal,code_generator_demo_portal,code_generator_demo_theme_website,code_generator_demo_website_leaflet,code_generator_demo_website_snippet ./addons/TechnoLibre_odoo-code-generator-template code_generator_demo,demo_helpdesk_data,demo_website_data,demo_internal,demo_portal,theme_website_demo_code_generator,demo_website_leaflet,demo_website_snippet + # inherit + # TODO should be in multiple list, need to support it + ./script/db_restore.py --database test_code_generator + ./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_internal_inherit ./addons/TechnoLibre_odoo-code-generator-template demo_internal_inherit + # auto_backup + ./script/db_restore.py --database test_code_generator + ./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_auto_backup ./addons/OCA_server-tools/auto_backup auto_backup -.PHONY: test_code_generator_code_i18n -test_code_generator_code_i18n: + # Single + #./script/db_restore.py --database test_code_generator + #./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo ./addons/TechnoLibre_odoo-code-generator-template code_generator_demo + #./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_export_helpdesk ./addons/TechnoLibre_odoo-code-generator-template demo_helpdesk_data + #./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_export_website ./addons/TechnoLibre_odoo-code-generator-template demo_website_data + #./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_internal ./addons/TechnoLibre_odoo-code-generator-template demo_internal + #./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_portal ./addons/TechnoLibre_odoo-code-generator-template demo_portal + #./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_theme_website ./addons/TechnoLibre_odoo-code-generator-template theme_website_demo_code_generator + #./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_website_leaflet ./addons/TechnoLibre_odoo-code-generator-template demo_website_leaflet + #./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_website_snippet ./addons/TechnoLibre_odoo-code-generator-template demo_website_snippet + #./script/db_restore.py --database test_code_generator + #./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_internal_inherit ./addons/TechnoLibre_odoo-code-generator-template demo_internal_inherit + #./script/db_restore.py --database test_code_generator + #./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_auto_backup ./addons/OCA_server-tools/auto_backup auto_backup + +.PHONY: test_code_generator_generation_template +test_code_generator_generation_template: + ./script/make.sh test_code_generator_code_template_demo_portal + ./script/make.sh test_code_generator_code_template_demo_internal_inherit + ./script/make.sh test_code_generator_code_template_demo_sysadmin_cron + +.PHONY: test_code_generator_code_template_demo_portal +test_code_generator_code_template_demo_portal: ./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template - ./script/db_restore.py --database template - ./script/addons/install_addons_dev.sh template demo_portal - ./script/code_generator/install_and_test_code_generator.sh template code_generator_template_demo_portal ./addons/TechnoLibre_odoo-code-generator-template + ./script/db_restore.py --database test_template + ./script/addons/install_addons_dev.sh test_template demo_portal + #./script/addons/install_addons_dev.sh test_template code_generator_template_demo_portal + ./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_portal -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_portal --with_inherit + ./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_portal ./addons/TechnoLibre_odoo-code-generator-template code_generator_demo_portal -.PHONY: test_code_generator_code_i18n_extra -test_code_generator_code_i18n_extra: - ./script/code_generator/check_git_change_code_generator.sh ./addons/OCA_server-tools/auto_backup - ./script/db_restore.py --database template - ./script/addons/install_addons_dev.sh template auto_backup - ./script/code_generator/install_and_test_code_generator.sh template code_generator_template_demo_sysadmin_cron ./addons/TechnoLibre_odoo-code-generator-template - # To support i18n in auto_backup +.PHONY: test_code_generator_code_template_demo_internal_inherit +test_code_generator_code_template_demo_internal_inherit: + ./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template + ./script/db_restore.py --database test_template + ./script/addons/install_addons_dev.sh test_template demo_internal_inherit + #./script/addons/install_addons_dev.sh test_template code_generator_template_demo_internal_inherit + ./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_internal_inherit -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_internal_inherit --with_inherit + ./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_internal_inherit ./addons/TechnoLibre_odoo-code-generator-template code_generator_demo_internal_inherit + +.PHONY: test_code_generator_code_template_demo_sysadmin_cron +test_code_generator_code_template_demo_sysadmin_cron: ./script/code_generator/check_git_change_code_generator.sh ./addons/OCA_server-tools/auto_backup + ./script/db_restore.py --database test_template + ./script/addons/install_addons_dev.sh test_template auto_backup + #./script/addons/install_addons_dev.sh test_template code_generator_template_demo_sysadmin_cron + ./script/code_generator/search_class_model.py --quiet -d addons/OCA_server-tools/auto_backup -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_sysadmin_cron --with_inherit + ./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_sysadmin_cron ./addons/TechnoLibre_odoo-code-generator-template code_generator_auto_backup + +.PHONY: test_code_generator_migrator_demo_mariadb_sql_example_1 +test_code_generator_migrator_demo_mariadb_sql_example_1: + ./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template + ./script/database/restore_mariadb_sql_example_1.sh + ./script/db_restore.py --database test_code_generator + ./script/addons/install_addons_dev.sh test_code_generator code_generator_portal + #./script/addons/install_addons_dev.sh test_code_generator code_generator_migrator_demo_mariadb_sql_example_1 + ./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_migrator_demo_mariadb_sql_example_1 ./addons/TechnoLibre_odoo-code-generator-template demo_mariadb_sql_example_1 + +.PHONY: test_code_generator_template_demo_mariadb_sql_example_1 +test_code_generator_template_demo_mariadb_sql_example_1: + ./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template + ./script/db_restore.py --database test_template + ./script/addons/install_addons_dev.sh test_template code_generator_portal,demo_mariadb_sql_example_1 + ./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_mariadb_sql_example_1 -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_mariadb_sql_example_1 --with_inherit + #./script/addons/install_addons_dev.sh test_template code_generator_template_demo_mariadb_sql_example_1 + ./script/code_generator/install_and_test_code_generator.sh test_template code_generator_template_demo_mariadb_sql_example_1 ./addons/TechnoLibre_odoo-code-generator-template code_generator_demo_mariadb_sql_example_1 + +.PHONY: test_code_generator_demo_mariadb_sql_example_1 +test_code_generator_demo_mariadb_sql_example_1: + ./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template + ./script/db_restore.py --database test_code_generator + ./script/addons/install_addons_dev.sh test_code_generator code_generator_portal + #./script/addons/install_addons_dev.sh test_code_generator code_generator_demo_mariadb_sql_example_1 + ./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_mariadb_sql_example_1 ./addons/TechnoLibre_odoo-code-generator-template demo_mariadb_sql_example_1 ############## # tag # @@ -328,22 +496,39 @@ open_terminal: # format # ############ .PHONY: format -format: format_code_generator format_code_generator_template format_script +format: + ./script/make.sh format_code_generator + ./script/make.sh format_code_generator_template + ./script/make.sh format_script .PHONY: format_code_generator format_code_generator: + .venv/bin/isort --profile black -l 79 ./addons/TechnoLibre_odoo-code-generator/ ./script/maintenance/black.sh ./addons/TechnoLibre_odoo-code-generator/ #./script/maintenance/prettier_xml.sh ./addons/TechnoLibre_odoo-code-generator/ .PHONY: format_code_generator_template format_code_generator_template: + .venv/bin/isort --profile black -l 79 ./addons/TechnoLibre_odoo-code-generator-template/ ./script/maintenance/black.sh ./addons/TechnoLibre_odoo-code-generator-template/ #./script/maintenance/prettier_xml.sh ./addons/TechnoLibre_odoo-code-generator-template/ .PHONY: format_script format_script: + #.venv/bin/isort --profile black -l 79 ./script/ --gitignore ./script/maintenance/black.sh ./script/ +.PHONY: format_script_isort_only +format_script_isort_only: + .venv/bin/isort --profile black -l 79 ./script/ --gitignore + +######### +# log # +######### +.PHONY: log_show_test +log_show_test: + vim ${LOG_FILE} + ########### # clean # ########### @@ -372,7 +557,9 @@ docker_stop: docker-compose down .PHONY: docker_restart_daemon -docker_restart_daemon: docker_stop docker_run_daemon +docker_restart_daemon: + ./script/make.sh docker_stop + ./script/make.sh docker_run_daemon .PHONY: docker_show_databases docker_show_databases: @@ -500,21 +687,41 @@ config_gen_image_db: i18n_generate_demo_portal: ./.venv/bin/python3 ./odoo/odoo-bin i18n --database code_generator --module demo_portal --addons_path addons/TechnoLibre_odoo-code-generator +########### +# Clean # +########### + +.PHONY: clean +clean: + find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete + ################### # Documentation # ################### # documentation all .PHONY: doc -doc: doc_dev doc_migration doc_test doc_user +doc: + ./script/make.sh doc_dev + ./script/make.sh doc_migration + ./script/make.sh doc_test + ./script/make.sh doc_user + ./script/make.sh doc_markdown # documentation clean all .PHONY: doc_clean -doc_clean: doc_clean_dev doc_clean_migration doc_clean_test doc_clean_user +doc_clean: + ./script/make.sh doc_clean_dev + ./script/make.sh doc_clean_migration + ./script/make.sh doc_clean_test + ./script/make.sh doc_clean_user # documentation dev .PHONY: doc_dev doc_dev: source ./.venv/bin/activate && make -C doc/itpp-labs_odoo-development/docs html || exit 1 + +.PHONY: open_doc_dev +open_doc_dev: -$(BROWSER) doc/itpp-labs_odoo-development/docs/_build/html/index.html .PHONY: doc_clean_dev @@ -525,6 +732,9 @@ doc_clean_dev: .PHONY: doc_migration doc_migration: source ./.venv/bin/activate && make -C doc/itpp-labs_odoo-port-docs/docs html || exit 1 + +.PHONY: open_doc_migration +open_doc_migration: -$(BROWSER) doc/itpp-labs_odoo-port-docs/docs/_build/html/index.html .PHONY: doc_clean_migration @@ -535,6 +745,9 @@ doc_clean_migration: .PHONY: doc_test doc_test: source ./.venv/bin/activate && make -C doc/itpp-labs_odoo-test-docs/doc-src html || exit 1 + +.PHONY: open_doc_test +open_doc_test: -$(BROWSER) doc/itpp-labs_odoo-test-docs/doc-src/_build/html/index.html .PHONY: doc_clean_test @@ -545,6 +758,9 @@ doc_clean_test: .PHONY: doc_user doc_user: source ./.venv/bin/activate && make -C doc/odoo_documentation-user html || exit 1 + +.PHONY: open_doc_user +open_doc_user: -$(BROWSER) doc/odoo_documentation-user/_build/html/index.html .PHONY: doc_clean_user diff --git a/pyproject.toml b/pyproject.toml index 9bde480..8b9b3ba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,6 +2,14 @@ requires = [ "poetry>=1.0.0",] build-backend = "poetry.masonry.api" +[tool.isort] +profile = "black" +py_version = 37 + +[tool.black] +line-length = 79 +target-version = [ "py37",] + [tool.poetry] name = "ERPLibre" version = "1.2.1" @@ -65,6 +73,7 @@ html2text = "2016.9.19" html5print = "^0.1.2" invoice2data = "^0.3.6" iscompatible = "^0.1.1" +isort = "^5.10.1" jira = "2.0.0" js2py = "^0.71" keystoneauth1 = "3.14.0" diff --git a/requirements.txt b/requirements.txt index ff609e1..a319bb8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -43,6 +43,7 @@ html5print css-html-prettify BeautifulSoup4 git+https://github.com/psf/black.git@21.6b0 +isort # For updating poetry toml diff --git a/script/addons/check_addons_exist.py b/script/addons/check_addons_exist.py new file mode 100755 index 0000000..09b8f81 --- /dev/null +++ b/script/addons/check_addons_exist.py @@ -0,0 +1,115 @@ +#!./.venv/bin/python +import argparse +import configparser +import logging +import os +import sys +from collections import defaultdict + +CONFIG_PATH = "./config.conf" + +logging.basicConfig( + format=( + "%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d]" + " %(message)s" + ), + datefmt="%Y-%m-%d:%H:%M:%S", + level=logging.INFO, +) +_logger = logging.getLogger(__name__) + + +def get_config(): + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="""\ + Check if module exist and is not multiple here to manage conflict. +""", + epilog="""\ +""", + ) + parser.add_argument( + "-m", + "--module", + required=True, + help="Module name to search, a list can be use separate by ,", + ) + parser.add_argument( + "--debug", + action="store_true", + help="Enable debug output", + ) + args = parser.parse_args() + return args + + +def main(): + config = get_config() + if config.debug: + logging.getLogger().setLevel(logging.DEBUG) + + config_parser = configparser.ConfigParser() + config_parser.read(CONFIG_PATH) + if "options" in config_parser: + if "addons_path" in config_parser["options"]: + addons_path = config_parser["options"]["addons_path"] + else: + _logger.error( + "Missing item 'addons_path' in section 'options' in" + f" '{CONFIG_PATH}'" + ) + return -1 + else: + _logger.error(f"Missing section 'options' in '{CONFIG_PATH}'") + return -1 + + lst_addons_path = addons_path.split(",") + lst_module = config.module.split(",") + + dct_module_exist = defaultdict(list) + dct_module_exist_empty = defaultdict(list) + lst_module_not_exist = [] + + for module in lst_module: + for path in lst_addons_path: + module_path = os.path.join(path, module) + manifest_file_path = os.path.join(module_path, "__manifest__.py") + if os.path.isdir(module_path): + if os.path.isfile(manifest_file_path): + dct_module_exist[module].append(module_path) + else: + dct_module_exist_empty[module].append(module_path) + + if module not in dct_module_exist.keys(): + lst_module_not_exist.append(module) + + is_good = True + if lst_module_not_exist: + is_good = False + module_list = "'" + "', '".join(lst_module_not_exist) + "'" + _logger.error( + "Missing" + f" module{'s' if len(lst_module_not_exist) > 1 else ''} {module_list}" + ) + if dct_module_exist: + for key, lst_value in dct_module_exist.items(): + if len(lst_value) != 1: + is_good = False + module_list = "'" + "', '".join(lst_value) + "'" + _logger.error(f"Conflict modules: {module_list}") + for value in lst_value: + print(value) + + if dct_module_exist_empty: + for key, lst_value in dct_module_exist_empty.items(): + module_list = "'" + "', '".join(lst_value) + "'" + _logger.warning( + "Found this directory, but missing __manifest__.py:" + f" {module_list}" + ) + + return 0 if is_good else -1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/script/addons/install_addons.sh b/script/addons/install_addons.sh index 5c684c2..0ce140f 100755 --- a/script/addons/install_addons.sh +++ b/script/addons/install_addons.sh @@ -1,5 +1,11 @@ #!/usr/bin/env bash -./run.sh --no-http --stop-after-init -d $1 -i $2 -u $2 +./script/addons/check_addons_exist.py -m "$2" +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error install_addons.sh" + exit 1 +fi +./run.sh --no-http --stop-after-init -d "$1" -i "$2" -u "$2" retVal=$? if [[ $retVal -ne 0 ]]; then echo "Error install_addons.sh" diff --git a/script/addons/install_addons_dev.sh b/script/addons/install_addons_dev.sh index ba82bb8..b0fd487 100755 --- a/script/addons/install_addons_dev.sh +++ b/script/addons/install_addons_dev.sh @@ -1,5 +1,11 @@ #!/usr/bin/env bash -./run.sh --no-http --stop-after-init --dev qweb -d $1 -i $2 -u $2 +./script/addons/check_addons_exist.py -m "$2" +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error install_addons.sh" + exit 1 +fi +./run.sh --no-http --stop-after-init --dev qweb -d "$1" -i "$2" -u "$2" retVal=$? if [[ $retVal -ne 0 ]]; then echo "Error install_addons_dev.sh" diff --git a/script/addons/reinstall_addons.sh b/script/addons/reinstall_addons.sh index a32fb6e..5e1b292 100755 --- a/script/addons/reinstall_addons.sh +++ b/script/addons/reinstall_addons.sh @@ -1,6 +1,12 @@ #!/usr/bin/env bash -./script/addons/uninstall_addons.sh $1 $2 -./script/addons/install_addons_dev.sh $1 $2 +./script/addons/check_addons_exist.py -m "$2" +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error install_addons.sh" + exit 1 +fi +./script/addons/uninstall_addons.sh "$1" "$2" +./script/addons/install_addons_dev.sh "$1" "$2" retVal=$? if [[ $retVal -ne 0 ]]; then echo "Error reinstall_addons.sh" diff --git a/script/addons/uninstall_addons.sh b/script/addons/uninstall_addons.sh index 65c3ce9..0685095 100755 --- a/script/addons/uninstall_addons.sh +++ b/script/addons/uninstall_addons.sh @@ -1,2 +1,8 @@ #!/usr/bin/env bash -./run.sh --no-http --stop-after-init -d $1 --uninstall $2 +./script/addons/check_addons_exist.py -m "$2" +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error install_addons.sh" + exit 1 +fi +./run.sh --no-http --stop-after-init -d "$1" --uninstall "$2" diff --git a/script/code_generator/check_git_change_code_generator.sh b/script/code_generator/check_git_change_code_generator.sh index f0c5e69..14a101f 100755 --- a/script/code_generator/check_git_change_code_generator.sh +++ b/script/code_generator/check_git_change_code_generator.sh @@ -73,27 +73,41 @@ On_IPurple='\033[0;105m' # Purple On_ICyan='\033[0;106m' # Cyan On_IWhite='\033[0;107m' # White -# TODO support argument to test only specified path - check_git() { REP=$1 - cd ${REP} + cd "${REP}" || exit - output=$(git status --porcelain) - if [ -z "$output" ]; then - echo "PASS - ${REP}" + if [ $# -gt 1 ]; then + output=$(git status --porcelain "$2") else - echo -e "${Red}FAIL - ${REP}${Color_Off}" + output=$(git status --porcelain) + fi + if [ -z "$output" ]; then + if [ $# -gt 1 ]; then + echo "PASS - ${REP}/${2}" + else + echo "PASS - ${REP}" + fi + else + if [ $# -gt 1 ]; then + echo -e "${Red}FAIL - ${REP}${2}${Color_Off}" + else + echo -e "${Red}FAIL - ${REP}${Color_Off}" + fi echo -e "${BRed}${output}${Color_Off}" - cd - >/dev/null + cd - >/dev/null || exit exit 1 fi - cd - >/dev/null + cd - >/dev/null || exit } if [ $# -gt 0 ]; then - check_git "$1" + if [ $# -gt 1 ]; then + check_git "$1" "$2" + else + check_git "$1" + fi else # check_git "./addons/TechnoLibre_odoo-code-generator" check_git "./addons/TechnoLibre_odoo-code-generator-template" diff --git a/script/code_generator/create_from_existing_module.py b/script/code_generator/create_from_existing_module.py new file mode 100755 index 0000000..a34b189 --- /dev/null +++ b/script/code_generator/create_from_existing_module.py @@ -0,0 +1,60 @@ +#!./.venv/bin/python +import argparse +import logging +import os +import sys + +logging.basicConfig(level=logging.DEBUG) +_logger = logging.getLogger(__name__) + +# TODO Check if exist, (A) master[template], (B) replicator[code_generator], (C) module +# TODO if force, recreate from C +# TODO if c is code_generator_demo with a different name, execute it. +# TODO if a exist, execute it, and execute b. +# TODO open commit view + + +def get_config(): + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="""\ + Get the list of updating module in a working path, + for each module, search where it's suppose to generate new code, + compare if the date change of directory is after the starting date. +""", + epilog="""\ +""", + ) + parser.add_argument( + "-d", + "--directory", + required=True, + help="Directory of the module.", + ) + parser.add_argument( + "-m", + "--module_name", + required=True, + help="Module name to create", + ) + parser.add_argument( + "-f", + "--force", + required=True, + help="Force override directory and module.", + ) + args = parser.parse_args() + return args + + +def main(): + config = get_config() + if not os.path.exists(config.directory): + _logger.error(f"Path directory {config.directory} not exist.") + return -1 + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/script/code_generator/install_and_test_code_generator.sh b/script/code_generator/install_and_test_code_generator.sh index c6e71fc..d28454d 100755 --- a/script/code_generator/install_and_test_code_generator.sh +++ b/script/code_generator/install_and_test_code_generator.sh @@ -1,29 +1,47 @@ #!/usr/bin/env bash # $1 is database name -# $2 is module name +# $2 is module name separate by , # $3 is directory path to check +# $4 is generated module name separate by , -./script/addons/install_addons_dev.sh $1 $2 +if (($# < 4)); then + echo "ERROR, need 4 arguments: 1-database name, 2-list of module to install, 3-directory to check difference, 4-list of generated module" + exit 1 +fi + +INIT_DATETIME=$(date +%s) + +./script/addons/install_addons_dev.sh "$1" "$2" retVal=$? if [[ $retVal -ne 0 ]]; then echo "Error ./script/addons/install_addons_dev.sh ${1} ${2}" exit 1 fi + +# Check if the code was updated +./script/code_generator/test_code_generator_update_module.py -m "$4" -d "$3" --datetime "${INIT_DATETIME}" +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error ./script/code_generator/test_code_generator_update_module.py ${4} ${3}" + exit 1 +fi + +# TODO check output when got warning ./script/repo_revert_git_diff_date_from_code_generator.py # Remove pot and po diff -cd $3 +cd "$3" || exit 1 # git 2.22 and more, else use next command #BRANCH=$(git branch --show-current) -BRANCH=$(git rev-parse --abbrev-ref HEAD) +#BRANCH=$(git rev-parse --abbrev-ref HEAD) # Support old version git < 2.23.0 # git restore --source="${BRANCH}" "*.po*" git checkout -- "*.po*" -cd - -./script/maintenance/black.sh $3 +cd - || exit 1 +./script/maintenance/black.sh "$3" echo "TEST ${2}" -./script/code_generator/check_git_change_code_generator.sh $3 +./script/code_generator/check_git_change_code_generator.sh "$3" retVal=$? if [[ $retVal -ne 0 ]]; then echo "Error ./script/code_generator/check_git_change_code_generator.sh" diff --git a/script/code_generator/new_project.py b/script/code_generator/new_project.py new file mode 100755 index 0000000..9c2b89d --- /dev/null +++ b/script/code_generator/new_project.py @@ -0,0 +1,498 @@ +#!./.venv/bin/python +import argparse +import logging +import os +import sys +import uuid + +from git import Repo +from git.exc import InvalidGitRepositoryError, NoSuchPathError + +CODE_GENERATOR_DIRECTORY = "./addons/TechnoLibre_odoo-code-generator-template/" +CODE_GENERATOR_DEMO_NAME = "code_generator_demo" +KEY_REPLACE_CODE_GENERATOR_DEMO = 'MODULE_NAME = "%s"' + +logging.basicConfig( + format=( + "%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d]" + " %(message)s" + ), + datefmt="%Y-%m-%d:%H:%M:%S", + level=logging.INFO, +) +_logger = logging.getLogger(__name__) + +# TODO Check if exist DONE +# TODO change name into code_generator_demo DONE +# TODO Create code generator empty module with demo DONE +# TODO revert code_generator_demo DONE +# TODO execute create_code_generator_from_existing_module.sh with force option +# TODO open web interface on right database already selected locally with make run + + +def get_config(): + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="""\ + Create new project for a single module with code generator suite. +""", + epilog="""\ +""", + ) + parser.add_argument( + "-d", + "--directory", + required=True, + help="Directory of the module, need to be a git root directory.", + ) + parser.add_argument( + "-m", + "--module", + required=True, + help="Module name to create", + ) + parser.add_argument( + "--directory_code_generator", + help="The directory of the code_generator to use.", + ) + parser.add_argument( + "--code_generator_name", + help="The name of the code_generator to use.", + ) + parser.add_argument( + "--directory_template_name", + help="The directory of the template to use.", + ) + parser.add_argument( + "--template_name", + help="The name of the template to use.", + ) + parser.add_argument( + "-f", + "--force", + action="store_true", + help="Force override directory and module.", + ) + parser.add_argument( + "--do_not_update_config", + action="store_true", + help=( + "Ignore updating config file. This is a patch for a bug for" + " duplicate path, but 1 relative and the other is absolute." + ), + ) + parser.add_argument( + "--keep_bd_alive", + action="store_true", + help="By default, the bd is cleaned after a run.", + ) + parser.add_argument( + "--debug", + action="store_true", + help="Enable debug output", + ) + args = parser.parse_args() + return args + + +class ProjectManagement: + def __init__( + self, + module_name, + module_directory, + cg_name="", + cg_directory="", + template_name="", + template_directory="", + force=False, + ignore_config=False, + keep_bd_alive=False, + ): + self.force = force + self.ignore_config = ignore_config + self.keep_bd_alive = keep_bd_alive + self.msg_error = "" + self.origin_config_txt = "" + self.has_config_update = False + + self.module_directory = module_directory + if not os.path.exists(self.module_directory): + self.msg_error = ( + f"Path directory '{self.module_directory}' not exist." + ) + _logger.error(self.msg_error) + return + + self.cg_directory = cg_directory if cg_directory else module_directory + if not os.path.exists(self.cg_directory): + self.msg_error = ( + f"Path cg directory '{self.cg_directory}' not exist." + ) + _logger.error(self.msg_error) + return + + self.template_directory = ( + template_directory if template_directory else module_directory + ) + if not os.path.exists(self.template_directory): + self.msg_error = ( + f"Path template directory '{self.template_directory}' not" + " exist." + ) + _logger.error(self.msg_error) + return + + if not module_name: + self.msg_error = "Module name is missing." + _logger.error(self.msg_error) + return + + # Get module name + self.module_name = module_name + # Get code_generator name + self.cg_name = self._generate_cg_name(default=cg_name) + # Get template name + self.template_name = self._generate_template_name( + default=template_name + ) + + def _generate_cg_name(self, default=""): + if default: + return default + return f"code_generator_{self.module_name}" + + def _generate_template_name(self, default=""): + if default: + return default + return f"code_generator_template_{self.module_name}" + + def search_and_replace_file(self, filepath, lst_search_and_replace): + """ + lst_search_and_replace is a list of tuple, first item is search, second is replace + """ + with open(filepath, "r") as file: + txt = file.read() + for search, replace in lst_search_and_replace: + if search not in txt: + self.msg_error = ( + f"Cannot find '{search}' in file '{filepath}'" + ) + _logger.error(self.msg_error) + return False + txt = txt.replace(search, replace) + with open(filepath, "w") as file: + file.write(txt) + return True + + @staticmethod + def validate_path_ready_to_be_override(name, directory, path=""): + if not path: + path = os.path.join(directory, name) + if not os.path.exists(path): + return True + # Check if in git + try: + git_repo = Repo(directory) + except NoSuchPathError: + _logger.error(f"Directory not existing '{directory}'") + return False + except InvalidGitRepositoryError: + _logger.error( + f"The path '{path}' exist, but no git repo, use force to" + " ignore it." + ) + return False + + status = git_repo.git.status(name, porcelain=True) + if status: + _logger.error( + f"The directory '{path}' has git difference, use force to" + " ignore it." + ) + print(status) + return False + return True + + @staticmethod + def restore_git_code_generator_demo( + code_generator_demo_path, relative_path + ): + try: + git_repo = Repo(code_generator_demo_path) + except NoSuchPathError: + _logger.error( + f"Directory not existing '{code_generator_demo_path}'" + ) + return False + except InvalidGitRepositoryError: + _logger.error( + f"The path '{code_generator_demo_path}' exist, but no git repo" + ) + return False + + git_repo.git.restore(relative_path) + + def generate_module(self): + module_path = os.path.join(self.module_directory, self.module_name) + if not self.force and not self.validate_path_ready_to_be_override( + self.module_name, self.module_directory, path=module_path + ): + self.msg_error = f"Cannot generate on module path '{module_path}'" + _logger.error(self.msg_error) + return False + + cg_path = os.path.join(self.cg_directory, self.cg_name) + if not self.force and not self.validate_path_ready_to_be_override( + self.cg_name, self.cg_directory, path=cg_path + ): + self.msg_error = f"Cannot generate on cg path '{cg_path}'" + _logger.error(self.msg_error) + return False + + template_path = os.path.join( + self.template_directory, self.template_name + ) + template_hooks_py = os.path.join(template_path, "hooks.py") + if not self.force and not self.validate_path_ready_to_be_override( + self.template_name, self.template_directory, path=template_path + ): + self.msg_error = ( + f"Cannot generate on template path '{template_path}'" + ) + _logger.error(self.msg_error) + return False + + # Validate code_generator_demo + code_generator_demo_path = os.path.join( + CODE_GENERATOR_DIRECTORY, CODE_GENERATOR_DEMO_NAME + ) + code_generator_demo_hooks_py = os.path.join( + code_generator_demo_path, "hooks.py" + ) + code_generator_hooks_path_relative = os.path.join( + CODE_GENERATOR_DEMO_NAME, "hooks.py" + ) + if not os.path.exists(code_generator_demo_path): + self.msg_error = ( + "code_generator_demo is not accessible" + f" '{code_generator_demo_path}'" + ) + _logger.error(self.msg_error) + return False + + if not ( + self.validate_path_ready_to_be_override( + CODE_GENERATOR_DEMO_NAME, CODE_GENERATOR_DIRECTORY + ) + and self.search_and_replace_file( + code_generator_demo_hooks_py, + [ + ( + KEY_REPLACE_CODE_GENERATOR_DEMO + % CODE_GENERATOR_DEMO_NAME, + KEY_REPLACE_CODE_GENERATOR_DEMO % self.template_name, + ), + ( + 'value["enable_sync_template"] = False', + 'value["enable_sync_template"] = True', + ), + ( + "# path_module_generate =" + " os.path.normpath(os.path.join(os.path.dirname(__file__)," + " '..'))", + f'path_module_generate = "{self.module_directory}"', + ), + ( + '# "path_sync_code": path_module_generate,', + '"path_sync_code": path_module_generate,', + ), + ( + '# value["template_module_path_generated_extension"]' + ' = "."', + 'value["template_module_path_generated_extension"] =' + f' "{self.cg_directory}"', + ), + ], + ) + ): + return False + self.update_config() + + bd_name_demo = f"new_project_code_generator_demo_{uuid.uuid4()}"[:63] + cmd = f"./script/db_restore.py --database {bd_name_demo}" + _logger.info(cmd) + os.system(cmd) + _logger.info("========= GENERATE code_generator_demo =========") + cmd = ( + f"./script/addons/install_addons_dev.sh {bd_name_demo}" + " code_generator_demo" + ) + os.system(cmd) + + if not self.keep_bd_alive: + cmd = ( + "./.venv/bin/python3 ./odoo/odoo-bin db --drop --database" + f" {bd_name_demo}" + ) + _logger.info(cmd) + os.system(cmd) + + # Revert code_generator_demo + self.restore_git_code_generator_demo( + CODE_GENERATOR_DIRECTORY, code_generator_hooks_path_relative + ) + + # Validate + if not os.path.exists(template_path): + _logger.error(f"Module template not exists '{template_path}'") + self.revert_config() + return False + else: + _logger.info(f"Module template exists '{template_path}'") + + self.search_and_replace_file( + template_hooks_py, + [ + ( + 'value["enable_template_wizard_view"] = False', + 'value["enable_template_wizard_view"] = True', + ), + ], + ) + + # Execute all + bd_name_template = ( + f"new_project_code_generator_template_{uuid.uuid4()}"[:63] + )[:63] + cmd = f"./script/db_restore.py --database {bd_name_template}" + os.system(cmd) + _logger.info(cmd) + _logger.info(f"========= GENERATE {self.template_name} =========") + # TODO maybe the module exist somewhere else + if os.path.exists(module_path): + # Install module before running code generator + cmd = ( + "./script/code_generator/search_class_model.py --quiet -d" + f" {module_path} -t {template_path}" + ) + _logger.info(cmd) + os.system(cmd) + cmd = ( + f"./script/addons/install_addons_dev.sh {bd_name_template}" + f" {self.module_name}" + ) + _logger.info(cmd) + os.system(cmd) + + cmd = ( + f"./script/addons/install_addons_dev.sh {bd_name_template}" + f" {self.template_name}" + ) + _logger.info(cmd) + os.system(cmd) + + if not self.keep_bd_alive: + cmd = ( + "./.venv/bin/python3 ./odoo/odoo-bin db --drop --database" + f" {bd_name_template}" + ) + _logger.info(cmd) + os.system(cmd) + + # Validate + if not os.path.exists(cg_path): + _logger.error(f"Module cg not exists '{cg_path}'") + self.revert_config() + return False + else: + _logger.info(f"Module cg exists '{cg_path}'") + + bd_name_generator = f"new_project_code_generator_{uuid.uuid4()}"[:63] + cmd = f"./script/db_restore.py --database {bd_name_generator}" + _logger.info(cmd) + os.system(cmd) + _logger.info(f"========= GENERATE {self.cg_name} =========") + + cmd = ( + f"./script/addons/install_addons_dev.sh {bd_name_generator}" + f" {self.cg_name}" + ) + _logger.info(cmd) + os.system(cmd) + + if not self.keep_bd_alive: + cmd = ( + "./.venv/bin/python3 ./odoo/odoo-bin db --drop --database" + f" {bd_name_generator}" + )[:63] + _logger.info(cmd) + os.system(cmd) + + # Validate + if not os.path.exists(template_path): + _logger.error(f"Module not exists '{module_path}'") + self.revert_config() + return False + else: + _logger.info(f"Module exists '{module_path}'") + + self.revert_config() + return True + + def update_config(self): + if self.ignore_config: + return + # Backup config and restore it after, check if path exist or add it temporary + with open("./config.conf") as config: + config_txt = config.read() + self.origin_config_txt = config_txt + lst_directory = list( + { + self.cg_directory, + self.module_directory, + self.template_directory, + } + ) + lst_directory_to_add = [] + for directory in lst_directory: + if directory not in config_txt: + self.has_config_update = True + lst_directory_to_add.append(directory) + + if lst_directory_to_add: + new_str = "addons_path = " + ",".join(lst_directory_to_add) + "," + config_txt = config_txt.replace("addons_path = ", new_str) + with open("./config.conf", "w") as config: + config.write(config_txt) + + def revert_config(self): + if self.ignore_config: + return + with open("./config.conf", "w") as config: + config.write(self.origin_config_txt) + + +def main(): + config = get_config() + if config.debug: + logging.getLogger().setLevel(logging.DEBUG) + project = ProjectManagement( + config.module, + config.directory, + cg_name=config.code_generator_name, + template_name=config.template_name, + force=config.force, + ignore_config=config.do_not_update_config, + keep_bd_alive=config.keep_bd_alive, + ) + if project.msg_error: + return -1 + + if not project.generate_module(): + return -1 + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/script/code_generator/search_class_model.py b/script/code_generator/search_class_model.py new file mode 100755 index 0000000..266bf28 --- /dev/null +++ b/script/code_generator/search_class_model.py @@ -0,0 +1,223 @@ +#!./.venv/bin/python +import argparse + +# import glob +import ast +import logging +import os +import sys +from pathlib import Path + +logging.basicConfig(level=logging.DEBUG) +_logger = logging.getLogger(__name__) + + +def get_config(): + """Parse command line arguments, extracting the config file name, + returning the union of config file and command line arguments + + :return: dict of config file settings and command line arguments + """ + + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="""\ + Search all method class and give a list separate by ; +""", + epilog="""\ +""", + ) + parser.add_argument( + "-d", + "--directory", + dest="directory", + required=True, + help="Directory to execute search in recursive.", + ) + parser.add_argument( + "-t", + "--template_dir", + dest="template_dir", + help=( + "Overwrite value template_model_name in template module, give only" + " template source directory, will update file hooks.py" + ), + ) + parser.add_argument( + "--with_inherit", + action="store_true", + help="Will search inherit model", + ) + parser.add_argument( + "-q", + "--quiet", + action="store_true", + help="Don't show output of found model.", + ) + args = parser.parse_args() + return args + + +def search_and_replace( + f_lines, hooks_file_path, models_name, search_word="template_model_name" +): + if not models_name: + return f_lines + t_index = f_lines.find(search_word) + if t_index == -1: + _logger.error(f"Cannot find {search_word} in file {hooks_file_path}") + return -1 + t_index_equation = f_lines.index("=", t_index + 1) + if t_index_equation == -1: + _logger.error(f"Cannot find {search_word} = in file {hooks_file_path}") + return -1 + # find next character + i = 1 + while f_lines[t_index_equation + i] in (" ", "\n"): + i += 1 + first_char = f_lines[t_index_equation + i] + if first_char == "(": + second_char = ")" + elif f_lines[t_index_equation + i : t_index_equation + i + 3] == '"""': + first_char = '"""' + second_char = '"""' + else: + second_char = first_char + # t_index_first_quote = f_lines.index(first_char, t_index + 1) + t_index_second_quote = f_lines.index(first_char, t_index_equation + i) + if t_index_second_quote == -1: + _logger.error( + f'Cannot find {search_word} = "##" in file {hooks_file_path}' + ) + return -1 + t_index_third_quote = f_lines.index(second_char, t_index_second_quote + 1) + if t_index_third_quote == -1: + _logger.error(f"Cannot find third quote in file {hooks_file_path}") + return -1 + # if "\n" in models_name: + # new_file_content = ( + # f'{f_lines[:t_index_second_quote]}"""{models_name}"""{f_lines[t_index_third_quote + len(second_char):]}' + # ) + # else: + # new_file_content = ( + # f'{f_lines[:t_index_second_quote]}"{models_name}"{f_lines[t_index_third_quote + len(second_char):]}' + # ) + new_file_content = ( + f'{f_lines[:t_index_second_quote]}"{models_name}"{f_lines[t_index_third_quote + len(second_char):]}' + ) + return new_file_content + + +def main(): + config = get_config() + if not os.path.exists(config.directory): + _logger.error(f"Path directory {config.directory} not exist.") + return -1 + lst_model_name = [] + lst_model_inherit_name = [] + lst_search_target = ("_name",) + + lst_search_inherit_target = ("_inherit",) if config.with_inherit else [] + + # lst_py_file = glob.glob(os.path.join(config.directory, "***", "*.py")) + lst_py_file = Path(config.directory).rglob("*.py") + for py_file in lst_py_file: + if py_file == "__init__.py": + continue + with open(py_file, "r") as source: + f_lines = source.read() + try: + f_ast = ast.parse(f_lines) + except Exception as e: + _logger.error(f"Cannot parse file {py_file}") + continue + for children in f_ast.body: + if type(children) == ast.ClassDef: + # Detect good _name + for node in children.body: + if ( + type(node) is ast.Assign + and node.targets + and type(node.targets[0]) is ast.Name + # and node.targets[0].id in ("_name",) + and type(node.value) is ast.Str + ): + if ( + lst_search_target + and node.targets[0].id in lst_search_target + ): + if node.value.s in lst_model_name: + _logger.warning( + "Duplicated model name" + f" {node.value.s} from file {py_file}" + ) + else: + lst_model_name.append(node.value.s) + + if ( + lst_search_inherit_target + and node.targets[0].id + in lst_search_inherit_target + ): + if node.value.s in lst_model_inherit_name: + _logger.warning( + "Duplicated model inherit name" + f" {node.value.s} from file {py_file}" + ) + else: + lst_model_inherit_name.append(node.value.s) + lst_model_name.sort() + lst_model_inherit_name.sort() + models_name = "; ".join(lst_model_name) + # TODO temporary fix, remove this when it's supported + lst_ignored_inherit = ["portal.mixin", "mail.thread"] + for ignored_inherit in lst_ignored_inherit: + if ignored_inherit in lst_model_inherit_name: + lst_model_inherit_name.remove(ignored_inherit) + models_inherit_name = "; ".join(lst_model_inherit_name) + if not models_name: + _logger.warning(f"Missing models class in {config.directory}") + elif not config.quiet: + # _logger.info(models_name) + print(models_name) + print(models_inherit_name) + + if config.template_dir: + if not os.path.exists(config.template_dir): + _logger.error( + f"Path template dir {config.template_dir} not exist." + ) + return -1 + hooks_file_path = os.path.join(config.template_dir, "hooks.py") + if not os.path.exists(hooks_file_path): + _logger.error( + f"Path template hooks.py file {hooks_file_path} not exist." + ) + return -1 + + with open(hooks_file_path, "r") as source: + f_lines = source.read() + # Throw exception if not found + new_file_content = search_and_replace( + f_lines, hooks_file_path, models_name + ) + if models_inherit_name: + new_file_content = search_and_replace( + new_file_content, + hooks_file_path, + models_inherit_name, + search_word="template_inherit_model_name", + ) + + with open(hooks_file_path, "w") as source: + source.write(new_file_content) + + # Call black + os.system(f"./script/maintenance/black.sh {hooks_file_path}") + + return 0 + + +if __name__ == "__main__": + status = main() + sys.exit(status) diff --git a/script/code_generator/test_code_generator_update_module.py b/script/code_generator/test_code_generator_update_module.py new file mode 100755 index 0000000..aa385fa --- /dev/null +++ b/script/code_generator/test_code_generator_update_module.py @@ -0,0 +1,89 @@ +#!./.venv/bin/python +import argparse +import logging +import os +import sys + +logging.basicConfig(level=logging.DEBUG) +_logger = logging.getLogger(__name__) + + +def get_config(): + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="""\ + Get the list of updating module in a working path, + for each module, search where it's suppose to generate new code, + compare if the date change of directory is after the starting date. +""", + epilog="""\ +""", + ) + parser.add_argument( + "-d", + "--directory", + dest="directory", + required=True, + help="Directory of the module to check.", + ) + parser.add_argument( + "-m", + "--module_list", + dest="module_list", + required=True, + help="List of module, separate by ','", + ) + parser.add_argument( + "--datetime", + dest="datetime", + required=True, + help="The datetime to check if the generated module is after.", + ) + args = parser.parse_args() + return args + + +def main(): + config = get_config() + if not os.path.exists(config.directory): + _logger.error(f"Path directory {config.directory} not exist.") + return -1 + lst_module = [a for a in config.module_list.split(",") if a.split()] + if not lst_module: + _logger.error(f"No module was selected, be sure to use --module_list") + return -1 + + lst_result_good = [] + lst_result_wrong = [] + for module_name in lst_module: + if config.directory.endswith(module_name): + module_path = config.directory + else: + module_path = os.path.join(config.directory, module_name) + if not os.path.exists(module_path): + _logger.error( + f"Module '{module_name}' not existing in path" + f" '{config.directory}'." + ) + return -1 + stat = os.stat(module_path) + result = stat.st_mtime > float(config.datetime) + if result: + lst_result_good.append(module_name) + else: + lst_result_wrong.append(module_name) + + if lst_result_wrong: + _logger.error( + "FAIL - Some modules wasn't updated, did you execute the code" + f" generator? {lst_result_wrong}" + ) + return -1 + elif lst_result_good: + _logger.info("SUCCESS - All modules are updated.") + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/script/database/README.md b/script/database/README.md new file mode 100644 index 0000000..c07e2af --- /dev/null +++ b/script/database/README.md @@ -0,0 +1,14 @@ +# Database + +This section is for code generator database migrator. + +This configuration is for development environnement. + +You need to install script `./script/install_dev_extra_ubuntu.sh`. + +## Restore database + +Run script to restore database: +```bash +./script/database/restore_mariadb_sql_example_1.sh +``` diff --git a/script/database/db_drop_all.py b/script/database/db_drop_all.py new file mode 100755 index 0000000..ad6b9be --- /dev/null +++ b/script/database/db_drop_all.py @@ -0,0 +1,44 @@ +#!./.venv/bin/python +import argparse +import logging +import subprocess +import sys + +logging.basicConfig(level=logging.DEBUG) +_logger = logging.getLogger(__name__) + + +def execute_shell(cmd): + out = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) + return out.decode().strip() if out else "" + + +def get_config(): + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="""\ + Drop all database, caution! +""", + epilog="""\ +""", + ) + args = parser.parse_args() + return args + + +def main(): + config = get_config() + + out_db = execute_shell("./.venv/bin/python3 ./odoo/odoo-bin db --list") + lst_db = out_db.split("\n") + for db_name in lst_db: + execute_shell( + "./.venv/bin/python3 ./odoo/odoo-bin db --drop --database" + f" {db_name}" + ) + print(f"{db_name} deleted") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/script/database/fix_mariadb_sql_example_1.py b/script/database/fix_mariadb_sql_example_1.py new file mode 100755 index 0000000..021395b --- /dev/null +++ b/script/database/fix_mariadb_sql_example_1.py @@ -0,0 +1,2086 @@ +#!/usr/bin/env python +from collections import defaultdict + +import pymysql + +# Fix date with string "0000-00-00" + +# cr.execute("SET sql_mode = 'NO_ZERO_DATE';") +# cr.execute("SET sql_mode = 'NO_ZERO_IN_DATE';") + +# query_search = """SELECT * +# FROM tbl_demande_service +# WHERE DateFin = "0000-00-00" +# """ +# +# cr.execute(query_search) +# old_v = cr.fetchall() +# +# query = """UPDATE `tbl_demande_service` +# SET DateFin = NULL +# WHERE DateFin = "0000-00-00" +# """ +# +# v = cr.execute(query) + +# lst_echange_service = cr.fetchall() +# query_search = """SELECT * +# FROM tbl_echange_service +# """ +# +# cr.execute(query_search) +# lst_echange_service = cr.fetchall() + + +def main(): + database = "mariadb_sql_example_1" + host = "localhost" + port = 3306 + user = "organization" + password = "organization" + schema = "public" + + conn = pymysql.connect( + db=database, host=host, port=port, user=user, password=password + ) + + cr = conn.cursor() + + debug_over_generic( + cr, "tbl_droits_admin", "NoMembre", "tbl_membre", "NoMembre" + ) + debug_over_generic( + cr, "tbl_type_compte", "NoMembre", "tbl_membre", "NoMembre" + ) + debug_over_generic( + cr, + "tbl_categorie_sous_categorie", + "NoCategorie", + "tbl_categorie", + "NoCategorie", + ) + debug_over_generic( + cr, + "tbl_commande_membre_produit", + "NoFournisseurProduitCommande", + "tbl_fournisseur_produit_commande", + "NoFournisseurProduitCommande", + ) + debug_over_generic( + cr, "tbl_echange_service", "NoMembreVendeur", "tbl_membre", "NoMembre" + ) + debug_over_generic( + cr, + "tbl_fournisseur_produit", + "NoFournisseur", + "tbl_fournisseur", + "NoFournisseur", + ) + # TODO too much print ;-) + # debug_over_generic( + # cr, "tbl_log_acces", "NoMembre", "tbl_membre", "NoMembre" + # ) + debug_over_generic( + cr, + "tbl_membre", + "NoOrigine", + "tbl_origine", + "NoOrigine", + ) + debug_over_generic( + cr, + "tbl_membre", + "TransfereDe", + "tbl_organization", + "NoOrganization", + ) + # debug_over_generic( + # cr, + # "tbl_membre", + # "NoMembreConjoint", + # "tbl_membre", + # "NoMembre", + # ) + + delete_record(cr) + alter_table(cr) + replace_record(cr) + migrate_record(cr) + inverse_record(cr) + add_foreign_key(cr) + + conn.commit() + cr.close() + + +def debug_over_generic(cr, table1, field1, table2, field2): + print(f"Debug over {table1} {field1}") + query_search = f"""SELECT {field1} + FROM {table1} + """ + cr.execute(query_search) + lst_1 = cr.fetchall() + + set_1 = set([a[0] for a in lst_1]) + + query_search = f"""SELECT {field2} + FROM {table2} + """ + cr.execute(query_search) + lst_2 = cr.fetchall() + set_2 = set([a[0] for a in lst_2]) + + set_missing = set_1.difference(set_2) + # Result 7703 + if None in set_missing: + set_missing.remove(None) + print(set_missing) + if set_missing: + str_tpl = str(tuple(set_missing)) + if str_tpl.endswith(",)"): + str_tpl = str_tpl.replace(",)", ")") + query_search = f"""SELECT * + FROM {table1} + WHERE {field1} in {str_tpl} + """ + cr.execute(query_search) + lst_info = cr.fetchall() + print(f"From table {table1}") + print(lst_info) + + +def delete_record(cr): + # Delete record + print("Delete record") + query_search = """DELETE FROM `tbl_droits_admin` WHERE NoMembre in (0, 945, 7703, 1253, 2655);""" + cr.execute(query_search) + + query_search = """DELETE FROM `tbl_type_compte` WHERE NoMembre in (0, 945, 7703, 1253, 2652);""" + cr.execute(query_search) + + query_search = """ + DELETE FROM `tbl_commande_membre_produit` + WHERE NoFournisseurProduitCommande in (22659, 22724, 22662, 22663, 22732, 22670, 22705, 22737, 22741, 22679, 22680, 22682, 22655); + """ + cr.execute(query_search) + + query_search = """ + DELETE FROM `tbl_echange_service` + WHERE NoMembreVendeur in (7703); + """ + cr.execute(query_search) + + query_search = """ + DELETE FROM `tbl_categorie_sous_categorie` + WHERE NoCategorie in (999); + """ + cr.execute(query_search) + + query_search = """ + DELETE FROM `tbl_sous_categorie` + WHERE NoSousCategorie = "10"; + """ + cr.execute(query_search) + + +def migrate_record(cr): + print("Migrate record") + # Fix tbl_echange_service NbHeure, transform time to float + query_search = f"""SELECT * + FROM tbl_categorie + """ + cr.execute(query_search) + lst_categorie = cr.fetchall() + + query_search = f"""SELECT * + FROM tbl_sous_categorie + """ + cr.execute(query_search) + lst_sous_categorie = cr.fetchall() + + query_search = f"""SELECT * + FROM tbl_categorie_sous_categorie + """ + cr.execute(query_search) + lst_categorie_sous_categorie = cr.fetchall() + + # Insert Id into tbl_sous_categorie + i = 0 + for sous_categorie_id in lst_sous_categorie: + i += 1 + query_search = f"""UPDATE tbl_sous_categorie set NoSousCategorieId={i} + WHERE NoCategorie={sous_categorie_id[1]} and NoSousCategorie='{sous_categorie_id[0]}' + """ + cr.execute(query_search) + query_search = f"""SELECT * + FROM tbl_sous_categorie + """ + cr.execute(query_search) + lst_sous_categorie = cr.fetchall() + + # Update all NoSousCategorieId from tbl_categorie_sous_categorie + for categorie_sous_categorie_id in lst_categorie_sous_categorie: + id_sous_categorie = _search_id_from_sous_categorie( + lst_sous_categorie, + categorie_sous_categorie_id[2], + categorie_sous_categorie_id[1], + ) + if id_sous_categorie is None: + raise ValueError( + f"Get null from {categorie_sous_categorie_id[2]} and" + f" {categorie_sous_categorie_id[1]}" + ) + query_search = f"""UPDATE tbl_categorie_sous_categorie set NoSousCategorieId={id_sous_categorie} + WHERE NoCategorieSousCategorie={categorie_sous_categorie_id[0]} + """ + cr.execute(query_search) + + # Validate for debugging + query_search = f"""SELECT * + FROM tbl_categorie_sous_categorie + """ + cr.execute(query_search) + lst_categorie_sous_categorie = cr.fetchall() + pass + + +def inverse_record(cr): + print("Inverse record") + query_search = f"""SHOW COLUMNS FROM `tbl_pointservice` LIKE 'NoMembre'; + """ + cr.execute(query_search) + is_exist = cr.fetchall() + + if not is_exist: + return + + # Ignore this, this link need to be dead + try: + query_search = f"""alter table tbl_membre + drop column EstUnPointService; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = f"""alter table tbl_membre + add EstUnPointService tinyint(1) null; + """ + cr.execute(query_search) + + # try: + # query_search = f"""alter table tbl_pointservice + # drop column NoArrondissement; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # try: + # query_search = f"""alter table tbl_pointservice + # drop column NoVille; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # try: + # query_search = f"""alter table tbl_pointservice + # drop column NoRegion; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # try: + # query_search = f"""alter table tbl_pointservice + # drop column CodePostale; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # try: + # query_search = f"""alter table tbl_pointservice + # drop column DateAdhesion; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # try: + # query_search = f"""alter table tbl_pointservice + # drop column Adresse; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # try: + # query_search = f"""alter table tbl_pointservice + # drop column Telephone1; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # try: + # query_search = f"""alter table tbl_pointservice + # drop column Telephone2; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # try: + # query_search = f"""alter table tbl_pointservice + # drop column Courriel; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # try: + # query_search = f"""alter table tbl_pointservice + # drop column RecevoirCourrielGRP; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # try: + # query_search = f"""alter table tbl_pointservice + # drop column Date_MAJ_Membre; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # + # try: + # query_search = f"""alter table tbl_achat_ponctuel + # drop column NoPointService; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # + # try: + # query_search = f"""alter table tbl_commande_membre + # drop column NoPointService; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # + # query_search = f"""alter table tbl_pointservice + # add NoArrondissement int unsigned null; + # """ + # cr.execute(query_search) + # query_search = f"""alter table tbl_pointservice + # add NoVille int unsigned null; + # """ + # cr.execute(query_search) + # query_search = f"""alter table tbl_pointservice + # add NoRegion int unsigned null; + # """ + # cr.execute(query_search) + # query_search = f"""alter table tbl_pointservice + # add CodePostale varchar(10); + # """ + # cr.execute(query_search) + # query_search = f"""alter table tbl_pointservice + # add DateAdhesion date null; + # """ + # cr.execute(query_search) + # query_search = f"""alter table tbl_pointservice + # add Adresse varchar(60); + # """ + # cr.execute(query_search) + # query_search = f"""alter table tbl_pointservice + # add Telephone1 varchar(15); + # """ + # cr.execute(query_search) + # query_search = f"""alter table tbl_pointservice + # add Telephone2 varchar(15) null; + # """ + # cr.execute(query_search) + # query_search = f"""alter table tbl_pointservice + # add Courriel varchar(60) null; + # """ + # cr.execute(query_search) + # query_search = f"""alter table tbl_pointservice + # add RecevoirCourrielGRP tinyint(1) null; + # """ + # cr.execute(query_search) + # query_search = f"""alter table tbl_pointservice + # add Date_MAJ_Membre datetime null; + # """ + # cr.execute(query_search) + # + # query_search = f"""alter table tbl_achat_ponctuel + # add NoPointService int unsigned null; + # """ + # cr.execute(query_search) + # + # query_search = f"""alter table tbl_commande_membre + # add NoPointService int unsigned null; + # """ + # cr.execute(query_search) + + # Move all information + query_search = f"""SELECT * + FROM tbl_pointservice + """ + cr.execute(query_search) + lst_pointservice = cr.fetchall() + + # for tpl_pointservice in lst_pointservice: + # query_search = f"""SELECT * + # FROM tbl_membre WHERE NoMembre = {tpl_pointservice[2]}; + # """ + # cr.execute(query_search) + # membre = cr.fetchone() + # + # sql = f"""UPDATE tbl_pointservice SET """ + # + # if membre[10]: + # sql += f""" + # NoArrondissement = {membre[10]}, + # """ + # sql += f""" + # NoVille = {membre[11]}, + # NoRegion = {membre[12]}, + # CodePostale = "{membre[15]}", + # DateAdhesion = "{membre[16]}", + # Adresse = "{membre[19]}", + # Telephone1 = "{membre[20]}", + # """ + # if membre[23]: + # sql += f""" + # Telephone2 = "{membre[23]}", + # """ + # if membre[29]: + # sql += f""" + # Courriel = "{membre[29]}", + # """ + # if membre[49]: + # sql += f""" + # RecevoirCourrielGRP = {membre[49]}, + # """ + # sql += f""" + # Date_MAJ_Membre = "{membre[52]}" + # """ + # sql += f""" + # WHERE NoPointService = {tpl_pointservice[0]};""" + # cr.execute(sql) + # + # query_search = f""" + # DELETE FROM `tbl_membre` + # WHERE NoMembre = {tpl_pointservice[2]}; + # """ + # cr.execute(query_search) + # + # query_search = f""" + # UPDATE tbl_achat_ponctuel + # SET NoMembre=NULL, NoPointService={tpl_pointservice[0]} + # WHERE NoMembre = {tpl_pointservice[2]}; + # """ + # cr.execute(query_search) + # + # query_search = f""" + # UPDATE tbl_commande_membre + # SET NoMembre=NULL, NoPointService={tpl_pointservice[0]} + # WHERE NoMembre = {tpl_pointservice[2]}; + # """ + # cr.execute(query_search) + + dct_membre_pointservice = defaultdict(list) + for tpl_pointservice in lst_pointservice: + dct_membre_pointservice[tpl_pointservice[2]].append( + tpl_pointservice[0] + ) + + for no_membre, lst_ps_id in dct_membre_pointservice.items(): + if len(lst_ps_id) > 1: + print( + f"Too much value for membre admin {no_membre} point service" + f" {lst_ps_id}" + ) + return + # one_ps_i = lst_ps_id[0] + sql = f"""UPDATE tbl_membre + SET EstUnPointService = -1 + WHERE NoMembre = {no_membre};""" + cr.execute(sql) + + try: + query_search = f"""alter table tbl_pointservice + drop column NoMembre; + """ + cr.execute(query_search) + except Exception: + pass + pass + + +def _search_id_from_sous_categorie( + lst_sous_categorie, no_categorie, no_sous_categorie +): + for tpl_sous_categorie in lst_sous_categorie: + if ( + tpl_sous_categorie[0] == no_sous_categorie + and tpl_sous_categorie[1] == no_categorie + ): + return tpl_sous_categorie[5] + + +def alter_table(cr): + print("Alter table") + # Fix tbl_echange_service NbHeure, transform time to float + query_search = ( + """ALTER TABLE tbl_echange_service modify NbHeure float null;""" + ) + cr.execute(query_search) + query_search = """alter table tbl_commande_membre modify NoMembre int unsigned null;""" + cr.execute(query_search) + + # Fix field for foreign key + query_search = """ + ALTER TABLE tbl_arrondissement + MODIFY NoVille int unsigned null; + """ + cr.execute(query_search) + + # Fix field for foreign key + query_search = """ + ALTER TABLE tbl_fournisseur_produit + MODIFY NoFournisseur int unsigned null; + """ + cr.execute(query_search) + + # Fix field for foreign key + query_search = """ + ALTER TABLE tbl_membre + MODIFY NoTypeCommunication int unsigned null; + """ + cr.execute(query_search) + + # Fix field for foreign key + query_search = """ + ALTER TABLE tbl_membre + MODIFY NoOccupation int unsigned null; + """ + cr.execute(query_search) + + # Fix field for foreign key + query_search = """ + ALTER TABLE tbl_membre + MODIFY NoOrigine int unsigned null; + """ + cr.execute(query_search) + + # Fix field for foreign key + query_search = """ + ALTER TABLE tbl_membre + MODIFY NoSituationMaison int unsigned null; + """ + cr.execute(query_search) + + # Fix field for foreign key + query_search = """ + ALTER TABLE tbl_membre + MODIFY NoProvenance int unsigned null; + """ + cr.execute(query_search) + + # Fix field for foreign key + query_search = """ + ALTER TABLE tbl_membre + MODIFY NoRevenuFamilial int unsigned null; + """ + cr.execute(query_search) + + # Fix field for foreign key + query_search = """ + ALTER TABLE tbl_membre + MODIFY TransfereDe int unsigned null; + """ + cr.execute(query_search) + + # Fix field for foreign key + # query_search = """ + # ALTER TABLE tbl_achat_ponctuel + # MODIFY NoMembre int unsigned null; + # """ + # cr.execute(query_search) + + # Fix field for foreign key + table_schema = cr.connection.db.decode("utf-8") + query_search = f""" + IF NOT EXISTS( SELECT * + FROM INFORMATION_SCHEMA.COLUMNS + WHERE table_name = 'tbl_sous_categorie' + AND column_name = 'NoSousCategorieId' + AND TABLE_SCHEMA = '{table_schema}' ) THEN + + alter table tbl_sous_categorie + add NoSousCategorieId int unsigned null; + + create unique index tbl_sous_categorie_NoSousCategorieId_uindex + on tbl_sous_categorie (NoSousCategorieId); + END IF; + """ + cr.execute(query_search) + + query_search = f""" + IF NOT EXISTS( SELECT * + FROM INFORMATION_SCHEMA.COLUMNS + WHERE table_name = 'tbl_categorie_sous_categorie' + AND column_name = 'NoSousCategorieId' + AND TABLE_SCHEMA = '{table_schema}' ) THEN + + alter table tbl_categorie_sous_categorie + add NoSousCategorieId int unsigned null; + + END IF; + """ + cr.execute(query_search) + + # Remove wrong column NoSousCategorie de tbl_sous_categorie + # query_search = """ + # alter table tbl_sous_categorie drop primary key; + # alter table tbl_sous_categorie + # add primary key (NoCategorie); + # ALTER TABLE tbl_sous_categorie + # DROP COLUMN NoSousCategorie; + # """ + # cr.execute(query_search) + + +def replace_record(cr): + print("Replace existing record") + # Replace 0 by null + query_search = """UPDATE `tbl_organization` SET `NoArrondissement` = NULL WHERE NoArrondissement = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_commande_membre` SET `NoMembre` = NULL WHERE NoMembre = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_commentaire` SET `NoMembreViser` = NULL WHERE NoMembreViser = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_commentaire` SET `NoOffreServiceMembre` = NULL WHERE NoOffreServiceMembre = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_commentaire` SET `NoDemandeService` = NULL WHERE NoDemandeService = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_echange_service` SET `NoMembreVendeur` = NULL WHERE NoMembreVendeur = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_echange_service` SET `NoMembreAcheteur` = NULL WHERE NoMembreAcheteur = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_echange_service` SET `NoDemandeService` = NULL WHERE NoDemandeService = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_echange_service` SET `NoOffreServiceMembre` = NULL WHERE NoOffreServiceMembre = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_fournisseur_produit` SET `NoFournisseur` = NULL WHERE NoFournisseur = 0;""" + cr.execute(query_search) + query_search = ( + """UPDATE `tbl_log_acces` SET `NoMembre` = NULL WHERE NoMembre = 0;""" + ) + cr.execute(query_search) + query_search = ( + """UPDATE `tbl_membre` SET `NoCartier` = NULL WHERE NoCartier = 0;""" + ) + cr.execute(query_search) + query_search = ( + """UPDATE `tbl_membre` SET `NoCartier` = NULL WHERE NoCartier = 0;""" + ) + cr.execute(query_search) + query_search = """UPDATE `tbl_membre` SET `NoTypeCommunication` = NULL WHERE NoTypeCommunication = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_membre` SET `NoOccupation` = NULL WHERE NoOccupation = 0;""" + cr.execute(query_search) + query_search = ( + """UPDATE `tbl_membre` SET `NoOrigine` = NULL WHERE NoOrigine = 0;""" + ) + cr.execute(query_search) + query_search = """UPDATE `tbl_membre` SET `NoSituationMaison` = NULL WHERE NoSituationMaison = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_membre` SET `NoProvenance` = NULL WHERE NoProvenance = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_membre` SET `NoRevenuFamilial` = NULL WHERE NoRevenuFamilial = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_membre` SET `NoArrondissement` = NULL WHERE NoArrondissement = 0;""" + cr.execute(query_search) + query_search = ( + """UPDATE `tbl_membre` SET `NoTypeTel3` = NULL WHERE NoTypeTel3 = 0;""" + ) + cr.execute(query_search) + query_search = """UPDATE `tbl_membre` SET `NoMembreConjoint` = NULL WHERE NoMembreConjoint = 0;""" + cr.execute(query_search) + query_search = """UPDATE `tbl_offre_service_membre` SET `NoCategorieSousCategorie` = NULL WHERE NoCategorieSousCategorie = 0;""" + cr.execute(query_search) + + +def add_foreign_key(cr): + print("Add foreign key") + try: + query_search = """ + ALTER TABLE tbl_organization + DROP FOREIGN KEY foreign_key_tbl_organization_noarrondissement; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + ALTER TABLE tbl_organization + ADD CONSTRAINT foreign_key_tbl_organization_noarrondissement + FOREIGN KEY (NoArrondissement) REFERENCES tbl_arrondissement(NoArrondissement) + on update set null on delete set null; + """ + cr.execute(query_search) + # - ville + try: + query_search = """ + ALTER TABLE tbl_organization + DROP FOREIGN KEY foreign_key_tbl_organization_noville; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + ALTER TABLE tbl_organization + ADD CONSTRAINT foreign_key_tbl_organization_noville + FOREIGN KEY (NoVille) REFERENCES tbl_ville(NoVille); + """ + cr.execute(query_search) + # - region + try: + query_search = """ + ALTER TABLE tbl_organization + DROP FOREIGN KEY foreign_key_tbl_organization_noregion; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + ALTER TABLE tbl_organization + ADD CONSTRAINT foreign_key_tbl_organization_noregion + FOREIGN KEY (NoRegion) REFERENCES tbl_region(NoRegion); + """ + cr.execute(query_search) + # - cartier + try: + query_search = """ + ALTER TABLE tbl_organization + DROP FOREIGN KEY foreign_key_tbl_organization_nocartier; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + ALTER TABLE tbl_organization + ADD CONSTRAINT foreign_key_tbl_organization_nocartier + FOREIGN KEY (NoCartier) REFERENCES tbl_cartier(NoCartier); + """ + cr.execute(query_search) + + # Arrondissement + try: + query_search = """ + ALTER TABLE tbl_arrondissement + DROP FOREIGN KEY foreign_key_tbl_ville_noville; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + ALTER TABLE tbl_arrondissement + ADD CONSTRAINT foreign_key_tbl_ville_noville + FOREIGN KEY (NoVille) REFERENCES tbl_ville(NoVille) + on update set null on delete set null; + """ + cr.execute(query_search) + + # Cartier + try: + query_search = """ + ALTER TABLE tbl_cartier + DROP FOREIGN KEY foreign_key_tbl_arrondissement_noarrondissement; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + ALTER TABLE tbl_cartier + ADD CONSTRAINT foreign_key_tbl_arrondissement_noarrondissement + FOREIGN KEY (NoArrondissement) REFERENCES tbl_arrondissement(NoArrondissement); + """ + cr.execute(query_search) + + # Ville + try: + query_search = """ + ALTER TABLE tbl_ville + DROP FOREIGN KEY foreign_key_tbl_region_noregion; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + ALTER TABLE tbl_ville + ADD CONSTRAINT foreign_key_tbl_region_noregion + FOREIGN KEY (NoRegion) REFERENCES tbl_region(NoRegion) + on update set null on delete set null; + """ + cr.execute(query_search) + + # achat_ponctuel + # - tbl_membre + try: + query_search = """ + ALTER TABLE tbl_achat_ponctuel + DROP FOREIGN KEY tbl_achat_ponctuel_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_achat_ponctuel + add constraint tbl_achat_ponctuel_tbl_membre_NoMembre_fk + foreign key (NoMembre) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # - pointservice + # try: + # query_search = """ + # ALTER TABLE tbl_achat_ponctuel + # DROP FOREIGN KEY tbl_achat_ponctuel_tbl_pointservice_nopointservice_fk; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # + # query_search = """ + # alter table tbl_achat_ponctuel + # add constraint tbl_achat_ponctuel_tbl_pointservice_nopointservice_fk + # foreign key (NoPointService) references tbl_pointservice (NoPointService); + # """ + # cr.execute(query_search) + + # achat_ponctuel_produit + # - achat_ponctuel + try: + query_search = """ + ALTER TABLE tbl_achat_ponctuel_produit + DROP FOREIGN KEY tbl_achat_ponctuel_produit_tbl_achat_ponctuel_NoAchatPonctuel_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_achat_ponctuel_produit + add constraint tbl_achat_ponctuel_produit_tbl_achat_ponctuel_NoAchatPonctuel_fk + foreign key (NoAchatPonctuel) references tbl_achat_ponctuel (NoAchatPonctuel); + """ + cr.execute(query_search) + + # - fournisseur_produit + try: + query_search = """ + ALTER TABLE tbl_achat_ponctuel_produit + DROP FOREIGN KEY tbl_achat_pp_tbl_fournisseur_produit_NoFournisseurProduit_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_achat_ponctuel_produit + add constraint tbl_achat_pp_tbl_fournisseur_produit_NoFournisseurProduit_fk + foreign key (NoFournisseurProduit) references tbl_fournisseur_produit (NoFournisseurProduit); + """ + cr.execute(query_search) + + # sous_categorie + try: + query_search = """ + ALTER TABLE tbl_sous_categorie + DROP FOREIGN KEY tbl_sous_categorie_tbl_categorie_NoCategorie_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_sous_categorie + add constraint tbl_sous_categorie_tbl_categorie_NoCategorie_fk + foreign key (NoCategorie) references tbl_categorie (NoCategorie); + """ + cr.execute(query_search) + + # categorie_sous_categorie + # - categorie + # try: + # query_search = """ + # ALTER TABLE tbl_categorie_sous_categorie + # DROP FOREIGN KEY tbl_categorie_sous_categorie_tbl_categorie_NoCategorie_fk; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # + # query_search = """ + # alter table tbl_categorie_sous_categorie + # add constraint tbl_categorie_sous_categorie_tbl_categorie_NoCategorie_fk + # foreign key (NoCategorie) references tbl_categorie (NoCategorie); + # """ + # cr.execute(query_search) + + # - sous_categorie + try: + query_search = """ + ALTER TABLE tbl_categorie_sous_categorie + DROP FOREIGN KEY tbl_csc_tbl_sous_categorie_NoSousCategorieId_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_categorie_sous_categorie + add constraint tbl_csc_tbl_sous_categorie_NoSousCategorieId_fk + foreign key (NoSousCategorieId) references tbl_sous_categorie (NoSousCategorieId); + """ + cr.execute(query_search) + + # tbl_commande + try: + query_search = """ + ALTER TABLE tbl_commande + DROP FOREIGN KEY tbl_commande_tbl_pointservice_NoPointService_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_commande + add constraint tbl_commande_tbl_pointservice_NoPointService_fk + foreign key (NoPointService) references tbl_pointservice (NoPointService); + """ + cr.execute(query_search) + + # tbl_commande_membre + # - commande + try: + query_search = """ + ALTER TABLE tbl_commande_membre + DROP FOREIGN KEY tbl_commande_membre_tbl_commande_NoCommande_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_commande_membre + add constraint tbl_commande_membre_tbl_commande_NoCommande_fk + foreign key (NoCommande) references tbl_commande (NoCommande); + """ + cr.execute(query_search) + + # - membre + try: + query_search = """ + ALTER TABLE tbl_commande_membre + DROP FOREIGN KEY tbl_commande_membre_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_commande_membre + add constraint tbl_commande_membre_tbl_membre_NoMembre_fk + foreign key (NoMembre) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # - pointservice + # try: + # query_search = """ + # ALTER TABLE tbl_commande_membre + # DROP FOREIGN KEY tbl_commande_membre_tbl_pointservice_nopointservice_fk; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # + # query_search = """ + # alter table tbl_commande_membre + # add constraint tbl_commande_membre_tbl_pointservice_nopointservice_fk + # foreign key (NoPointService) references tbl_pointservice (NoPointService); + # """ + # cr.execute(query_search) + + # tbl_fournisseur_produit_commande + # - commande + try: + query_search = """ + ALTER TABLE tbl_fournisseur_produit_commande + DROP FOREIGN KEY tbl_fournisseur_produit_commande_tbl_commande_NoCommande_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fournisseur_produit_commande + add constraint tbl_fournisseur_produit_commande_tbl_commande_NoCommande_fk + foreign key (NoCommande) references tbl_commande (NoCommande); + """ + cr.execute(query_search) + + # - fournisseur produit + try: + query_search = """ + ALTER TABLE tbl_fournisseur_produit_commande + DROP FOREIGN KEY tbl_fpc_tbl_fournisseur_produit_NoFournisseurProduit_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fournisseur_produit_commande + add constraint tbl_fpc_tbl_fournisseur_produit_NoFournisseurProduit_fk + foreign key (NoFournisseurProduit) references tbl_fournisseur_produit (NoFournisseurProduit); + """ + cr.execute(query_search) + + # tbl_commande_membre_produit + # - commande membre + try: + query_search = """ + ALTER TABLE tbl_commande_membre_produit + DROP FOREIGN KEY tbl_cmp_tbl_commande_membre_NoCommandeMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_commande_membre_produit + add constraint tbl_cmp_tbl_commande_membre_NoCommandeMembre_fk + foreign key (NoCommandeMembre) references tbl_commande_membre (NoCommandeMembre); + """ + cr.execute(query_search) + + # - fournisseur produit commande + try: + query_search = """ + ALTER TABLE tbl_commande_membre_produit + DROP FOREIGN KEY tbl_cmp_tbl_fpc_NoFournisseurProduitCommande_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_commande_membre_produit + add constraint tbl_cmp_tbl_fpc_NoFournisseurProduitCommande_fk + foreign key (NoFournisseurProduitCommande) references tbl_fournisseur_produit_commande (NoFournisseurProduitCommande); + """ + cr.execute(query_search) + + # tbl_commentaire + # - point service + try: + query_search = """ + ALTER TABLE tbl_commentaire + DROP FOREIGN KEY tbl_commentaire_tbl_pointservice_NoPointService_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_commentaire + add constraint tbl_commentaire_tbl_pointservice_NoPointService_fk + foreign key (NoPointService) references tbl_pointservice (NoPointService); + """ + cr.execute(query_search) + + # - membre source + try: + query_search = """ + ALTER TABLE tbl_commentaire + DROP FOREIGN KEY tbl_commentaire_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_commentaire + add constraint tbl_commentaire_tbl_membre_NoMembre_fk + foreign key (NoMembreSource) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # - membre visé + try: + query_search = """ + ALTER TABLE tbl_commentaire + DROP FOREIGN KEY tbl_commentaire_tbl_membre_NoMembre_fk_2; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_commentaire + add constraint tbl_commentaire_tbl_membre_NoMembre_fk_2 + foreign key (NoMembreViser) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # - offre service membre + try: + query_search = """ + ALTER TABLE tbl_commentaire + DROP FOREIGN KEY tbl_commentaire_tbl_offre_service_membre_NoOffreServiceMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_commentaire + add constraint tbl_commentaire_tbl_offre_service_membre_NoOffreServiceMembre_fk + foreign key (NoOffreServiceMembre) references tbl_offre_service_membre (NoOffreServiceMembre); + """ + cr.execute(query_search) + + # - demande service + try: + query_search = """ + ALTER TABLE tbl_commentaire + DROP FOREIGN KEY tbl_commentaire_tbl_demande_service_NoDemandeService_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_commentaire + add constraint tbl_commentaire_tbl_demande_service_NoDemandeService_fk + foreign key (NoDemandeService) references tbl_demande_service (NoDemandeService); + """ + cr.execute(query_search) + + # tbl_demande_service + # - membre + try: + query_search = """ + ALTER TABLE tbl_demande_service + DROP FOREIGN KEY tbl_demande_service_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_demande_service + add constraint tbl_demande_service_tbl_membre_NoMembre_fk + foreign key (NoMembre) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # - organization + try: + query_search = """ + ALTER TABLE tbl_demande_service + DROP FOREIGN KEY tbl_demande_service_tbl_organization_NoOrganization_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_demande_service + add constraint tbl_demande_service_tbl_organization_NoOrganization_fk + foreign key (NoOrganization) references tbl_organization (NoOrganization); + """ + cr.execute(query_search) + + # tbl_dmd_adhesion + # - organization + try: + query_search = """ + ALTER TABLE tbl_dmd_adhesion + DROP FOREIGN KEY tbl_dmd_adhesion_tbl_organization_NoOrganization_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_dmd_adhesion + add constraint tbl_dmd_adhesion_tbl_organization_NoOrganization_fk + foreign key (NoOrganization) references tbl_organization (NoOrganization); + """ + cr.execute(query_search) + + # tbl_droits_admin + # - membre + try: + query_search = """ + ALTER TABLE tbl_droits_admin + DROP FOREIGN KEY tbl_droits_admin_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_droits_admin + add constraint tbl_droits_admin_tbl_membre_NoMembre_fk + foreign key (NoMembre) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # tbl_echange_service + # - point service + try: + query_search = """ + ALTER TABLE tbl_echange_service + DROP FOREIGN KEY tbl_echange_service_tbl_pointservice_NoPointService_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_echange_service + add constraint tbl_echange_service_tbl_pointservice_NoPointService_fk + foreign key (NoPointService) references tbl_pointservice (NoPointService); + """ + cr.execute(query_search) + + # - membre vendeur + try: + query_search = """ + ALTER TABLE tbl_echange_service + DROP FOREIGN KEY tbl_echange_service_vendeur_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_echange_service + add constraint tbl_echange_service_vendeur_tbl_membre_NoMembre_fk + foreign key (NoMembreVendeur) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # - membre acheteur + try: + query_search = """ + ALTER TABLE tbl_echange_service + DROP FOREIGN KEY tbl_echange_service_acheteur_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_echange_service + add constraint tbl_echange_service_acheteur_tbl_membre_NoMembre_fk + foreign key (NoMembreAcheteur) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # - demande service + try: + query_search = """ + ALTER TABLE tbl_echange_service + DROP FOREIGN KEY tbl_echange_service_tbl_demande_service_NoDemandeService_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_echange_service + add constraint tbl_echange_service_tbl_demande_service_NoDemandeService_fk + foreign key (NoDemandeService) references tbl_demande_service (NoDemandeService); + """ + cr.execute(query_search) + + # - offre service membre + try: + query_search = """ + ALTER TABLE tbl_echange_service + DROP FOREIGN KEY tbl_es_tbl_offre_service_membre_NoOffreServiceMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_echange_service + add constraint tbl_es_tbl_offre_service_membre_NoOffreServiceMembre_fk + foreign key (NoOffreServiceMembre) references tbl_offre_service_membre (NoOffreServiceMembre); + """ + cr.execute(query_search) + + # tbl_fichier + # - organization + try: + query_search = """ + ALTER TABLE tbl_fichier + DROP FOREIGN KEY tbl_fichier_tbl_organization_NoOrganization_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fichier + add constraint tbl_fichier_tbl_organization_NoOrganization_fk + foreign key (NoOrganization) references tbl_organization (NoOrganization); + """ + cr.execute(query_search) + + # - type fichier + try: + query_search = """ + ALTER TABLE tbl_fichier + DROP FOREIGN KEY tbl_fichier_tbl_type_fichier_Id_TypeFichier_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fichier + add constraint tbl_fichier_tbl_type_fichier_Id_TypeFichier_fk + foreign key (Id_TypeFichier) references tbl_type_fichier (Id_TypeFichier); + """ + cr.execute(query_search) + + # tbl_fournisseur + # - organization + try: + query_search = """ + ALTER TABLE tbl_fournisseur + DROP FOREIGN KEY tbl_fournisseur_tbl_organization_NoOrganization_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fournisseur + add constraint tbl_fournisseur_tbl_organization_NoOrganization_fk + foreign key (NoOrganization) references tbl_organization (NoOrganization); + """ + cr.execute(query_search) + + # - region + try: + query_search = """ + ALTER TABLE tbl_fournisseur + DROP FOREIGN KEY tbl_fournisseur_tbl_region_NoRegion_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fournisseur + add constraint tbl_fournisseur_tbl_region_NoRegion_fk + foreign key (NoRegion) references tbl_region (NoRegion); + """ + cr.execute(query_search) + + # - ville + try: + query_search = """ + ALTER TABLE tbl_fournisseur + DROP FOREIGN KEY tbl_fournisseur_tbl_ville_NoVille_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fournisseur + add constraint tbl_fournisseur_tbl_ville_NoVille_fk + foreign key (NoVille) references tbl_ville (NoVille); + """ + cr.execute(query_search) + + # tbl_fournisseur_produit + # - fournisseur + try: + query_search = """ + ALTER TABLE tbl_fournisseur_produit + DROP FOREIGN KEY tbl_fournisseur_produit_tbl_fournisseur_NoFournisseur_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fournisseur_produit + add constraint tbl_fournisseur_produit_tbl_fournisseur_NoFournisseur_fk + foreign key (NoFournisseur) references tbl_fournisseur (NoFournisseur); + """ + cr.execute(query_search) + + # - fournisseur_produit + try: + query_search = """ + ALTER TABLE tbl_fournisseur_produit + DROP FOREIGN KEY tbl_fournisseur_produit_tbl_produit_NoProduit_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fournisseur_produit + add constraint tbl_fournisseur_produit_tbl_produit_NoProduit_fk + foreign key (NoProduit) references tbl_produit (NoProduit); + """ + cr.execute(query_search) + + # tbl_fournisseur_produit_point_service + # - fournisseur_produit + try: + query_search = """ + ALTER TABLE tbl_fournisseur_produit_pointservice + DROP FOREIGN KEY tbl_fpps_tbl_fournisseur_produit_NoFournisseurProduit_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fournisseur_produit_pointservice + add constraint tbl_fpps_tbl_fournisseur_produit_NoFournisseurProduit_fk + foreign key (NoFournisseurProduit) references tbl_fournisseur_produit (NoFournisseurProduit); + """ + cr.execute(query_search) + + # - point service + try: + query_search = """ + ALTER TABLE tbl_fournisseur_produit_pointservice + DROP FOREIGN KEY tbl_fpps_tbl_pointservice_NoPointService_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_fournisseur_produit_pointservice + add constraint tbl_fpps_tbl_pointservice_NoPointService_fk + foreign key (NoPointService) references tbl_pointservice (NoPointService); + """ + cr.execute(query_search) + + # tbl_log_access + # - membre + try: + query_search = """ + ALTER TABLE tbl_log_acces + DROP FOREIGN KEY tbl_log_acces_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_log_acces + add constraint tbl_log_acces_tbl_membre_NoMembre_fk + foreign key (NoMembre) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # tbl_membre + # - cartier + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_cartier_NoCartier_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_cartier_NoCartier_fk + foreign key (NoCartier) references tbl_cartier (NoCartier); + """ + cr.execute(query_search) + + # - organization + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_organization_NoOrganization_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_organization_NoOrganization_fk + foreign key (NoOrganization) references tbl_organization (NoOrganization); + """ + cr.execute(query_search) + + # - point service + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_pointservice_NoPointService_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_pointservice_NoPointService_fk + foreign key (NoPointService) references tbl_pointservice (NoPointService); + """ + cr.execute(query_search) + + # - point service est admin (n'est plus un foreign key, mais une boolean) + # try: + # query_search = """ + # ALTER TABLE tbl_membre + # DROP FOREIGN KEY tbl_membre_tbl_pointservice_NoPointService_fk_2; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # + # query_search = """ + # alter table tbl_membre + # add constraint tbl_membre_tbl_pointservice_NoPointService_fk_2 + # foreign key (EstUnPointService) references tbl_pointservice (NoPointService); + # """ + # cr.execute(query_search) + + # - type communication + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_type_communication_NoTypeCommunication_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_type_communication_NoTypeCommunication_fk + foreign key (NoTypeCommunication) references tbl_type_communication (NoTypeCommunication); + """ + cr.execute(query_search) + + # - occupation + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_occupation_NoOccupation_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_occupation_NoOccupation_fk + foreign key (NoOccupation) references tbl_occupation (NoOccupation); + """ + cr.execute(query_search) + + # - origine + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_origine_NoOrigine_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_origine_NoOrigine_fk + foreign key (NoOrigine) references tbl_origine (NoOrigine); + """ + cr.execute(query_search) + + # - situation maison + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_situation_maison_NoSituationMaison_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_situation_maison_NoSituationMaison_fk + foreign key (NoSituationMaison) references tbl_situation_maison (NoSituationMaison); + """ + cr.execute(query_search) + + # - provenance + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_provenance_NoProvenance_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_provenance_NoProvenance_fk + foreign key (NoProvenance) references tbl_provenance (NoProvenance); + """ + cr.execute(query_search) + + # - revenu familial + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_revenu_familial_NoRevenuFamilial_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_revenu_familial_NoRevenuFamilial_fk + foreign key (NoRevenuFamilial) references tbl_revenu_familial (NoRevenuFamilial); + """ + cr.execute(query_search) + + # - arrondissement + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_arrondissement_NoArrondissement_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_arrondissement_NoArrondissement_fk + foreign key (NoArrondissement) references tbl_arrondissement (NoArrondissement); + """ + cr.execute(query_search) + + # - ville + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_ville_NoVille_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_ville_NoVille_fk + foreign key (NoVille) references tbl_ville (NoVille); + """ + cr.execute(query_search) + + # - region + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_region_NoRegion_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_region_NoRegion_fk + foreign key (NoRegion) references tbl_region (NoRegion); + """ + cr.execute(query_search) + + # - NoMembreConjoint + # TODO enable when support looping + # try: + # query_search = """ + # ALTER TABLE tbl_membre + # DROP FOREIGN KEY tbl_membre_tbl_membre_NoMembre_fk; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # + # query_search = """ + # alter table tbl_membre + # add constraint tbl_membre_tbl_membre_NoMembre_fk + # foreign key (NoMembreConjoint) references tbl_membre (NoMembre); + # """ + # cr.execute(query_search) + + # - transfereDe + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_organization_NoOrganization_fk_2; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_organization_NoOrganization_fk_2 + foreign key (TransfereDe) references tbl_organization (NoOrganization) + on update set null on delete set null; + """ + cr.execute(query_search) + + # - notypetel1 + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_type_tel_NoTypeTel_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_type_tel_NoTypeTel_fk + foreign key (NoTypeTel1) references tbl_type_tel (NoTypeTel); + """ + cr.execute(query_search) + + # - notypetel2 + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_type_tel_NoTypeTel_2_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_type_tel_NoTypeTel_2_fk + foreign key (NoTypeTel2) references tbl_type_tel (NoTypeTel); + """ + cr.execute(query_search) + + # - notypetel3 + try: + query_search = """ + ALTER TABLE tbl_membre + DROP FOREIGN KEY tbl_membre_tbl_type_tel_NoTypeTel_3_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_membre + add constraint tbl_membre_tbl_type_tel_NoTypeTel_3_fk + foreign key (NoTypeTel3) references tbl_type_tel (NoTypeTel); + """ + cr.execute(query_search) + + # tbl_mensualite + # - pret + try: + query_search = """ + ALTER TABLE tbl_mensualite + DROP FOREIGN KEY tbl_mensualite_tbl_pret_Id_Pret_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_mensualite + add constraint tbl_mensualite_tbl_pret_Id_Pret_fk + foreign key (Id_Pret) references tbl_pret (Id_Pret); + """ + cr.execute(query_search) + + # tbl_offre_service_membre + # - offre service membre + try: + query_search = """ + ALTER TABLE tbl_offre_service_membre + DROP FOREIGN KEY tbl_offre_service_membre_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_offre_service_membre + add constraint tbl_offre_service_membre_tbl_membre_NoMembre_fk + foreign key (NoMembre) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # - organization + try: + query_search = """ + ALTER TABLE tbl_offre_service_membre + DROP FOREIGN KEY tbl_offre_service_membre_tbl_organization_NoOrganization_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_offre_service_membre + add constraint tbl_offre_service_membre_tbl_organization_NoOrganization_fk + foreign key (NoOrganization) references tbl_organization (NoOrganization); + """ + cr.execute(query_search) + + # - categorie sous categorie + try: + query_search = """ + ALTER TABLE tbl_offre_service_membre + DROP FOREIGN KEY tbl_osm_tbl_categorie_sous_categorie_NoCategorieSousCategorie_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_offre_service_membre + add constraint tbl_osm_tbl_categorie_sous_categorie_NoCategorieSousCategorie_fk + foreign key (NoCategorieSousCategorie) references tbl_categorie_sous_categorie (NoCategorieSousCategorie); + """ + cr.execute(query_search) + + # tbl_pointservice + # - organization + try: + query_search = """ + ALTER TABLE tbl_pointservice + DROP FOREIGN KEY tbl_pointservice_tbl_organization_NoOrganization_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_pointservice + add constraint tbl_pointservice_tbl_organization_NoOrganization_fk + foreign key (NoOrganization) references tbl_organization (NoOrganization); + """ + cr.execute(query_search) + + # - membre + # Ignore this field, it's removed from inverse field + # try: + # query_search = """ + # ALTER TABLE tbl_pointservice + # DROP FOREIGN KEY tbl_pointservice_tbl_membre_NoMembre_fk; + # """ + # cr.execute(query_search) + # except Exception: + # pass + # + # query_search = """ + # alter table tbl_pointservice + # add constraint tbl_pointservice_tbl_membre_NoMembre_fk + # foreign key (NoMembre) references tbl_membre (NoMembre); + # """ + # cr.execute(query_search) + + # tbl_pointservice_fournisseur + # - point service + try: + query_search = """ + ALTER TABLE tbl_pointservice_fournisseur + DROP FOREIGN KEY tbl_pointservice_fournisseur_tbl_pointservice_NoPointService_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_pointservice_fournisseur + add constraint tbl_pointservice_fournisseur_tbl_pointservice_NoPointService_fk + foreign key (NoPointService) references tbl_pointservice (NoPointService); + """ + cr.execute(query_search) + + # - fournisseur + try: + query_search = """ + ALTER TABLE tbl_pointservice_fournisseur + DROP FOREIGN KEY tbl_pointservice_fournisseur_tbl_fournisseur_NoFournisseur_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_pointservice_fournisseur + add constraint tbl_pointservice_fournisseur_tbl_fournisseur_NoFournisseur_fk + foreign key (NoFournisseur) references tbl_fournisseur (NoFournisseur); + """ + cr.execute(query_search) + + # tbl_pret + # - membre + try: + query_search = """ + ALTER TABLE tbl_pret + DROP FOREIGN KEY tbl_pret_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_pret + add constraint tbl_pret_tbl_membre_NoMembre_fk + foreign key (NoMembre) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # - membre intermediaire + try: + query_search = """ + ALTER TABLE tbl_pret + DROP FOREIGN KEY tbl_pret_tbl_membre_NoMembre_fk_2; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_pret + add constraint tbl_pret_tbl_membre_NoMembre_fk_2 + foreign key (NoMembre_Intermediaire) references tbl_membre (NoMembre) + on update set null on delete set null; + """ + cr.execute(query_search) + + # - membre responsable + try: + query_search = """ + ALTER TABLE tbl_pret + DROP FOREIGN KEY tbl_pret_tbl_membre_NoMembre_fk_3; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_pret + add constraint tbl_pret_tbl_membre_NoMembre_fk_3 + foreign key (NoMembre_Responsable) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # tbl_produit + # - titre + try: + query_search = """ + ALTER TABLE tbl_produit + DROP FOREIGN KEY tbl_produit_tbl_titre_NoTitre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_produit + add constraint tbl_produit_tbl_titre_NoTitre_fk + foreign key (NoTitre) references tbl_titre (NoTitre); + """ + cr.execute(query_search) + + # - organization + try: + query_search = """ + ALTER TABLE tbl_produit + DROP FOREIGN KEY tbl_produit_tbl_organization_NoOrganization_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_produit + add constraint tbl_produit_tbl_organization_NoOrganization_fk + foreign key (NoOrganization) references tbl_organization (NoOrganization); + """ + cr.execute(query_search) + + # tbl_type_compte + # - membre + try: + query_search = """ + ALTER TABLE tbl_type_compte + DROP FOREIGN KEY tbl_type_compte_tbl_membre_NoMembre_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_type_compte + add constraint tbl_type_compte_tbl_membre_NoMembre_fk + foreign key (NoMembre) references tbl_membre (NoMembre); + """ + cr.execute(query_search) + + # tbl_versement + # - mensualité + try: + query_search = """ + ALTER TABLE tbl_versement + DROP FOREIGN KEY tbl_versement_tbl_mensualite_Id_Mensualite_fk; + """ + cr.execute(query_search) + except Exception: + pass + + query_search = """ + alter table tbl_versement + add constraint tbl_versement_tbl_mensualite_Id_Mensualite_fk + foreign key (Id_Mensualite) references tbl_mensualite (Id_Mensualite); + """ + cr.execute(query_search) + + +if __name__ == "__main__": + main() diff --git a/script/database/mariadb_sql_example_1.sql b/script/database/mariadb_sql_example_1.sql new file mode 100644 index 0000000..74979a0 --- /dev/null +++ b/script/database/mariadb_sql_example_1.sql @@ -0,0 +1,1297 @@ +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + +-- +-- Structure de la table `tbl_organization` +-- + +CREATE TABLE `tbl_organization` ( + `NoOrganization` int(10) UNSIGNED NOT NULL, + `NoRegion` int(10) UNSIGNED NOT NULL, + `NoVille` int(10) UNSIGNED NOT NULL, + `NoArrondissement` int(10) UNSIGNED DEFAULT NULL, + `NoCartier` int(10) UNSIGNED DEFAULT NULL, + `Nom` varchar(45) CHARACTER SET latin1 DEFAULT NULL, + `NomComplet` varchar(255) COLLATE latin1_general_ci NOT NULL, + `AdresseOrganization` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `CodePostalOrganization` varchar(7) CHARACTER SET latin1 DEFAULT NULL, + `TelOrganization` varchar(10) CHARACTER SET latin1 DEFAULT NULL, + `TelecopieurOrganization` varchar(10) CHARACTER SET latin1 DEFAULT NULL, + `CourrielOrganization` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `MessageGrpAchat` text COLLATE latin1_general_ci, + `MessageAccueil` text COLLATE latin1_general_ci, + `URL_Public_Organization` varchar(255) COLLATE latin1_general_ci DEFAULT NULL, + `URL_Transac_Organization` varchar(255) COLLATE latin1_general_ci DEFAULT NULL, + `URL_LogoOrganization` varchar(255) COLLATE latin1_general_ci DEFAULT NULL, + `GrpAchat_Admin` tinyint(4) DEFAULT '0', + `GrpAchat_Organizateur` tinyint(4) DEFAULT '0', + `NonVisible` int(11) NOT NULL DEFAULT '0', + `DateMAJ_Organization` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_achat_ponctuel` +-- + +CREATE TABLE `tbl_achat_ponctuel` ( + `NoAchatPonctuel` int(10) UNSIGNED NOT NULL, + `NoMembre` int(10) UNSIGNED NOT NULL, + `DateAchatPonctuel` date DEFAULT NULL, + `MontantPaiementAchatPonct` decimal(8,2) DEFAULT '0.00', + `AchatPoncFacturer` tinyint(3) UNSIGNED DEFAULT '0', + `TaxeF_AchatPonct` double UNSIGNED DEFAULT '0', + `TaxeP_AchatPonct` double UNSIGNED DEFAULT '0', + `Majoration_AchatPonct` double UNSIGNED DEFAULT '0', + `DateMAJ_AchantPonct` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_achat_ponctuel_produit` +-- + +CREATE TABLE `tbl_achat_ponctuel_produit` ( + `NoAchatPonctuelProduit` int(10) UNSIGNED NOT NULL, + `NoAchatPonctuel` int(10) UNSIGNED NOT NULL, + `NoFournisseurProduit` int(10) UNSIGNED NOT NULL, + `QteAcheter` double UNSIGNED DEFAULT '0', + `CoutUnit_AchatPonctProd` decimal(8,2) DEFAULT '0.00', + `SiTaxableF_AchatPonctProd` tinyint(4) DEFAULT '0', + `SiTaxableP_AchatPonctProd` tinyint(4) DEFAULT '0', + `PrixFacturer_AchatPonctProd` decimal(8,2) DEFAULT '0.00', + `DateMAJ_AchatPoncProduit` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_arrondissement` +-- + +CREATE TABLE `tbl_arrondissement` ( + `NoArrondissement` int(10) UNSIGNED NOT NULL, + `NoVille` int(11) DEFAULT NULL, + `Arrondissement` varchar(60) CHARACTER SET latin1 DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_cartier` +-- + +CREATE TABLE `tbl_cartier` ( + `NoCartier` int(10) UNSIGNED NOT NULL, + `NoArrondissement` int(10) UNSIGNED NOT NULL DEFAULT '0', + `Cartier` varchar(60) CHARACTER SET latin1 DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_categorie` +-- + +CREATE TABLE `tbl_categorie` ( + `NoCategorie` int(10) UNSIGNED NOT NULL, + `TitreCategorie` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `Supprimer` int(1) DEFAULT NULL, + `Approuver` int(1) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_categorie_sous_categorie` +-- + +CREATE TABLE `tbl_categorie_sous_categorie` ( + `NoCategorieSousCategorie` int(10) UNSIGNED NOT NULL, + `NoSousCategorie` char(2) CHARACTER SET latin1 DEFAULT NULL, + `NoCategorie` int(10) UNSIGNED DEFAULT NULL, + `TitreOffre` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `Supprimer` int(1) DEFAULT NULL, + `Approuver` int(1) DEFAULT NULL, + `Description` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `NoOffre` int(10) UNSIGNED DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_commande` +-- + +CREATE TABLE `tbl_commande` ( + `NoCommande` int(10) UNSIGNED NOT NULL, + `NoPointService` int(10) UNSIGNED NOT NULL, + `NoRefCommande` int(10) UNSIGNED DEFAULT '0', + `DateCmdDebut` date DEFAULT NULL, + `DateCmdFin` date DEFAULT NULL, + `DateCueillette` date DEFAULT NULL, + `TaxePCommande` double UNSIGNED DEFAULT '0', + `TaxeFCommande` double UNSIGNED DEFAULT '0', + `Majoration` double UNSIGNED DEFAULT '0', + `CommandeTermine` tinyint(3) UNSIGNED DEFAULT '0', + `DateMAJ_Cmd` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_commande_membre` +-- + +CREATE TABLE `tbl_commande_membre` ( + `NoCommandeMembre` int(10) UNSIGNED NOT NULL, + `NoCommande` int(10) UNSIGNED NOT NULL, + `NoMembre` int(10) UNSIGNED NOT NULL, + `NumRefMembre` int(10) UNSIGNED DEFAULT '0', + `CmdConfirmer` tinyint(3) UNSIGNED DEFAULT '0', + `Facturer` tinyint(3) UNSIGNED DEFAULT '0', + `MontantPaiement` decimal(10,2) DEFAULT '0.00', + `CoutUnitaireAJour` tinyint(3) UNSIGNED DEFAULT '0', + `DateCmdMb` datetime DEFAULT NULL, + `DateFacture` date DEFAULT NULL, + `ArchiveSousTotal` decimal(10,2) DEFAULT '0.00', + `ArchiveTotMajoration` decimal(10,2) DEFAULT '0.00', + `ArchiveTotTxFed` decimal(10,2) DEFAULT '0.00', + `ArchiveTotTxProv` decimal(10,2) DEFAULT '0.00', + `DateMAJ_CmdMembre` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_commande_membre_produit` +-- + +CREATE TABLE `tbl_commande_membre_produit` ( + `NoCmdMbProduit` int(10) UNSIGNED NOT NULL, + `NoCommandeMembre` int(10) UNSIGNED NOT NULL, + `NoFournisseurProduitCommande` int(10) UNSIGNED NOT NULL, + `Qte` double DEFAULT '0', + `QteDePlus` double DEFAULT '0', + `Ajustement` double DEFAULT '0', + `CoutUnitaire_Facture` decimal(5,2) DEFAULT '0.00', + `SiTaxableP_Facture` tinyint(4) DEFAULT '0', + `SiTaxableF_Facture` tinyint(4) DEFAULT '0', + `PrixFacturer_Manuel` decimal(5,2) DEFAULT '0.00', + `DateMAJ_CmdMembreProd` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_commentaire` +-- + +CREATE TABLE `tbl_commentaire` ( + `NoCommentaire` int(10) UNSIGNED NOT NULL, + `NoPointService` int(10) UNSIGNED NOT NULL, + `NoMembreSource` int(10) UNSIGNED NOT NULL, + `NoMembreViser` int(10) UNSIGNED DEFAULT NULL, + `NoOffreServiceMembre` int(10) UNSIGNED DEFAULT NULL, + `NoDemandeService` int(10) UNSIGNED DEFAULT NULL, + `DateHeureAjout` datetime DEFAULT NULL, + `Situation_Impliquant` tinyint(3) UNSIGNED DEFAULT NULL, + `NomEmployer` varchar(50) COLLATE latin1_general_ci DEFAULT NULL, + `NomComite` varchar(50) COLLATE latin1_general_ci DEFAULT NULL, + `AutreSituation` varchar(81) COLLATE latin1_general_ci DEFAULT NULL, + `SatisfactionInsatisfaction` tinyint(3) UNSIGNED DEFAULT NULL, + `DateIncident` date DEFAULT NULL, + `TypeOffre` tinyint(3) UNSIGNED DEFAULT NULL, + `ResumerSituation` text COLLATE latin1_general_ci, + `Demarche` text COLLATE latin1_general_ci, + `SolutionPourRegler` text COLLATE latin1_general_ci, + `AutreCommentaire` text COLLATE latin1_general_ci, + `SiConfidentiel` tinyint(3) UNSIGNED DEFAULT NULL, + `NoteAdministrative` text COLLATE latin1_general_ci, + `ConsulterOrganization` tinyint(3) UNSIGNED DEFAULT '0', + `ConsulterReseau` tinyint(3) UNSIGNED DEFAULT '0', + `DateMaj_Commentaire` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_demande_service` +-- + +CREATE TABLE `tbl_demande_service` ( + `NoDemandeService` int(10) UNSIGNED NOT NULL, + `NoMembre` int(10) UNSIGNED DEFAULT NULL, + `NoOrganization` int(10) UNSIGNED DEFAULT NULL, + `TitreDemande` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `Description` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `Approuve` int(1) DEFAULT NULL, + `Supprimer` int(1) DEFAULT NULL, + `Transmit` int(1) DEFAULT NULL, + `DateDebut` date DEFAULT NULL, + `DateFin` date DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_dmd_adhesion` +-- + +CREATE TABLE `tbl_dmd_adhesion` ( + `NoDmdAdhesion` int(10) UNSIGNED NOT NULL, + `NoOrganization` int(10) UNSIGNED NOT NULL DEFAULT '0', + `Nom` varchar(45) CHARACTER SET latin1 DEFAULT NULL, + `Prenom` varchar(45) CHARACTER SET latin1 DEFAULT NULL, + `Telephone` varchar(10) CHARACTER SET latin1 DEFAULT NULL, + `Poste` varchar(10) CHARACTER SET latin1 DEFAULT NULL, + `Courriel` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `Supprimer` smallint(1) DEFAULT '0', + `Transferer` smallint(1) DEFAULT '0', + `EnAttente` tinyint(4) DEFAULT '0', + `DateMAJ` timestamp NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_droits_admin` +-- + +CREATE TABLE `tbl_droits_admin` ( + `NoMembre` int(10) UNSIGNED NOT NULL DEFAULT '0', + `GestionProfil` int(1) DEFAULT '0', + `GestionCatSousCat` int(1) DEFAULT '0', + `GestionOffre` int(1) DEFAULT '0', + `GestionOffreMembre` int(1) DEFAULT '0', + `SaisieEchange` int(1) DEFAULT '0', + `Validation` int(1) DEFAULT '0', + `GestionDmd` int(1) DEFAULT '0', + `GroupeAchat` tinyint(4) DEFAULT '0', + `ConsulterProfil` tinyint(4) DEFAULT '0', + `ConsulterEtatCompte` tinyint(4) DEFAULT '0', + `GestionFichier` tinyint(4) DEFAULT '0' +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_echange_service` +-- + +CREATE TABLE `tbl_echange_service` ( + `NoEchangeService` int(10) UNSIGNED NOT NULL, + `NoPointService` int(10) UNSIGNED DEFAULT NULL, + `NoMembreVendeur` int(10) UNSIGNED DEFAULT NULL, + `NoMembreAcheteur` int(10) UNSIGNED DEFAULT NULL, + `NoDemandeService` int(10) UNSIGNED DEFAULT NULL, + `NoOffreServiceMembre` int(10) UNSIGNED DEFAULT NULL, + `NbHeure` time DEFAULT NULL, + `DateEchange` date DEFAULT NULL, + `TypeEchange` int(1) UNSIGNED DEFAULT NULL, + `Remarque` varchar(100) DEFAULT NULL, + `Commentaire` varchar(255) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_fichier` +-- + +CREATE TABLE `tbl_fichier` ( + `Id_Fichier` int(10) UNSIGNED NOT NULL, + `Id_TypeFichier` int(10) UNSIGNED NOT NULL, + `NoOrganization` int(10) UNSIGNED NOT NULL, + `NomFichierStokage` varchar(255) COLLATE latin1_general_ci NOT NULL, + `NomFichierOriginal` varchar(255) COLLATE latin1_general_ci NOT NULL, + `Si_Admin` tinyint(3) UNSIGNED DEFAULT '1', + `Si_OrganizationLocalSeulement` tinyint(3) UNSIGNED DEFAULT '1', + `Si_Disponible` tinyint(3) UNSIGNED DEFAULT '0', + `DateMAJ_Fichier` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_fournisseur` +-- + +CREATE TABLE `tbl_fournisseur` ( + `NoFournisseur` int(10) UNSIGNED NOT NULL, + `NoOrganization` int(10) UNSIGNED NOT NULL, + `NoRegion` int(10) UNSIGNED NOT NULL, + `NoVille` int(10) UNSIGNED NOT NULL, + `NomFournisseur` varchar(80) CHARACTER SET latin1 DEFAULT NULL, + `Adresse` varchar(80) CHARACTER SET latin1 DEFAULT NULL, + `CodePostalFournisseur` varchar(7) CHARACTER SET latin1 DEFAULT NULL, + `TelFournisseur` varchar(14) CHARACTER SET latin1 DEFAULT NULL, + `FaxFounisseur` varchar(40) CHARACTER SET latin1 DEFAULT NULL, + `CourrielFournisseur` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `NomContact` varchar(100) CHARACTER SET latin1 DEFAULT NULL, + `PosteContact` varchar(8) CHARACTER SET latin1 DEFAULT NULL, + `CourrielContact` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `NoteFournisseur` text CHARACTER SET latin1, + `Visible_Fournisseur` tinyint(1) UNSIGNED DEFAULT '1', + `DateMAJ_Fournisseur` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_fournisseur_produit` +-- + +CREATE TABLE `tbl_fournisseur_produit` ( + `NoFournisseurProduit` int(10) UNSIGNED NOT NULL, + `NoFournisseur` int(10) UNSIGNED NOT NULL, + `NoProduit` int(10) UNSIGNED NOT NULL, + `CodeProduit` varchar(25) DEFAULT NULL, + `zQteStokeAcc` int(10) UNSIGNED DEFAULT '0', + `zCoutUnitaire` decimal(5,2) UNSIGNED DEFAULT '0.00', + `Visible_FournisseurProduit` tinyint(4) DEFAULT '1', + `DateMAJ_FournProduit` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_fournisseur_produit_commande` +-- + +CREATE TABLE `tbl_fournisseur_produit_commande` ( + `NoFournisseurProduitCommande` int(10) UNSIGNED NOT NULL, + `NoCommande` int(10) UNSIGNED NOT NULL, + `NoFournisseurProduit` int(10) UNSIGNED NOT NULL, + `NbBoiteMinFournisseur` tinyint(3) UNSIGNED DEFAULT '0', + `QteParBoitePrevu` double UNSIGNED DEFAULT '0', + `CoutUnitPrevu` decimal(7,2) DEFAULT '0.00', + `Disponible` tinyint(3) UNSIGNED DEFAULT '1', + `DateMAJ_FournProdCommande` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_fournisseur_produit_pointservice` +-- + +CREATE TABLE `tbl_fournisseur_produit_pointservice` ( + `NoFournisseurProduitPointservice` int(10) UNSIGNED NOT NULL, + `NoFournisseurProduit` int(10) UNSIGNED NOT NULL, + `NoPointService` int(10) UNSIGNED NOT NULL, + `QteStokeAcc` int(11) DEFAULT '0', + `CoutUnitaire` decimal(5,2) DEFAULT '0.00', + `DateMAJ_FournProdPtServ` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_info_logiciel_bd` +-- + +CREATE TABLE `tbl_info_logiciel_bd` ( + `NoInfoLogicielBD` int(10) UNSIGNED NOT NULL, + `DerniereVersionLogiciel` int(10) UNSIGNED DEFAULT NULL, + `MAJOblig` int(1) UNSIGNED DEFAULT NULL, + `LienWeb` varchar(255) DEFAULT NULL, + `DateCreation` timestamp NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Structure de la table `tbl_log_acces` +-- + +CREATE TABLE `tbl_log_acces` ( + `Id_log_acces` int(10) UNSIGNED NOT NULL, + `NoMembre` int(10) UNSIGNED DEFAULT '0', + `IP_Client_V4` varchar(50) COLLATE latin1_general_ci DEFAULT NULL, + `Navigateur` varchar(100) COLLATE latin1_general_ci DEFAULT NULL, + `Statut` varchar(45) COLLATE latin1_general_ci DEFAULT NULL, + `NomUsagerEssayer` varchar(45) COLLATE latin1_general_ci DEFAULT NULL, + `Referer` varchar(255) COLLATE latin1_general_ci DEFAULT NULL, + `Resolution_H` int(11) DEFAULT '0', + `Resolution_W` int(11) DEFAULT '0', + `DateHeure_Deconnexion` datetime DEFAULT NULL, + `DateHeureConnexion` timestamp NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_membre` +-- + +CREATE TABLE `tbl_membre` ( + `NoMembre` int(10) UNSIGNED NOT NULL, + `NoCartier` int(10) UNSIGNED DEFAULT '0', + `NoOrganization` int(10) UNSIGNED NOT NULL, + `NoPointService` int(10) UNSIGNED DEFAULT NULL, + `NoTypeCommunication` int(10) UNSIGNED NOT NULL, + `NoOccupation` int(10) UNSIGNED NOT NULL, + `NoOrigine` int(10) UNSIGNED NOT NULL, + `NoSituationMaison` int(10) UNSIGNED NOT NULL, + `NoProvenance` int(10) UNSIGNED NOT NULL, + `NoRevenuFamilial` int(10) UNSIGNED NOT NULL, + `NoArrondissement` int(10) UNSIGNED DEFAULT NULL, + `NoVille` int(10) UNSIGNED NOT NULL, + `NoRegion` int(10) UNSIGNED NOT NULL, + `MembreCA` tinyint(4) DEFAULT '0', + `PartSocialPaye` tinyint(4) DEFAULT '0', + `CodePostal` varchar(7) DEFAULT NULL, + `DateAdhesion` date DEFAULT NULL, + `Nom` varchar(45) DEFAULT NULL, + `Prenom` varchar(45) DEFAULT NULL, + `Adresse` varchar(255) DEFAULT NULL, + `Telephone1` varchar(10) DEFAULT NULL, + `PosteTel1` varchar(10) DEFAULT NULL, + `NoTypeTel1` int(10) UNSIGNED DEFAULT NULL, + `Telephone2` varchar(10) DEFAULT NULL, + `PosteTel2` varchar(10) DEFAULT NULL, + `NoTypeTel2` int(10) UNSIGNED DEFAULT NULL, + `Telephone3` varchar(10) DEFAULT NULL, + `PosteTel3` varchar(10) DEFAULT NULL, + `NoTypeTel3` int(10) UNSIGNED DEFAULT NULL, + `Courriel` varchar(255) DEFAULT NULL, + `AchatRegrouper` tinyint(1) DEFAULT NULL, + `PretActif` tinyint(1) DEFAULT NULL, + `PretRadier` tinyint(1) DEFAULT NULL, + `PretPayer` tinyint(1) DEFAULT NULL, + `EtatCompteCourriel` tinyint(1) DEFAULT NULL, + `BottinTel` tinyint(1) DEFAULT NULL, + `BottinCourriel` tinyint(1) DEFAULT NULL, + `MembreActif` tinyint(1) DEFAULT '-1', + `MembreConjoint` tinyint(1) DEFAULT NULL, + `NoMembreConjoint` int(10) UNSIGNED DEFAULT NULL, + `Memo` text, + `Sexe` tinyint(1) DEFAULT NULL, + `AnneeNaissance` int(4) DEFAULT NULL, + `PrecisezOrigine` varchar(45) DEFAULT NULL, + `NomUtilisateur` varchar(15) DEFAULT NULL, + `MotDePasse` varchar(15) DEFAULT NULL, + `ProfilApprouver` tinyint(1) DEFAULT '-1', + `MembrePrinc` tinyint(1) DEFAULT NULL, + `NomOrganization` varchar(90) DEFAULT NULL, + `RecevoirCourrielGRP` tinyint(1) DEFAULT NULL, + `PasCommunication` tinyint(1) DEFAULT NULL, + `DescriptionOrganizateur` varchar(255) DEFAULT NULL, + `Date_MAJ_Membre` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `TransfereDe` int(10) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_mensualite` +-- + +CREATE TABLE `tbl_mensualite` ( + `Id_Mensualite` int(10) UNSIGNED NOT NULL, + `Id_Pret` int(10) UNSIGNED NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_occupation` +-- + +CREATE TABLE `tbl_occupation` ( + `NoOccupation` int(10) UNSIGNED NOT NULL, + `Occupation` varchar(35) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 PACK_KEYS=0; + +-- +-- Structure de la table `tbl_offre_service_membre` +-- + +CREATE TABLE `tbl_offre_service_membre` ( + `NoOffreServiceMembre` int(10) UNSIGNED NOT NULL, + `NoMembre` int(10) UNSIGNED DEFAULT NULL, + `NoOrganization` int(10) UNSIGNED DEFAULT NULL, + `NoCategorieSousCategorie` int(10) UNSIGNED DEFAULT NULL, + `TitreOffreSpecial` varchar(255) DEFAULT NULL, + `Conditionx` varchar(255) DEFAULT NULL, + `Disponibilite` varchar(255) DEFAULT NULL, + `Tarif` varchar(255) DEFAULT NULL, + `Description` varchar(255) DEFAULT NULL, + `DateAffichage` date DEFAULT NULL, + `DateDebut` date DEFAULT NULL, + `DateFin` date DEFAULT NULL, + `Approuve` int(1) DEFAULT NULL, + `OffreSpecial` int(1) DEFAULT NULL, + `Supprimer` int(1) DEFAULT NULL, + `Fait` int(1) DEFAULT NULL, + `ConditionOffre` varchar(255) DEFAULT NULL, + `NbFoisConsulterOffreMembre` int(10) UNSIGNED DEFAULT '0', + `DateMAJ_ServiceMembre` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_origine` +-- + +CREATE TABLE `tbl_origine` ( + `NoOrigine` int(10) UNSIGNED NOT NULL, + `Origine` varchar(35) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_pointservice` +-- + +CREATE TABLE `tbl_pointservice` ( + `NoPointService` int(10) UNSIGNED NOT NULL, + `NoOrganization` int(10) UNSIGNED NOT NULL, + `NoMembre` int(10) UNSIGNED DEFAULT NULL, + `NomPointService` varchar(255) CHARACTER SET latin1 DEFAULT NULL, + `OrdrePointService` tinyint(3) UNSIGNED DEFAULT '0', + `NoteGrpAchatPageClient` text COLLATE latin1_general_ci, + `DateMAJ_PointService` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_pointservice_fournisseur` +-- + +CREATE TABLE `tbl_pointservice_fournisseur` ( + `NoPointServiceFournisseur` int(10) UNSIGNED NOT NULL, + `NoPointService` int(10) UNSIGNED NOT NULL, + `NoFournisseur` int(10) UNSIGNED NOT NULL, + `DateMAJ_PointServiceFournisseur` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_pret` +-- + +CREATE TABLE `tbl_pret` ( + `Id_Pret` int(10) UNSIGNED NOT NULL, + `NoMembre` int(10) UNSIGNED NOT NULL, + `NoMembre_Intermediaire` int(10) UNSIGNED DEFAULT NULL, + `NoMembre_Responsable` int(10) UNSIGNED NOT NULL, + `DateDemandePret` datetime DEFAULT NULL, + `MontantDemande` decimal(8,2) UNSIGNED DEFAULT NULL, + `RaisonEmprunt` text COLLATE latin1_general_ci, + `DateComitePret` datetime DEFAULT NULL, + `Si_PretAccorder` tinyint(3) UNSIGNED DEFAULT NULL, + `MontantAccorder` decimal(8,2) UNSIGNED DEFAULT NULL, + `Note` text COLLATE latin1_general_ci, + `Recommandation` text COLLATE latin1_general_ci, + `TautInteretAnnuel` decimal(2,2) UNSIGNED DEFAULT NULL, + `DatePret` datetime DEFAULT NULL, + `NbreMois` int(10) UNSIGNED DEFAULT NULL, + `NbrePaiement` int(10) UNSIGNED DEFAULT NULL, + `DateMAJ_Pret` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_produit` +-- + +CREATE TABLE `tbl_produit` ( + `NoProduit` int(10) UNSIGNED NOT NULL, + `NoTitre` int(10) UNSIGNED NOT NULL, + `NoOrganization` int(10) UNSIGNED NOT NULL, + `NomProduit` varchar(80) CHARACTER SET latin1 DEFAULT NULL, + `TaxableF` tinyint(1) UNSIGNED DEFAULT '0', + `TaxableP` tinyint(1) UNSIGNED DEFAULT '0', + `Visible_Produit` tinyint(1) UNSIGNED DEFAULT '0', + `DateMAJ_Produit` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_provenance` +-- + +CREATE TABLE `tbl_provenance` ( + `NoProvenance` int(10) UNSIGNED NOT NULL, + `Provenance` varchar(35) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_region` +-- + +CREATE TABLE `tbl_region` ( + `NoRegion` int(10) UNSIGNED NOT NULL, + `Region` varchar(60) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_revenu_familial` +-- + +CREATE TABLE `tbl_revenu_familial` ( + `NoRevenuFamilial` int(10) UNSIGNED NOT NULL, + `Revenu` varchar(35) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_situation_maison` +-- + +CREATE TABLE `tbl_situation_maison` ( + `NoSituationMaison` int(10) UNSIGNED NOT NULL, + `Situation` varchar(35) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_sous_categorie` +-- + +CREATE TABLE `tbl_sous_categorie` ( + `NoSousCategorie` char(2) NOT NULL DEFAULT '', + `NoCategorie` int(10) UNSIGNED NOT NULL DEFAULT '0', + `TitreSousCategorie` varchar(255) DEFAULT NULL, + `Supprimer` int(1) DEFAULT NULL, + `Approuver` int(1) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_taxe` +-- + +CREATE TABLE `tbl_taxe` ( + `NoTaxe` int(10) UNSIGNED NOT NULL, + `TauxTaxePro` double UNSIGNED DEFAULT NULL, + `NoTaxePro` varchar(85) CHARACTER SET latin1 DEFAULT NULL, + `TauxTaxeFed` double UNSIGNED DEFAULT NULL, + `NoTaxeFed` varchar(85) CHARACTER SET latin1 DEFAULT NULL, + `TauxMajoration` double UNSIGNED DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_titre` +-- + +CREATE TABLE `tbl_titre` ( + `NoTitre` int(10) UNSIGNED NOT NULL, + `Titre` varchar(50) CHARACTER SET latin1 DEFAULT NULL, + `Visible_Titre` tinyint(1) UNSIGNED DEFAULT NULL, + `DateMAJ_Titre` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=0; + +-- +-- Structure de la table `tbl_type_communication` +-- + +CREATE TABLE `tbl_type_communication` ( + `NoTypeCommunication` int(10) UNSIGNED NOT NULL, + `TypeCommunication` varchar(35) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 PACK_KEYS=0; + +-- +-- Structure de la table `tbl_type_compte` +-- + +CREATE TABLE `tbl_type_compte` ( + `NoMembre` int(10) UNSIGNED NOT NULL DEFAULT '0', + `OrganizateurSimple` int(1) DEFAULT NULL, + `Admin` int(1) DEFAULT NULL, + `AdminChef` int(1) DEFAULT NULL, + `Reseau` int(1) DEFAULT NULL, + `SPIP` int(10) UNSIGNED DEFAULT '0', + `AdminPointService` int(1) DEFAULT '0', + `AdminOrdPointService` int(1) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 PACK_KEYS=0; + +-- +-- Structure de la table `tbl_type_fichier` +-- + +CREATE TABLE `tbl_type_fichier` ( + `Id_TypeFichier` int(10) UNSIGNED NOT NULL, + `TypeFichier` varchar(80) COLLATE latin1_general_ci DEFAULT NULL, + `DateMAJ_TypeFichier` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_type_tel` +-- + +CREATE TABLE `tbl_type_tel` ( + `NoTypeTel` int(10) UNSIGNED NOT NULL, + `TypeTel` varchar(35) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Structure de la table `tbl_versement` +-- + +CREATE TABLE `tbl_versement` ( + `Id_Versement` int(10) UNSIGNED NOT NULL, + `Id_Mensualite` int(10) UNSIGNED NOT NULL, + `MontantVersement` decimal(8,2) UNSIGNED DEFAULT NULL, + `DateMAJ_Versement` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +-- +-- Structure de la table `tbl_ville` +-- + +CREATE TABLE `tbl_ville` ( + `NoVille` int(10) UNSIGNED NOT NULL, + `Ville` varchar(60) DEFAULT NULL, + `NoRegion` int(10) UNSIGNED DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + + +-- +-- Index pour les tables déchargées +-- + +-- +-- Index pour la table `tbl_organization` +-- +ALTER TABLE `tbl_organization` + ADD PRIMARY KEY (`NoOrganization`), + ADD KEY `fk_tbl_organization_tbl_region1_idx` (`NoRegion`), + ADD KEY `fk_tbl_organization_tbl_ville1_idx` (`NoVille`), + ADD KEY `fk_tbl_organization_tbl_arrondissement1_idx` (`NoArrondissement`), + ADD KEY `fk_tbl_organization_tbl_cartier1_idx` (`NoCartier`); + +-- +-- Index pour la table `tbl_achat_ponctuel` +-- +ALTER TABLE `tbl_achat_ponctuel` + ADD PRIMARY KEY (`NoAchatPonctuel`), + ADD KEY `fk_tbl_achat_ponctuel_tbl_membre1_idx` (`NoMembre`); + +-- +-- Index pour la table `tbl_achat_ponctuel_produit` +-- +ALTER TABLE `tbl_achat_ponctuel_produit` + ADD PRIMARY KEY (`NoAchatPonctuelProduit`), + ADD UNIQUE KEY `UniqueAchatPoncProduit` (`NoAchatPonctuel`,`NoFournisseurProduit`), + ADD KEY `fk_tbl_achat_ponctuel_produit_tbl_achat_ponctuel1_idx` (`NoAchatPonctuel`), + ADD KEY `fk_tbl_achat_ponctuel_produit_tbl_fournisseur_produit1_idx` (`NoFournisseurProduit`); + +-- +-- Index pour la table `tbl_arrondissement` +-- +ALTER TABLE `tbl_arrondissement` + ADD PRIMARY KEY (`NoArrondissement`), + ADD KEY `fk_tbl_arrondissement_tbl_ville1_idx` (`NoVille`); + +-- +-- Index pour la table `tbl_cartier` +-- +ALTER TABLE `tbl_cartier` + ADD PRIMARY KEY (`NoCartier`), + ADD KEY `fk_tbl_cartier_tbl_arrondissement1_idx` (`NoArrondissement`); + +-- +-- Index pour la table `tbl_categorie` +-- +ALTER TABLE `tbl_categorie` + ADD PRIMARY KEY (`NoCategorie`); + +-- +-- Index pour la table `tbl_categorie_sous_categorie` +-- +ALTER TABLE `tbl_categorie_sous_categorie` + ADD PRIMARY KEY (`NoCategorieSousCategorie`), + ADD KEY `fk_tbl_categorie_sous_categorie_tbl_sous_categorie1_idx` (`NoSousCategorie`), + ADD KEY `fk_tbl_categorie_sous_categorie_tbl_categorie1_idx` (`NoCategorie`); +ALTER TABLE `tbl_categorie_sous_categorie` ADD FULLTEXT KEY `RchFullText_TitreDescrip` (`TitreOffre`,`Description`); + +-- +-- Index pour la table `tbl_commande` +-- +ALTER TABLE `tbl_commande` + ADD PRIMARY KEY (`NoCommande`), + ADD KEY `fk_tbl_commande_tbl_pointservice1_idx` (`NoPointService`); + +-- +-- Index pour la table `tbl_commande_membre` +-- +ALTER TABLE `tbl_commande_membre` + ADD PRIMARY KEY (`NoCommandeMembre`), + ADD KEY `fk_tbl_commande_membre_tbl_commande1_idx` (`NoCommande`), + ADD KEY `fk_tbl_commande_membre_tbl_membre1_idx` (`NoMembre`); + +-- +-- Index pour la table `tbl_commande_membre_produit` +-- +ALTER TABLE `tbl_commande_membre_produit` + ADD PRIMARY KEY (`NoCmdMbProduit`), + ADD KEY `fk_tbl_commande_membre_produit_tbl_commande_membre1_idx` (`NoCommandeMembre`), + ADD KEY `fk_tbl_commande_membre_produit_tbl_fournisseur_produit_comm_idx` (`NoFournisseurProduitCommande`); + +-- +-- Index pour la table `tbl_commentaire` +-- +ALTER TABLE `tbl_commentaire` + ADD PRIMARY KEY (`NoCommentaire`), + ADD KEY `fk_tbl_commentaire_tbl_pointservice1_idx` (`NoPointService`), + ADD KEY `fk_tbl_commentaire_tbl_offre_service_membre1_idx` (`NoOffreServiceMembre`), + ADD KEY `fk_tbl_commentaire_tbl_demande_service1_idx` (`NoDemandeService`), + ADD KEY `fk_tbl_commentaire_tbl_pointservice2_idx` (`NoMembreSource`), + ADD KEY `fk_tbl_commentaire_tbl_pointservice3_idx` (`NoMembreViser`); + +-- +-- Index pour la table `tbl_demande_service` +-- +ALTER TABLE `tbl_demande_service` + ADD PRIMARY KEY (`NoDemandeService`), + ADD KEY `fk_tbl_demande_service_tbl_membre1_idx` (`NoMembre`), + ADD KEY `fk_tbl_demande_service_tbl_organization1_idx` (`NoOrganization`); +ALTER TABLE `tbl_demande_service` ADD FULLTEXT KEY `tbl_demande_service_index1460` (`TitreDemande`,`Description`); + +-- +-- Index pour la table `tbl_dmd_adhesion` +-- +ALTER TABLE `tbl_dmd_adhesion` + ADD PRIMARY KEY (`NoDmdAdhesion`), + ADD KEY `fk_tbl_dmd_adhesion_tbl_organization1_idx` (`NoOrganization`); + +-- +-- Index pour la table `tbl_droits_admin` +-- +ALTER TABLE `tbl_droits_admin` + ADD PRIMARY KEY (`NoMembre`), + ADD KEY `fk_tbl_droits_admin_tbl_membre1_idx` (`NoMembre`); + +-- +-- Index pour la table `tbl_echange_service` +-- +ALTER TABLE `tbl_echange_service` + ADD PRIMARY KEY (`NoEchangeService`), + ADD KEY `Index_Teste` (`NoEchangeService`,`NoMembreVendeur`,`NoMembreAcheteur`,`TypeEchange`), + ADD KEY `fk_tbl_echange_service_tbl_membre1_idx` (`NoMembreVendeur`), + ADD KEY `fk_tbl_echange_service_tbl_membre2_idx` (`NoMembreAcheteur`), + ADD KEY `fk_tbl_echange_service_tbl_offre_service_membre1_idx` (`NoOffreServiceMembre`), + ADD KEY `fk_tbl_echange_service_tbl_demande_service1_idx` (`NoDemandeService`), + ADD KEY `fk_tbl_echange_service_tbl_pointservice1_idx` (`NoPointService`); + +-- +-- Index pour la table `tbl_fichier` +-- +ALTER TABLE `tbl_fichier` + ADD PRIMARY KEY (`Id_Fichier`), + ADD KEY `fk_tbl_fichier_tbl_type_fichier1_idx` (`Id_TypeFichier`), + ADD KEY `fk_tbl_fichier_tbl_organization1_idx` (`NoOrganization`); + +-- +-- Index pour la table `tbl_fournisseur` +-- +ALTER TABLE `tbl_fournisseur` + ADD PRIMARY KEY (`NoFournisseur`), + ADD KEY `fk_tbl_fournisseur_tbl_organization1_idx` (`NoOrganization`); + +-- +-- Index pour la table `tbl_fournisseur_produit` +-- +ALTER TABLE `tbl_fournisseur_produit` + ADD PRIMARY KEY (`NoFournisseurProduit`), + ADD UNIQUE KEY `UniqueFournisseurProduit` (`NoFournisseur`,`NoProduit`), + ADD KEY `fk_tbl_fournisseur_produit_tbl_fournisseur1_idx` (`NoFournisseur`), + ADD KEY `fk_tbl_fournisseur_produit_tbl_produit1_idx` (`NoProduit`); + +-- +-- Index pour la table `tbl_fournisseur_produit_commande` +-- +ALTER TABLE `tbl_fournisseur_produit_commande` + ADD PRIMARY KEY (`NoFournisseurProduitCommande`), + ADD UNIQUE KEY `Unique_Produit` (`NoCommande`,`NoFournisseurProduit`), + ADD KEY `fk_tbl_fournisseur_produit_commande_tbl_commande1_idx` (`NoCommande`), + ADD KEY `fk_tbl_fournisseur_produit_commande_tbl_fournisseur_produit_idx` (`NoFournisseurProduit`); + +-- +-- Index pour la table `tbl_fournisseur_produit_pointservice` +-- +ALTER TABLE `tbl_fournisseur_produit_pointservice` + ADD PRIMARY KEY (`NoFournisseurProduitPointservice`), + ADD UNIQUE KEY `UniqueProduitFournPointService` (`NoFournisseurProduit`,`NoPointService`), + ADD KEY `fk_tbl_fournisseur_produit_pointservice_tbl_pointservice1_idx` (`NoPointService`), + ADD KEY `fk_tbl_fournisseur_produit_pointservice_tbl_fournisseur_pro_idx` (`NoFournisseurProduit`); + +-- +-- Index pour la table `tbl_info_logiciel_bd` +-- +ALTER TABLE `tbl_info_logiciel_bd` + ADD PRIMARY KEY (`NoInfoLogicielBD`); + +-- +-- Index pour la table `tbl_log_acces` +-- +ALTER TABLE `tbl_log_acces` + ADD PRIMARY KEY (`Id_log_acces`), + ADD KEY `fk_tbl_log_acces_tbl_membre1_idx` (`NoMembre`); + +-- +-- Index pour la table `tbl_membre` +-- +ALTER TABLE `tbl_membre` + ADD PRIMARY KEY (`NoMembre`), + ADD KEY `fk_tbl_membre_tbl_organization_idx` (`NoOrganization`), + ADD KEY `fk_tbl_membre_tbl_cartier1_idx` (`NoCartier`), + ADD KEY `fk_tbl_membre_tbl_type_communication1_idx` (`NoTypeCommunication`), + ADD KEY `fk_tbl_membre_tbl_occupation1_idx` (`NoOccupation`), + ADD KEY `fk_tbl_membre_tbl_origine1_idx` (`NoOrigine`), + ADD KEY `fk_tbl_membre_tbl_situation_maison1_idx` (`NoSituationMaison`), + ADD KEY `fk_tbl_membre_tbl_provenance1_idx` (`NoProvenance`), + ADD KEY `fk_tbl_membre_tbl_revenu_familial1_idx` (`NoRevenuFamilial`), + ADD KEY `fk_tbl_membre_tbl_arrondissement1_idx` (`NoArrondissement`), + ADD KEY `fk_tbl_membre_tbl_ville1_idx` (`NoVille`), + ADD KEY `fk_tbl_membre_tbl_type_tel2_idx` (`NoTypeTel1`), + ADD KEY `fk_tbl_membre_tbl_type_tel3_idx` (`NoTypeTel2`), + ADD KEY `fk_tbl_membre_tbl_region1_idx` (`NoRegion`), + ADD KEY `fk_tbl_membre_tbl_pointservice1_idx` (`NoPointService`), + ADD KEY `fk_tbl_membre_tbl_type_tel1_idx` (`NoTypeTel3`); +ALTER TABLE `tbl_membre` ADD FULLTEXT KEY `rch` (`Nom`,`Prenom`,`Telephone1`,`Telephone2`,`Telephone3`,`Courriel`,`NomUtilisateur`,`Memo`); + +-- +-- Index pour la table `tbl_mensualite` +-- +ALTER TABLE `tbl_mensualite` + ADD PRIMARY KEY (`Id_Mensualite`), + ADD KEY `fk_tbl_mensualite_tbl_Pret1_idx` (`Id_Pret`); + +-- +-- Index pour la table `tbl_occupation` +-- +ALTER TABLE `tbl_occupation` + ADD PRIMARY KEY (`NoOccupation`); + +-- +-- Index pour la table `tbl_offre_service_membre` +-- +ALTER TABLE `tbl_offre_service_membre` + ADD PRIMARY KEY (`NoOffreServiceMembre`), + ADD KEY `fk_tbl_offre_service_membre_tbl_membre1_idx` (`NoMembre`), + ADD KEY `fk_tbl_offre_service_membre_tbl_organization1_idx` (`NoOrganization`), + ADD KEY `fk_tbl_offre_service_membre_tbl_categorie_sous_categorie1_idx` (`NoCategorieSousCategorie`); +ALTER TABLE `tbl_offre_service_membre` ADD FULLTEXT KEY `RchFullText_OffreSpe` (`TitreOffreSpecial`,`Description`); + +-- +-- Index pour la table `tbl_origine` +-- +ALTER TABLE `tbl_origine` + ADD PRIMARY KEY (`NoOrigine`); + +-- +-- Index pour la table `tbl_pointservice` +-- +ALTER TABLE `tbl_pointservice` + ADD PRIMARY KEY (`NoPointService`), + ADD KEY `fk_tbl_pointservice_tbl_organization1_idx` (`NoOrganization`), + ADD KEY `fk_tbl_pointservice_tbl_membre1_idx` (`NoMembre`); + +-- +-- Index pour la table `tbl_pointservice_fournisseur` +-- +ALTER TABLE `tbl_pointservice_fournisseur` + ADD PRIMARY KEY (`NoPointServiceFournisseur`), + ADD KEY `fk_tbl_pointservice_fournisseur_tbl_fournisseur1_idx` (`NoFournisseur`), + ADD KEY `fk_tbl_pointservice_fournisseur_tbl_pointservice1_idx` (`NoPointService`); + +-- +-- Index pour la table `tbl_pret` +-- +ALTER TABLE `tbl_pret` + ADD PRIMARY KEY (`Id_Pret`), + ADD KEY `fk_tbl_pret_tbl_membre1_idx` (`NoMembre`), + ADD KEY `fk_tbl_pret_tbl_membre2_idx` (`NoMembre_Intermediaire`), + ADD KEY `fk_tbl_pret_tbl_membre3_idx` (`NoMembre_Responsable`); + +-- +-- Index pour la table `tbl_produit` +-- +ALTER TABLE `tbl_produit` + ADD PRIMARY KEY (`NoProduit`), + ADD KEY `fk_tbl_produit_tbl_titre1_idx` (`NoTitre`), + ADD KEY `fk_tbl_produit_tbl_organization1_idx` (`NoOrganization`); + +-- +-- Index pour la table `tbl_provenance` +-- +ALTER TABLE `tbl_provenance` + ADD PRIMARY KEY (`NoProvenance`); + +-- +-- Index pour la table `tbl_region` +-- +ALTER TABLE `tbl_region` + ADD PRIMARY KEY (`NoRegion`); + +-- +-- Index pour la table `tbl_revenu_familial` +-- +ALTER TABLE `tbl_revenu_familial` + ADD PRIMARY KEY (`NoRevenuFamilial`); + +-- +-- Index pour la table `tbl_situation_maison` +-- +ALTER TABLE `tbl_situation_maison` + ADD PRIMARY KEY (`NoSituationMaison`); + +-- +-- Index pour la table `tbl_sous_categorie` +-- +ALTER TABLE `tbl_sous_categorie` + ADD PRIMARY KEY (`NoSousCategorie`,`NoCategorie`), + ADD KEY `fk_tbl_sous_categorie_tbl_categorie1_idx` (`NoCategorie`); + +-- +-- Index pour la table `tbl_taxe` +-- +ALTER TABLE `tbl_taxe` + ADD PRIMARY KEY (`NoTaxe`); + +-- +-- Index pour la table `tbl_titre` +-- +ALTER TABLE `tbl_titre` + ADD PRIMARY KEY (`NoTitre`); + +-- +-- Index pour la table `tbl_type_communication` +-- +ALTER TABLE `tbl_type_communication` + ADD PRIMARY KEY (`NoTypeCommunication`); + +-- +-- Index pour la table `tbl_type_compte` +-- +ALTER TABLE `tbl_type_compte` + ADD PRIMARY KEY (`NoMembre`), + ADD KEY `fk_tbl_type_compte_tbl_membre1_idx` (`NoMembre`); + +-- +-- Index pour la table `tbl_type_fichier` +-- +ALTER TABLE `tbl_type_fichier` + ADD PRIMARY KEY (`Id_TypeFichier`); + +-- +-- Index pour la table `tbl_type_tel` +-- +ALTER TABLE `tbl_type_tel` + ADD PRIMARY KEY (`NoTypeTel`); + +-- +-- Index pour la table `tbl_versement` +-- +ALTER TABLE `tbl_versement` + ADD PRIMARY KEY (`Id_Versement`), + ADD KEY `fk_tbl_versement_tbl_mensualite1_idx` (`Id_Mensualite`); + +-- +-- Index pour la table `tbl_ville` +-- +ALTER TABLE `tbl_ville` + ADD PRIMARY KEY (`NoVille`), + ADD KEY `fk_tbl_ville_tbl_region1_idx` (`NoRegion`); + +-- +-- AUTO_INCREMENT pour les tables déchargées +-- + +-- +-- AUTO_INCREMENT pour la table `tbl_organization` +-- +ALTER TABLE `tbl_organization` + MODIFY `NoOrganization` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=121; + +-- +-- AUTO_INCREMENT pour la table `tbl_achat_ponctuel` +-- +ALTER TABLE `tbl_achat_ponctuel` + MODIFY `NoAchatPonctuel` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=276; + +-- +-- AUTO_INCREMENT pour la table `tbl_achat_ponctuel_produit` +-- +ALTER TABLE `tbl_achat_ponctuel_produit` + MODIFY `NoAchatPonctuelProduit` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=537; + +-- +-- AUTO_INCREMENT pour la table `tbl_arrondissement` +-- +ALTER TABLE `tbl_arrondissement` + MODIFY `NoArrondissement` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=73; + +-- +-- AUTO_INCREMENT pour la table `tbl_cartier` +-- +ALTER TABLE `tbl_cartier` + MODIFY `NoCartier` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=30; + +-- +-- AUTO_INCREMENT pour la table `tbl_categorie` +-- +ALTER TABLE `tbl_categorie` + MODIFY `NoCategorie` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1000; + +-- +-- AUTO_INCREMENT pour la table `tbl_categorie_sous_categorie` +-- +ALTER TABLE `tbl_categorie_sous_categorie` + MODIFY `NoCategorieSousCategorie` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1381; + +-- +-- AUTO_INCREMENT pour la table `tbl_commande` +-- +ALTER TABLE `tbl_commande` + MODIFY `NoCommande` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=308; + +-- +-- AUTO_INCREMENT pour la table `tbl_commande_membre` +-- +ALTER TABLE `tbl_commande_membre` + MODIFY `NoCommandeMembre` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6211; + +-- +-- AUTO_INCREMENT pour la table `tbl_commande_membre_produit` +-- +ALTER TABLE `tbl_commande_membre_produit` + MODIFY `NoCmdMbProduit` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=72290; + +-- +-- AUTO_INCREMENT pour la table `tbl_commentaire` +-- +ALTER TABLE `tbl_commentaire` + MODIFY `NoCommentaire` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=383; + +-- +-- AUTO_INCREMENT pour la table `tbl_demande_service` +-- +ALTER TABLE `tbl_demande_service` + MODIFY `NoDemandeService` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3212; + +-- +-- AUTO_INCREMENT pour la table `tbl_dmd_adhesion` +-- +ALTER TABLE `tbl_dmd_adhesion` + MODIFY `NoDmdAdhesion` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1065; + +-- +-- AUTO_INCREMENT pour la table `tbl_echange_service` +-- +ALTER TABLE `tbl_echange_service` + MODIFY `NoEchangeService` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=107322; + +-- +-- AUTO_INCREMENT pour la table `tbl_fichier` +-- +ALTER TABLE `tbl_fichier` + MODIFY `Id_Fichier` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=503; + +-- +-- AUTO_INCREMENT pour la table `tbl_fournisseur` +-- +ALTER TABLE `tbl_fournisseur` + MODIFY `NoFournisseur` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=142; + +-- +-- AUTO_INCREMENT pour la table `tbl_fournisseur_produit` +-- +ALTER TABLE `tbl_fournisseur_produit` + MODIFY `NoFournisseurProduit` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4386; + +-- +-- AUTO_INCREMENT pour la table `tbl_fournisseur_produit_commande` +-- +ALTER TABLE `tbl_fournisseur_produit_commande` + MODIFY `NoFournisseurProduitCommande` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=74860; + +-- +-- AUTO_INCREMENT pour la table `tbl_fournisseur_produit_pointservice` +-- +ALTER TABLE `tbl_fournisseur_produit_pointservice` + MODIFY `NoFournisseurProduitPointservice` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7946; + +-- +-- AUTO_INCREMENT pour la table `tbl_info_logiciel_bd` +-- +ALTER TABLE `tbl_info_logiciel_bd` + MODIFY `NoInfoLogicielBD` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; + +-- +-- AUTO_INCREMENT pour la table `tbl_log_acces` +-- +ALTER TABLE `tbl_log_acces` + MODIFY `Id_log_acces` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=318179; + +-- +-- AUTO_INCREMENT pour la table `tbl_membre` +-- +ALTER TABLE `tbl_membre` + MODIFY `NoMembre` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10144; + +-- +-- AUTO_INCREMENT pour la table `tbl_mensualite` +-- +ALTER TABLE `tbl_mensualite` + MODIFY `Id_Mensualite` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT pour la table `tbl_occupation` +-- +ALTER TABLE `tbl_occupation` + MODIFY `NoOccupation` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; + +-- +-- AUTO_INCREMENT pour la table `tbl_offre_service_membre` +-- +ALTER TABLE `tbl_offre_service_membre` + MODIFY `NoOffreServiceMembre` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=73151; + +-- +-- AUTO_INCREMENT pour la table `tbl_origine` +-- +ALTER TABLE `tbl_origine` + MODIFY `NoOrigine` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; + +-- +-- AUTO_INCREMENT pour la table `tbl_pointservice` +-- +ALTER TABLE `tbl_pointservice` + MODIFY `NoPointService` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=35; + +-- +-- AUTO_INCREMENT pour la table `tbl_pointservice_fournisseur` +-- +ALTER TABLE `tbl_pointservice_fournisseur` + MODIFY `NoPointServiceFournisseur` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=140; + +-- +-- AUTO_INCREMENT pour la table `tbl_pret` +-- +ALTER TABLE `tbl_pret` + MODIFY `Id_Pret` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- AUTO_INCREMENT pour la table `tbl_produit` +-- +ALTER TABLE `tbl_produit` + MODIFY `NoProduit` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4194; + +-- +-- AUTO_INCREMENT pour la table `tbl_provenance` +-- +ALTER TABLE `tbl_provenance` + MODIFY `NoProvenance` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + +-- +-- AUTO_INCREMENT pour la table `tbl_region` +-- +ALTER TABLE `tbl_region` + MODIFY `NoRegion` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=18; + +-- +-- AUTO_INCREMENT pour la table `tbl_revenu_familial` +-- +ALTER TABLE `tbl_revenu_familial` + MODIFY `NoRevenuFamilial` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + +-- +-- AUTO_INCREMENT pour la table `tbl_situation_maison` +-- +ALTER TABLE `tbl_situation_maison` + MODIFY `NoSituationMaison` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + +-- +-- AUTO_INCREMENT pour la table `tbl_taxe` +-- +ALTER TABLE `tbl_taxe` + MODIFY `NoTaxe` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- AUTO_INCREMENT pour la table `tbl_titre` +-- +ALTER TABLE `tbl_titre` + MODIFY `NoTitre` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=53; + +-- +-- AUTO_INCREMENT pour la table `tbl_type_communication` +-- +ALTER TABLE `tbl_type_communication` + MODIFY `NoTypeCommunication` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; + +-- +-- AUTO_INCREMENT pour la table `tbl_type_fichier` +-- +ALTER TABLE `tbl_type_fichier` + MODIFY `Id_TypeFichier` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14; + +-- +-- AUTO_INCREMENT pour la table `tbl_type_tel` +-- +ALTER TABLE `tbl_type_tel` + MODIFY `NoTypeTel` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6; + +-- +-- AUTO_INCREMENT pour la table `tbl_versement` +-- +ALTER TABLE `tbl_versement` + MODIFY `Id_Versement` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT pour la table `tbl_ville` +-- +ALTER TABLE `tbl_ville` + MODIFY `NoVille` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=99906; +COMMIT; diff --git a/script/database/restore_mariadb_sql_example_1.sh b/script/database/restore_mariadb_sql_example_1.sh new file mode 100755 index 0000000..9670726 --- /dev/null +++ b/script/database/restore_mariadb_sql_example_1.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +SQL_PATH=./script/database/mariadb_sql_example_1.sql + +# You need to set no password to mysql root user +# SET PASSWORD FOR root@localhost=''; +# FLUSH PRIVILEGES; + +# Second solution +# ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; +# FLUSH PRIVILEGES; + +echo "Create database and user" +mysql -u root << EOF +DROP DATABASE IF EXISTS mariadb_sql_example_1; +CREATE USER IF NOT EXISTS 'organization'@'localhost' IDENTIFIED BY 'organization'; +GRANT ALL PRIVILEGES ON *.* TO 'organization'@'localhost' IDENTIFIED BY 'organization'; +FLUSH PRIVILEGES; +CREATE DATABASE mariadb_sql_example_1; +EOF + +echo "Fix SQL file" +sed -i "s/'0000-00-00'/NULL/g" ${SQL_PATH} + +echo "Import SQL file" +mysql -u organization -porganization mariadb_sql_example_1 < ${SQL_PATH} + +echo "Fix SQL in database" +./.venv/bin/python ./script/database/fix_mariadb_sql_example_1.py diff --git a/script/git/remote_code_generation_git_compare.py b/script/git/remote_code_generation_git_compare.py new file mode 100755 index 0000000..2296605 --- /dev/null +++ b/script/git/remote_code_generation_git_compare.py @@ -0,0 +1,104 @@ +#!./.venv/bin/python +# © 2021 TechnoLibre (http://www.technolibre.ca) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import argparse +import logging +import os +import shutil +import subprocess +import tempfile + +from git import Repo + +_logger = logging.getLogger(__name__) + + +def get_config(): + """Parse command line arguments, extracting the config file name, + returning the union of config file and command line arguments + + :return: dict of config file settings and command line arguments + """ + # TODO update description + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="""Copy a directory in a temporary directory to compare with a generated code to understand the difference.""", + epilog="""\ +""", + ) + parser.add_argument( + "--directory1", + required=True, + help="Compare input1 to input2. Input1 is older config.", + ) + parser.add_argument( + "--directory2", + required=True, + help="The generated code directory", + ) + parser.add_argument( + "--replace_directory", + action="store_true", + help="Erase after first commit to see removing file.", + ) + parser.add_argument( + "-q", + "--quiet", + action="store_true", + help="Don't show output of difference.", + ) + parser.add_argument("--git_gui", action="store_true", help="Open git gui.") + parser.add_argument("--meld", action="store_true", help="Open meld.") + parser.add_argument( + "--clear", + action="store_true", + help="Delete temporary directory at the end of execution.", + ) + args = parser.parse_args() + return args + + +def main(): + config = get_config() + # path = tempfile.mkdtemp() + path = tempfile.NamedTemporaryFile().name + if os.path.exists(config.directory1) and os.path.exists(config.directory2): + if config.git_gui: + shutil.copytree(config.directory1, path) + shutil.copy2("./.gitignore", path) + # repo = Repo(path) + repo = Repo.init(path=path) + repo.git.add(".") + repo.git.commit("-m", "First commit") + # shutil.copy2(config.directory2, path) + if config.replace_directory: + subprocess.call(f"rm -r {path}/*", shell=True) + subprocess.call(f"cp -r {config.directory2}/* {path}", shell=True) + status = repo.git.diff() + if not config.quiet: + print(status) + + try: + subprocess.call(f"cd {path};git gui", shell=True) + except: + pass + if config.clear: + shutil.rmtree(path, ignore_errors=True) + elif config.meld: + try: + subprocess.call(f"make clean", shell=True) + subprocess.call( + f"meld {config.directory1} {config.directory2}", shell=True + ) + except: + pass + elif not os.path.exists(config.directory1): + _logger.error(f"Path is not existing {config.directory1}") + # elif not os.path.exists(config.directory2): + else: + _logger.error(f"Path is not existing {config.directory2}") + + +if __name__ == "__main__": + main() diff --git a/script/install_OSX_dependency.sh b/script/install_OSX_dependency.sh index 1340d9b..5868f0c 100755 --- a/script/install_OSX_dependency.sh +++ b/script/install_OSX_dependency.sh @@ -49,8 +49,8 @@ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poet # Install Wkhtmltopdf if needed #-------------------------------------------------- echo "\n---- Installing Wkhtmltopdf if needed ----" -if [ ! -f "wkhtmltox-0.12.6-1.macos-cocoa.pkg" ]; then - sudo wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.macos-cocoa.pkg - sudo sudo installer -pkg wkhtmltox-0.12.6-1.macos-cocoa.pkg -target / +if [ ! -f "wkhtmltox-0.12.6-2.macos-cocoa.pkg" ]; then + sudo wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-2/wkhtmltox-0.12.6-2.macos-cocoa.pkg + sudo sudo installer -pkg wkhtmltox-0.12.6-2.macos-cocoa.pkg -target / else echo "Wkhtmltopdf already installed" fi diff --git a/script/install_debian_dependency.sh b/script/install_debian_dependency.sh index 9be9d8f..53c71a3 100755 --- a/script/install_debian_dependency.sh +++ b/script/install_debian_dependency.sh @@ -53,7 +53,9 @@ sudo apt-get install libmariadbd-dev -y sudo apt-get install make libssl-dev zlib1g-dev libreadline-dev libsqlite3-dev curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev liblzma-dev -y echo -e "\n---- Installing nodeJS NPM and rtlcss for LTR support ----" -sudo apt-get install nodejs npm -y +curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - +sudo apt-get install -y nodejs +sudo npm install npm@latest -g sudo npm install -g rtlcss sudo npm install -g less diff --git a/script/install_dev.sh b/script/install_dev.sh index 6c011d7..22f0135 100755 --- a/script/install_dev.sh +++ b/script/install_dev.sh @@ -1,16 +1,17 @@ #!/usr/bin/env bash -################################################################################ -# Script for installing ERPLibre locally for dev -# Author: Alexandre Ferreira Benevides -################################################################################ if [[ "${OSTYPE}" == "linux-gnu" ]]; then OS=$(lsb_release -si) + VERSION=$(cat /etc/issue) if [[ "${OS}" == "Ubuntu" ]]; then - echo "\n---- linux-gnu installation process started ----" - ./script/install_debian_dependency.sh + if [[ "${VERSION}" == Ubuntu\ 18.04* || "${VERSION}" == Ubuntu\ 20.04* ]]; then + echo "\n---- linux-gnu installation process started ----" + ./script/install_debian_dependency.sh + else + echo "Your version is not supported, only support 18.04 and 20.04 : ${VERSION}" + fi else - echo "Your Linux system is not supported." + echo "Your Linux system is not supported, only support Ubuntu 18.04 or Ubuntu 20.04." fi elif [[ "${OSTYPE}" == "darwin"* ]]; then echo "\n---- Darwin installation process started ----" diff --git a/script/install_dev_extra_ubuntu.sh b/script/install_dev_extra_ubuntu.sh new file mode 100755 index 0000000..089578f --- /dev/null +++ b/script/install_dev_extra_ubuntu.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# Need this for test extra + +if [[ "${OSTYPE}" == "linux-gnu" ]]; then + OS=$(lsb_release -si) + VERSION=$(cat /etc/issue) + if [[ "${OS}" == "Ubuntu" ]]; then + if [[ "${VERSION}" == Ubuntu\ 18.04* || "${VERSION}" == Ubuntu\ 20.04* ]]; then + # Install mariadb + sudo apt install mariadb-client mariadb-server + echo "This is not for production, this is for development. Mysql user root will be accessible without password." + sudo mysql -u root << EOF +SET PASSWORD FOR root@localhost=''; +FLUSH PRIVILEGES; +EOF + + # Install docker + sudo apt-get update + sudo apt-get install ca-certificates curl gnupg lsb-release + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + sudo apt-get update + sudo apt-get install docker-ce docker-ce-cli containerd.io + + # Run without root + #sudo groupadd docker + sudo usermod -aG docker "$USER" + #newgrp docker + + # Install docker-compose + sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + else + echo "Your version is not supported, only support 18.04 and 20.04 : ${VERSION}" + fi + else + echo "Your Linux system is not supported, only support Ubuntu 18.04 or Ubuntu 20.04." + fi +fi diff --git a/script/make.sh b/script/make.sh index c95d7cb..577410a 100755 --- a/script/make.sh +++ b/script/make.sh @@ -1,4 +1,15 @@ #!/usr/bin/env bash -echo "==$&%== Begin ${@}" +echo " +===> ${@} +" time make $@ -echo "==$&%== End ${@}" +retVal=$? + +echo " +<=== ${@} +" + +if [[ $retVal -ne 0 ]]; then + echo "Error make ${@}" + exit 1 +fi diff --git a/script/open_terminal_code_generator.sh b/script/open_terminal_code_generator.sh index 45a80f0..5ea1409 100755 --- a/script/open_terminal_code_generator.sh +++ b/script/open_terminal_code_generator.sh @@ -5,6 +5,7 @@ paths=( "${working_path}/" "${working_path}/addons/TechnoLibre_odoo-code-generator" "${working_path}/addons/TechnoLibre_odoo-code-generator-template" +"${working_path}/addons/OCA_server-tools" ) cmd_before="cd " @@ -13,7 +14,7 @@ cmd_after=";gnome-terminal --tab -- bash -c 'git status;bash';" #cmd_after=";gnome-terminal --tab;" LONGCMD="" -for t in ${paths[@]}; do +for t in "${paths[@]}"; do LONGCMD+=${cmd_before}${t}${cmd_after} done diff --git a/script/repo_revert_git_diff_date_from_code_generator.py b/script/repo_revert_git_diff_date_from_code_generator.py index 85c892a..4c2980d 100755 --- a/script/repo_revert_git_diff_date_from_code_generator.py +++ b/script/repo_revert_git_diff_date_from_code_generator.py @@ -1,15 +1,20 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import re +import sys + import git from unidiff import PatchSet -import re new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) +logging.basicConfig( + format="%(asctime)s %(levelname)s: %(message)s", + datefmt="%Y-%m-%d %I:%M:%S", +) _logger = logging.getLogger(__name__) @@ -62,6 +67,7 @@ def main(): with open(file_real_path, "r") as file: lst_data = file.readlines() for data in lst_data: + # TODO this remove code begin with this string, why do we remove it? if data.startswith("#: code:addons/addons/"): is_modified = True else: diff --git a/script/test/check_result_test.sh b/script/test/check_result_test.sh new file mode 100755 index 0000000..bb09a2d --- /dev/null +++ b/script/test/check_result_test.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +if (($# < 1)); then + echo "ERROR, need 1 arguments: log file path" + exit 1 +fi + +Color_Off='\033[0m' +Red='\033[0;31m' +Blue='\033[0;34m' +Yellow='\033[0;33m' +LOG_FILE="${1}" + +echo "== RESULT from ${LOG_FILE} ==" +WARNING_MESSAGE=$(grep -i warning "${LOG_FILE}") +WARNING_MESSAGE=$(echo "${WARNING_MESSAGE}"|grep -v "have the same label:") +WARNING_MESSAGE=$(echo "${WARNING_MESSAGE}"|grep -v "odoo.addons.code_generator.extractor_module_file: Ignore next error about ALTER TABLE DROP CONSTRAINT.") +# Remove empty line +if [[ -z "${WARNING_MESSAGE// }" ]]; then + COUNT_WARNING=0 +else + COUNT_WARNING=$(echo "${WARNING_MESSAGE}"|wc -l) +fi + +ERROR_MESSAGE=$(grep -i error "${LOG_FILE}") +ERROR_MESSAGE=$(echo "${ERROR_MESSAGE}"|grep -v "fetchmail_notify_error_to_sender") +ERROR_MESSAGE=$(echo "${ERROR_MESSAGE}"|grep -v "odoo.sql_db: bad query: ALTER TABLE \"db_backup\" DROP CONSTRAINT \"db_backup_db_backup_name_unique\"") +ERROR_MESSAGE=$(echo "${ERROR_MESSAGE}"|grep -v "ERROR: constraint \"db_backup_db_backup_name_unique\" of relation \"db_backup\" does not exist") +ERROR_MESSAGE=$(echo "${ERROR_MESSAGE}"|grep -v "odoo.sql_db: bad query: ALTER TABLE \"db_backup\" DROP CONSTRAINT \"db_backup_db_backup_days_to_keep_positive\"") +ERROR_MESSAGE=$(echo "${ERROR_MESSAGE}"|grep -v "ERROR: constraint \"db_backup_db_backup_days_to_keep_positive\" of relation \"db_backup\" does not exist") +ERROR_MESSAGE=$(echo "${ERROR_MESSAGE}"|grep -v "odoo.addons.code_generator.extractor_module_file: Ignore next error about ALTER TABLE DROP CONSTRAINT.") +# Remove empty line +if [[ -z "${ERROR_MESSAGE// }" ]]; then + COUNT_ERROR=0 +else + COUNT_ERROR=$(echo "${ERROR_MESSAGE}"|wc -l) +fi + +echo_count_warnings () { + if (("${COUNT_WARNING}" > 1)); then + echo -e "${Yellow}${COUNT_WARNING} WARNINGS${Color_Off}" + else + echo -e "${Yellow}${COUNT_WARNING} WARNING${Color_Off}" + fi +} +echo_count_errors () { + if (("${COUNT_ERROR}" > 1)); then + echo -e "${Red}${COUNT_ERROR} ERRORS${Color_Off}" + else + echo -e "${Red}${COUNT_ERROR} ERROR${Color_Off}" + fi +} + +echo -e "${Blue}Summary of check result${Color_Off}" +if (("${COUNT_WARNING}" > 0)); then + echo_count_warnings +fi + +if (("${COUNT_ERROR}" > 0)); then + echo_count_errors +fi + +echo -e "${Blue}Log result${Color_Off}" +if (("${COUNT_WARNING}" > 0)); then + if (("${COUNT_ERROR}" > 0)); then + echo_count_warnings + fi + echo -e "${WARNING_MESSAGE}" +fi + +if (("${COUNT_ERROR}" > 0)); then + if (("${COUNT_WARNING}" > 0)); then + echo_count_errors + fi + echo -e "${ERROR_MESSAGE}" +fi + +echo -e "${Blue}End of check result${Color_Off}" diff --git a/script/test/run_parallel_test.py b/script/test/run_parallel_test.py new file mode 100755 index 0000000..7c13058 --- /dev/null +++ b/script/test/run_parallel_test.py @@ -0,0 +1,607 @@ +#!./.venv/bin/python +import argparse +import asyncio +import datetime +import logging +import os +import sys +import time +import uuid +from typing import Tuple + +from colorama import Fore + +logging.basicConfig(level=logging.DEBUG) +_logger = logging.getLogger(__name__) + +LOG_FILE = "./.venv/make_test.log" + + +def get_config(): + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="""\ + Run code generator test in parallel. +""", + epilog="""\ +""", + ) + parser.add_argument( + "--ignore_init_check_git", + action="store_true", + help="Will not stop or init check if contain git change.", + ) + args = parser.parse_args() + return args + + +lst_ignore_warning = [ + "have the same label:", + "odoo.addons.code_generator.extractor_module_file: Ignore next error about" + " ALTER TABLE DROP CONSTRAINT.", +] + +lst_ignore_error = [ + "fetchmail_notify_error_to_sender", + 'odoo.sql_db: bad query: ALTER TABLE "db_backup" DROP CONSTRAINT' + ' "db_backup_db_backup_name_unique"', + 'ERROR: constraint "db_backup_db_backup_name_unique" of relation' + ' "db_backup" does not exist', + 'odoo.sql_db: bad query: ALTER TABLE "db_backup" DROP CONSTRAINT' + ' "db_backup_db_backup_days_to_keep_positive"', + 'ERROR: constraint "db_backup_db_backup_days_to_keep_positive" of relation' + ' "db_backup" does not exist', + "odoo.addons.code_generator.extractor_module_file: Ignore next error about" + " ALTER TABLE DROP CONSTRAINT.", +] + + +def extract_result(result, test_name, lst_error, lst_warning): + lst_log = result[0].split("\n") + for log_line in lst_log: + is_ignore_error = False + if "error" in log_line.lower(): + # Remove ignore error + for ignore_error in lst_ignore_error: + if ignore_error in log_line: + is_ignore_error = True + break + if not is_ignore_error: + lst_error.append(log_line) + + is_ignore_warning = False + if "warning" in log_line.lower(): + # Remove ignore warning + for ignore_warning in lst_ignore_warning: + if ignore_warning in log_line: + is_ignore_warning = True + break + if not is_ignore_warning: + lst_warning.append(log_line) + if result[1]: + lst_error.append(f"Return status error for test {test_name}") + + +def check_result(task_list, tpl_result): + lst_error = [] + lst_warning = [] + + for i, result in enumerate(tpl_result): + extract_result( + result, task_list[i].cr_code.co_name, lst_error, lst_warning + ) + + if lst_warning: + print(f"{Fore.YELLOW}{len(lst_warning)} WARNING{Fore.RESET}") + i = 0 + for warning in lst_warning: + i += 1 + print(f"[{i}]{warning}") + + if lst_error: + print(f"{Fore.RED}{len(lst_error)} ERROR{Fore.RESET}") + i = 0 + for error in lst_error: + i += 1 + print(f"[{i}]{error}") + + if lst_error or lst_warning: + str_result = ( + f"{Fore.RED}{len(lst_error)} ERROR" + f" {Fore.YELLOW}{len(lst_warning)} WARNING" + ) + else: + str_result = f"{Fore.GREEN}SUCCESS 🍰" + + print(f"{Fore.BLUE}Summary TEST {str_result}{Fore.RESET}") + + +def print_log(lst_task, tpl_result): + if len(lst_task) != len(tpl_result): + _logger.error("Different length for log... What happen?") + return + with open(LOG_FILE, "w") as f: + for i, task in enumerate(lst_task): + result = tpl_result[i] + status_str = "PASS" if not result[1] else "FAIL" + f.write( + f"\nTest execution {i + 1} - {status_str} -" + f" {task.cr_code.co_name}\n\n" + ) + if result[0]: + f.write(result[0]) + f.write("\n") + print(f"Log file {LOG_FILE}") + + +async def run_command(*args, test_name=None): + # Create subprocess + start_time = time.time() + cmd_str = " ".join(args) + process = await asyncio.create_subprocess_exec( + *args, + # stdout must a pipe to be accessible as process.stdout + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + # Wait for the subprocess to finish + stdout, stderr = await process.communicate() + end_time = time.time() + diff_sec = end_time - start_time + # Return stdout + stderr, returncode + str_out = "\n" + stdout.decode().strip() + "\n" if stdout else "" + str_err = "\n" + stderr.decode().strip() + "\n" if stderr else "" + status_str = "FAIL" if process.returncode else "PASS" + if test_name: + str_output_init = ( + f"\n\n{status_str} [{test_name}] [{diff_sec:.3f}s] Execute" + f' "{cmd_str}"\n\n' + ) + else: + str_output_init = ( + f'\n\n{status_str} [{diff_sec:.3f}s] Execute "{cmd_str}"\n\n' + ) + all_output = str_out + str_err + print(str_output_init) + if process.returncode: + lst_error = [] + lst_warning = [] + extract_result( + (all_output, process.returncode), test_name, lst_error, lst_warning + ) + for error in lst_error: + print(f"\t{error}") + for warning in lst_warning: + print(f"\t{warning}") + return str_output_init + all_output, process.returncode + + +async def test_exec( + path_module_check: str, + generated_module=None, + tested_module=None, + search_class_module=None, + script_after_init_check=None, + lst_init_module_name=None, + test_name=None, + install_path=None, +) -> Tuple[str, int]: + + test_result = "" + test_status = 0 + if install_path is None: + install_path = path_module_check + + # Check code, init module to install + if lst_init_module_name: + for module_name in lst_init_module_name: + res, status = await run_command( + "./script/code_generator/check_git_change_code_generator.sh", + path_module_check, + module_name, + test_name=test_name, + ) + test_result += res + test_status += status + + # Check code, module to generate + if tested_module: + res, status = await run_command( + "./script/code_generator/check_git_change_code_generator.sh", + path_module_check, + tested_module, + test_name=test_name, + ) + test_result += res + test_status += status + + # Leave when detect anomaly in check before start + if test_status: + return test_result, test_status + + # Execute script before start + if script_after_init_check and not test_status: + res, status = await run_command(script_after_init_check) + test_result += res + test_status += status + + is_db_create = False + unique_database_name = f"test_demo_{uuid.uuid4()}"[:63] + if not test_status: + res, status = await run_command( + "./script/db_restore.py", + "--database", + unique_database_name, + test_name=test_name, + ) + test_result += res + test_status += status + is_db_create = not status + + if not test_status and lst_init_module_name: + # Parallel execution here + + # No parallel execution here + str_test = ",".join(lst_init_module_name) + script_name = ( + "./script/addons/install_addons_dev.sh" + if tested_module + else "./script/addons/install_addons.sh" + ) + res, status = await run_command( + script_name, + unique_database_name, + str_test, + test_name=test_name, + ) + test_result += res + test_status += status + + if not test_status and search_class_module and generated_module: + path_template_to_generate = os.path.join( + path_module_check, tested_module + ) + path_module_to_generate = os.path.join( + path_module_check, search_class_module + ) + # Parallel execution here + + # No parallel execution here + res, status = await run_command( + "./script/code_generator/search_class_model.py", + "--quiet", + "-d", + path_module_to_generate, + "-t", + path_template_to_generate, + test_name=test_name, + ) + test_result += res + test_status += status + + if not test_status and tested_module and generated_module: + # Parallel execution here + + # No parallel execution here + res, status = await run_command( + "./script/code_generator/install_and_test_code_generator.sh", + unique_database_name, + tested_module, + install_path, + generated_module, + test_name=test_name, + ) + test_result += res + test_status += status + + if is_db_create: + res, status = await run_command( + "./.venv/bin/python3", + "./odoo/odoo-bin", + "db", + "--drop", + "--database", + unique_database_name, + test_name=test_name, + ) + test_result += res + test_status += status + + return test_result, test_status + + +def check_git_change(): + """ + return True if success + """ + loop = asyncio.get_event_loop() + task_list = [ + run_command( + "./script/code_generator/check_git_change_code_generator.sh", + "./addons/TechnoLibre_odoo-code-generator-template", + test_name="Init check_git_change", + ) + ] + commands = asyncio.gather(*task_list) + tpl_result = loop.run_until_complete(commands) + status = any([a[1] for a in tpl_result]) + loop.close() + return not status + + +def print_summary_task(task_list): + for task in task_list: + print(task.cr_code.co_name) + + +# START TEST + + +async def run_demo_test() -> Tuple[str, int]: + lst_test_name = [ + "demo_helpdesk_data", + "demo_internal", + "demo_internal_inherit", + "demo_mariadb_sql_example_1", + "demo_portal", + "demo_website_data", + "demo_website_leaflet", + "demo_website_snippet", + ] + res, status = await test_exec( + "./addons/TechnoLibre_odoo-code-generator-template", + lst_init_module_name=lst_test_name, + test_name="demo_test", + ) + + return res, status + + +async def run_mariadb_test() -> Tuple[str, int]: + test_result = "" + test_status = 0 + # Migrator + res, status = await test_exec( + "./addons/TechnoLibre_odoo-code-generator-template", + generated_module="demo_mariadb_sql_example_1", + tested_module="code_generator_migrator_demo_mariadb_sql_example_1", + script_after_init_check=( + "./script/database/restore_mariadb_sql_example_1.sh" + ), + lst_init_module_name=[ + "code_generator_portal", + ], + test_name="mariadb_test-migrator", + ) + test_result += res + test_status += status + + # Template + res, status = await test_exec( + "./addons/TechnoLibre_odoo-code-generator-template", + generated_module="code_generator_demo_mariadb_sql_example_1", + tested_module="code_generator_template_demo_mariadb_sql_example_1", + search_class_module="demo_mariadb_sql_example_1", + lst_init_module_name=[ + "code_generator_portal", + "demo_mariadb_sql_example_1", + ], + test_name="mariadb_test-template", + ) + test_result += res + test_status += status + + # Code generator + res, status = await test_exec( + "./addons/TechnoLibre_odoo-code-generator-template", + generated_module="demo_mariadb_sql_example_1", + lst_init_module_name=[ + "code_generator_portal", + ], + tested_module="code_generator_demo_mariadb_sql_example_1", + test_name="mariadb_test-code-generator", + ) + test_result += res + test_status += status + + return test_result, test_status + + +async def run_code_generator_multiple_test() -> Tuple[str, int]: + test_result = "" + test_status = 0 + lst_generated_module = [ + "code_generator_demo", + "demo_helpdesk_data", + "demo_website_data", + "demo_internal", + "demo_portal", + "theme_website_demo_code_generator", + "demo_website_leaflet", + "demo_website_snippet", + ] + lst_tested_module = [ + "code_generator_demo", + "code_generator_demo_export_helpdesk", + "code_generator_demo_export_website", + "code_generator_demo_internal", + "code_generator_demo_portal", + "code_generator_demo_theme_website", + "code_generator_demo_website_leaflet", + "code_generator_demo_website_snippet", + ] + # Multiple + res, status = await test_exec( + "./addons/TechnoLibre_odoo-code-generator-template", + generated_module=",".join(lst_generated_module), + tested_module=",".join(lst_tested_module), + test_name="code_generator_multiple_test", + ) + test_result += res + test_status += status + + return test_result, test_status + + +async def run_code_generator_inherit_test() -> Tuple[str, int]: + # TODO can be merge into code_generator_multiple + test_result = "" + test_status = 0 + lst_generated_module = [ + "demo_internal_inherit", + ] + lst_tested_module = [ + "code_generator_demo_internal_inherit", + ] + # Inherit + res, status = await test_exec( + "./addons/TechnoLibre_odoo-code-generator-template", + generated_module=",".join(lst_generated_module), + tested_module=",".join(lst_tested_module), + test_name="code_generator_inherit_test", + ) + test_result += res + test_status += status + + return test_result, test_status + + +async def run_code_generator_auto_backup_test() -> Tuple[str, int]: + test_result = "" + test_status = 0 + lst_generated_module = [ + "auto_backup", + ] + lst_tested_module = [ + "code_generator_auto_backup", + ] + # Auto-backup + res, status = await test_exec( + "./addons/OCA_server-tools/auto_backup", + generated_module=",".join(lst_generated_module), + tested_module=",".join(lst_tested_module), + test_name="code_generator_auto_backup_test", + ) + test_result += res + test_status += status + + return test_result, test_status + + +async def run_code_generator_template_demo_portal_test() -> Tuple[str, int]: + test_result = "" + test_status = 0 + # Template + res, status = await test_exec( + "./addons/TechnoLibre_odoo-code-generator-template", + generated_module="code_generator_demo_portal", + tested_module="code_generator_template_demo_portal", + # search_class_module="demo_mariadb_sql_example_1", + lst_init_module_name=[ + "demo_portal", + ], + test_name="code_generator_template_demo_portal", + ) + test_result += res + test_status += status + + return test_result, test_status + + +async def run_code_generator_template_demo_internal_inherit_test() -> Tuple[ + str, int +]: + test_result = "" + test_status = 0 + # Template + res, status = await test_exec( + "./addons/TechnoLibre_odoo-code-generator-template", + generated_module="code_generator_demo_internal_inherit", + tested_module="code_generator_template_demo_internal_inherit", + # search_class_module="code_generator_demo_internal_inherit", + lst_init_module_name=[ + "demo_internal_inherit", + ], + test_name="code_generator_template_demo_internal_inherit", + ) + test_result += res + test_status += status + + return test_result, test_status + + +async def run_code_generator_template_demo_sysadmin_cron_test() -> Tuple[ + str, int +]: + test_result = "" + test_status = 0 + # Template + res, status = await test_exec( + "./addons/OCA_server-tools/auto_backup", + generated_module="code_generator_auto_backup", + tested_module="code_generator_template_demo_sysadmin_cron", + # search_class_module="code_generator_demo_internal_inherit", + lst_init_module_name=[ + "auto_backup", + ], + test_name="code_generator_template_demo_sysadmin_cron", + install_path="./addons/TechnoLibre_odoo-code-generator-template", + ) + test_result += res + test_status += status + + return test_result, test_status + + +async def run_helloworld_test() -> Tuple[str, int]: + res, status = await run_command( + "./test/code_generator/hello_world.sh", test_name="helloworld_test" + ) + + return res, status + + +def run_all_test() -> None: + task_list = [] + + task_list.append(run_demo_test()) + task_list.append(run_helloworld_test()) + task_list.append(run_mariadb_test()) + task_list.append(run_code_generator_multiple_test()) + task_list.append(run_code_generator_inherit_test()) + task_list.append(run_code_generator_auto_backup_test()) + task_list.append(run_code_generator_template_demo_portal_test()) + task_list.append(run_code_generator_template_demo_internal_inherit_test()) + task_list.append(run_code_generator_template_demo_sysadmin_cron_test()) + + print_summary_task(task_list) + + if asyncio.get_event_loop().is_closed(): + asyncio.set_event_loop(asyncio.new_event_loop()) + loop = asyncio.get_event_loop() + commands = asyncio.gather(*task_list) + tpl_result = loop.run_until_complete(commands) + loop.close() + print_log(task_list, tpl_result) + check_result(task_list, tpl_result) + + +def main(): + config = get_config() + start_time = time.time() + if not config.ignore_init_check_git: + success = check_git_change() + else: + success = True + if success: + run_all_test() + end_time = time.time() + diff_sec = end_time - start_time + # print(f"Time execution {diff_sec:.3f}s") + print(f"Time execution {datetime.timedelta(seconds=diff_sec)}") + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/test/code_generator/hello_world.sh b/test/code_generator/hello_world.sh new file mode 100755 index 0000000..4b4bda2 --- /dev/null +++ b/test/code_generator/hello_world.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +Color_Off='\033[0m' # Text Reset +Red='\033[0;31m' # Red +Green='\033[0;32m' # Green + +tmp_dir=$(mktemp -d -t "erplibre_code_generator_helloworld-$(date +%Y-%m-%d-%H-%M-%S)-XXXXXXXXXX") + +./script/code_generator/new_project.py -m test -d "${tmp_dir}" + +MODULE_PATH="${tmp_dir}/test" +if [[ -d "${MODULE_PATH}" ]]; then + echo -e "${Green}SUCCESS${Color_Off} ${MODULE_PATH} exists." +else + echo -e "${Red}ERROR${Color_Off} ${MODULE_PATH} is missing." +fi + +rm -rf "${tmp_dir}" From 83b879222750d1c262477969d0a311185bf87d7a Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Mon, 24 Jan 2022 01:39:49 -0500 Subject: [PATCH 5/6] [UPD] script: format and isort --- .../transform_python_to_code_writer.py | 9 +++++---- .../transform_xml_to_code_writer.py | 7 ++++--- script/csv/compare_database_application.py | 6 +++--- script/db_restore.py | 6 +++--- script/deployment/update_dns_cloudflare.py | 1 + script/docker/docker_update_version.py | 5 +++-- script/fork_github_repo/__init__.py | 4 +++- script/fork_project.py | 5 +++-- script/fork_project_ERPLibre.py | 7 ++++--- script/git_change_remote.py | 6 +++--- script/git_diff_repo_manifest.py | 5 +++-- script/git_merge_repo_manifest.py | 6 +++--- script/git_repo_manifest.py | 4 ++-- script/git_repo_update_group.py | 7 ++++--- script/git_show_code_diff_repo_manifest.py | 10 +++++----- script/git_tool.py | 20 ++++++++----------- script/git_update_repo.py | 5 +++-- script/manifest/compare_backup.py | 10 +++++----- script/poetry_update.py | 9 +++++---- script/pull_request_ERPLibre.py | 4 ++-- script/repo_remove_auto_install.py | 5 +++-- script/tag_push_all.py | 8 ++++---- 22 files changed, 79 insertions(+), 70 deletions(-) diff --git a/script/code_generator/transform_python_to_code_writer.py b/script/code_generator/transform_python_to_code_writer.py index fae2585..7cf75b0 100644 --- a/script/code_generator/transform_python_to_code_writer.py +++ b/script/code_generator/transform_python_to_code_writer.py @@ -1,15 +1,16 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os import subprocess +import sys + from code_writer import CodeWriter -# import tokenize - from script.git_tool import GitTool +# import tokenize + def get_config(): """Parse command line arguments, extracting the config file name, diff --git a/script/code_generator/transform_xml_to_code_writer.py b/script/code_generator/transform_xml_to_code_writer.py index aa90052..d2cd863 100644 --- a/script/code_generator/transform_xml_to_code_writer.py +++ b/script/code_generator/transform_xml_to_code_writer.py @@ -1,10 +1,11 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import sys +from xml.dom import Node, minidom + from code_writer import CodeWriter -from xml.dom import minidom, Node from script.git_tool import GitTool diff --git a/script/csv/compare_database_application.py b/script/csv/compare_database_application.py index 8828838..3c820d0 100755 --- a/script/csv/compare_database_application.py +++ b/script/csv/compare_database_application.py @@ -1,9 +1,9 @@ #!./.venv/bin/python +import argparse +import csv +import logging import os import sys -import argparse -import logging -import csv new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) diff --git a/script/db_restore.py b/script/db_restore.py index e688410..98a9608 100755 --- a/script/db_restore.py +++ b/script/db_restore.py @@ -1,10 +1,10 @@ #!./.venv/bin/python -import os -import sys import argparse -import logging import configparser import getpass +import logging +import os +import sys from subprocess import check_output new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) diff --git a/script/deployment/update_dns_cloudflare.py b/script/deployment/update_dns_cloudflare.py index b87a7a4..9c40537 100755 --- a/script/deployment/update_dns_cloudflare.py +++ b/script/deployment/update_dns_cloudflare.py @@ -1,6 +1,7 @@ #!./.venv/bin/python import argparse import logging + import CloudFlare import requests diff --git a/script/docker/docker_update_version.py b/script/docker/docker_update_version.py index f62856f..40431b3 100755 --- a/script/docker/docker_update_version.py +++ b/script/docker/docker_update_version.py @@ -1,8 +1,9 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import sys + import yaml new_path = os.path.normpath( diff --git a/script/fork_github_repo/__init__.py b/script/fork_github_repo/__init__.py index 5b209ca..604c72a 100644 --- a/script/fork_github_repo/__init__.py +++ b/script/fork_github_repo/__init__.py @@ -1,12 +1,14 @@ from __future__ import print_function + import argparse import os.path import shutil + +import yaml # pip install PyYAML from agithub.GitHub import GitHub # pip install agithub from git import Repo # pip install gitpython from giturlparse import parse # pip install giturlparse from retrying import retry # pip install retrying -import yaml # pip install PyYAML DEFAULT_CONFIG_FILENAME = "~/.github/fork_github_repo.yaml" diff --git a/script/fork_project.py b/script/fork_project.py index 6ac026d..aa5af63 100644 --- a/script/fork_project.py +++ b/script/fork_project.py @@ -1,8 +1,9 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import sys + from git import Repo from retrying import retry # pip install retrying diff --git a/script/fork_project_ERPLibre.py b/script/fork_project_ERPLibre.py index 8768c53..6aef3e7 100755 --- a/script/fork_project_ERPLibre.py +++ b/script/fork_project_ERPLibre.py @@ -1,10 +1,11 @@ #!./.venv/bin/python -import os -import sys import argparse import logging -from git import Repo +import os +import sys + import git +from git import Repo new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) diff --git a/script/git_change_remote.py b/script/git_change_remote.py index c6293da..2dc07a4 100755 --- a/script/git_change_remote.py +++ b/script/git_change_remote.py @@ -1,10 +1,10 @@ #!./.venv/bin/python -import os -import sys import argparse import logging -from git import Repo +import os +import sys +from git import Repo from retrying import retry # pip install retrying new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) diff --git a/script/git_diff_repo_manifest.py b/script/git_diff_repo_manifest.py index 35a5064..73c30e3 100755 --- a/script/git_diff_repo_manifest.py +++ b/script/git_diff_repo_manifest.py @@ -1,8 +1,9 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import sys + from git import Repo new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) diff --git a/script/git_merge_repo_manifest.py b/script/git_merge_repo_manifest.py index 865c366..0d84980 100755 --- a/script/git_merge_repo_manifest.py +++ b/script/git_merge_repo_manifest.py @@ -1,9 +1,9 @@ #!./.venv/bin/python +import argparse +import copy +import logging import os import sys -import argparse -import logging -import copy new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) diff --git a/script/git_repo_manifest.py b/script/git_repo_manifest.py index a9ea463..dc2a98f 100755 --- a/script/git_repo_manifest.py +++ b/script/git_repo_manifest.py @@ -1,8 +1,8 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import sys new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) diff --git a/script/git_repo_update_group.py b/script/git_repo_update_group.py index 00fc6f5..99da140 100755 --- a/script/git_repo_update_group.py +++ b/script/git_repo_update_group.py @@ -1,10 +1,11 @@ #!./.venv/bin/python -import os -import sys import argparse import logging -from git import Repo +import os +import sys + import git +from git import Repo new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) diff --git a/script/git_show_code_diff_repo_manifest.py b/script/git_show_code_diff_repo_manifest.py index c41cdb7..ac0688c 100755 --- a/script/git_show_code_diff_repo_manifest.py +++ b/script/git_show_code_diff_repo_manifest.py @@ -1,13 +1,13 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import sys +from collections import defaultdict + +from colorama import Fore, Style from git import Repo from git.exc import GitCommandError, NoSuchPathError -from colorama import Fore -from colorama import Style -from collections import defaultdict new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) diff --git a/script/git_tool.py b/script/git_tool.py index c5842f4..1af00f3 100644 --- a/script/git_tool.py +++ b/script/git_tool.py @@ -3,16 +3,16 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import os import webbrowser -from retrying import retry # pip install retrying -from agithub.GitHub import GitHub # pip install agithub -from giturlparse import parse # pip install giturlparse -import xmltodict from collections import OrderedDict - -from git import Repo -import git from typing import List +import git +import xmltodict +from agithub.GitHub import GitHub # pip install agithub +from git import Repo +from giturlparse import parse # pip install giturlparse +from retrying import retry # pip install retrying + CST_FILE_SOURCE_REPO_ADDONS = "source_repo_addons.csv" CST_EL_GITHUB_TOKEN = "EL_GITHUB_TOKEN" DEFAULT_PROJECT_NAME = "ERPLibre" @@ -391,11 +391,7 @@ class GitTool: lst_result = [] for repo in lst_repo: # Exception, ignore addons/OCA_web and root - if ( - "addons/OCA_web" == repo.get("path") - or "odoo" == repo.get("path") - or "image_db" == repo.get("path") - ): + if repo.get("path") in ["addons/OCA_web", "odoo", "image_db"]: continue str_repo = ( f' printf "${{EL_HOME}}/{repo.get("path")}," >> ' diff --git a/script/git_update_repo.py b/script/git_update_repo.py index fef6edd..4f73087 100755 --- a/script/git_update_repo.py +++ b/script/git_update_repo.py @@ -1,8 +1,9 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import sys + from git import Repo # pip install gitpython from retrying import retry # pip install retrying diff --git a/script/manifest/compare_backup.py b/script/manifest/compare_backup.py index 5eb343b..0bffc3e 100755 --- a/script/manifest/compare_backup.py +++ b/script/manifest/compare_backup.py @@ -1,12 +1,12 @@ #!./.venv/bin/python +import argparse +import json +import logging import os import sys -import argparse -import logging import zipfile -import json -from colorama import Fore -from colorama import Style + +from colorama import Fore, Style new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) diff --git a/script/poetry_update.py b/script/poetry_update.py index 97b2c0f..7ba68a2 100755 --- a/script/poetry_update.py +++ b/script/poetry_update.py @@ -1,13 +1,14 @@ #!./.venv/bin/python +import argparse +import ast +import logging import os import sys -import argparse -import logging -import toml -import ast from collections import OrderedDict, defaultdict from pathlib import Path + import iscompatible +import toml new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) diff --git a/script/pull_request_ERPLibre.py b/script/pull_request_ERPLibre.py index eee235b..d8b31b6 100755 --- a/script/pull_request_ERPLibre.py +++ b/script/pull_request_ERPLibre.py @@ -1,8 +1,8 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import sys new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) diff --git a/script/repo_remove_auto_install.py b/script/repo_remove_auto_install.py index 4e40a88..3a3f9a4 100755 --- a/script/repo_remove_auto_install.py +++ b/script/repo_remove_auto_install.py @@ -1,9 +1,10 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import sys from pathlib import Path + from git import Repo # pip install gitpython from git.exc import GitCommandError diff --git a/script/tag_push_all.py b/script/tag_push_all.py index ed24d6e..fae2abc 100755 --- a/script/tag_push_all.py +++ b/script/tag_push_all.py @@ -1,12 +1,12 @@ #!./.venv/bin/python -import os -import sys import argparse import logging +import os +import sys + +from colorama import Fore, Style from git import Repo # pip install gitpython from retrying import retry # pip install retrying -from colorama import Fore -from colorama import Style new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(new_path) From ad5b21cbca1b28bb02ff598f00ed2409278a0125 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Mon, 24 Jan 2022 14:03:38 -0500 Subject: [PATCH 6/6] [UPD] doc: better release information, readme and development --- README.md | 4 ++++ doc/DEVELOPMENT.md | 8 ++++++++ doc/FAQ.md | 14 ++++++++++++++ doc/RELEASE.md | 7 +++++++ 4 files changed, 33 insertions(+) diff --git a/README.md b/README.md index 7517f5d..4ac9a2d 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ Select a guide to install your environment. ## Easy way to run locally +Into Ubuntu, minimal dependency: +```bash +sudo apt install make git +``` Clone the project: ```bash git clone https://github.com/ERPLibre/ERPLibre.git diff --git a/doc/DEVELOPMENT.md b/doc/DEVELOPMENT.md index af10163..6fdb92f 100644 --- a/doc/DEVELOPMENT.md +++ b/doc/DEVELOPMENT.md @@ -197,6 +197,14 @@ source ./.venv/bin/activate python odoo/odoo-bin scaffold MODULE_NAME addons/REPO_NAME/ ``` +## Use Code generator + +Read CODE_GENERATOR.md. + +# Version + +Read GIT_REPO.md to understand how changer version. + ## Python version Your actual version is in file .python-version. Use script `./script/version/change_python_version.sh 3.7.12` to change to version 3.7.12 . diff --git a/doc/FAQ.md b/doc/FAQ.md index 285ebd6..fc8c90e 100644 --- a/doc/FAQ.md +++ b/doc/FAQ.md @@ -1,5 +1,19 @@ # FAQ +## Scripting + +### Search all duplicate file recursively in given directory + +```bash +find . -type f -printf '%p/ %f\n' | sort -k2 | uniq -f1 --all-repeated=separate +``` + +### Search all duplicate directory recursively in given directory + +```bash +find . -type d -printf '%p/ %f\n' | sort -k2 | uniq -f1 --all-repeated=separate +``` + ## Networking Show all open port diff --git a/doc/RELEASE.md b/doc/RELEASE.md index 327923c..89f4436 100644 --- a/doc/RELEASE.md +++ b/doc/RELEASE.md @@ -45,6 +45,7 @@ make format To generate database images in directory `./image_db`, run: ```bash +make config_gen_all make image_db_create_all ``` @@ -73,6 +74,8 @@ grep --color=always --exclude-dir={.repo,.venv,.git} --exclude="*.svg" -nri v1.2 Replace if need it to new version. +Update file `./pyproject.toml` in [tool.poetry], line `version =`. + ### Test production Ubuntu environment Follow instructions in [PRODUCTION.md](./PRODUCTION.md). @@ -185,6 +188,10 @@ List your docker version You need to push your docker image and update your tag, like 1.0.1: > docker push technolibre/erplibre:VERSION +## Do a release on github + +Visit `https://github.com/ERPLibre/ERPLibre/releases/new` and create a release named `v#.#.#` and copy information from CHANGELOG.md. + # TIPS ## Compare repo differences with another ERPLibre project