From 719a5baf26bd7360afa3cc4f57e2206b2110e3b4 Mon Sep 17 00:00:00 2001 From: castiel10k <71992808+castiel10k@users.noreply.github.com> Date: Thu, 2 Feb 2023 12:44:10 -0500 Subject: [PATCH 1/5] [ADD] Creation of WINDOWS_INSTALLATION.md --- doc/WINDOWS_INSTALLATION.md | 187 ++++++++++++++++++++++++++++ doc/image/add_local_interpreter.png | Bin 0 -> 12275 bytes doc/image/existing_venv.png | Bin 0 -> 19125 bytes doc/image/on_wsl.png | Bin 0 -> 14667 bytes doc/image/remote_development.png | Bin 0 -> 23715 bytes doc/image/shell_path.png | Bin 0 -> 16888 bytes doc/image/system_python.png | Bin 0 -> 8909 bytes 7 files changed, 187 insertions(+) create mode 100644 doc/WINDOWS_INSTALLATION.md create mode 100644 doc/image/add_local_interpreter.png create mode 100644 doc/image/existing_venv.png create mode 100644 doc/image/on_wsl.png create mode 100644 doc/image/remote_development.png create mode 100644 doc/image/shell_path.png create mode 100644 doc/image/system_python.png diff --git a/doc/WINDOWS_INSTALLATION.md b/doc/WINDOWS_INSTALLATION.md new file mode 100644 index 0000000..2411916 --- /dev/null +++ b/doc/WINDOWS_INSTALLATION.md @@ -0,0 +1,187 @@ +# Windows 10 version 2004 and up or 11 - release and development + +A guide on how to set up a workspace and run ERPLibre on Windows 10 version 2004 and up or Windows 11. There are two methods of installation, one is automatic and the other manual. + +**"WSL2 Ubuntu 22.04" will be referred as "WSL2"** + +**"PyCharm Professional" will be referred as "PyCharm"** + +## Install WSL2 + +Run Powershell with administrator rights and run the following command: +```bash +wsl --install -d Ubuntu-22.04 +``` + +If you have trouble opening the Powershell with administrator rights, press `Windows + R`, enter the following line and press `OK`. You will be automatically prompted for administrator rights. +```bash +powershell.exe +``` + +### Troubleshooting - Optional +If you have issues enable virtualization options in BIOS is available (hyper-v, vt-x, etc). Search for `Turn Windows features on or off` in the Windows search bar and ensure that `Windows Subsystem for Linux` is turned on before restarting your machine. + +You can also try theses powershell commands: +```bash +dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart +wsl --set-default-version 2 +``` + +Download and install the lastest Linux kernel update package from Microsoft with the following [link](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi): +```bash +https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi +``` + +Only run this command as your last resort as it can break other virtual machines: +```bash +bcdedit /set hypervisorlaunchtype auto +``` + +### Other Installation methods for WSL2 + +Run Powershell with administrator rights and run the following command: +```bash +curl.exe -L -o ubuntu-2004.appx https://aka.ms/wslubuntu2004 +``` + +Run Powershell with administrator rights and run the following commands: +```bash +Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsing +Add-AppxPackage .\Ubuntu.appx +``` + +Install WSL2 from the Microsoft Store with the following [link](https://apps.microsoft.com/store/detail/ubuntu-22041-lts/9PN20MSR04DW): +```bash +https://apps.microsoft.com/store/detail/ubuntu-22041-lts/9PN20MSR04DW +``` + +## Setup WSL2 for ERPLibre + +Once WSL2 has been installed correctly, reboot your computer. Once back into Windows, run the following commands in WSL2: + +### Installation of the necessary and up-to-date tools + +```bash +sudo apt update +sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev rsync make git +``` + +## Installation of ERPLibre under WSL2 + +Make sure to be in the directory where you want to clone the project. +```bash +git clone https://github.com/ERPLibre/ERPLibre.git +cd ERPLibre +make install +``` + +Add role to PostgresSQL, change `USERNAME` field in the command with your UNIX username from your WSL2 environment. +```bash +sudo service postgresql start +sudo su - postgres -c "createuser -s USERNAME" 2>/dev/null || true +``` + +## Running ERPLibre + +Everytime you restart your machine, the following command has to be executed to start the PostgreSQL service if it is not already running: +```bash +sudo service postgresql start +``` + +After that run this command in the root of the project: +```bash +./run.sh +``` + +## Set up Development Environment - PyCharm + +### Install PyCharm + +Install PyCharm from the following [link](https://www.jetbrains.com/pycharm/download/#section=windows): +```bash +https://www.jetbrains.com/pycharm/download/#section=windows +``` + +### Set up Pycharm + +Select `Connect to WSL` under `Remote Development`. After that select your Ubuntu instace ("Ubuntu-22.04"). Point `Project directory` to the root of the project. Once everything has been selected and filled out correctly, click on `Start IDE and Connect`. + +![Welcome to PyCharm Wizard](image/remote_development.png) + +Press `CTRL+ALT+S`, search for `interpreter` and inside the `Python Interpreter` page, click on `Add Interpreter` and select `Add Local Interpreter...`. + +![Interpreter Settings](image/add_local_interpreter.png) + +Make sure to select `Virtualenv Environment` on the left and the `Existing` radio button. Once theses are both selected properly, point your interpreter to the `../ERPLibre/.venv/bin/python` directory of the project and click on `OK`. + +![Environment Settings](image/existing_venv.png) + +If these last steps to set up your development environment were unsuccessful, follow the next "Manual" steps to set up your environment. + +## Manual Installation + +### Install Python 3.7.16 +You can delete the files that are left over in your home directory regarding the python installation when the steps have been completed succesfully. +```bash +cd ~ +wget https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz +tar -xzf Python-3.7.16.tgz +cd Python-3.7.16 +./configure --enable-optimizations +make -j $(nproc) +sudo make install +``` + +### Verify the installation + +```bash +python3.7 +``` + +### Set Python 3.7.16 as default + +```bash +alias python='/usr/local/bin/python3.7' +source ~/.bashrc +``` + +### Set up Pycharm + +Open the project directory in PyCharm. + +Press `CTRL+ALT+S`, search for `interpreter` and inside the `Python Interpreter` page, click on `Add Interpreter` and select `On WSL...`. + +![Interpreter Settings](image/on_wsl.png) + +Wait until PyCharm detects your WSL2 instance and press `NEXT`. Click on `System Interpreter` on the left, select the correct interpreter if it hasn't done so automatically and click `Create`. + +![System Interpreter](/image/system_python.png) + +Close the project's settings. Once PyCharm prompts you to import modules and allow it. + +## Common problems with Windows Development + +### Broken Terminal + +Search for `terminal` in the settings, and under `Application Settings` in the `Shell path:` field enter the following line: + +```bash +wsl.exe +``` +![Shell Path - Terminal](image/shell_path.png) + +### High Memory Usage warnings + +Click on `Help` in the toolbar and choose `Change Memory Settings` to increase the memory heap of the IDE. + +### Missing or incorrect imported modules +PyCharm may ignore some information from the `requirements.txt` and `pyproject.toml` from the project (such as their specific versions). If you have problems at runtime or while debugging with a certain module, search for the correct version of that specific module and reinstall it from PyCharm's package manager. + +### Can't run ERPLibre from PyCharm +Run the following command in the root of the project from the terminal in PyCharm or WSL2 +```bash +./script/ide/pycharm_configuration.py +``` + +### Can't restart ERPLibre +Run `htop` from the terminal in PyCharm or WSL2 and close the python processes related to ERPLibre to release the socket. diff --git a/doc/image/add_local_interpreter.png b/doc/image/add_local_interpreter.png new file mode 100644 index 0000000000000000000000000000000000000000..8537994c3ebb1ceb2901521393ce2c50261b5594 GIT binary patch literal 12275 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 literal 0 HcmV?d00001 diff --git a/doc/image/on_wsl.png b/doc/image/on_wsl.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0f3a9150b7fa392452ec77250d21aecd484038 GIT binary patch literal 14667 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 I+vdst2NOI5r2qf` literal 0 HcmV?d00001 diff --git a/doc/image/remote_development.png b/doc/image/remote_development.png new file mode 100644 index 0000000000000000000000000000000000000000..28a968b3c0ce0126a7ff904b28781a82b779192e GIT binary patch literal 23715 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 KWm0Z@HtKKB3ZC-- literal 0 HcmV?d00001 diff --git a/doc/image/shell_path.png b/doc/image/shell_path.png new file mode 100644 index 0000000000000000000000000000000000000000..54135fe234309d837615a9189962b0640bd1a8af GIT binary patch literal 16888 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 R0<&h`7yB${`s6#p>Ge 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 Date: Thu, 26 Jan 2023 16:00:12 -0500 Subject: [PATCH 2/5] [UPD] script install OSX: support postgis --- script/install/install_OSX_dependency.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/script/install/install_OSX_dependency.sh b/script/install/install_OSX_dependency.sh index df607c9..3b1a7d2 100755 --- a/script/install/install_OSX_dependency.sh +++ b/script/install/install_OSX_dependency.sh @@ -14,10 +14,12 @@ EL_USER=${USER} #-------------------------------------------------- echo "\n---- Install PostgreSQL Server ----" brew install postgresql +brew install postgis brew services start postgresql echo "\n---- Creating the ERPLibre PostgreSQL User ----" sudo su - postgres -c "createuser -s ${EL_USER}" 2> /dev/null || true +sudo su - postgres -c "CREATE EXTENSION postgis;\nCREATE EXTENSION postgis_topology;" 2> /dev/null || true #-------------------------------------------------- # Install Dependencies From 892e64b0cbd1cb43b8419df1479a7c98332f4b7f Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Wed, 1 Feb 2023 15:46:12 -0500 Subject: [PATCH 3/5] [FIX] doc code_generator: change name module theme --- doc/CODE_GENERATOR.fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CODE_GENERATOR.fr.md b/doc/CODE_GENERATOR.fr.md index cdcd497..69576c1 100644 --- a/doc/CODE_GENERATOR.fr.md +++ b/doc/CODE_GENERATOR.fr.md @@ -274,7 +274,7 @@ make addons_install_code_generator_basic ./script/addons/install_addons.sh code_generator code_generator_theme_website make run_code_generator ``` -Aller dans le module «Code generator» et créer un module «test»: +Aller dans le module «Code generator» et créer un module «theme_test»: - Sur l'onglet «Information», activer «Enable Sync Code»; - Sur l'onglet «Technical Data», activer «Website theme»; - Appuyer sur le bouton «Views»: From 2f73a67227a6e5c6915803304cdc653dad6d4fa2 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Fri, 3 Feb 2023 03:10:28 -0500 Subject: [PATCH 4/5] [FIX] script pycharm_configuration: support iml when contain 1 component --- script/ide/pycharm_configuration.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/script/ide/pycharm_configuration.py b/script/ide/pycharm_configuration.py index 0d197e7..119492a 100755 --- a/script/ide/pycharm_configuration.py +++ b/script/ide/pycharm_configuration.py @@ -340,9 +340,17 @@ def add_exclude_folder(dct_xml, file_name, config): die( not bool(lst_component), f"Missing 'module/component' into {file_name}" ) - dct_component = [ - a for a in lst_component if a.get("@name") == "NewModuleRootManager" - ] + if type(lst_component) is list: + dct_component = [ + a + for a in lst_component + if a.get("@name") == "NewModuleRootManager" + ] + elif type(lst_component) is dict: + dct_component = [lst_component] + else: + raise Exception(f"Wrong value for {lst_component}") + die( not bool(dct_component), "Missing 'module/component @name NewModuleRootManager' into" From e03d36fac6aa76f77169d0878bd2f3b21e0f836b Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Sun, 5 Feb 2023 01:35:24 -0500 Subject: [PATCH 5/5] [UPD] poetry: Werkzeug 0.11.15 to 0.16.1 security issue - update all poetry --- poetry.lock | 515 +++++++++++++++++++++++++---------------------- pyproject.toml | 40 ++-- requirements.txt | 8 +- 3 files changed, 294 insertions(+), 269 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2566309..e751110 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,14 +2,14 @@ [[package]] name = "acme" -version = "2.1.0" +version = "2.2.0" description = "ACME protocol implementation in Python" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "acme-2.1.0-py3-none-any.whl", hash = "sha256:6a1b786154dfa3248cab36e0db7a78187986677857af2bac04f53bc79b642b8c"}, - {file = "acme-2.1.0.tar.gz", hash = "sha256:04cd54d46ee6611b540f79dc550a86c6de39c6c9648b856e952dcf3817ce99dd"}, + {file = "acme-2.2.0-py3-none-any.whl", hash = "sha256:699f4efc2a012c70eff4dbfaf7ef6798b44ef7677d8b3776bd1f0058288b2219"}, + {file = "acme-2.2.0.tar.gz", hash = "sha256:0a0432c8fdf3b7ff2098bf97d8f2d86f746208a1dc2bd5871dfdc413d6b167b5"}, ] [package.dependencies] @@ -63,14 +63,14 @@ files = [ [[package]] name = "altair" -version = "4.2.0" +version = "4.2.2" description = "Altair: A declarative statistical visualization library for Python." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "altair-4.2.0-py3-none-any.whl", hash = "sha256:0c724848ae53410c13fa28be2b3b9a9dcb7b5caa1a70f7f217bd663bb419935a"}, - {file = "altair-4.2.0.tar.gz", hash = "sha256:d87d9372e63b48cd96b2a6415f0cf9457f50162ab79dc7a31cd7e024dd840026"}, + {file = "altair-4.2.2-py3-none-any.whl", hash = "sha256:8b45ebeaf8557f2d760c5c77b79f02ae12aee7c46c27c06014febab6f849bc87"}, + {file = "altair-4.2.2.tar.gz", hash = "sha256:39399a267c49b30d102c10411e67ab26374156a84b1aeb9fcd15140429ba49c5"}, ] [package.dependencies] @@ -304,14 +304,14 @@ typecheck = ["mypy"] [[package]] name = "beautifulsoup4" -version = "4.11.1" +version = "4.11.2" description = "Screen-scraping library" category = "main" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, - {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, + {file = "beautifulsoup4-4.11.2-py3-none-any.whl", hash = "sha256:0e79446b10b3ecb499c1556f7e228a53e64a2bfcebd455f370d8927cb5b59e39"}, + {file = "beautifulsoup4-4.11.2.tar.gz", hash = "sha256:bc4bdda6717de5a2987436fb8d72f45dc90dd856bdfd512a1314ce90349a0106"}, ] [package.dependencies] @@ -375,18 +375,18 @@ tornado = ">=4.3" [[package]] name = "boto3" -version = "1.26.41" +version = "1.26.67" description = "The AWS SDK for Python" category = "main" optional = false python-versions = ">= 3.7" files = [ - {file = "boto3-1.26.41-py3-none-any.whl", hash = "sha256:05a5ce3af2d7419e39d93498c7f56fd5c2cc17870c92c4abc75659553b0b16de"}, - {file = "boto3-1.26.41.tar.gz", hash = "sha256:8cbea352f28ec6b241f348356bcb8f331fc433bec3ad76ebf6194227f1a7f613"}, + {file = "boto3-1.26.67-py3-none-any.whl", hash = "sha256:159ab54ab301a213aea0dbebfe97c12909fd9180110a2b78aaa712c2d7d1a929"}, + {file = "boto3-1.26.67.tar.gz", hash = "sha256:c2e21ac64370fee1f3dccd97b4767e89d046c45c00faec27c36405618e34c7e5"}, ] [package.dependencies] -botocore = ">=1.29.41,<1.30.0" +botocore = ">=1.29.67,<1.30.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -395,14 +395,14 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.29.41" +version = "1.29.67" description = "Low-level, data-driven core of boto 3." category = "main" optional = false python-versions = ">= 3.7" files = [ - {file = "botocore-1.29.41-py3-none-any.whl", hash = "sha256:b670b7f8958a2908167081efb6ea39794bf61d618be729984629a63d85cf8bfe"}, - {file = "botocore-1.29.41.tar.gz", hash = "sha256:78761227d986d393956b6d08fdadcfe142748828e0e9db33f2f4c42a482dcd35"}, + {file = "botocore-1.29.67-py3-none-any.whl", hash = "sha256:424c5fa21913d85ea990928acf35622a4f2b7f0750133b96adaa8c642bb6a878"}, + {file = "botocore-1.29.67.tar.gz", hash = "sha256:0ccec4a906b6b8c7bb6bc5226509059ee9ed94d3cf1014487ef5b8e56801e6a3"}, ] [package.dependencies] @@ -411,7 +411,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = ">=1.25.4,<1.27" [package.extras] -crt = ["awscrt (==0.15.3)"] +crt = ["awscrt (==0.16.9)"] [[package]] name = "cached-property" @@ -427,14 +427,14 @@ files = [ [[package]] name = "cachetools" -version = "5.2.0" +version = "5.3.0" description = "Extensible memoizing collections and decorators" category = "main" optional = false python-versions = "~=3.7" files = [ - {file = "cachetools-5.2.0-py3-none-any.whl", hash = "sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db"}, - {file = "cachetools-5.2.0.tar.gz", hash = "sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757"}, + {file = "cachetools-5.3.0-py3-none-any.whl", hash = "sha256:429e1a1e845c008ea6c85aa35d4b98b65d6a9763eeef3e37e92728a12d1de9d4"}, + {file = "cachetools-5.3.0.tar.gz", hash = "sha256:13dfddc7b8df938c21a940dfa6557ce6e94a2f1cdfa58eb90c805721d58f2c14"}, ] [[package]] @@ -668,63 +668,63 @@ testing = ["pytest (>=4.6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=1.2. [[package]] name = "coverage" -version = "7.0.1" +version = "7.1.0" description = "Code coverage measurement for Python" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "coverage-7.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b3695c4f4750bca943b3e1f74ad4be8d29e4aeab927d50772c41359107bd5d5c"}, - {file = "coverage-7.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa6a5a224b7f4cfb226f4fc55a57e8537fcc096f42219128c2c74c0e7d0953e1"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74f70cd92669394eaf8d7756d1b195c8032cf7bbbdfce3bc489d4e15b3b8cf73"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b66bb21a23680dee0be66557dc6b02a3152ddb55edf9f6723fa4a93368f7158d"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d87717959d4d0ee9db08a0f1d80d21eb585aafe30f9b0a54ecf779a69cb015f6"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:854f22fa361d1ff914c7efa347398374cc7d567bdafa48ac3aa22334650dfba2"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1e414dc32ee5c3f36544ea466b6f52f28a7af788653744b8570d0bf12ff34bc0"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6c5ad996c6fa4d8ed669cfa1e8551348729d008a2caf81489ab9ea67cfbc7498"}, - {file = "coverage-7.0.1-cp310-cp310-win32.whl", hash = "sha256:691571f31ace1837838b7e421d3a09a8c00b4aac32efacb4fc9bd0a5c647d25a"}, - {file = "coverage-7.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:89caf4425fe88889e2973a8e9a3f6f5f9bbe5dd411d7d521e86428c08a873a4a"}, - {file = "coverage-7.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:63d56165a7c76265468d7e0c5548215a5ba515fc2cba5232d17df97bffa10f6c"}, - {file = "coverage-7.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f943a3b2bc520102dd3e0bb465e1286e12c9a54f58accd71b9e65324d9c7c01"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:830525361249dc4cd013652b0efad645a385707a5ae49350c894b67d23fbb07c"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd1b9c5adc066db699ccf7fa839189a649afcdd9e02cb5dc9d24e67e7922737d"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00c14720b8b3b6c23b487e70bd406abafc976ddc50490f645166f111c419c39"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6d55d840e1b8c0002fce66443e124e8581f30f9ead2e54fbf6709fb593181f2c"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:66b18c3cf8bbab0cce0d7b9e4262dc830e93588986865a8c78ab2ae324b3ed56"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:12a5aa77783d49e05439fbe6e6b427484f8a0f9f456b46a51d8aac022cfd024d"}, - {file = "coverage-7.0.1-cp311-cp311-win32.whl", hash = "sha256:b77015d1cb8fe941be1222a5a8b4e3fbca88180cfa7e2d4a4e58aeabadef0ab7"}, - {file = "coverage-7.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb992c47cb1e5bd6a01e97182400bcc2ba2077080a17fcd7be23aaa6e572e390"}, - {file = "coverage-7.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e78e9dcbf4f3853d3ae18a8f9272111242531535ec9e1009fa8ec4a2b74557dc"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60bef2e2416f15fdc05772bf87db06c6a6f9870d1db08fdd019fbec98ae24a9"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9823e4789ab70f3ec88724bba1a203f2856331986cd893dedbe3e23a6cfc1e4e"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9158f8fb06747ac17bd237930c4372336edc85b6e13bdc778e60f9d685c3ca37"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:486ee81fa694b4b796fc5617e376326a088f7b9729c74d9defa211813f3861e4"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1285648428a6101b5f41a18991c84f1c3959cee359e51b8375c5882fc364a13f"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2c44fcfb3781b41409d0f060a4ed748537557de9362a8a9282182fafb7a76ab4"}, - {file = "coverage-7.0.1-cp37-cp37m-win32.whl", hash = "sha256:d6814854c02cbcd9c873c0f3286a02e3ac1250625cca822ca6bc1018c5b19f1c"}, - {file = "coverage-7.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f66460f17c9319ea4f91c165d46840314f0a7c004720b20be58594d162a441d8"}, - {file = "coverage-7.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b373c9345c584bb4b5f5b8840df7f4ab48c4cbb7934b58d52c57020d911b856"}, - {file = "coverage-7.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d3022c3007d3267a880b5adcf18c2a9bf1fc64469b394a804886b401959b8742"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92651580bd46519067e36493acb394ea0607b55b45bd81dd4e26379ed1871f55"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cfc595d2af13856505631be072835c59f1acf30028d1c860b435c5fc9c15b69"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b4b3a4d9915b2be879aff6299c0a6129f3d08a775d5a061f503cf79571f73e4"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b6f22bb64cc39bcb883e5910f99a27b200fdc14cdd79df8696fa96b0005c9444"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72d1507f152abacea81f65fee38e4ef3ac3c02ff8bc16f21d935fd3a8a4ad910"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0a79137fc99815fff6a852c233628e735ec15903cfd16da0f229d9c4d45926ab"}, - {file = "coverage-7.0.1-cp38-cp38-win32.whl", hash = "sha256:b3763e7fcade2ff6c8e62340af9277f54336920489ceb6a8cd6cc96da52fcc62"}, - {file = "coverage-7.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:09f6b5a8415b6b3e136d5fec62b552972187265cb705097bf030eb9d4ffb9b60"}, - {file = "coverage-7.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:978258fec36c154b5e250d356c59af7d4c3ba02bef4b99cda90b6029441d797d"}, - {file = "coverage-7.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:19ec666533f0f70a0993f88b8273057b96c07b9d26457b41863ccd021a043b9a"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfded268092a84605f1cc19e5c737f9ce630a8900a3589e9289622db161967e9"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07bcfb1d8ac94af886b54e18a88b393f6a73d5959bb31e46644a02453c36e475"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b4a923cc7566bbc7ae2dfd0ba5a039b61d19c740f1373791f2ebd11caea59"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aec2d1515d9d39ff270059fd3afbb3b44e6ec5758af73caf18991807138c7118"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c20cfebcc149a4c212f6491a5f9ff56f41829cd4f607b5be71bb2d530ef243b1"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fd556ff16a57a070ce4f31c635953cc44e25244f91a0378c6e9bdfd40fdb249f"}, - {file = "coverage-7.0.1-cp39-cp39-win32.whl", hash = "sha256:b9ea158775c7c2d3e54530a92da79496fb3fb577c876eec761c23e028f1e216c"}, - {file = "coverage-7.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:d1991f1dd95eba69d2cd7708ff6c2bbd2426160ffc73c2b81f617a053ebcb1a8"}, - {file = "coverage-7.0.1-pp37.pp38.pp39-none-any.whl", hash = "sha256:3dd4ee135e08037f458425b8842d24a95a0961831a33f89685ff86b77d378f89"}, - {file = "coverage-7.0.1.tar.gz", hash = "sha256:a4a574a19eeb67575a5328a5760bbbb737faa685616586a9f9da4281f940109c"}, + {file = "coverage-7.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3b946bbcd5a8231383450b195cfb58cb01cbe7f8949f5758566b881df4b33baf"}, + {file = "coverage-7.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec8e767f13be637d056f7e07e61d089e555f719b387a7070154ad80a0ff31801"}, + {file = "coverage-7.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4a5a5879a939cb84959d86869132b00176197ca561c664fc21478c1eee60d75"}, + {file = "coverage-7.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b643cb30821e7570c0aaf54feaf0bfb630b79059f85741843e9dc23f33aaca2c"}, + {file = "coverage-7.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32df215215f3af2c1617a55dbdfb403b772d463d54d219985ac7cd3bf124cada"}, + {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:33d1ae9d4079e05ac4cc1ef9e20c648f5afabf1a92adfaf2ccf509c50b85717f"}, + {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:29571503c37f2ef2138a306d23e7270687c0efb9cab4bd8038d609b5c2393a3a"}, + {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:63ffd21aa133ff48c4dff7adcc46b7ec8b565491bfc371212122dd999812ea1c"}, + {file = "coverage-7.1.0-cp310-cp310-win32.whl", hash = "sha256:4b14d5e09c656de5038a3f9bfe5228f53439282abcab87317c9f7f1acb280352"}, + {file = "coverage-7.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:8361be1c2c073919500b6601220a6f2f98ea0b6d2fec5014c1d9cfa23dd07038"}, + {file = "coverage-7.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:da9b41d4539eefd408c46725fb76ecba3a50a3367cafb7dea5f250d0653c1040"}, + {file = "coverage-7.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5b15ed7644ae4bee0ecf74fee95808dcc34ba6ace87e8dfbf5cb0dc20eab45a"}, + {file = "coverage-7.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d12d076582507ea460ea2a89a8c85cb558f83406c8a41dd641d7be9a32e1274f"}, + {file = "coverage-7.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2617759031dae1bf183c16cef8fcfb3de7617f394c813fa5e8e46e9b82d4222"}, + {file = "coverage-7.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4e4881fa9e9667afcc742f0c244d9364d197490fbc91d12ac3b5de0bf2df146"}, + {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9d58885215094ab4a86a6aef044e42994a2bd76a446dc59b352622655ba6621b"}, + {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ffeeb38ee4a80a30a6877c5c4c359e5498eec095878f1581453202bfacc8fbc2"}, + {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3baf5f126f30781b5e93dbefcc8271cb2491647f8283f20ac54d12161dff080e"}, + {file = "coverage-7.1.0-cp311-cp311-win32.whl", hash = "sha256:ded59300d6330be27bc6cf0b74b89ada58069ced87c48eaf9344e5e84b0072f7"}, + {file = "coverage-7.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:6a43c7823cd7427b4ed763aa7fb63901ca8288591323b58c9cd6ec31ad910f3c"}, + {file = "coverage-7.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a726d742816cb3a8973c8c9a97539c734b3a309345236cd533c4883dda05b8d"}, + {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc7c85a150501286f8b56bd8ed3aa4093f4b88fb68c0843d21ff9656f0009d6a"}, + {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5b4198d85a3755d27e64c52f8c95d6333119e49fd001ae5798dac872c95e0f8"}, + {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddb726cb861c3117a553f940372a495fe1078249ff5f8a5478c0576c7be12050"}, + {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:51b236e764840a6df0661b67e50697aaa0e7d4124ca95e5058fa3d7cbc240b7c"}, + {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7ee5c9bb51695f80878faaa5598040dd6c9e172ddcf490382e8aedb8ec3fec8d"}, + {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c31b75ae466c053a98bf26843563b3b3517b8f37da4d47b1c582fdc703112bc3"}, + {file = "coverage-7.1.0-cp37-cp37m-win32.whl", hash = "sha256:3b155caf3760408d1cb903b21e6a97ad4e2bdad43cbc265e3ce0afb8e0057e73"}, + {file = "coverage-7.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2a60d6513781e87047c3e630b33b4d1e89f39836dac6e069ffee28c4786715f5"}, + {file = "coverage-7.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2cba5c6db29ce991029b5e4ac51eb36774458f0a3b8d3137241b32d1bb91f06"}, + {file = "coverage-7.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beeb129cacea34490ffd4d6153af70509aa3cda20fdda2ea1a2be870dfec8d52"}, + {file = "coverage-7.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c45948f613d5d18c9ec5eaa203ce06a653334cf1bd47c783a12d0dd4fd9c851"}, + {file = "coverage-7.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef382417db92ba23dfb5864a3fc9be27ea4894e86620d342a116b243ade5d35d"}, + {file = "coverage-7.1.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c7c0d0827e853315c9bbd43c1162c006dd808dbbe297db7ae66cd17b07830f0"}, + {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e5cdbb5cafcedea04924568d990e20ce7f1945a1dd54b560f879ee2d57226912"}, + {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9817733f0d3ea91bea80de0f79ef971ae94f81ca52f9b66500c6a2fea8e4b4f8"}, + {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:218fe982371ac7387304153ecd51205f14e9d731b34fb0568181abaf7b443ba0"}, + {file = "coverage-7.1.0-cp38-cp38-win32.whl", hash = "sha256:04481245ef966fbd24ae9b9e537ce899ae584d521dfbe78f89cad003c38ca2ab"}, + {file = "coverage-7.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8ae125d1134bf236acba8b83e74c603d1b30e207266121e76484562bc816344c"}, + {file = "coverage-7.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2bf1d5f2084c3932b56b962a683074a3692bce7cabd3aa023c987a2a8e7612f6"}, + {file = "coverage-7.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:98b85dd86514d889a2e3dd22ab3c18c9d0019e696478391d86708b805f4ea0fa"}, + {file = "coverage-7.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38da2db80cc505a611938d8624801158e409928b136c8916cd2e203970dde4dc"}, + {file = "coverage-7.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3164d31078fa9efe406e198aecd2a02d32a62fecbdef74f76dad6a46c7e48311"}, + {file = "coverage-7.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db61a79c07331e88b9a9974815c075fbd812bc9dbc4dc44b366b5368a2936063"}, + {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ccb092c9ede70b2517a57382a601619d20981f56f440eae7e4d7eaafd1d1d09"}, + {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:33ff26d0f6cc3ca8de13d14fde1ff8efe1456b53e3f0273e63cc8b3c84a063d8"}, + {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d47dd659a4ee952e90dc56c97d78132573dc5c7b09d61b416a9deef4ebe01a0c"}, + {file = "coverage-7.1.0-cp39-cp39-win32.whl", hash = "sha256:d248cd4a92065a4d4543b8331660121b31c4148dd00a691bfb7a5cdc7483cfa4"}, + {file = "coverage-7.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:7ed681b0f8e8bcbbffa58ba26fcf5dbc8f79e7997595bf071ed5430d8c08d6f3"}, + {file = "coverage-7.1.0-pp37.pp38.pp39-none-any.whl", hash = "sha256:755e89e32376c850f826c425ece2c35a4fc266c081490eb0a841e7c1cb0d3bda"}, + {file = "coverage-7.1.0.tar.gz", hash = "sha256:10188fe543560ec4874f974b5305cd1a8bdcfa885ee00ea3a03733464c4ca265"}, ] [package.extras] @@ -831,52 +831,52 @@ files = [ [[package]] name = "cython" -version = "0.29.32" +version = "0.29.33" description = "The Cython compiler for writing C extensions for the Python language." category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ - {file = "Cython-0.29.32-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:39afb4679b8c6bf7ccb15b24025568f4f9b4d7f9bf3cbd981021f542acecd75b"}, - {file = "Cython-0.29.32-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:dbee03b8d42dca924e6aa057b836a064c769ddfd2a4c2919e65da2c8a362d528"}, - {file = "Cython-0.29.32-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ba622326f2862f9c1f99ca8d47ade49871241920a352c917e16861e25b0e5c3"}, - {file = "Cython-0.29.32-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e6ffa08aa1c111a1ebcbd1cf4afaaec120bc0bbdec3f2545f8bb7d3e8e77a1cd"}, - {file = "Cython-0.29.32-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:97335b2cd4acebf30d14e2855d882de83ad838491a09be2011745579ac975833"}, - {file = "Cython-0.29.32-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:06be83490c906b6429b4389e13487a26254ccaad2eef6f3d4ee21d8d3a4aaa2b"}, - {file = "Cython-0.29.32-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:eefd2b9a5f38ded8d859fe96cc28d7d06e098dc3f677e7adbafda4dcdd4a461c"}, - {file = "Cython-0.29.32-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5514f3b4122cb22317122a48e175a7194e18e1803ca555c4c959d7dfe68eaf98"}, - {file = "Cython-0.29.32-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:656dc5ff1d269de4d11ee8542f2ffd15ab466c447c1f10e5b8aba6f561967276"}, - {file = "Cython-0.29.32-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:cdf10af3e2e3279dc09fdc5f95deaa624850a53913f30350ceee824dc14fc1a6"}, - {file = "Cython-0.29.32-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:3875c2b2ea752816a4d7ae59d45bb546e7c4c79093c83e3ba7f4d9051dd02928"}, - {file = "Cython-0.29.32-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:79e3bab19cf1b021b613567c22eb18b76c0c547b9bc3903881a07bfd9e7e64cf"}, - {file = "Cython-0.29.32-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0595aee62809ba353cebc5c7978e0e443760c3e882e2c7672c73ffe46383673"}, - {file = "Cython-0.29.32-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0ea8267fc373a2c5064ad77d8ff7bf0ea8b88f7407098ff51829381f8ec1d5d9"}, - {file = "Cython-0.29.32-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:c8e8025f496b5acb6ba95da2fb3e9dacffc97d9a92711aacfdd42f9c5927e094"}, - {file = "Cython-0.29.32-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:afbce249133a830f121b917f8c9404a44f2950e0e4f5d1e68f043da4c2e9f457"}, - {file = "Cython-0.29.32-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:513e9707407608ac0d306c8b09d55a28be23ea4152cbd356ceaec0f32ef08d65"}, - {file = "Cython-0.29.32-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e83228e0994497900af954adcac27f64c9a57cd70a9ec768ab0cb2c01fd15cf1"}, - {file = "Cython-0.29.32-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ea1dcc07bfb37367b639415333cfbfe4a93c3be340edf1db10964bc27d42ed64"}, - {file = "Cython-0.29.32-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8669cadeb26d9a58a5e6b8ce34d2c8986cc3b5c0bfa77eda6ceb471596cb2ec3"}, - {file = "Cython-0.29.32-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:ed087eeb88a8cf96c60fb76c5c3b5fb87188adee5e179f89ec9ad9a43c0c54b3"}, - {file = "Cython-0.29.32-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:3f85eb2343d20d91a4ea9cf14e5748092b376a64b7e07fc224e85b2753e9070b"}, - {file = "Cython-0.29.32-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:63b79d9e1f7c4d1f498ab1322156a0d7dc1b6004bf981a8abda3f66800e140cd"}, - {file = "Cython-0.29.32-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e1958e0227a4a6a2c06fd6e35b7469de50adf174102454db397cec6e1403cce3"}, - {file = "Cython-0.29.32-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:856d2fec682b3f31583719cb6925c6cdbb9aa30f03122bcc45c65c8b6f515754"}, - {file = "Cython-0.29.32-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:479690d2892ca56d34812fe6ab8f58e4b2e0129140f3d94518f15993c40553da"}, - {file = "Cython-0.29.32-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:67fdd2f652f8d4840042e2d2d91e15636ba2bcdcd92e7e5ffbc68e6ef633a754"}, - {file = "Cython-0.29.32-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:4a4b03ab483271f69221c3210f7cde0dcc456749ecf8243b95bc7a701e5677e0"}, - {file = "Cython-0.29.32-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:40eff7aa26e91cf108fd740ffd4daf49f39b2fdffadabc7292b4b7dc5df879f0"}, - {file = "Cython-0.29.32-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0bbc27abdf6aebfa1bce34cd92bd403070356f28b0ecb3198ff8a182791d58b9"}, - {file = "Cython-0.29.32-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cddc47ec746a08603037731f5d10aebf770ced08666100bd2cdcaf06a85d4d1b"}, - {file = "Cython-0.29.32-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca3065a1279456e81c615211d025ea11bfe4e19f0c5650b859868ca04b3fcbd"}, - {file = "Cython-0.29.32-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d968ffc403d92addf20b68924d95428d523436adfd25cf505d427ed7ba3bee8b"}, - {file = "Cython-0.29.32-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:f3fd44cc362eee8ae569025f070d56208908916794b6ab21e139cea56470a2b3"}, - {file = "Cython-0.29.32-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:b6da3063c5c476f5311fd76854abae6c315f1513ef7d7904deed2e774623bbb9"}, - {file = "Cython-0.29.32-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:061e25151c38f2361bc790d3bcf7f9d9828a0b6a4d5afa56fbed3bd33fb2373a"}, - {file = "Cython-0.29.32-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f9944013588a3543fca795fffb0a070a31a243aa4f2d212f118aa95e69485831"}, - {file = "Cython-0.29.32-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:07d173d3289415bb496e72cb0ddd609961be08fe2968c39094d5712ffb78672b"}, - {file = "Cython-0.29.32-py2.py3-none-any.whl", hash = "sha256:eeb475eb6f0ccf6c039035eb4f0f928eb53ead88777e0a760eccb140ad90930b"}, - {file = "Cython-0.29.32.tar.gz", hash = "sha256:8733cf4758b79304f2a4e39ebfac5e92341bce47bcceb26c1254398b2f8c1af7"}, + {file = "Cython-0.29.33-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:286cdfb193e23799e113b7bd5ac74f58da5e9a77c70e3b645b078836b896b165"}, + {file = "Cython-0.29.33-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8507279a4f86ed8365b96603d5ad155888d4d01b72a9bbf0615880feda5a11d4"}, + {file = "Cython-0.29.33-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5bf5ffd96957a595441cca2fc78470d93fdc40dfe5449881b812ea6045d7e9be"}, + {file = "Cython-0.29.33-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2019a7e54ba8b253f44411863b8f8c0b6cd623f7a92dc0ccb83892358c4283a"}, + {file = "Cython-0.29.33-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:190e60b7505d3b9b60130bcc2251c01b9ef52603420829c19d3c3ede4ac2763a"}, + {file = "Cython-0.29.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0168482495b75fea1c97a9641a95bac991f313e85f378003f9a4909fdeb3d454"}, + {file = "Cython-0.29.33-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:090556e41f2b30427dd3a1628d3613177083f47567a30148b6b7b8c7a5862187"}, + {file = "Cython-0.29.33-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:19c9913e9304bf97f1d2c357438895466f99aa2707d3c7a5e9de60c259e1ca1d"}, + {file = "Cython-0.29.33-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:afc9b6ab20889676c76e700ae6967aa6886a7efe5b05ef6d5b744a6ca793cc43"}, + {file = "Cython-0.29.33-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:49fb45b2bf12d6e2060bbd64506c06ac90e254f3a4bceb32c717f4964a1ae812"}, + {file = "Cython-0.29.33-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:5430f38d3d01c4715ec2aef5c41e02a2441c1c3a0149359c7a498e4c605b8e6c"}, + {file = "Cython-0.29.33-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c4d315443c7f4c61180b6c3ea9a9717ee7c901cc9db8d1d46fdf6556613840ed"}, + {file = "Cython-0.29.33-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6b4e6481e3e7e4d345640fe2fdc6dc57c94369b467f3dc280949daa8e9fd13b9"}, + {file = "Cython-0.29.33-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:060a2568ef80116a0a9dcaf3218a61c6007be0e0b77c5752c094ce5187a4d63c"}, + {file = "Cython-0.29.33-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:b67ddd32eaa2932a66bf8121accc36a7b3078593805519b0f00040f2b10a6a52"}, + {file = "Cython-0.29.33-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:1b507236ba3ca94170ce0a504dd03acf77307d4bfbc5a010a8031673f6b213a9"}, + {file = "Cython-0.29.33-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:581efc0622a9be05714222f2b4ac96a5419de58d5949517282d8df38155c8b9d"}, + {file = "Cython-0.29.33-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6b8bcbf8f1c3c46d6184be1e559e3a3fb8cdf27c6d507d8bc8ae04cfcbfd75f5"}, + {file = "Cython-0.29.33-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1ca93bbe584aee92094fd4fb6acc5cb6500acf98d4f57cc59244f0a598b0fcf6"}, + {file = "Cython-0.29.33-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:da490129e1e4ffaf3f88bfb46d338549a2150f60f809a63d385b83e00960d11a"}, + {file = "Cython-0.29.33-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4cadf5250eda0c5cdaf4c3a29b52be3e0695f4a2bf1ccd49b638d239752ea513"}, + {file = "Cython-0.29.33-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:bcb1a84fd2bd7885d572adc180e24fd8a7d4b0c104c144e33ccf84a1ab4eb2b8"}, + {file = "Cython-0.29.33-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:d78147ad8a3417ae6b371bbc5bfc6512f6ad4ad3fb71f5eef42e136e4ed14970"}, + {file = "Cython-0.29.33-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dd96b06b93c0e5fa4fc526c5be37c13a93e2fe7c372b5f358277ebe9e1620957"}, + {file = "Cython-0.29.33-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:959f0092d58e7fa00fd3434f7ff32fb78be7c2fa9f8e0096326343159477fe45"}, + {file = "Cython-0.29.33-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0455d5b92f461218bcf173a149a88b7396c3a109066274ccab5eff58db0eae32"}, + {file = "Cython-0.29.33-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:a9b0b890656e9d18a18e1efe26ea3d2d0f3e525a07a2a853592b0afc56a15c89"}, + {file = "Cython-0.29.33-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:b5e8ce3039ff64000d58cd45b3f6f83e13f032dde7f27bb1ab96070d9213550b"}, + {file = "Cython-0.29.33-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:e8922fa3d7e76b7186bbd0810e170ca61f83661ab1b29dc75e88ff2327aaf49d"}, + {file = "Cython-0.29.33-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f67b7306fd00d55f271009335cecadc506d144205c7891070aad889928d85750"}, + {file = "Cython-0.29.33-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f271f90005064c49b47a93f456dc6cf0a21d21ef835bd33ac1e0db10ad51f84f"}, + {file = "Cython-0.29.33-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d4457d417ffbb94abc42adcd63a03b24ff39cf090f3e9eca5e10cfb90766cbe3"}, + {file = "Cython-0.29.33-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:0b53e017522feb8dcc2189cf1d2d344bab473c5bba5234390b5666d822992c7c"}, + {file = "Cython-0.29.33-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:4f88c2dc0653eef6468848eb8022faf64115b39734f750a1c01a7ba7eb04d89f"}, + {file = "Cython-0.29.33-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:1900d862a4a537d2125706740e9f3b016e80f7bbf7b54db6b3cc3d0bdf0f5c3a"}, + {file = "Cython-0.29.33-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:37bfca4f9f26361343d8c678f8178321e4ae5b919523eed05d2cd8ddbe6b06ec"}, + {file = "Cython-0.29.33-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a9863f8238642c0b1ef8069d99da5ade03bfe2225a64b00c5ae006d95f142a73"}, + {file = "Cython-0.29.33-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1dd503408924723b0bb10c0013b76e324eeee42db6deced9b02b648f1415d94c"}, + {file = "Cython-0.29.33-py2.py3-none-any.whl", hash = "sha256:8b99252bde8ff51cd06a3fe4aeacd3af9b4ff4a4e6b701ac71bddc54f5da61d6"}, + {file = "Cython-0.29.33.tar.gz", hash = "sha256:5040764c4a4d2ce964a395da24f0d1ae58144995dab92c6b96f44c3f4d72286a"}, ] [[package]] @@ -989,34 +989,35 @@ graph = ["objgraph (>=1.7.2)"] [[package]] name = "dnspython" -version = "2.2.1" +version = "2.3.0" description = "DNS toolkit" category = "main" optional = false -python-versions = ">=3.6,<4.0" +python-versions = ">=3.7,<4.0" files = [ - {file = "dnspython-2.2.1-py3-none-any.whl", hash = "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f"}, - {file = "dnspython-2.2.1.tar.gz", hash = "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e"}, + {file = "dnspython-2.3.0-py3-none-any.whl", hash = "sha256:89141536394f909066cabd112e3e1a37e4e654db00a25308b0f130bc3152eb46"}, + {file = "dnspython-2.3.0.tar.gz", hash = "sha256:224e32b03eb46be70e12ef6d64e0be123a64e621ab4c0822ff6d450d52a540b9"}, ] [package.extras] curio = ["curio (>=1.2,<2.0)", "sniffio (>=1.1,<2.0)"] -dnssec = ["cryptography (>=2.6,<37.0)"] -doh = ["h2 (>=4.1.0)", "httpx (>=0.21.1)", "requests (>=2.23.0,<3.0.0)", "requests-toolbelt (>=0.9.1,<0.10.0)"] +dnssec = ["cryptography (>=2.6,<40.0)"] +doh = ["h2 (>=4.1.0)", "httpx (>=0.21.1)", "requests (>=2.23.0,<3.0.0)", "requests-toolbelt (>=0.9.1,<0.11.0)"] +doq = ["aioquic (>=0.9.20)"] idna = ["idna (>=2.1,<4.0)"] -trio = ["trio (>=0.14,<0.20)"] +trio = ["trio (>=0.14,<0.23)"] wmi = ["wmi (>=1.5.1,<2.0.0)"] [[package]] name = "docutils" -version = "0.17.1" +version = "0.18.1" description = "Docutils -- Python Documentation Utilities" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, - {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, + {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, + {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, ] [[package]] @@ -1066,14 +1067,14 @@ gmpy2 = ["gmpy2"] [[package]] name = "email-validator" -version = "1.3.0" +version = "1.3.1" description = "A robust email address syntax and deliverability validation library." category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.5" files = [ - {file = "email_validator-1.3.0-py2.py3-none-any.whl", hash = "sha256:816073f2a7cffef786b29928f58ec16cdac42710a53bb18aa94317e3e145ec5c"}, - {file = "email_validator-1.3.0.tar.gz", hash = "sha256:553a66f8be2ec2dea641ae1d3f29017ab89e9d603d4a25cdaac39eefa283d769"}, + {file = "email_validator-1.3.1-py2.py3-none-any.whl", hash = "sha256:49a72f5fa6ed26be1c964f0567d931d10bf3fdeeacdf97bc26ef1cd2a44e0bda"}, + {file = "email_validator-1.3.1.tar.gz", hash = "sha256:d178c5c6fa6c6824e9b04f199cf23e79ac15756786573c190d2ad13089411ad2"}, ] [package.dependencies] @@ -1200,14 +1201,14 @@ pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "formio-data" -version = "0.4.7" +version = "0.4.10" description = "formio.js JSON-data API" category = "main" optional = false python-versions = ">=3.6,<4.0" files = [ - {file = "formio-data-0.4.7.tar.gz", hash = "sha256:4c1a6bd9d0f8fb5b31e0b8be8bc1049c4db7597f3b293da653216d56c0a49ff1"}, - {file = "formio_data-0.4.7-py3-none-any.whl", hash = "sha256:b77a27c71008a6c63549c5ffa7cbd03ae864d4ea076373f7a3185ba19688d658"}, + {file = "formio-data-0.4.10.tar.gz", hash = "sha256:033453abb44b0bf7bfdb3c2aff9dc026e7e54353258941e0bb0ac5b729ec8bdd"}, + {file = "formio_data-0.4.10-py3-none-any.whl", hash = "sha256:523372481f8bd5cc6d1e1bd958b4c788b63b67891dec896fb077f7a03ad897f1"}, ] [package.dependencies] @@ -1559,19 +1560,19 @@ six = "*" [[package]] name = "isort" -version = "5.11.4" +version = "5.11.5" description = "A Python utility / library to sort Python imports." category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "isort-5.11.4-py3-none-any.whl", hash = "sha256:c033fd0edb91000a7f09527fe5c75321878f98322a77ddcc81adbd83724afb7b"}, - {file = "isort-5.11.4.tar.gz", hash = "sha256:6db30c5ded9815d813932c04c2f85a360bcdd35fed496f4d8f35495ef0a261b6"}, + {file = "isort-5.11.5-py3-none-any.whl", hash = "sha256:ba1d72fb2595a01c7895a5128f9585a5cc4b6d395f1c8d514989b9a7eb2a8746"}, + {file = "isort-5.11.5.tar.gz", hash = "sha256:6be1f76a507cb2ecf16c7cf14a37e41609ca082330be4e3436a18ef74add55db"}, ] [package.extras] colors = ["colorama (>=0.4.3,<0.5.0)"] -pipfile-deprecated-finder = ["pipreqs", "requirementslib"] +pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] plugins = ["setuptools"] requirements-deprecated-finder = ["pip-api", "pipreqs"] @@ -2525,14 +2526,14 @@ files = [ [[package]] name = "openpyxl" -version = "3.0.10" +version = "3.1.0" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "openpyxl-3.0.10-py2.py3-none-any.whl", hash = "sha256:0ab6d25d01799f97a9464630abacbb34aafecdcaa0ef3cba6d6b3499867d0355"}, - {file = "openpyxl-3.0.10.tar.gz", hash = "sha256:e47805627aebcf860edb4edf7987b1309c1b3632f3750538ed962bbcc3bd7449"}, + {file = "openpyxl-3.1.0-py2.py3-none-any.whl", hash = "sha256:24d7d361025d186ba91eff58135d50855cf035a84371b891e58fb6eb5125660f"}, + {file = "openpyxl-3.1.0.tar.gz", hash = "sha256:eccedbe1cdd8b2494057e73959b496821141038dbb7eb9266ea59e3f34208231"}, ] [package.dependencies] @@ -2540,14 +2541,14 @@ et-xmlfile = "*" [[package]] name = "openupgradelib" -version = "3.4.0" +version = "3.4.1" description = "A library with support functions to be called from Odoo migration scripts." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "openupgradelib-3.4.0-py2.py3-none-any.whl", hash = "sha256:80c5ff62ff1b2387ded75d45b6480498b30daadfc20ed632b253bac12b6507ae"}, - {file = "openupgradelib-3.4.0.tar.gz", hash = "sha256:8acbde00cc951e2a0cda1aeb56eca0f48272a179cf6de5bbfe2ebb5051b695be"}, + {file = "openupgradelib-3.4.1-py2.py3-none-any.whl", hash = "sha256:d0dffe2ac44cc1210b6cd0c1111b763d25790f3a6c0ac04c06d663f9cfab0876"}, + {file = "openupgradelib-3.4.1.tar.gz", hash = "sha256:3c26936898c1a494a274d5dae4734f6d0e3064ca04dc54ceb8233d70d4e1b3c1"}, ] [package.dependencies] @@ -2793,27 +2794,25 @@ test = ["hypothesis (>=3.58)", "pytest (>=6.0)", "pytest-xdist"] [[package]] name = "paramiko" -version = "2.12.0" +version = "3.0.0" description = "SSH2 protocol library" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "paramiko-2.12.0-py2.py3-none-any.whl", hash = "sha256:b2df1a6325f6996ef55a8789d0462f5b502ea83b3c990cbb5bbe57345c6812c4"}, - {file = "paramiko-2.12.0.tar.gz", hash = "sha256:376885c05c5d6aa6e1f4608aac2a6b5b0548b1add40274477324605903d9cd49"}, + {file = "paramiko-3.0.0-py3-none-any.whl", hash = "sha256:6bef55b882c9d130f8015b9a26f4bd93f710e90fe7478b9dcc810304e79b3cd8"}, + {file = "paramiko-3.0.0.tar.gz", hash = "sha256:fedc9b1dd43bc1d45f67f1ceca10bc336605427a46dcdf8dec6bfea3edf57965"}, ] [package.dependencies] -bcrypt = ">=3.1.3" -cryptography = ">=2.5" -pynacl = ">=1.0.1" -six = "*" +bcrypt = ">=3.2" +cryptography = ">=3.3" +pynacl = ">=1.5" [package.extras] -all = ["bcrypt (>=3.1.3)", "gssapi (>=1.4.1)", "invoke (>=1.3)", "pyasn1 (>=0.1.7)", "pynacl (>=1.0.1)", "pywin32 (>=2.1.8)"] -ed25519 = ["bcrypt (>=3.1.3)", "pynacl (>=1.0.1)"] +all = ["gssapi (>=1.4.1)", "invoke (>=2.0)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"] gssapi = ["gssapi (>=1.4.1)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"] -invoke = ["invoke (>=1.3)"] +invoke = ["invoke (>=2.0)"] [[package]] name = "passlib" @@ -2897,14 +2896,14 @@ ptyprocess = ">=0.5" [[package]] name = "phonenumbers" -version = "8.13.3" +version = "8.13.5" description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." category = "main" optional = false python-versions = "*" files = [ - {file = "phonenumbers-8.13.3-py2.py3-none-any.whl", hash = "sha256:14f5a639eb47548595bb2baeff7bb63b32c95a4f79eed4dc7529afa2a65002d1"}, - {file = "phonenumbers-8.13.3.tar.gz", hash = "sha256:7d0c45c154013970b78b86f4188e0e00a8e77d6bebef7c81efdc038db876eeba"}, + {file = "phonenumbers-8.13.5-py2.py3-none-any.whl", hash = "sha256:2e3fd1f3fde226b289489275517c76edf223eafd9f43a2c2c36498a44b73d4b0"}, + {file = "phonenumbers-8.13.5.tar.gz", hash = "sha256:6eb2faf29c19f946baf10f1c977a1f856cab90819fe7735b8e141d5407420c4a"}, ] [[package]] @@ -3377,14 +3376,14 @@ Pygments = ">=2.1.0" [[package]] name = "pygount" -version = "1.5.0" +version = "1.5.1" description = "count source lines of code (SLOC) using pygments" category = "main" optional = false python-versions = ">=3.7,<4" files = [ - {file = "pygount-1.5.0-py3-none-any.whl", hash = "sha256:3f8e638310546245fe1f87891bcebbf89a57dd18c3495b74eb97abfd711cdf6a"}, - {file = "pygount-1.5.0.tar.gz", hash = "sha256:b03b2015465609a3d55b1b5dcd2482d318ee9fff8ffba64ffd352a4bca839727"}, + {file = "pygount-1.5.1-py3-none-any.whl", hash = "sha256:6f5c642809b76cec99d238cdf4bcf9a8e3712247a18f3799ad893171c44a4c5b"}, + {file = "pygount-1.5.1.tar.gz", hash = "sha256:022987889d6b604382d89c66168f5077f9ef2f2c225a8d60883bfed6180dbcfe"}, ] [package.dependencies] @@ -3947,14 +3946,14 @@ pyasn1_modules = ">=0.1.5" [[package]] name = "python-slugify" -version = "7.0.0" +version = "8.0.0" description = "A Python slugify application that also handles Unicode" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "python-slugify-7.0.0.tar.gz", hash = "sha256:7a0f21a39fa6c1c4bf2e5984c9b9ae944483fd10b54804cb0e23a3ccd4954f0b"}, - {file = "python_slugify-7.0.0-py2.py3-none-any.whl", hash = "sha256:003aee64f9fd955d111549f96c4b58a3f40b9319383c70fad6277a4974bbf570"}, + {file = "python-slugify-8.0.0.tar.gz", hash = "sha256:f1da83f3c7ab839b3f84543470cd95bdb5a81f1a0b80fed502f78b7dca256062"}, + {file = "python_slugify-8.0.0-py2.py3-none-any.whl", hash = "sha256:51f217508df20a6c166c7821683384b998560adcf8f19a6c2ca8b460528ccd9c"}, ] [package.dependencies] @@ -4021,14 +4020,14 @@ u2f-server = ["WebOb"] [[package]] name = "pytz" -version = "2022.7" +version = "2022.7.1" description = "World timezone definitions, modern and historical" category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2022.7-py2.py3-none-any.whl", hash = "sha256:93007def75ae22f7cd991c84e02d434876818661f8df9ad5df9e950ff4e52cfd"}, - {file = "pytz-2022.7.tar.gz", hash = "sha256:7ccfae7b4b2c067464a6733c6261673fdb8fd1be905460396b97a073e9fa683a"}, + {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, + {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, ] [[package]] @@ -4563,14 +4562,14 @@ win32 = ["pywin32"] [[package]] name = "sentry-sdk" -version = "1.12.1" +version = "1.15.0" description = "Python client for Sentry (https://sentry.io)" category = "main" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.12.1.tar.gz", hash = "sha256:5bbe4b72de22f9ac1e67f2a4e6efe8fbd595bb59b7b223443f50fe5802a5551c"}, - {file = "sentry_sdk-1.12.1-py2.py3-none-any.whl", hash = "sha256:9f0b960694e2d8bb04db4ba6ac2a645040caef4e762c65937998ff06064f10d6"}, + {file = "sentry-sdk-1.15.0.tar.gz", hash = "sha256:69ecbb2e1ff4db02a06c4f20f6f69cb5dfe3ebfbc06d023e40d77cf78e9c37e7"}, + {file = "sentry_sdk-1.15.0-py2.py3-none-any.whl", hash = "sha256:7ad4d37dd093f4a7cb5ad804c6efe9e8fab8873f7ffc06042dc3f3fd700a93ec"}, ] [package.dependencies] @@ -4588,7 +4587,8 @@ falcon = ["falcon (>=1.4)"] fastapi = ["fastapi (>=0.79.0)"] flask = ["blinker (>=1.1)", "flask (>=0.11)"] httpx = ["httpx (>=0.16.0)"] -opentelemetry = ["opentelemetry-distro (>=0.350b0)"] +huey = ["huey (>=2)"] +opentelemetry = ["opentelemetry-distro (>=0.35b0)"] pure-eval = ["asttokens", "executing", "pure-eval"] pymongo = ["pymongo (>=3.1)"] pyspark = ["pyspark (>=2.4.4)"] @@ -4597,6 +4597,7 @@ rq = ["rq (>=0.6)"] sanic = ["sanic (>=0.8)"] sqlalchemy = ["sqlalchemy (>=1.2)"] starlette = ["starlette (>=0.19.1)"] +starlite = ["starlite (>=1.48)"] tornado = ["tornado (>=5)"] [[package]] @@ -4827,13 +4828,14 @@ test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"] [[package]] name = "sphinx-intl" -version = "2.0.1" +version = "2.1.0" description = "Sphinx utility that make it easy to translate and to apply translation." category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" files = [ - {file = "sphinx-intl-2.0.1.tar.gz", hash = "sha256:b25a6ec169347909e8d983eefe2d8adecb3edc2f27760db79b965c69950638b4"}, + {file = "sphinx-intl-2.1.0.tar.gz", hash = "sha256:9d9849ae42515b39786824e99f1e30db0404c377b01bb022690fc932b0221c02"}, + {file = "sphinx_intl-2.1.0-py3-none-any.whl", hash = "sha256:9798946b995989de691387651d70c3fc191275b587e2e519655541edfd7bbd68"}, ] [package.dependencies] @@ -4843,24 +4845,24 @@ setuptools = "*" sphinx = "*" [package.extras] -test = ["mock", "pytest"] -transifex = ["transifex_client (>=0.11)"] +test = ["mock", "pytest", "six"] [[package]] name = "sphinx-rtd-theme" -version = "1.1.1" +version = "1.2.0" description = "Read the Docs theme for Sphinx" category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "sphinx_rtd_theme-1.1.1-py2.py3-none-any.whl", hash = "sha256:31faa07d3e97c8955637fc3f1423a5ab2c44b74b8cc558a51498c202ce5cbda7"}, - {file = "sphinx_rtd_theme-1.1.1.tar.gz", hash = "sha256:6146c845f1e1947b3c3dd4432c28998a1693ccc742b4f9ad7c63129f0757c103"}, + {file = "sphinx_rtd_theme-1.2.0-py2.py3-none-any.whl", hash = "sha256:f823f7e71890abe0ac6aaa6013361ea2696fc8d3e1fa798f463e82bdb77eeff2"}, + {file = "sphinx_rtd_theme-1.2.0.tar.gz", hash = "sha256:a0d8bd1a2ed52e0b338cbe19c4b2eef3c5e7a048769753dac6a9f059c7b641b8"}, ] [package.dependencies] -docutils = "<0.18" -sphinx = ">=1.6,<6" +docutils = "<0.19" +sphinx = ">=1.6,<7" +sphinxcontrib-jquery = {version = ">=2.0.0,<3.0.0 || >3.0.0", markers = "python_version > \"3\""} [package.extras] dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] @@ -4913,6 +4915,21 @@ files = [ lint = ["docutils-stubs", "flake8", "mypy"] test = ["html5lib", "pytest"] +[[package]] +name = "sphinxcontrib-jquery" +version = "2.0.0" +description = "Extension to include jQuery on newer Sphinx releases" +category = "main" +optional = false +python-versions = ">=2.7" +files = [ + {file = "sphinxcontrib-jquery-2.0.0.tar.gz", hash = "sha256:8fb65f6dba84bf7bcd1aea1f02ab3955ac34611d838bcc95d4983b805b234daa"}, + {file = "sphinxcontrib_jquery-2.0.0-py3-none-any.whl", hash = "sha256:ed47fa425c338ffebe3c37e1cdb56e30eb806116b85f01055b158c7057fdb995"}, +] + +[package.dependencies] +setuptools = "*" + [[package]] name = "sphinxcontrib-jsmath" version = "1.0.1" @@ -4962,78 +4979,81 @@ test = ["pytest"] [[package]] name = "sqlalchemy" -version = "1.4.45" +version = "2.0.2" description = "Database Abstraction Library" category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-1.4.45-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:f1d3fb02a4d0b07d1351a4a52f159e5e7b3045c903468b7e9349ebf0020ffdb9"}, - {file = "SQLAlchemy-1.4.45-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9b7025d46aba946272f6b6b357a22f3787473ef27451f342df1a2a6de23743e3"}, - {file = "SQLAlchemy-1.4.45-cp27-cp27m-win32.whl", hash = "sha256:26b8424b32eeefa4faad21decd7bdd4aade58640b39407bf43e7d0a7c1bc0453"}, - {file = "SQLAlchemy-1.4.45-cp27-cp27m-win_amd64.whl", hash = "sha256:13578d1cda69bc5e76c59fec9180d6db7ceb71c1360a4d7861c37d87ea6ca0b1"}, - {file = "SQLAlchemy-1.4.45-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6cd53b4c756a6f9c6518a3dc9c05a38840f9ae442c91fe1abde50d73651b6922"}, - {file = "SQLAlchemy-1.4.45-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:ca152ffc7f0aa069c95fba46165030267ec5e4bb0107aba45e5e9e86fe4d9363"}, - {file = "SQLAlchemy-1.4.45-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06055476d38ed7915eeed22b78580556d446d175c3574a01b9eb04d91f3a8b2e"}, - {file = "SQLAlchemy-1.4.45-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:081e2a2d75466353c738ca2ee71c0cfb08229b4f9909b5fa085f75c48d021471"}, - {file = "SQLAlchemy-1.4.45-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96821d806c0c90c68ce3f2ce6dd529c10e5d7587961f31dd5c30e3bfddc4545d"}, - {file = "SQLAlchemy-1.4.45-cp310-cp310-win32.whl", hash = "sha256:c8051bff4ce48cbc98f11e95ac46bfd1e36272401070c010248a3230d099663f"}, - {file = "SQLAlchemy-1.4.45-cp310-cp310-win_amd64.whl", hash = "sha256:16ad798fc121cad5ea019eb2297127b08c54e1aa95fe17b3fea9fdbc5c34fe62"}, - {file = "SQLAlchemy-1.4.45-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:099efef0de9fbda4c2d7cb129e4e7f812007901942259d4e6c6e19bd69de1088"}, - {file = "SQLAlchemy-1.4.45-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29a29d02c9e6f6b105580c5ed7afb722b97bc2e2fdb85e1d45d7ddd8440cfbca"}, - {file = "SQLAlchemy-1.4.45-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc10423b59d6d032d6dff0bb42aa06dc6a8824eb6029d70c7d1b6981a2e7f4d8"}, - {file = "SQLAlchemy-1.4.45-cp311-cp311-win32.whl", hash = "sha256:1a92685db3b0682776a5abcb5f9e9addb3d7d9a6d841a452a17ec2d8d457bea7"}, - {file = "SQLAlchemy-1.4.45-cp311-cp311-win_amd64.whl", hash = "sha256:db3ccbce4a861bf4338b254f95916fc68dd8b7aa50eea838ecdaf3a52810e9c0"}, - {file = "SQLAlchemy-1.4.45-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a62ae2ea3b940ce9c9cbd675489c2047921ce0a79f971d3082978be91bd58117"}, - {file = "SQLAlchemy-1.4.45-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a87f8595390764db333a1705591d0934973d132af607f4fa8b792b366eacbb3c"}, - {file = "SQLAlchemy-1.4.45-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9a21c1fb71c69c8ec65430160cd3eee44bbcea15b5a4e556f29d03f246f425ec"}, - {file = "SQLAlchemy-1.4.45-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7944b04e6fcf8d733964dd9ee36b6a587251a1a4049af3a9b846f6e64eb349a"}, - {file = "SQLAlchemy-1.4.45-cp36-cp36m-win32.whl", hash = "sha256:a3bcd5e2049ceb97e8c273e6a84ff4abcfa1dc47b6d8bbd36e07cce7176610d3"}, - {file = "SQLAlchemy-1.4.45-cp36-cp36m-win_amd64.whl", hash = "sha256:5953e225be47d80410ae519f865b5c341f541d8e383fb6d11f67fb71a45bf890"}, - {file = "SQLAlchemy-1.4.45-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:6a91b7883cb7855a27bc0637166eed622fdf1bb94a4d1630165e5dd88c7e64d3"}, - {file = "SQLAlchemy-1.4.45-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d458fd0566bc9e10b8be857f089e96b5ca1b1ef033226f24512f9ffdf485a8c0"}, - {file = "SQLAlchemy-1.4.45-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f4ad3b081c0dbb738886f8d425a5d983328670ee83b38192687d78fc82bd1e"}, - {file = "SQLAlchemy-1.4.45-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd95a3e6ab46da2c5b0703e797a772f3fab44d085b3919a4f27339aa3b1f51d3"}, - {file = "SQLAlchemy-1.4.45-cp37-cp37m-win32.whl", hash = "sha256:715f5859daa3bee6ecbad64501637fa4640ca6734e8cda6135e3898d5f8ccadd"}, - {file = "SQLAlchemy-1.4.45-cp37-cp37m-win_amd64.whl", hash = "sha256:2d1539fbc82d2206380a86d6d7d0453764fdca5d042d78161bbfb8dd047c80ec"}, - {file = "SQLAlchemy-1.4.45-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:01aa76f324c9bbc0dcb2bc3d9e2a9d7ede4808afa1c38d40d5e2007e3163b206"}, - {file = "SQLAlchemy-1.4.45-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:416fe7d228937bd37990b5a429fd00ad0e49eabcea3455af7beed7955f192edd"}, - {file = "SQLAlchemy-1.4.45-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7e32ce2584564d9e068bb7e0ccd1810cbb0a824c0687f8016fe67e97c345a637"}, - {file = "SQLAlchemy-1.4.45-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:561605cfc26273825ed2fb8484428faf36e853c13e4c90c61c58988aeccb34ed"}, - {file = "SQLAlchemy-1.4.45-cp38-cp38-win32.whl", hash = "sha256:55ddb5585129c5d964a537c9e32a8a68a8c6293b747f3fa164e1c034e1657a98"}, - {file = "SQLAlchemy-1.4.45-cp38-cp38-win_amd64.whl", hash = "sha256:445914dcadc0b623bd9851260ee54915ecf4e3041a62d57709b18a0eed19f33b"}, - {file = "SQLAlchemy-1.4.45-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:2db887dbf05bcc3151de1c4b506b14764c6240a42e844b4269132a7584de1e5f"}, - {file = "SQLAlchemy-1.4.45-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52b90c9487e4449ad954624d01dea34c90cd8c104bce46b322c83654f37a23c5"}, - {file = "SQLAlchemy-1.4.45-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f61e54b8c2b389de1a8ad52394729c478c67712dbdcdadb52c2575e41dae94a5"}, - {file = "SQLAlchemy-1.4.45-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e91a5e45a2ea083fe344b3503405978dff14d60ef3aa836432c9ca8cd47806b6"}, - {file = "SQLAlchemy-1.4.45-cp39-cp39-win32.whl", hash = "sha256:0e068b8414d60dd35d43c693555fc3d2e1d822cef07960bb8ca3f1ee6c4ff762"}, - {file = "SQLAlchemy-1.4.45-cp39-cp39-win_amd64.whl", hash = "sha256:2d6f178ff2923730da271c8aa317f70cf0df11a4d1812f1d7a704b1cf29c5fe3"}, - {file = "SQLAlchemy-1.4.45.tar.gz", hash = "sha256:fd69850860093a3f69fefe0ab56d041edfdfe18510b53d9a2eaecba2f15fa795"}, + {file = "SQLAlchemy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d8efcdfe08efd12ee91f5e858adb34a0a73071a95c09c47303a656a9bac3b93b"}, + {file = "SQLAlchemy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ba1ec69fa7abb23c2bc9fcd10b3386ea1f62f9d558b7f3a749988374e6cb6ee5"}, + {file = "SQLAlchemy-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:293c51d60da2ad52fb88d3f2357ff7ac3c156c5cb81feadd8258d45ebeea0a65"}, + {file = "SQLAlchemy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b80ddc3bf6088ce83437cdfb2e32099b82a2819c409c85b782a84aa1143f8eda"}, + {file = "SQLAlchemy-2.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dd3595576c6cdfd91eb1aaa18f542e9db87b5a5f3552573892d37d91102fd951"}, + {file = "SQLAlchemy-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0666025f44119bd18e1c5ceb536422356dc176d3230a13979ab2a7dd5d24b899"}, + {file = "SQLAlchemy-2.0.2-cp310-cp310-win32.whl", hash = "sha256:9e28dc39dd739f48d38486811f5a703673ed11e5968402fff835e60cbf379833"}, + {file = "SQLAlchemy-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:8a3bd94c7d04fed688ba333bfb5a0106800112b9f623aed1e5b0b6466e8c5c66"}, + {file = "SQLAlchemy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7892245a79d612e163d2ce72b1e77c863840f7453e9469f6dd3e6b9ded67739"}, + {file = "SQLAlchemy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f2acafb0ef17d591a13621581b5d1abddb3dd25f601f368173135922915f56cd"}, + {file = "SQLAlchemy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd9326886d424616f6c1b90d99b58c8a99c51f4515c8f8550830f9d4ac04ef3"}, + {file = "SQLAlchemy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1f661cc378d61f495af49d8af83f779bb802046394e63ab1269b4180fceba0"}, + {file = "SQLAlchemy-2.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:55a72010983b655a638ea318b4efa30b04b001c158298ceb47fbf5da296092b0"}, + {file = "SQLAlchemy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f91a4d0815fa9d236380a27762f7bd1304631605b8e2aa75b6b7d03343fd8fe8"}, + {file = "SQLAlchemy-2.0.2-cp311-cp311-win32.whl", hash = "sha256:27e8a5359c6227f3d665b1556169de840b375cf055c800a9bc27ed33f3c51e1b"}, + {file = "SQLAlchemy-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:bfac4cb8585d7c5b06567c754e999410eb12248f8ce2474dc2d9bc53be1fba0c"}, + {file = "SQLAlchemy-2.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ebf6fe4cfd3b79f582b750b7ba69ba779d3fc7498818f8251dc6d38f5d5e206f"}, + {file = "SQLAlchemy-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92dc029273615ffbb40fa0e1cc8190618f1603ad98b1ad59d57078f1feb969b9"}, + {file = "SQLAlchemy-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b79ab1b7f5c39050daa03c100115efa2d8f996f14bc33cc9535cb60ca8357c4"}, + {file = "SQLAlchemy-2.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:fc486297fe7f1465a2baac371d2153643a34ea1af803b68443bc359cfdc2bbcf"}, + {file = "SQLAlchemy-2.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a9d46844f4c88dc6cbfcabc6985beebd34661ef3b0e75c216a6428939fb3669"}, + {file = "SQLAlchemy-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3381fa42e2b388abf448800cf550bbf174eff41f6c57b362077db142417d2922"}, + {file = "SQLAlchemy-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8f3e9b71425af186fa51ab0d6172ef81809eb0e9f89b035612a913f8a9b44e4b"}, + {file = "SQLAlchemy-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:004459a78d376ab9c79ac1b613e0f0d44e88a105e4232357d0c7fa4c7b7e3a49"}, + {file = "SQLAlchemy-2.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:38ab55db6ce10c1ab2424d1dfed0add6e6afdeb1c65cec776ac6a01c1fb2f90a"}, + {file = "SQLAlchemy-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d34374993910d4520681b7b95ea60e05aa18a8ef7d36ffa94bde87730f6426d"}, + {file = "SQLAlchemy-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c6c556e01b0bbaea85ce030af4347e47fcb695c3254cfd480099ec1ed6ea609"}, + {file = "SQLAlchemy-2.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:061c7be6b7042f298187e39528c85b4de233361412c88de9fba62a3ee727eb71"}, + {file = "SQLAlchemy-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:301f5fb0718e000d47db6ebcee64de91fa94865d7b59872258ba36e4eafbfe8f"}, + {file = "SQLAlchemy-2.0.2-cp38-cp38-win32.whl", hash = "sha256:35765bf1ff823d05cf9c4eb18ba2db2290b2a2e2196d1a1d06d714ea55c1b997"}, + {file = "SQLAlchemy-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:9a9205379388e57c486244e285d5d5c047ef9241bd4238e9469a4873b75d1e4a"}, + {file = "SQLAlchemy-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6282a712dbcfd86e3fee2e4c459c7337141f774450f60809fd0f0edebd07f37a"}, + {file = "SQLAlchemy-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43482b8f0bed711b3769037e86c45619370bf529aee605975586fdd80ee770a0"}, + {file = "SQLAlchemy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fec1aebc9256b02a59e8a69d4b7aa2299e04e7b51bb4fd11daaba5df1ad592c7"}, + {file = "SQLAlchemy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e8baa4e421136a582f5d9d262ce568ce3eb413d3455650c34d674e5a9f092aa"}, + {file = "SQLAlchemy-2.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:90550ff7a96143579472a93aff6dae0999316528ce0f3165083f93d036e313bf"}, + {file = "SQLAlchemy-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edf1a0cfd9979a805ad0d725e436d6460a5b44afc7de0ffae3321a9d2afeff54"}, + {file = "SQLAlchemy-2.0.2-cp39-cp39-win32.whl", hash = "sha256:abeb371ff47633c7d16b1e1e56e3d41a9b0ab34463c1726f22e1b68401d28cac"}, + {file = "SQLAlchemy-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:b0323d65b4cd9408261026495a650566d62d056adeb848d1f1f8be0da38a1e0a"}, + {file = "SQLAlchemy-2.0.2-py3-none-any.whl", hash = "sha256:d561e44c0b480b7e74fa002bea949c9f5aff555724f4d10883391cbd8790c81b"}, + {file = "SQLAlchemy-2.0.2.tar.gz", hash = "sha256:e4d3cf5352f724237e27463de4bf19888235342af2efa37ef1cd391d8b702a16"}, ] [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +typing-extensions = ">=4.2.0" [package.extras] aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] -asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] mssql = ["pyodbc"] mssql-pymssql = ["pymssql"] mssql-pyodbc = ["pyodbc"] -mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] -mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] +mypy = ["mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0)"] mysql-connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)", "cx-oracle (>=7,<8)"] +oracle = ["cx-oracle (>=7)"] +oracle-oracledb = ["oracledb (>=1.0.1)"] postgresql = ["psycopg2 (>=2.7)"] postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] -postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] +postgresql-pg8000 = ["pg8000 (>=1.29.1)"] +postgresql-psycopg = ["psycopg (>=3.0.7)"] postgresql-psycopg2binary = ["psycopg2-binary"] postgresql-psycopg2cffi = ["psycopg2cffi"] -pymysql = ["pymysql", "pymysql (<1)"] +pymysql = ["pymysql"] sqlcipher = ["sqlcipher3-binary"] [[package]] @@ -5316,14 +5336,14 @@ files = [ [[package]] name = "urllib3" -version = "1.26.13" +version = "1.26.14" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, + {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, + {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, ] [package.extras] @@ -5465,14 +5485,14 @@ files = [ [[package]] name = "websocket-client" -version = "1.4.2" +version = "1.5.1" description = "WebSocket client for Python with low level API options" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "websocket-client-1.4.2.tar.gz", hash = "sha256:d6e8f90ca8e2dd4e8027c4561adeb9456b54044312dba655e7cae652ceb9ae59"}, - {file = "websocket_client-1.4.2-py3-none-any.whl", hash = "sha256:d6b06432f184438d99ac1f456eaf22fe1ade524c3dd16e661142dc54e9cba574"}, + {file = "websocket-client-1.5.1.tar.gz", hash = "sha256:3f09e6d8230892547132177f575a4e3e73cfdf06526e20cc02aa1c3b47184d40"}, + {file = "websocket_client-1.5.1-py3-none-any.whl", hash = "sha256:cdf5877568b7e83aa7cf2244ab56a3213de587bbe0ce9d8b9600fc77b455d89e"}, ] [package.extras] @@ -5506,16 +5526,21 @@ pycrypto = ["pycryptodome"] [[package]] name = "werkzeug" -version = "0.11.15" -description = "The Swiss Army knife of Python web development" +version = "0.16.1" +description = "The comprehensive WSGI web application library." category = "main" optional = false -python-versions = "*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "Werkzeug-0.11.15-py2.py3-none-any.whl", hash = "sha256:c6f6f89124df0514d886782c658c3e12f2caaa94da34cee3fd82eebf4ebf052b"}, - {file = "Werkzeug-0.11.15.tar.gz", hash = "sha256:455d7798ac263266dbd38d4841f7534dd35ca9c3da4a8df303f8488f38f3bcc0"}, + {file = "Werkzeug-0.16.1-py2.py3-none-any.whl", hash = "sha256:1e0dedc2acb1f46827daa2e399c1485c8fa17c0d8e70b6b875b4e7f54bf408d2"}, + {file = "Werkzeug-0.16.1.tar.gz", hash = "sha256:b353856d37dec59d6511359f97f6a4b2468442e454bd1c98298ddce53cac1f04"}, ] +[package.extras] +dev = ["coverage", "pallets-sphinx-themes", "pytest", "sphinx", "sphinx-issues", "tox"] +termcolor = ["termcolor"] +watchdog = ["watchdog"] + [[package]] name = "wget" version = "3.2" @@ -5823,18 +5848,18 @@ xmlsec = ["xmlsec (>=0.6.1)"] [[package]] name = "zipp" -version = "3.11.0" +version = "3.12.1" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"}, - {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"}, + {file = "zipp-3.12.1-py3-none-any.whl", hash = "sha256:6c4fe274b8f85ec73c37a8e4e3fa00df9fb9335da96fb789e3b96b318e5097b3"}, + {file = "zipp-3.12.1.tar.gz", hash = "sha256:a3cac813d40993596b39ea9e93a18e8a2076d5c378b8bc88ec32ab264e04ad02"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] @@ -5851,4 +5876,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.7.16" -content-hash = "4ff9c7a9b211ef6fe52312ef5649cfdaf06e72eecd01033de45c9cde809ecd3d" +content-hash = "dd54f6a3d606782a2768478cdfde0fd5f90b2e625e13b8d3ac946b25637e4f0c" diff --git a/pyproject.toml b/pyproject.toml index d7288e2..c196a1e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,17 +19,17 @@ authors = [ "Mathieu Benoit ",] [tool.poetry.dependencies] python = "^3.7.16" -acme = "^2.1.0" +acme = "^2.2.0" agithub = "^2.2.2" aioshutil = "<1.2" -altair = "^4.2.0" +altair = "^4.2.2" argcomplete = "^2.0.0" asterisk = "^0.0.8" astor = "^0.8.1" azure-identity = "^1.12.0" azure-storage-blob = "^12.14.1" babel = "2.9.1" -beautifulsoup4 = "^4.11.1" +beautifulsoup4 = "^4.11.2" bokeh = "1.1.0" boto3 = ">=1.20.41" cachetools = ">=2.0.1" @@ -40,24 +40,24 @@ cloudflare = "^2.11.1" code-writer = "^1.1.1" colorama = "^0.4.6" configparser = "5.0.2" -coverage = "^7.0.1" +coverage = "^7.1.0" cryptography = "36.0.1" css-html-prettify = "^2.5.5" -cython = "^0.29.32" +cython = "^0.29.33" ddt = "1.2.0" decorator = "4.0.10" -dnspython = "^2.2.1" +dnspython = "^2.3.0" docutils = ">=0.14,<1.0" ebaysdk = "2.1.5" -email-validator = "^1.3.0" +email-validator = "^1.3.1" emoji = "^2.2.0" extract-msg = "<0.30" factur-x = "^2.3" feedparser = "6.0.10" flake8 = "<6.0.0" -formio-data = "^0.4.7" +formio-data = "^0.4.10" freezegun = "1.2.2" -geojson = "^2.5.0" +geojson = "<3.0.0" gevent = "1.5.0" gitpython = "3.1.29" giturlparse = "^0.10.0" @@ -65,7 +65,7 @@ greenlet = "0.4.14" html2text = "2016.9.19" invoice2data = "0.3.5" iscompatible = "^0.1.1" -isort = "^5.11.4" +isort = "<5.12.0" jinja2 = "2.11.3" jira = "2.0.0" jose = "^1.0.0" @@ -85,18 +85,18 @@ numpy = "1.21.1" oauthlib = "2.1.0" oca-decorators = "^0.0.1" ofxparse = "0.16" -openpyxl = "^3.0.10" -openupgradelib = "^3.4.0" +openpyxl = "^3.1.0" +openupgradelib = "^3.4.1" orjson = "3.6.0" ovh = "^1.0.0" paho-mqtt = "^1.6.1" pandas = "1.3.5" -paramiko = "^2.12.0" +paramiko = "^3.0.0" passlib = "1.6.5" pdf2image = "^1.16.2" pdfminer = "^20191125" pexpect = "^4.8.0" -phonenumbers = "^8.13.3" +phonenumbers = "^8.13.5" pillow = "9.3.0" plotly = "4.1.0" portalocker = "1.7.1" @@ -149,7 +149,7 @@ requests-oauthlib = "1.1.0" requests-toolbelt = "0.9.1" responses = "^0.22.0" retrying = "^1.3.4" -sentry-sdk = "^1.12.1" +sentry-sdk = "^1.15.0" serial = "^0.0.97" setuptools = "65.5.1" shapely = "1.8.5" @@ -157,9 +157,9 @@ simplejson = "3.16.0" slugify = "^0.0.1" soappy = "^0.12.22" sphinx = ">=3.0,<4.0" -sphinx-intl = "^2.0.1" -sphinx-rtd-theme = "^1.1.1" -sqlalchemy = "^1.4.45" +sphinx-intl = "^2.1.0" +sphinx-rtd-theme = "^1.2.0" +sqlalchemy = "^2.0.2" sqlparse = "^0.4.3" statsd = "3.2.1" toml = "^0.10.2" @@ -172,8 +172,8 @@ vcrpy-unittest = "^0.1.7" vobject = "0.9.3" voicent-python = "^1.0" webcolors = "^1.12" -websocket-client = "^1.4.2" -werkzeug = "0.11.15" +websocket-client = "^1.5.1" +werkzeug = "0.16.1" wget = "^3.2" wheel = "^0.38.4" win-unicode-console = "^0.5" diff --git a/requirements.txt b/requirements.txt index 81e7d8a..7b923d7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -43,7 +43,7 @@ xmlformatter css-html-prettify BeautifulSoup4 git+https://github.com/psf/black.git@22.3.0 -isort +isort<5.12.0 # For updating poetry toml @@ -79,13 +79,12 @@ psycopg2==2.9.5 # numpy >=1.22 is not compatible with python 3.7 numpy==1.21.1 feedparser==6.0.10 +geojson<3.0.0 + # Solve pcodedmp, oletools, rtfde and extract-msg win_unicode_console -# Security issue, need to update to version =>0.15.3, but odoo12 is only support ==0.11.15 -Werkzeug==0.11.15 - # Security issue, depend on extract-msg 0.36.1 chardet==5.0.0 extract-msg==0.36.1 @@ -107,3 +106,4 @@ mako==1.2.2 pyjwt==2.5.0 pygments==2.7.4 setuptools==65.5.1 +Werkzeug==0.16.1