diff --git a/.dockerignore b/.dockerignore index 29e6912ac6c6..34d9c074f7df 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,3 +4,7 @@ docs **/*.pyc **/__pycache__ !docker/configs +rasa/tests +rasa/scripts +data/ +examples/ diff --git a/.gitattributes b/.gitattributes index 5378fe089bc2..8f12c43c197e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,3 @@ -* -text \ No newline at end of file +* -text +# Reclassifies `Dockerfile*` files as Dockerfile: +Dockerfile.* linguist-language=Dockerfile diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index 5fbab5f81add..79f485c4e554 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -28,6 +28,8 @@ env: # needed to fix issues with boto during testing: # https://github.com/travis-ci/travis-ci/issues/7940 BOTO_CONFIG: /dev/null + IS_TAG_BUILD: ${{ startsWith(github.event.ref, 'refs/tags') }} + DOCKERHUB_USERNAME: tmbo jobs: changes: @@ -283,27 +285,159 @@ jobs: COVERALLS_SERVICE_NAME: github run: poetry run coveralls + build_docker_base_images_and_set_env: + name: Build Docker base images and setup environment + runs-on: ubuntu-20.04 + outputs: + base_image_hash: ${{ steps.check_image.outputs.base_image_hash }} + base_mitie_image_hash: ${{ steps.check_image.outputs.base_mitie_image_hash }} + # Tag name used for images created during Docker image builds, e.g. 3886 - a PR number + image_tag: ${{ steps.set_output.outputs.image_tag }} + # Return 'true' if tag version is equal or higher than the latest tagged Rasa version + is_newest_version: ${{ steps.rasa_get_version.outputs.is_newest_version }} + steps: + # Due to an issue with checking out a wrong commit, we make sure + # to checkout HEAD commit for a pull request. + # More details: https://github.com/actions/checkout/issues/299 + - name: Checkout pull request HEAD commit instead of merge commit πŸ• + uses: actions/checkout@v2 + if: github.event_name == 'pull_request' + with: + ref: ${{ github.event.pull_request.head.sha }} + + - name: Checkout git repository πŸ• + uses: actions/checkout@v2 + if: github.event_name != 'pull_request' + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + with: + version: v0.5.1 + driver: docker + + - name: Login to DockerHub Registry πŸ”’ + run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ env.DOCKERHUB_USERNAME }} --password-stdin || true + + - name: Check if tag version is equal or higher than the latest tagged Rasa version + id: rasa_get_version + if: env.IS_TAG_BUILD == 'true' + run: | + # Get latest tagged Rasa version + git fetch --depth=1 origin "+refs/tags/*:refs/tags/*" + # Fetch branch history + git fetch --prune --unshallow + LATEST_TAGGED_NON_ALPHA_RASA_VERSION=$(git tag | sort -r -V | grep -E "^[0-9.]+$" | head -n1) + CURRENT_TAG=${GITHUB_TAG/refs\/tags\//} + # Return 'true' if tag version is equal or higher than the latest tagged Rasa version + IS_NEWEST_VERSION=$((printf '%s\n%s\n' "${LATEST_TAGGED_NON_ALPHA_RASA_VERSION}" "$CURRENT_TAG" \ + | sort -V -C && echo true || echo false) || true) + # Avoid that the script gets released for alphas or release candidates + if [[ "${IS_NEWEST_VERSION}" == "true" && "$CURRENT_TAG" =~ ^[0-9.]+$ ]]; then + echo "::set-output name=is_newest_version::true" + else + echo "::set-output name=is_newest_version::false" + fi + + - name: Check if a base image exists + id: check_image + env: + DOCKER_CLI_EXPERIMENTAL: enabled + run: | + # Base image + BASE_IMAGE_HASH=${{ hashFiles('docker/Dockerfile.base') }} + echo "::set-output name=base_image_hash::${BASE_IMAGE_HASH}" + + BASE_IMAGE_EXISTS=$((docker manifest inspect rasa/rasa:base-${BASE_IMAGE_HASH} &> /dev/null && echo true || echo false) || true) + echo "::set-output name=base_exists::${BASE_IMAGE_EXISTS}" + + # Base MITIE image + BASE_MITIE_IMAGE_HASH=${{ hashFiles('docker/Dockerfile.base-mitie') }} + MAKEFILE_MITIE_HASH=${{ hashFiles('Makefile') }} + echo "::set-output name=base_mitie_image_hash::${BASE_MITIE_IMAGE_HASH:0:50}-${MAKEFILE_MITIE_HASH:0:50}" + + BASE_IMAGE_MITIE_EXISTS=$((docker manifest inspect rasa/rasa:base-mitie-${BASE_MITIE_IMAGE_HASH:0:50}-${MAKEFILE_MITIE_HASH:0:50} &> /dev/null && echo true || echo false) || true) + echo "::set-output name=base_mitie_exists::${BASE_IMAGE_MITIE_EXISTS}" + + - name: Build Docker base image and push πŸ›  ⬆ + if: steps.check_image.outputs.base_exists == 'false' || env.IS_TAG_BUILD == 'true' + run: | + export IMAGE_TAG=${{ steps.check_image.outputs.base_image_hash }} + docker buildx bake -f docker/docker-bake.hcl base --push + + - name: Build Docker mitie base image and push πŸ›  ⬆ + if: steps.check_image.outputs.base_mitie_exists == 'false' + run: | + export IMAGE_TAG=${{ steps.check_image.outputs.base_mitie_image_hash }} + docker buildx bake -f docker/docker-bake.hcl base-mitie --push + + # Set environment variables for a pull request + # + # In this scenario, we've created a PR #1234 + # + # Example output: + # IMAGE_TAG=1234 + - name: Set environment variables - pull_request + if: github.event_name == 'pull_request' && env.IS_TAG_BUILD == 'false' + run: | + echo "IMAGE_TAG=${{ github.event.number }}" >> $GITHUB_ENV + + # Set environment variables for a tag + # + # In this scenario, we've pushed the '2.0.6' tag + # + # Example output: + # TAG_NAME=2.0.6 + # IMAGE_TAG=2.0.6 + - name: Set environment variables - push - tag + if: github.event_name == 'push' && env.IS_TAG_BUILD == 'true' + run: | + TAG_NAME=${GITHUB_REF#refs/tags/} + echo "IMAGE_TAG=${TAG_NAME}" >> $GITHUB_ENV + + # Set environment variables for a branch + # + # In this scenario, we've pushed changes into the main branch + # + # Example output: + # IMAGE_TAG=main + - name: Set environment variables - push - branch + if: github.event_name == 'push' && env.IS_TAG_BUILD == 'false' + run: | + BRANCH_NAME=${GITHUB_REF#refs/heads/} + SAFE_BRANCH_NAME="$(echo ${GITHUB_REF#refs/heads/} | sed 's/[\\*+.$\#\-\/]/-/g')" + echo "IMAGE_TAG=${SAFE_BRANCH_NAME}" >> $GITHUB_ENV + + - name: Set output + id: set_output + run: | + echo "::set-output name=image_tag::${{ env.IMAGE_TAG }}" + docker: name: Build Docker runs-on: ubuntu-latest - needs: [changes] + needs: [changes, build_docker_base_images_and_set_env] + env: + IMAGE_TAG: ${{ needs.build_docker_base_images_and_set_env.outputs.image_tag }} + BASE_IMAGE_HASH: ${{ needs.build_docker_base_images_and_set_env.outputs.base_image_hash }} + BASE_MITIE_IMAGE_HASH: ${{ needs.build_docker_base_images_and_set_env.outputs.base_mitie_image_hash }} strategy: matrix: - image: - - {"file": "Dockerfile", "tag_ext": ""} - - {"file": "docker/Dockerfile_full", "tag_ext": "-full"} - - {"file": "docker/Dockerfile_pretrained_embeddings_mitie_en", "tag_ext": "-mitie-en"} - - {"file": "docker/Dockerfile_pretrained_embeddings_spacy_de", "tag_ext": "-spacy-de"} - - {"file": "docker/Dockerfile_pretrained_embeddings_spacy_en", "tag_ext": "-spacy-en"} - - env: - DOCKERHUB_USERNAME: tmbo + image: [default, full, mitie-en, spacy-de, spacy-en] steps: + # Due to an issue with checking out a wrong commit, we make sure + # to checkout HEAD commit for a pull request. + # More details: https://github.com/actions/checkout/issues/299 + - name: Checkout pull request HEAD commit instead of merge commit πŸ• + uses: actions/checkout@v2 + if: github.event_name == 'pull_request' + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Checkout git repository πŸ• - if: needs.changes.outputs.docker == 'true' uses: actions/checkout@v2 + if: github.event_name != 'pull_request' - name: Free disk space if: needs.changes.outputs.docker == 'true' @@ -316,14 +450,16 @@ jobs: docker rmi $(docker image ls -aq) df -h + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + with: + version: v0.5.1 + driver: docker + - name: Login to DockerHub Registry πŸ”’ if: needs.changes.outputs.docker == 'true' run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ env.DOCKERHUB_USERNAME }} --password-stdin || true - - name: Pull latest${{ matrix.image.tag_ext }} Docker image for caching - if: needs.changes.outputs.docker == 'true' - run: docker pull rasa/rasa:latest${{ matrix.image.tag_ext }} || true - - name: Copy Segment write key to the package if: needs.changes.outputs.docker == 'true' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags') && github.repository == 'RasaHQ/rasa' env: @@ -332,22 +468,36 @@ jobs: run: | ./scripts/write_keys_file.sh - - name: Build latest${{ matrix.image.tag_ext }} Docker image + - name: Build Docker image if: needs.changes.outputs.docker == 'true' - run: docker build . --file ${{ matrix.image.file }} --tag rasa/rasa:latest${{ matrix.image.tag_ext }} --cache-from rasa/rasa:latest${{ matrix.image.tag_ext }} + run: | + docker buildx bake -f docker/docker-bake.hcl ${{ matrix.image }} - - name: Push image with latest tag πŸ“¦ + - name: Push image with main tag πŸ“¦ if: needs.changes.outputs.docker == 'true' && github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository == 'RasaHQ/rasa' - run: docker push rasa/rasa:latest${{ matrix.image.tag_ext }} + run: | + docker buildx bake -f docker/docker-bake.hcl ${{ matrix.image }} --push - name: Push image with ${{github.ref}} tag πŸ“¦ - env: - GITHUB_TAG: ${{ github.ref }} - if: needs.changes.outputs.docker == 'true' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags') && github.repository == 'RasaHQ/rasa' + if: needs.changes.outputs.docker == 'true' && github.event_name == 'push' && env.IS_TAG_BUILD == 'true' && github.repository == 'RasaHQ/rasa' run: | - GITHUB_TAG=${GITHUB_TAG/refs\/tags\//} - docker tag rasa/rasa:latest${{ matrix.image.tag_ext }} rasa/rasa:${GITHUB_TAG}${{ matrix.image.tag_ext }} - docker push rasa/rasa:${GITHUB_TAG}${{ matrix.image.tag_ext }} + IS_NEWEST_VERSION=${{ needs.build_docker_base_images_and_set_env.outputs.is_newest_version }} + + docker buildx bake -f docker/docker-bake.hcl ${{ matrix.image }} --push + + # Tag the image as latest + if [[ "${IS_NEWEST_VERSION}" == "true" ]]; then + if [[ "${{ matrix.image }}" == "default" ]]; then + RELEASE_TAG="${IMAGE_TAG}" + else + RELEASE_TAG="${IMAGE_TAG}-${{ matrix.image }}" + fi + + LATEST_TAG=$(echo $RELEASE_TAG | sed 's/'$GITHUB_TAG'/latest/g') + + docker tag rasa/rasa:${RELEASE_TAG} rasa/rasa:${LATEST_TAG} + docker push rasa/rasa:${LATEST_TAG} + fi deploy: name: Deploy to PyPI diff --git a/Dockerfile b/Dockerfile index dd4ba31f1e82..4076bb0d8307 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,34 +1,8 @@ -FROM python:3.7-slim as base +# The default Docker image +ARG IMAGE_BASE_NAME +ARG BASE_IMAGE_HASH -RUN apt-get update -qq \ - && apt-get install -y --no-install-recommends \ - # required by psycopg2 at build and runtime - libpq-dev \ - # required for health check - curl \ - && apt-get autoremove -y - -FROM base as builder - -RUN apt-get update -qq && \ - apt-get install -y --no-install-recommends \ - build-essential \ - wget \ - openssh-client \ - graphviz-dev \ - pkg-config \ - git-core \ - openssl \ - libssl-dev \ - libffi6 \ - libffi-dev \ - libpng-dev - -# install poetry -# keep this in sync with the version in pyproject.toml and Dockerfile -ENV POETRY_VERSION 1.1.4 -RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -ENV PATH "/root/.poetry/bin:/opt/venv/bin:${PATH}" +FROM ${IMAGE_BASE_NAME}:base-${BASE_IMAGE_HASH} as builder # copy files COPY . /build/ @@ -46,7 +20,7 @@ RUN python -m venv /opt/venv && \ rm -rf dist *.egg-info # start a new build stage -FROM base as runner +FROM ${IMAGE_BASE_NAME}:base-${BASE_IMAGE_HASH} as runner # copy everything from /opt COPY --from=builder /opt/venv /opt/venv diff --git a/Makefile b/Makefile index 0c84446cf237..c4e42a416979 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: clean test lint init docs +.PHONY: clean test lint init docs build-docker build-docker-full build-docker-mitie-en build-docker-spacy-en build-docker-spacy-de JOBS ?= 1 @@ -41,6 +41,8 @@ help: @echo " Build the docs locally." @echo " release" @echo " Prepare a release." + @echo " build-docker" + @echo " Build Rasa Open Source Docker image." clean: find . -name '*.pyc' -exec rm -f {} + @@ -185,3 +187,33 @@ livedocs: release: poetry run python scripts/release.py + +build-docker: + export IMAGE_NAME=rasa && \ + docker buildx use default && \ + docker buildx bake -f docker/docker-bake.hcl base && \ + docker buildx bake -f docker/docker-bake.hcl default + +build-docker-full: + export IMAGE_NAME=rasa && \ + docker buildx use default && \ + docker buildx bake -f docker/docker-bake.hcl base-images && \ + docker buildx bake -f docker/docker-bake.hcl full + +build-docker-mitie-en: + export IMAGE_NAME=rasa && \ + docker buildx use default && \ + docker buildx bake -f docker/docker-bake.hcl base-images && \ + docker buildx bake -f docker/docker-bake.hcl mitie-en + +build-docker-spacy-en: + export IMAGE_NAME=rasa && \ + docker buildx use default && \ + docker buildx bake -f docker/docker-bake.hcl base && \ + docker buildx bake -f docker/docker-bake.hcl spacy-en + +build-docker-spacy-de: + export IMAGE_NAME=rasa && \ + docker buildx use default && \ + docker buildx bake -f docker/docker-bake.hcl base && \ + docker buildx bake -f docker/docker-bake.hcl spacy-de diff --git a/README.md b/README.md index 00e4547c4ba9..bf072417b6df 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,9 @@ or voice assistants as: - Alexa Skills - Google Home Actions -Rasa helps you build contextual assistants capable of having layered conversations with -lots of back-and-forth. In order for a human to have a meaningful exchange with a contextual -assistant, the assistant needs to be able to use context to build on things that were previously +Rasa helps you build contextual assistants capable of having layered conversations with +lots of back-and-forth. In order for a human to have a meaningful exchange with a contextual +assistant, the assistant needs to be able to use context to build on things that were previously discussed – Rasa enables you to build assistants that can do this in a scalable way. There's a lot more background information in this @@ -58,7 +58,7 @@ There's a lot more background information in this - **I would like to contribute πŸ€—** [How to Contribute](#how-to-contribute) ---- +--- ## Where to get help There is extensive documentation in the [Rasa Docs](https://rasa.com/docs/rasa). @@ -74,7 +74,7 @@ questions. - [License](#license) ### How to contribute -We are very happy to receive and merge your contributions into this repository! +We are very happy to receive and merge your contributions into this repository! To contribute via pull request, follow these steps: @@ -105,13 +105,13 @@ you have to install Poetry first. This is how it can be done: curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python ``` -There are several other ways to install Poetry. Please, follow +There are several other ways to install Poetry. Please, follow [the official guide](https://python-poetry.org/docs/#installation) to see all possible options. ### Managing environments The official [Poetry guide](https://python-poetry.org/docs/managing-environments/) suggests to use -[pyenv](https://github.com/pyenv/pyenv) or any other similar tool to easily switch between Python versions. +[pyenv](https://github.com/pyenv/pyenv) or any other similar tool to easily switch between Python versions. This is how it can be done: ```bash @@ -119,7 +119,7 @@ pyenv install 3.7.6 pyenv local 3.7.6 # Activate Python 3.7.6 for the current project ``` -By default, Poetry will try to use the currently activated Python version to create the virtual environment +By default, Poetry will try to use the currently activated Python version to create the virtual environment for the current project automatically. You can also create and activate a virtual environment manually β€” in this case, Poetry should pick it up and use it to install the dependencies. For example: @@ -128,7 +128,7 @@ python -m venv .venv source .venv/bin/activate ``` -You can make sure that the environment is picked up by executing +You can make sure that the environment is picked up by executing ```bash poetry env info @@ -202,10 +202,20 @@ Just execute this command to resolve merge conflicts in `poetry.lock` automatica poetry-merge-lock ``` +### Build a Docker image locally + +In order to build a Docker image on your local machine execute the following command: + +```bash +make build-docker +``` + +The Docker image is available on your local machine as `rasa:localdev`. + ### Code Style To ensure a standardized code style we use the formatter [black](https://github.com/ambv/black). -To ensure our type annotations are correct we use the type checker [pytype](https://github.com/google/pytype). +To ensure our type annotations are correct we use the type checker [pytype](https://github.com/google/pytype). If your code is not formatted properly or doesn't type check, GitHub will fail to build. #### Formatting @@ -238,11 +248,11 @@ the `documentation` branch. Netlify automatically re-deploys the docs pages when ## Releases ### Release Timeline for Minor Releases -**For Rasa Open Source, we usually commit to time-based releases, specifically on a monthly basis.** -This means that we commit beforehand to releasing a specific version of Rasa Open Source on a specific day, -and we cannot be 100% sure what will go in a release, because certain features may not be ready. +**For Rasa Open Source, we usually commit to time-based releases, specifically on a monthly basis.** +This means that we commit beforehand to releasing a specific version of Rasa Open Source on a specific day, +and we cannot be 100% sure what will go in a release, because certain features may not be ready. -At the beginning of each quarter, the Rasa team will review the scheduled release dates for all products and make sure +At the beginning of each quarter, the Rasa team will review the scheduled release dates for all products and make sure they work for the projected work we have planned for the quarter, as well as work well across products. **Once the dates are settled upon, we update the respective [milestones](https://github.com/RasaHQ/rasa/milestones).** @@ -250,12 +260,12 @@ they work for the projected work we have planned for the quarter, as well as wor ### Cutting a Major / Minor release #### A week before release day -1. **Make sure the [milestone](https://github.com/RasaHQ/rasa/milestones) already exists and is scheduled for the +1. **Make sure the [milestone](https://github.com/RasaHQ/rasa/milestones) already exists and is scheduled for the correct date.** -2. **Take a look at the issues & PRs that are in the milestone**: does it look about right for the release highlights -we are planning to ship? Does it look like anything is missing? Don't worry about being aware of every PR that should +2. **Take a look at the issues & PRs that are in the milestone**: does it look about right for the release highlights +we are planning to ship? Does it look like anything is missing? Don't worry about being aware of every PR that should be in, but it's useful to take a moment to evaluate what's assigned to the milestone. -3. **Post a message on the engineering Slack channel**, letting the team know you'll be the one cutting the upcoming +3. **Post a message on the engineering Slack channel**, letting the team know you'll be the one cutting the upcoming release, as well as: 1. Providing the link to the appropriate milestone 2. Reminding everyone to go over their issues and PRs and please assign them to the milestone @@ -263,20 +273,20 @@ release, as well as: #### A day before release day -1. **Go over the milestone and evaluate the status of any PR merging that's happening. Follow up with people on their -bugs and fixes.** If the release introduces new bugs or regressions that can't be fixed in time, we should discuss on -Slack about this and take a decision to go forward or postpone the release. The PR / issue owners are responsible for +1. **Go over the milestone and evaluate the status of any PR merging that's happening. Follow up with people on their +bugs and fixes.** If the release introduces new bugs or regressions that can't be fixed in time, we should discuss on +Slack about this and take a decision to go forward or postpone the release. The PR / issue owners are responsible for communicating any issues which might be release relevant. #### Release day! πŸš€ -1. **At the start of the day, post a small message on slack announcing release day!**. Communicate you'll be handling -the release, and the time you're aiming to start releasing (again, no later than 4pm, as issues may arise and +1. **At the start of the day, post a small message on slack announcing release day!**. Communicate you'll be handling +the release, and the time you're aiming to start releasing (again, no later than 4pm, as issues may arise and cause delays) 2. Make sure the milestone is empty (everything has been either merged or moved to the next milestone) -3. Once everything in the milestone is taken care of, post a small message on Slack communicating you are about to +3. Once everything in the milestone is taken care of, post a small message on Slack communicating you are about to start the release process (in case anything is missing). -4. **You may now do the release by following the instructions outlined in the +4. **You may now do the release by following the instructions outlined in the [Rasa Open Source README](#steps-to-release-a-new-version) !** ### Steps to release a new version @@ -291,7 +301,7 @@ Releasing a new version is quite simple, as the packages are build and distribut 1. Make sure all dependencies are up to date (**especially Rasa SDK**) - For Rasa SDK that means first creating a [new Rasa SDK release](https://github.com/RasaHQ/rasa-sdk#steps-to-release-a-new-version) (make sure the version numbers between the new Rasa and Rasa SDK releases match) - Once the tag with the new Rasa SDK release is pushed and the package appears on [pypi](https://pypi.org/project/rasa-sdk/), the dependency in the rasa repository can be resolved (see below). -2. Switch to the branch you want to cut the release from (`main` in case of a major / minor, the current feature branch for micro releases) +2. Switch to the branch you want to cut the release from (`main` in case of a major / minor, the current feature branch for micro releases) - Update the `rasa-sdk` entry in `pyproject.toml` with the new release version and run `poetry update`. This creates a new `poetry.lock` file with all dependencies resolved. - Commit the changes with `git commit -am "bump rasa-sdk dependency"` but do not push them. They will be automatically picked up by the following step. 3. Run `make release` @@ -314,11 +324,11 @@ Micro releases are simpler to cut, since they are meant to contain only bugfixes **The only things you need to do to cut a micro are:** -1. Notify the engineering team on Slack that you are planning to cut a micro, in case someone has an important fix +1. Notify the engineering team on Slack that you are planning to cut a micro, in case someone has an important fix to add. -2. Make sure the bugfix(es) are in the release branch you will use (p.e if you are cutting a `2.0.4` micro, you will +2. Make sure the bugfix(es) are in the release branch you will use (p.e if you are cutting a `2.0.4` micro, you will need your fixes to be on the `2.0.x` release branch). All micros must come from a `.x` branch! -3. Once you're ready to release the Rasa Open Source micro, checkout the branch, run `make release` and follow the +3. Once you're ready to release the Rasa Open Source micro, checkout the branch, run `make release` and follow the steps + get the PR merged. 4. Once the PR is in, pull the `.x` branch again and push the tag! diff --git a/changelog/7574.misc.md b/changelog/7574.misc.md new file mode 100644 index 000000000000..f130223d2bda --- /dev/null +++ b/changelog/7574.misc.md @@ -0,0 +1,5 @@ +Refactor of Docker builds that includes: + +- switching to Python 3.8 and Ubuntu 20.04 as a base image +- tagging the latest stable version as `latest` +- tagging Docker images build against the master branch as `master` diff --git a/changelog/7707.bugfix.md b/changelog/7707.bugfix.md new file mode 100644 index 000000000000..9d81c3ccd708 --- /dev/null +++ b/changelog/7707.bugfix.md @@ -0,0 +1,2 @@ +Add the option to configure whether extracted entities should be split by comma (`","`) or not to TEDPolicy. Fixes +crash when this parameter is accessed during extraction. \ No newline at end of file diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base new file mode 100644 index 000000000000..cc041f79b7a2 --- /dev/null +++ b/docker/Dockerfile.base @@ -0,0 +1,39 @@ +# The base image used for all images +FROM ubuntu:20.04 + +ENV DEBIAN_FRONTEND="noninteractive" + +RUN apt-get update -qq && \ + apt-get install -y --no-install-recommends \ + python3 \ + python3-venv \ + python3-pip \ + python3-dev \ + build-essential \ + wget \ + openssh-client \ + graphviz-dev \ + pkg-config \ + git-core \ + openssl \ + libssl-dev \ + libffi7 \ + libffi-dev \ + libpng-dev \ + # required by psycopg2 at build and runtime + libpq-dev \ + # required for health check + curl \ + && apt-get autoremove -y + +# Make sure that all security updates are installed +RUN apt-get update && apt-get dist-upgrade -y --no-install-recommends + +RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 100 \ + && update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 100 + +# install poetry +# keep this in sync with the version in pyproject.toml and Dockerfile.base +ENV POETRY_VERSION 1.1.4 +RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python +ENV PATH "/root/.poetry/bin:/opt/venv/bin:${PATH}" diff --git a/docker/Dockerfile.base-mitie b/docker/Dockerfile.base-mitie new file mode 100644 index 000000000000..3995622b77be --- /dev/null +++ b/docker/Dockerfile.base-mitie @@ -0,0 +1,9 @@ +# The base image used for all images that require a MITIE model +FROM alpine:latest + +RUN apk add --update make wget + +# download mitie model +WORKDIR /build +COPY ./Makefile . +RUN make prepare-mitie diff --git a/docker/Dockerfile.full b/docker/Dockerfile.full new file mode 100644 index 000000000000..4e59b70cbf00 --- /dev/null +++ b/docker/Dockerfile.full @@ -0,0 +1,61 @@ +# The image tagged with the 'full' suffix +ARG IMAGE_BASE_NAME +ARG BASE_IMAGE_HASH +ARG BASE_MITIE_IMAGE_HASH + +FROM ${IMAGE_BASE_NAME}:base-mitie-${BASE_MITIE_IMAGE_HASH} as mitie + +FROM ${IMAGE_BASE_NAME}:base-${BASE_IMAGE_HASH} as builder + +COPY --from=mitie /build/data /build/data + +# copy files +COPY . /build/ +COPY docker/configs/config_pretrained_embeddings_spacy_en_duckling.yml /build/config.yml + +# change working directory +WORKDIR /build + +# install dependencies +RUN python -m venv /opt/venv && \ + . /opt/venv/bin/activate && \ + pip install --no-cache-dir -U 'pip>20' +RUN . /opt/venv/bin/activate && poetry install --extras full --no-dev --no-root --no-interaction +RUN . /opt/venv/bin/activate && make install-mitie && \ + poetry build -f wheel -n && \ + pip install --no-deps dist/*.whl && \ + rm -rf dist *.egg-info + +# make sure we use the virtualenv +ENV PATH="/opt/venv/bin:$PATH" + +# spacy link +RUN python -m spacy download en_core_web_md && \ + python -m spacy download de_core_news_sm && \ + python -m spacy link en_core_web_md en && \ + python -m spacy link de_core_news_sm de + +# start a new build stage +FROM ${IMAGE_BASE_NAME}:base-${BASE_IMAGE_HASH} as runner + +# copy everything from /opt +COPY --from=builder /opt/venv /opt/venv + +# make sure we use the virtualenv +ENV PATH="/opt/venv/bin:$PATH" + +# update permissions & change user to not run as root +WORKDIR /app +RUN chgrp -R 0 /app && chmod -R g=u /app +USER 1001 + +# Create a volume for temporary data +VOLUME /tmp + +# change shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# the entry point +EXPOSE 5005 +ENTRYPOINT ["rasa"] +CMD ["--help"] diff --git a/docker/Dockerfile.pretrained_embeddings_mitie_en b/docker/Dockerfile.pretrained_embeddings_mitie_en new file mode 100644 index 000000000000..a64da0be786b --- /dev/null +++ b/docker/Dockerfile.pretrained_embeddings_mitie_en @@ -0,0 +1,51 @@ +# The image tagged with the 'mitie-en' suffix +ARG IMAGE_BASE_NAME +ARG BASE_IMAGE_HASH +ARG BASE_MITIE_IMAGE_HASH + +FROM ${IMAGE_BASE_NAME}:base-mitie-${BASE_MITIE_IMAGE_HASH} as mitie + +FROM ${IMAGE_BASE_NAME}:base-${BASE_IMAGE_HASH} as builder + +COPY --from=mitie /build/data /build/data + +# copy files +COPY . /build/ +COPY docker/configs/config_pretrained_embeddings_mitie.yml /build/config.yml + +# change working directory +WORKDIR /build + +# install dependencies +RUN python -m venv /opt/venv && \ + . /opt/venv/bin/activate && pip install --no-cache-dir -U 'pip<20' +RUN . /opt/venv/bin/activate && poetry install --no-dev --no-root --no-interaction +RUN . /opt/venv/bin/activate && make install-mitie && \ + poetry build -f wheel -n && \ + pip install --no-deps dist/*.whl && \ + rm -rf dist *.egg-info + +# start a new build stage +FROM ${IMAGE_BASE_NAME}:base-${BASE_IMAGE_HASH} as runner + +# copy everything from /opt +COPY --from=builder /opt/venv /opt/venv + +# make sure we use the virtualenv +ENV PATH="/opt/venv/bin:$PATH" + +# update permissions & change user to not run as root +WORKDIR /app +RUN chgrp -R 0 /app && chmod -R g=u /app +USER 1001 + +# create a volume for temporary data +VOLUME /tmp + +# change shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# the entry point +EXPOSE 5005 +ENTRYPOINT ["rasa"] +CMD ["--help"] diff --git a/docker/Dockerfile.pretrained_embeddings_spacy_de b/docker/Dockerfile.pretrained_embeddings_spacy_de new file mode 100644 index 000000000000..9177ea19494d --- /dev/null +++ b/docker/Dockerfile.pretrained_embeddings_spacy_de @@ -0,0 +1,52 @@ +# The image tagged with the 'spacy-de' suffix +ARG IMAGE_BASE_NAME +ARG BASE_IMAGE_HASH + +FROM ${IMAGE_BASE_NAME}:base-${BASE_IMAGE_HASH} as builder + +# copy files +COPY . /build/ +COPY docker/configs/config_pretrained_embeddings_spacy_de.yml /build/config.yml + +# change working directory +WORKDIR /build + +# install dependencies +RUN python -m venv /opt/venv && \ + . /opt/venv/bin/activate && pip install --no-cache-dir -U 'pip<20' +RUN . /opt/venv/bin/activate && poetry install --extras spacy --no-dev --no-root --no-interaction +RUN . /opt/venv/bin/activate && poetry build -f wheel -n && \ + pip install --no-deps dist/*.whl && \ + rm -rf dist *.egg-info + +# make sure we use the virtualenv +ENV PATH="/opt/venv/bin:$PATH" + +# spacy link +RUN python -m spacy download de_core_news_sm && \ + python -m spacy link de_core_news_sm de + +# start a new build stage +FROM ${IMAGE_BASE_NAME}:base-${BASE_IMAGE_HASH} as runner + +# copy everything from /opt +COPY --from=builder /opt/venv /opt/venv + +# make sure we use the virtualenv +ENV PATH="/opt/venv/bin:$PATH" + +# update permissions & change user to not run as root +WORKDIR /app +RUN chgrp -R 0 /app && chmod -R g=u /app +USER 1001 + +# Create a volume for temporary data +VOLUME /tmp + +# change shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# the entry point +EXPOSE 5005 +ENTRYPOINT ["rasa"] +CMD ["--help"] diff --git a/docker/Dockerfile.pretrained_embeddings_spacy_en b/docker/Dockerfile.pretrained_embeddings_spacy_en new file mode 100644 index 000000000000..5766f3d9c31c --- /dev/null +++ b/docker/Dockerfile.pretrained_embeddings_spacy_en @@ -0,0 +1,52 @@ +# The image tagged with the 'spacy-en' suffix +ARG IMAGE_BASE_NAME +ARG BASE_IMAGE_HASH + +FROM ${IMAGE_BASE_NAME}:base-${BASE_IMAGE_HASH} as builder + +# copy files +COPY . /build/ +COPY docker/configs/config_pretrained_embeddings_spacy_en.yml /build/config.yml + +# change working directory +WORKDIR /build + +# install dependencies +RUN python -m venv /opt/venv && \ + . /opt/venv/bin/activate && pip install --no-cache-dir -U 'pip<20' +RUN . /opt/venv/bin/activate && poetry install --extras spacy --no-dev --no-root --no-interaction +RUN . /opt/venv/bin/activate && poetry build -f wheel -n && \ + pip install --no-deps dist/*.whl && \ + rm -rf dist *.egg-info + +# make sure we use the virtualenv +ENV PATH="/opt/venv/bin:$PATH" + +# spacy link +RUN python -m spacy download en_core_web_md && \ + python -m spacy link en_core_web_md en + +# start a new build stage +FROM ${IMAGE_BASE_NAME}:base-${BASE_IMAGE_HASH} as runner + +# copy everything from /opt +COPY --from=builder /opt/venv /opt/venv + +# make sure we use the virtualenv +ENV PATH="/opt/venv/bin:$PATH" + +# update permissions & change user to not run as root +WORKDIR /app +RUN chgrp -R 0 /app && chmod -R g=u /app +USER 1001 + +# Create a volume for temporary data +VOLUME /tmp + +# change shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# the entry point +EXPOSE 5005 +ENTRYPOINT ["rasa"] +CMD ["--help"] diff --git a/docker/Dockerfile_full b/docker/Dockerfile_full deleted file mode 100644 index 24bc5edc5c16..000000000000 --- a/docker/Dockerfile_full +++ /dev/null @@ -1,87 +0,0 @@ -FROM python:3.7-slim as base - -RUN apt-get update -qq \ - && apt-get install -y --no-install-recommends \ - # required by psycopg2 at build and runtime - libpq-dev \ - # required for health check - curl \ - && apt-get autoremove -y - -FROM base as builder - -RUN apt-get update -qq && \ - apt-get install -y --no-install-recommends \ - build-essential \ - wget \ - openssh-client \ - graphviz-dev \ - pkg-config \ - git-core \ - openssl \ - libssl-dev \ - libffi6 \ - libffi-dev \ - libpng-dev - -# install poetry -# keep this in sync with the version in pyproject.toml and Dockerfile -ENV POETRY_VERSION 1.1.4 -RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -ENV PATH "/root/.poetry/bin:/opt/venv/bin:${PATH}" - -# copy files -COPY . /build/ -COPY docker/configs/config_pretrained_embeddings_spacy_en_duckling.yml /build/config.yml - -# download mitie model -RUN wget -P /build/data/ https://github.com/mit-nlp/MITIE/releases/download/v0.4/MITIE-models-v0.2.tar.bz2 && \ - tar -xvjf /build/data/MITIE-models-v0.2.tar.bz2 --strip-components 2 -C /build/data/ MITIE-models/english/total_word_feature_extractor.dat && \ - rm /build/data/MITIE*.bz2 - -# change working directory -WORKDIR /build - -# install dependencies -RUN python -m venv /opt/venv && \ - . /opt/venv/bin/activate && \ - pip install --no-cache-dir -U 'pip<20' && \ - poetry install --extras full --no-dev --no-root --no-interaction && \ - make install-mitie && \ - poetry build -f wheel -n && \ - pip install --no-deps dist/*.whl && \ - rm -rf dist *.egg-info - -# make sure we use the virtualenv -ENV PATH="/opt/venv/bin:$PATH" - -# spacy link -RUN python -m spacy download en_core_web_md && \ - python -m spacy download de_core_news_sm && \ - python -m spacy link en_core_web_md en && \ - python -m spacy link de_core_news_sm de - -# start a new build stage -FROM base as runner - -# copy everything from /opt -COPY --from=builder /opt/venv /opt/venv - -# make sure we use the virtualenv -ENV PATH="/opt/venv/bin:$PATH" - -# update permissions & change user to not run as root -WORKDIR /app -RUN chgrp -R 0 /app && chmod -R g=u /app -USER 1001 - -# Create a volume for temporary data -VOLUME /tmp - -# change shell -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -# the entry point -EXPOSE 5005 -ENTRYPOINT ["rasa"] -CMD ["--help"] diff --git a/docker/Dockerfile_pretrained_embeddings_mitie_en b/docker/Dockerfile_pretrained_embeddings_mitie_en deleted file mode 100644 index 4dca77fd5826..000000000000 --- a/docker/Dockerfile_pretrained_embeddings_mitie_en +++ /dev/null @@ -1,78 +0,0 @@ -FROM python:3.7-slim as base - -RUN apt-get update -qq \ - && apt-get install -y --no-install-recommends \ - # required by psycopg2 at build and runtime - libpq-dev \ - # required for health check - curl \ - && apt-get autoremove -y - -FROM base as builder - -RUN apt-get update -qq && \ - apt-get install -y --no-install-recommends \ - build-essential \ - wget \ - openssh-client \ - graphviz-dev \ - pkg-config \ - git-core \ - openssl \ - libssl-dev \ - libffi6 \ - libffi-dev \ - libpng-dev - -# install poetry -# keep this in sync with the version in pyproject.toml and Dockerfile -ENV POETRY_VERSION 1.1.4 -RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -ENV PATH "/root/.poetry/bin:/opt/venv/bin:${PATH}" - -# copy files -COPY . /build/ -COPY docker/configs/config_pretrained_embeddings_mitie.yml /build/config.yml - -# download mitie model -RUN wget -P /build/data/ https://github.com/mit-nlp/MITIE/releases/download/v0.4/MITIE-models-v0.2.tar.bz2 && \ - tar -xvjf /build/data/MITIE-models-v0.2.tar.bz2 --strip-components 2 -C /build/data/ MITIE-models/english/total_word_feature_extractor.dat && \ - rm /build/data/MITIE*.bz2 - -# change working directory -WORKDIR /build - -# install dependencies -RUN python -m venv /opt/venv && \ - . /opt/venv/bin/activate && \ - pip install --no-cache-dir -U 'pip<20' && \ - poetry install --no-dev --no-root --no-interaction && \ - make install-mitie && \ - poetry build -f wheel -n && \ - pip install --no-deps dist/*.whl && \ - rm -rf dist *.egg-info - -# start a new build stage -FROM base as runner - -# copy everything from /opt -COPY --from=builder /opt/venv /opt/venv - -# make sure we use the virtualenv -ENV PATH="/opt/venv/bin:$PATH" - -# update permissions & change user to not run as root -WORKDIR /app -RUN chgrp -R 0 /app && chmod -R g=u /app -USER 1001 - -# create a volume for temporary data -VOLUME /tmp - -# change shell -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -# the entry point -EXPOSE 5005 -ENTRYPOINT ["rasa"] -CMD ["--help"] diff --git a/docker/Dockerfile_pretrained_embeddings_spacy_de b/docker/Dockerfile_pretrained_embeddings_spacy_de deleted file mode 100644 index f5dec022d390..000000000000 --- a/docker/Dockerfile_pretrained_embeddings_spacy_de +++ /dev/null @@ -1,79 +0,0 @@ -FROM python:3.7-slim as base - -RUN apt-get update -qq \ - && apt-get install -y --no-install-recommends \ - # required by psycopg2 at build and runtime - libpq-dev \ - # required for health check - curl \ - && apt-get autoremove -y - -FROM base as builder - -RUN apt-get update -qq && \ - apt-get install -y --no-install-recommends \ - build-essential \ - wget \ - openssh-client \ - graphviz-dev \ - pkg-config \ - git-core \ - openssl \ - libssl-dev \ - libffi6 \ - libffi-dev \ - libpng-dev - -# install poetry -# keep this in sync with the version in pyproject.toml and Dockerfile -ENV POETRY_VERSION 1.1.4 -RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -ENV PATH "/root/.poetry/bin:/opt/venv/bin:${PATH}" - -# copy files -COPY . /build/ -COPY docker/configs/config_pretrained_embeddings_spacy_de.yml /build/config.yml - -# change working directory -WORKDIR /build - -# install dependencies -RUN python -m venv /opt/venv && \ - . /opt/venv/bin/activate && \ - pip install --no-cache-dir -U 'pip<20' && \ - poetry install --extras spacy --no-dev --no-root --no-interaction && \ - poetry build -f wheel -n && \ - pip install --no-deps dist/*.whl && \ - rm -rf dist *.egg-info - -# make sure we use the virtualenv -ENV PATH="/opt/venv/bin:$PATH" - -# spacy link -RUN python -m spacy download de_core_news_sm && \ - python -m spacy link de_core_news_sm de - -# start a new build stage -FROM base as runner - -# copy everything from /opt -COPY --from=builder /opt/venv /opt/venv - -# make sure we use the virtualenv -ENV PATH="/opt/venv/bin:$PATH" - -# update permissions & change user to not run as root -WORKDIR /app -RUN chgrp -R 0 /app && chmod -R g=u /app -USER 1001 - -# Create a volume for temporary data -VOLUME /tmp - -# change shell -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -# the entry point -EXPOSE 5005 -ENTRYPOINT ["rasa"] -CMD ["--help"] diff --git a/docker/Dockerfile_pretrained_embeddings_spacy_en b/docker/Dockerfile_pretrained_embeddings_spacy_en deleted file mode 100644 index 870e89b48718..000000000000 --- a/docker/Dockerfile_pretrained_embeddings_spacy_en +++ /dev/null @@ -1,79 +0,0 @@ -FROM python:3.7-slim as base - -RUN apt-get update -qq \ - && apt-get install -y --no-install-recommends \ - # required by psycopg2 at build and runtime - libpq-dev \ - # required for health check - curl \ - && apt-get autoremove -y - -FROM base as builder - -RUN apt-get update -qq && \ - apt-get install -y --no-install-recommends \ - build-essential \ - wget \ - openssh-client \ - graphviz-dev \ - pkg-config \ - git-core \ - openssl \ - libssl-dev \ - libffi6 \ - libffi-dev \ - libpng-dev - -# install poetry -# keep this in sync with the version in pyproject.toml and Dockerfile -ENV POETRY_VERSION 1.1.4 -RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -ENV PATH "/root/.poetry/bin:/opt/venv/bin:${PATH}" - -# copy files -COPY . /build/ -COPY docker/configs/config_pretrained_embeddings_spacy_en.yml /build/config.yml - -# change working directory -WORKDIR /build - -# install dependencies -RUN python -m venv /opt/venv && \ - . /opt/venv/bin/activate && \ - pip install --no-cache-dir -U 'pip<20' && \ - poetry install --extras spacy --no-dev --no-root --no-interaction && \ - poetry build -f wheel -n && \ - pip install --no-deps dist/*.whl && \ - rm -rf dist *.egg-info - -# make sure we use the virtualenv -ENV PATH="/opt/venv/bin:$PATH" - -# spacy link -RUN python -m spacy download en_core_web_md && \ - python -m spacy link en_core_web_md en - -# start a new build stage -FROM base as runner - -# copy everything from /opt -COPY --from=builder /opt/venv /opt/venv - -# make sure we use the virtualenv -ENV PATH="/opt/venv/bin:$PATH" - -# update permissions & change user to not run as root -WORKDIR /app -RUN chgrp -R 0 /app && chmod -R g=u /app -USER 1001 - -# Create a volume for temporary data -VOLUME /tmp - -# change shell -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -# the entry point -EXPOSE 5005 -ENTRYPOINT ["rasa"] -CMD ["--help"] diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl new file mode 100644 index 000000000000..f2d8a232738b --- /dev/null +++ b/docker/docker-bake.hcl @@ -0,0 +1,119 @@ +variable "IMAGE_NAME" { + default = "rasa/rasa" +} + +variable "IMAGE_TAG" { + default = "localdev" +} + +variable "BASE_IMAGE_HASH" { + default = "localdev" +} + +variable "BASE_MITIE_IMAGE_HASH" { + default = "localdev" +} + +group "base-images" { + targets = ["base", "base-mitie"] +} + +target "base" { + dockerfile = "docker/Dockerfile.base" + tags = ["${IMAGE_NAME}:base-${IMAGE_TAG}"] + cache-to = ["type=inline"] +} + +target "base-mitie" { + dockerfile = "docker/Dockerfile.base-mitie" + tags = ["${IMAGE_NAME}:base-mitie-${IMAGE_TAG}"] + cache-to = ["type=inline"] +} + +target "default" { + dockerfile = "Dockerfile" + tags = ["${IMAGE_NAME}:${IMAGE_TAG}"] + + args = { + IMAGE_BASE_NAME = "${IMAGE_NAME}" + BASE_IMAGE_HASH = "${BASE_IMAGE_HASH}" + } + + cache-to = ["type=inline"] + + cache-from = [ + "type=registry,ref=${IMAGE_NAME}:base-${BASE_IMAGE_HASH}", + "type=registry,ref=${IMAGE_NAME}:latest", + ] +} + +target "full" { + dockerfile = "docker/Dockerfile.full" + tags = ["${IMAGE_NAME}:${IMAGE_TAG}-full"] + + args = { + IMAGE_BASE_NAME = "${IMAGE_NAME}" + BASE_IMAGE_HASH = "${BASE_IMAGE_HASH}" + BASE_MITIE_IMAGE_HASH = "${BASE_MITIE_IMAGE_HASH}" + } + + cache-to = ["type=inline"] + + cache-from = [ + "type=registry,ref=${IMAGE_NAME}:base-${BASE_IMAGE_HASH}", + "type=registry,ref=${IMAGE_NAME}:latest-full", + ] +} + +target "mitie-en" { + dockerfile = "docker/Dockerfile.pretrained_embeddings_mitie_en" + tags = ["${IMAGE_NAME}:${IMAGE_TAG}-mitie-en"] + + args = { + IMAGE_BASE_NAME = "${IMAGE_NAME}" + BASE_IMAGE_HASH = "${BASE_IMAGE_HASH}" + BASE_MITIE_IMAGE_HASH = "${BASE_MITIE_IMAGE_HASH}" + } + + cache-to = ["type=inline"] + + cache-from = [ + "type=registry,ref=${IMAGE_NAME}:base-${BASE_IMAGE_HASH}", + "type=registry,ref=${IMAGE_NAME}:base-mitie-${BASE_MITIE_IMAGE_HASH}", + "type=registry,ref=${IMAGE_NAME}:latest-mitie-en", + ] +} + +target "spacy-de" { + dockerfile = "docker/Dockerfile.pretrained_embeddings_spacy_de" + tags = ["${IMAGE_NAME}:${IMAGE_TAG}-spacy-de"] + + args = { + IMAGE_BASE_NAME = "${IMAGE_NAME}" + BASE_IMAGE_HASH = "${BASE_IMAGE_HASH}" + } + + cache-to = ["type=inline"] + + cache-from = [ + "type=registry,ref=${IMAGE_NAME}:base-${BASE_IMAGE_HASH}", + "type=registry,ref=${IMAGE_NAME}:latest-spacy-de", + ] +} + +target "spacy-en" { + dockerfile = "docker/Dockerfile.pretrained_embeddings_spacy_en" + tags = ["${IMAGE_NAME}:${IMAGE_TAG}-spacy-en"] + + args = { + IMAGE_BASE_NAME = "${IMAGE_NAME}" + BASE_IMAGE_HASH = "${BASE_IMAGE_HASH}" + } + + cache-to = ["type=inline"] + + cache-from = [ + "type=registry,ref=${IMAGE_NAME}:base-${BASE_IMAGE_HASH}", + "type=registry,ref=${IMAGE_NAME}:latest-spacy-en", + ] +} diff --git a/docs/docs/docker/building-in-docker.mdx b/docs/docs/docker/building-in-docker.mdx index d6bbddd01039..616fab756527 100644 --- a/docs/docs/docker/building-in-docker.mdx +++ b/docs/docs/docker/building-in-docker.mdx @@ -145,8 +145,7 @@ Docker image on [DockerHub](https://hub.docker.com/r/rasa/rasa/). ::: :::caution -The `latest` tags correspond to the current `main` build. These tags are not recommended for use, -as they are not guaranteed to be stable. +The `latest` tags correspond to the build of the latest stable version. ::: diff --git a/docs/docs/policies.mdx b/docs/docs/policies.mdx index 6dcd139907cf..e53c9eaf6caf 100644 --- a/docs/docs/policies.mdx +++ b/docs/docs/policies.mdx @@ -176,6 +176,27 @@ If you want to fine-tune your model, start by modifying the following parameters set `weight_sparsity` to 1 as this would result in all kernel weights being 0, i.e. the model is not able to learn. +* `split_entities_by_comma`: + This parameter defines whether adjacent entities separated by a comma should be treated as one, or split. For example, + entities with the type `ingredients`, like "apple, banana" can be split into "apple" and "banana". An entity with type + `address`, like "SchΓΆnhauser Allee 175, 10119 Berlin" should be treated as one. + + Can either be + `True`/`False` globally: + ```yaml-rasa title="config.yml" + policies: + - name: TEDPolicy + split_entities_by_comma: True + ``` + or set per entity type, such as: + ```yaml-rasa title="config.yml" + policies: + - name: TEDPolicy + split_entities_by_comma: + address: False + ingredients: True + ``` + The above configuration parameters are the ones you should configure to fit your model to your data. However, additional parameters exist that can be adapted. @@ -320,6 +341,15 @@ However, additional parameters exist that can be adapted. | entity_recognition | True | If 'True' entity recognition is trained and entities are | | | | extracted. | +---------------------------------------+------------------------+--------------------------------------------------------------+ +| split_entities_by_comma | True | Splits a list of extracted entities by comma to treat each | +| | | one of them as a single entity. Can either be `True`/`False` | +| | | globally, or set per entity type, such as: | +| | | ``` | +| | | - name: TEDPolicy | +| | | split_entities_by_comma: | +| | | address: True | +| | | ``` | ++---------------------------------------+------------------------+--------------------------------------------------------------+ ``` :::note diff --git a/poetry.lock b/poetry.lock index cfdba046efb6..ce8e3308a0a7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,439 +1,412 @@ [[package]] -category = "main" -description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py." name = "absl-py" +version = "0.11.0" +description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py." +category = "main" optional = false python-versions = "*" -version = "0.11.0" [package.dependencies] six = "*" [[package]] -category = "main" -description = "Wrapper for the aiormq for asyncio and humans." name = "aio-pika" +version = "6.7.1" +description = "Wrapper for the aiormq for asyncio and humans." +category = "main" optional = false python-versions = ">3.5.*, <4" -version = "6.7.1" [package.dependencies] -aiormq = ">=3.2.3,<4" yarl = "*" +aiormq = ">=3.2.3,<4" [package.extras] develop = ["aiomisc (>=10.1.6,<10.2.0)", "async-generator", "coverage (!=4.3)", "coveralls", "pylava", "pytest", "pytest-cov", "shortuuid", "nox", "sphinx", "sphinx-autobuild", "timeout-decorator", "tox (>=2.4)"] [[package]] -category = "main" -description = "File support for asyncio." name = "aiofiles" +version = "0.6.0" +description = "File support for asyncio." +category = "main" optional = false python-versions = "*" -version = "0.6.0" [[package]] -category = "main" -description = "Async http client/server framework (asyncio)" name = "aiohttp" +version = "3.6.3" +description = "Async http client/server framework (asyncio)" +category = "main" optional = false python-versions = ">=3.5.3" -version = "3.6.3" [package.dependencies] +typing-extensions = {version = ">=3.6.5", markers = "python_version < \"3.7\""} +yarl = ">=1.0,<1.6.0" async-timeout = ">=3.0,<4.0" -attrs = ">=17.3.0" +idna-ssl = {version = ">=1.0", markers = "python_version < \"3.7\""} chardet = ">=2.0,<4.0" +attrs = ">=17.3.0" multidict = ">=4.5,<5.0" -yarl = ">=1.0,<1.6.0" - -[package.dependencies.idna-ssl] -python = "<3.7" -version = ">=1.0" - -[package.dependencies.typing-extensions] -python = "<3.7" -version = ">=3.6.5" [package.extras] speedups = ["aiodns", "brotlipy", "cchardet"] [[package]] -category = "dev" -description = "Mock out requests made by ClientSession from aiohttp package" name = "aioresponses" +version = "0.6.4" +description = "Mock out requests made by ClientSession from aiohttp package" +category = "dev" optional = false python-versions = "*" -version = "0.6.4" [package.dependencies] aiohttp = ">=2.0.0,<4.0.0" [[package]] -category = "main" -description = "Pure python AMQP asynchronous client library" name = "aiormq" +version = "3.3.1" +description = "Pure python AMQP asynchronous client library" +category = "main" optional = false python-versions = ">3.5.*" -version = "3.3.1" [package.dependencies] -pamqp = "2.3.0" yarl = "*" +pamqp = "2.3.0" [package.extras] develop = ["aiomisc (>=11.0,<12.0)", "async-generator", "coverage (!=4.3)", "coveralls", "pylava", "pytest", "pytest-cov", "tox (>=2.4)"] [[package]] -category = "dev" -description = "apipkg: namespace control and lazy-import mechanism" name = "apipkg" +version = "1.5" +description = "apipkg: namespace control and lazy-import mechanism" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.5" [[package]] -category = "dev" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." name = "appdirs" +version = "1.4.4" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" optional = false python-versions = "*" -version = "1.4.4" [[package]] -category = "main" -description = "In-process task scheduler with Cron-like capabilities" name = "apscheduler" +version = "3.7.0" +description = "In-process task scheduler with Cron-like capabilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" -version = "3.7.0" [package.dependencies] pytz = "*" -setuptools = ">=0.7" -six = ">=1.4.0" tzlocal = ">=2.0,<3.0" +six = ">=1.4.0" [package.extras] -asyncio = ["trollius"] -doc = ["sphinx", "sphinx-rtd-theme"] -gevent = ["gevent"] -mongodb = ["pymongo (>=3.0)"] -redis = ["redis (>=3.0)"] rethinkdb = ["rethinkdb (>=2.4.0)"] sqlalchemy = ["sqlalchemy (>=0.8)"] -testing = ["pytest (<6)", "pytest-cov", "pytest-tornado5", "mock", "pytest-asyncio (<0.6)", "pytest-asyncio"] tornado = ["tornado (>=4.3)"] +doc = ["sphinx", "sphinx-rtd-theme"] +testing = ["pytest (<6)", "pytest-cov", "pytest-tornado5", "mock", "pytest-asyncio (<0.6)", "pytest-asyncio"] +redis = ["redis (>=3.0)"] twisted = ["twisted"] +gevent = ["gevent"] zookeeper = ["kazoo"] +mongodb = ["pymongo (>=3.0)"] +asyncio = ["trollius"] [[package]] -category = "main" -description = "An AST unparser for Python" name = "astunparse" +version = "1.6.3" +description = "An AST unparser for Python" +category = "main" optional = false python-versions = "*" -version = "1.6.3" [package.dependencies] six = ">=1.6.1,<2.0" -wheel = ">=0.23.0,<1.0" [[package]] -category = "main" -description = "Async generators and context managers for Python 3.5+" name = "async-generator" +version = "1.10" +description = "Async generators and context managers for Python 3.5+" +category = "main" optional = false python-versions = ">=3.5" -version = "1.10" [[package]] -category = "main" -description = "Timeout context manager for asyncio programs" name = "async-timeout" +version = "3.0.1" +description = "Timeout context manager for asyncio programs" +category = "main" optional = false python-versions = ">=3.5.3" -version = "3.0.1" [[package]] -category = "dev" -description = "Atomic file writes." -marker = "sys_platform == \"win32\"" name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.4.0" [[package]] -category = "main" -description = "Classes Without Boilerplate" name = "attrs" +version = "20.3.0" +description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "20.3.0" [package.extras] -dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] docs = ["furo", "sphinx", "zope.interface"] -tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] -tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] [[package]] -category = "dev" -description = "AWS SAM Translator is a library that transform SAM templates into AWS CloudFormation templates" name = "aws-sam-translator" +version = "1.33.0" +description = "AWS SAM Translator is a library that transform SAM templates into AWS CloudFormation templates" +category = "dev" optional = false python-versions = "*" -version = "1.33.0" [package.dependencies] boto3 = ">=1.5,<2.0" -jsonschema = ">=3.2,<4.0" six = ">=1.15,<2.0" +jsonschema = ">=3.2,<4.0" [package.extras] -dev = ["coverage (>=5.3,<6.0)", "flake8 (>=3.8.4,<3.9.0)", "tox (>=3.20.1,<3.21.0)", "pytest-cov (>=2.10.1,<2.11.0)", "pylint (>=1.7.2,<2.0)", "pyyaml (>=5.3.1,<5.4.0)", "mock (>=3.0.5,<4.0.0)", "parameterized (>=0.7.4,<0.8.0)", "requests (>=2.24.0,<2.25.0)", "docopt (>=0.6.2,<0.7.0)", "pytest (>=4.6.11,<4.7.0)", "pytest (>=6.1.1,<6.2.0)", "black (20.8b1)"] +dev = ["coverage (>=5.3,<6.0)", "flake8 (>=3.8.4,<3.9.0)", "tox (>=3.20.1,<3.21.0)", "pytest-cov (>=2.10.1,<2.11.0)", "pylint (>=1.7.2,<2.0)", "pyyaml (>=5.3.1,<5.4.0)", "mock (>=3.0.5,<4.0.0)", "parameterized (>=0.7.4,<0.8.0)", "requests (>=2.24.0,<2.25.0)", "docopt (>=0.6.2,<0.7.0)", "pytest (>=4.6.11,<4.7.0)", "pytest (>=6.1.1,<6.2.0)", "black (==20.8b1)"] [[package]] -category = "dev" -description = "The AWS X-Ray SDK for Python (the SDK) enables Python developers to record and emit information from within their applications to the AWS X-Ray service." name = "aws-xray-sdk" +version = "2.6.0" +description = "The AWS X-Ray SDK for Python (the SDK) enables Python developers to record and emit information from within their applications to the AWS X-Ray service." +category = "dev" optional = false python-versions = "*" -version = "2.6.0" [package.dependencies] -botocore = ">=1.11.3" future = "*" +botocore = ">=1.11.3" jsonpickle = "*" wrapt = "*" [[package]] -category = "dev" -description = "Microsoft Azure Core Library for Python" name = "azure-core" +version = "1.10.0" +description = "Microsoft Azure Core Library for Python" +category = "dev" optional = false python-versions = "*" -version = "1.9.0" [package.dependencies] requests = ">=2.18.4" six = ">=1.6" [[package]] -category = "dev" -description = "Microsoft Azure Blob Storage Client Library for Python" name = "azure-storage-blob" +version = "12.5.0" +description = "Microsoft Azure Blob Storage Client Library for Python" +category = "dev" optional = false python-versions = "*" -version = "12.5.0" [package.dependencies] +msrest = ">=0.6.10" azure-core = ">=1.6.0,<2.0.0" cryptography = ">=2.1.4" -msrest = ">=0.6.10" [[package]] -category = "dev" -description = "Security oriented static analyser for python code." name = "bandit" +version = "1.7.0" +description = "Security oriented static analyser for python code." +category = "dev" optional = false python-versions = ">=3.5" -version = "1.7.0" [package.dependencies] -GitPython = ">=1.0.1" +stevedore = ">=1.20.0" PyYAML = ">=5.3.1" -colorama = ">=0.3.9" six = ">=1.10.0" -stevedore = ">=1.20.0" +colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} +GitPython = ">=1.0.1" [[package]] -category = "dev" -description = "The uncompromising code formatter." name = "black" +version = "19.10b0" +description = "The uncompromising code formatter." +category = "dev" optional = false python-versions = ">=3.6" -version = "19.10b0" [package.dependencies] -appdirs = "*" -attrs = ">=18.1.0" -click = ">=6.5" -pathspec = ">=0.6,<1" regex = "*" -toml = ">=0.9.4" typed-ast = ">=1.4.0" +toml = ">=0.9.4" +attrs = ">=18.1.0" +pathspec = ">=0.6,<1" +click = ">=6.5" +appdirs = "*" [package.extras] d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] [[package]] -category = "main" -description = "The Blis BLAS-like linear algebra library, as a self-contained C-extension." name = "blis" +version = "0.4.1" +description = "The Blis BLAS-like linear algebra library, as a self-contained C-extension." +category = "main" optional = true python-versions = "*" -version = "0.4.1" [package.dependencies] numpy = ">=1.15.0" [[package]] -category = "dev" -description = "Amazon Web Services Library" name = "boto" +version = "2.49.0" +description = "Amazon Web Services Library" +category = "dev" optional = false python-versions = "*" -version = "2.49.0" [[package]] -category = "main" -description = "The AWS SDK for Python" name = "boto3" +version = "1.16.59" +description = "The AWS SDK for Python" +category = "main" optional = false python-versions = "*" -version = "1.16.57" [package.dependencies] -botocore = ">=1.19.57,<1.20.0" jmespath = ">=0.7.1,<1.0.0" +botocore = ">=1.19.59,<1.20.0" s3transfer = ">=0.3.0,<0.4.0" [[package]] -category = "main" -description = "Low-level, data-driven core of boto 3." name = "botocore" +version = "1.19.59" +description = "Low-level, data-driven core of boto 3." +category = "main" optional = false python-versions = "*" -version = "1.19.57" [package.dependencies] -jmespath = ">=0.7.1,<1.0.0" python-dateutil = ">=2.1,<3.0.0" - -[package.dependencies.urllib3] -python = "<3.4.0 || >=3.5.0" -version = ">=1.25.4,<1.27" +jmespath = ">=0.7.1,<1.0.0" +urllib3 = {version = ">=1.25.4,<1.27", markers = "python_version != \"3.4\""} [[package]] -category = "main" -description = "Extensible memoizing collections and decorators" name = "cachetools" +version = "4.2.1" +description = "Extensible memoizing collections and decorators" +category = "main" optional = false python-versions = "~=3.5" -version = "4.2.0" [[package]] -category = "main" -description = "Super lightweight function registries for your library" name = "catalogue" +version = "1.0.0" +description = "Super lightweight function registries for your library" +category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" -version = "1.0.0" [package.dependencies] -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.20" +importlib-metadata = {version = ">=0.20", markers = "python_version < \"3.8\""} [[package]] -category = "main" -description = "Python package for providing Mozilla's CA Bundle." name = "certifi" +version = "2020.12.5" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = "*" -version = "2020.12.5" [[package]] -category = "main" -description = "Foreign Function Interface for Python calling C code." name = "cffi" +version = "1.14.4" +description = "Foreign Function Interface for Python calling C code." +category = "main" optional = false python-versions = "*" -version = "1.14.4" [package.dependencies] pycparser = "*" [[package]] -category = "dev" -description = "Checks CloudFormation templates for practices and behaviour that could potentially be improved" name = "cfn-lint" +version = "0.44.4" +description = "Checks CloudFormation templates for practices and behaviour that could potentially be improved" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.44.2" [package.dependencies] +pyyaml = {version = "*", markers = "python_version != \"3.4\""} +importlib-resources = {version = ">=1.4,<4", markers = "python_version < \"3.7\" and python_version != \"3.4\""} +six = ">=1.11" +jsonpatch = {version = "*", markers = "python_version != \"3.4\""} aws-sam-translator = ">=1.25.0" jsonschema = ">=3.0,<4.0" +networkx = {version = ">=2.4,<3.0", markers = "python_version >= \"3.5\""} junit-xml = ">=1.9,<2.0" -six = ">=1.11" - -[package.dependencies.importlib-resources] -python = "<3.4.0 || >=3.5.0,<3.7" -version = ">=1.4,<4" - -[package.dependencies.jsonpatch] -python = "<3.4.0 || >=3.5.0" -version = "*" - -[package.dependencies.networkx] -python = ">=3.5" -version = ">=2.4,<3.0" - -[package.dependencies.pyyaml] -python = "<3.4.0 || >=3.5.0" -version = "*" [[package]] -category = "main" -description = "Universal encoding detector for Python 2 and 3" name = "chardet" +version = "3.0.4" +description = "Universal encoding detector for Python 2 and 3" +category = "main" optional = false python-versions = "*" -version = "3.0.4" [[package]] -category = "main" -description = "Composable command line interface toolkit" name = "click" +version = "7.1.2" +description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "7.1.2" [[package]] -category = "main" -description = "Extended pickling support for Python objects" name = "cloudpickle" +version = "1.4.1" +description = "Extended pickling support for Python objects" +category = "main" optional = false python-versions = ">=3.5" -version = "1.4.1" [[package]] -category = "main" -description = "Cross-platform colored terminal text." -marker = "sys_platform == \"win32\" or platform_system == \"Windows\"" name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.4.4" [[package]] -category = "main" -description = "Colorful worry-free console applications for Linux, Mac OS X, and Windows." name = "colorclass" +version = "2.2.0" +description = "Colorful worry-free console applications for Linux, Mac OS X, and Windows." +category = "main" optional = false python-versions = "*" -version = "2.2.0" [[package]] -category = "main" -description = "Colored terminal output for Python's logging module" name = "coloredlogs" +version = "14.3" +description = "Colored terminal output for Python's logging module" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "14.3" [package.dependencies] humanfriendly = ">=7.1" @@ -442,198 +415,196 @@ humanfriendly = ">=7.1" cron = ["capturer (>=2.4)"] [[package]] -category = "main" -description = "Generate color based on any object" name = "colorhash" +version = "1.0.3" +description = "Generate color based on any object" +category = "main" optional = false python-versions = ">=3.3,<4.0" -version = "1.0.3" [[package]] -category = "main" -description = "PEP 567 Backport" -marker = "python_version < \"3.7\"" name = "contextvars" +version = "2.4" +description = "PEP 567 Backport" +category = "main" optional = false python-versions = "*" -version = "2.4" [package.dependencies] immutables = ">=0.9" [[package]] -category = "dev" -description = "Code coverage measurement for Python" name = "coverage" +version = "5.3.1" +description = "Code coverage measurement for Python" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" -version = "5.3.1" [package.extras] toml = ["toml"] [[package]] -category = "dev" -description = "Show coverage stats online via coveralls.io" name = "coveralls" +version = "2.2.0" +description = "Show coverage stats online via coveralls.io" +category = "dev" optional = false python-versions = ">= 3.5" -version = "2.2.0" [package.dependencies] -coverage = ">=4.1,<6.0" -docopt = ">=0.6.1" requests = ">=1.0.0" +docopt = ">=0.6.1" +coverage = ">=4.1,<6.0" [package.extras] yaml = ["PyYAML (>=3.10)"] [[package]] -category = "main" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." name = "cryptography" +version = "3.3.1" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" -version = "3.3.1" [package.dependencies] -cffi = ">=1.12" six = ">=1.4.1" +cffi = ">=1.12" [package.extras] -docs = ["sphinx (>=1.6.5,<1.8.0 || >1.8.0,<3.1.0 || >3.1.0,<3.1.1 || >3.1.1)", "sphinx-rtd-theme"] -docstest = ["doc8", "pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] +test = ["pytest (>=3.6.0,!=3.9.0,!=3.9.1,!=3.9.2)", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] +docstest = ["doc8", "pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pytest (>=3.6.0,<3.9.0 || >3.9.0,<3.9.1 || >3.9.1,<3.9.2 || >3.9.2)", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,<3.79.2 || >3.79.2)"] +docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] [[package]] -category = "main" -description = "Composable style cycles" name = "cycler" +version = "0.10.0" +description = "Composable style cycles" +category = "main" optional = false python-versions = "*" -version = "0.10.0" [package.dependencies] six = "*" [[package]] -category = "main" -description = "Manage calls to calloc/free through Cython" name = "cymem" +version = "2.0.5" +description = "Manage calls to calloc/free through Cython" +category = "main" optional = true python-versions = "*" -version = "2.0.5" [[package]] -category = "main" -description = "A backport of the dataclasses module for Python 3.6" -marker = "python_version < \"3.7\"" name = "dataclasses" +version = "0.8" +description = "A backport of the dataclasses module for Python 3.6" +category = "main" optional = true -python-versions = "*" -version = "0.6" +python-versions = ">=3.6, <3.7" [[package]] -category = "main" -description = "Decorators for Humans" name = "decorator" +version = "4.4.2" +description = "Decorators for Humans" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*" -version = "4.4.2" [[package]] -category = "main" -description = "Tree is a library for working with nested data structures." name = "dm-tree" +version = "0.1.5" +description = "Tree is a library for working with nested data structures." +category = "main" optional = false python-versions = "*" -version = "0.1.5" [package.dependencies] six = ">=1.12.0" [[package]] -category = "main" -description = "DNS toolkit" name = "dnspython" +version = "1.16.0" +description = "DNS toolkit" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.16.0" [package.extras] -DNSSEC = ["pycryptodome", "ecdsa (>=0.13)"] IDNA = ["idna (>=2.1)"] +DNSSEC = ["pycryptodome", "ecdsa (>=0.13)"] [[package]] -category = "dev" -description = "A Python library for the Docker Engine API." name = "docker" +version = "4.4.1" +description = "A Python library for the Docker Engine API." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "4.4.1" [package.dependencies] -pywin32 = "227" requests = ">=2.14.2,<2.18.0 || >2.18.0" six = ">=1.4.0" +pywin32 = {version = "227", markers = "sys_platform == \"win32\""} websocket-client = ">=0.32.0" [package.extras] -ssh = ["paramiko (>=2.4.2)"] tls = ["pyOpenSSL (>=17.5.0)", "cryptography (>=1.3.4)", "idna (>=2.0.0)"] +ssh = ["paramiko (>=2.4.2)"] [[package]] -category = "main" -description = "Pythonic argument parser, that will make you smile" name = "docopt" +version = "0.6.2" +description = "Pythonic argument parser, that will make you smile" +category = "main" optional = false python-versions = "*" -version = "0.6.2" [[package]] -category = "dev" -description = "Docspec is a JSON object specification for representing API documentation of programming languages." name = "docspec" +version = "0.2.0" +description = "Docspec is a JSON object specification for representing API documentation of programming languages." +category = "dev" optional = false python-versions = "*" -version = "0.2.0" [package.dependencies] -"nr.databind.core" = ">=0.0.19,<0.1.0" "nr.databind.json" = ">=0.0.9,<0.1.0" +"nr.databind.core" = ">=0.0.19,<0.1.0" [[package]] -category = "dev" -description = "A parser based on lib2to3 producing docspec data from Python source code." name = "docspec-python" +version = "0.0.7" +description = "A parser based on lib2to3 producing docspec data from Python source code." +category = "dev" optional = false python-versions = "*" -version = "0.0.7" [package.dependencies] docspec = ">=0.2.0,<0.3.0" "nr.sumtype" = ">=0.0.3,<0.1.0" [[package]] -category = "dev" -description = "ECDSA cryptographic signature library (pure python)" name = "ecdsa" +version = "0.14.1" +description = "ECDSA cryptographic signature library (pure python)" +category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.14.1" [package.dependencies] six = "*" [[package]] -category = "dev" -description = "execnet: rapid multi-Python deployment" name = "execnet" +version = "1.7.1" +description = "execnet: rapid multi-Python deployment" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.7.1" [package.dependencies] apipkg = ">=1.4" @@ -642,153 +613,149 @@ apipkg = ">=1.4" testing = ["pre-commit"] [[package]] -category = "dev" -description = "Fake implementation of redis API for testing purposes." name = "fakeredis" +version = "1.4.5" +description = "Fake implementation of redis API for testing purposes." +category = "dev" optional = false python-versions = ">=3.5" -version = "1.4.5" [package.dependencies] -redis = "<3.6.0" -six = ">=1.12" sortedcontainers = "*" +six = ">=1.12" +redis = "<3.6.0" [package.extras] -aioredis = ["aioredis"] lua = ["lupa"] +aioredis = ["aioredis"] [[package]] -category = "main" -description = "A python library to communicate with the Facebook Messenger API's" name = "fbmessenger" +version = "6.0.0" +description = "A python library to communicate with the Facebook Messenger API's" +category = "main" optional = false python-versions = "*" -version = "6.0.0" [package.dependencies] requests = ">=2.0" [[package]] -category = "main" -description = "A platform independent file lock." name = "filelock" +version = "3.0.12" +description = "A platform independent file lock." +category = "main" optional = true python-versions = "*" -version = "3.0.12" [[package]] -category = "dev" -description = "the modular source code checker: pep8 pyflakes and co" name = "flake8" +version = "3.8.4" +description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" -version = "3.8.4" [package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} mccabe = ">=0.6.0,<0.7.0" pycodestyle = ">=2.6.0a1,<2.7.0" pyflakes = ">=2.2.0,<2.3.0" -[package.dependencies.importlib-metadata] -python = "<3.8" -version = "*" - [[package]] -category = "dev" -description = "Extension for flake8 which uses pydocstyle to check docstrings" name = "flake8-docstrings" +version = "1.5.0" +description = "Extension for flake8 which uses pydocstyle to check docstrings" +category = "dev" optional = false python-versions = "*" -version = "1.5.0" [package.dependencies] -flake8 = ">=3" pydocstyle = ">=2.1" +flake8 = ">=3" [[package]] -category = "dev" -description = "Let your Python tests travel through time" name = "freezegun" +version = "1.1.0" +description = "Let your Python tests travel through time" +category = "dev" optional = false python-versions = ">=3.5" -version = "1.0.0" [package.dependencies] python-dateutil = ">=2.7" [[package]] -category = "main" -description = "Clean single-source support for Python 3 and 2" name = "future" +version = "0.18.2" +description = "Clean single-source support for Python 3 and 2" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.18.2" [[package]] -category = "main" -description = "Python AST that abstracts the underlying Python version" name = "gast" +version = "0.3.3" +description = "Python AST that abstracts the underlying Python version" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.3.3" [[package]] -category = "dev" -description = "Git Object Database" name = "gitdb" +version = "4.0.5" +description = "Git Object Database" +category = "dev" optional = false python-versions = ">=3.4" -version = "4.0.5" [package.dependencies] smmap = ">=3.0.1,<4" [[package]] -category = "main" -description = "Python wrapper for the GitHub API(http://developer.github.com/v3)" name = "github3.py" +version = "1.3.0" +description = "Python wrapper for the GitHub API(http://developer.github.com/v3)" +category = "main" optional = true python-versions = "*" -version = "1.3.0" [package.dependencies] -jwcrypto = ">=0.5.0" python-dateutil = ">=2.6.0" requests = ">=2.18" +jwcrypto = ">=0.5.0" uritemplate = ">=3.0.0" [package.extras] +test = ["betamax (>=0.8.0)", "pytest (>2.3.5)", "betamax-matchers (>=0.1.0)", "unittest2 (==0.5.1)", "mock"] sni = ["pyopenssl", "ndg-httpsclient", "pyasn1"] -test = ["betamax (>=0.8.0)", "pytest (>2.3.5)", "betamax-matchers (>=0.1.0)", "unittest2 (0.5.1)", "mock"] [[package]] -category = "dev" -description = "Python Git Library" name = "gitpython" +version = "3.1.12" +description = "Python Git Library" +category = "dev" optional = false python-versions = ">=3.4" -version = "3.1.12" [package.dependencies] gitdb = ">=4.0.1,<5" [[package]] -category = "dev" -description = "Google API client core library" name = "google-api-core" +version = "1.25.0" +description = "Google API client core library" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" -version = "1.24.1" [package.dependencies] -google-auth = ">=1.21.1,<2.0dev" googleapis-common-protos = ">=1.6.0,<2.0dev" protobuf = ">=3.12.0" +six = ">=1.13.0" pytz = "*" requests = ">=2.18.0,<3.0.0dev" -setuptools = ">=34.0.0" -six = ">=1.13.0" +google-auth = ">=1.21.1,<2.0dev" [package.extras] grpc = ["grpcio (>=1.29.0,<2.0dev)"] @@ -796,78 +763,73 @@ grpcgcp = ["grpcio-gcp (>=0.2.2)"] grpcio-gcp = ["grpcio-gcp (>=0.2.2)"] [[package]] -category = "main" -description = "Google Authentication Library" name = "google-auth" +version = "1.24.0" +description = "Google Authentication Library" +category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" -version = "1.24.0" [package.dependencies] -cachetools = ">=2.0.0,<5.0" -pyasn1-modules = ">=0.2.1" -setuptools = ">=40.3.0" six = ">=1.9.0" - -[package.dependencies.rsa] -python = ">=3.6" -version = ">=3.1.4,<5" +pyasn1-modules = ">=0.2.1" +cachetools = ">=2.0.0,<5.0" +rsa = {version = ">=3.1.4,<5", markers = "python_version >= \"3.6\""} [package.extras] aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)"] [[package]] -category = "main" -description = "Google Authentication Library" name = "google-auth-oauthlib" +version = "0.4.2" +description = "Google Authentication Library" +category = "main" optional = false python-versions = ">=3.6" -version = "0.4.2" [package.dependencies] -google-auth = "*" requests-oauthlib = ">=0.7.0" +google-auth = "*" [package.extras] tool = ["click"] [[package]] -category = "dev" -description = "Google Cloud API client core library" name = "google-cloud-core" +version = "1.5.0" +description = "Google Cloud API client core library" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" -version = "1.5.0" [package.dependencies] -google-api-core = ">=1.21.0,<2.0.0dev" six = ">=1.12.0" +google-api-core = ">=1.21.0,<2.0.0dev" [package.extras] grpc = ["grpcio (>=1.8.2,<2.0dev)"] [[package]] -category = "dev" -description = "Google Cloud Storage API client library" name = "google-cloud-storage" +version = "1.35.0" +description = "Google Cloud Storage API client library" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" -version = "1.35.0" [package.dependencies] -google-auth = ">=1.11.0,<2.0dev" -google-cloud-core = ">=1.4.1,<2.0dev" -google-resumable-media = ">=1.2.0,<2.0dev" requests = ">=2.18.0,<3.0.0dev" +google-resumable-media = ">=1.2.0,<2.0dev" +google-cloud-core = ">=1.4.1,<2.0dev" +google-auth = ">=1.11.0,<2.0dev" [[package]] -category = "dev" -description = "A python wrapper of the C library 'Google CRC32C'" -marker = "python_version >= \"3.5\"" name = "google-crc32c" +version = "1.1.2" +description = "A python wrapper of the C library 'Google CRC32C'" +category = "dev" optional = false python-versions = ">=3.6" -version = "1.1.0" [package.dependencies] cffi = ">=1.0.0" @@ -876,42 +838,39 @@ cffi = ">=1.0.0" testing = ["pytest"] [[package]] -category = "main" -description = "pasta is an AST-based Python refactoring library" name = "google-pasta" +version = "0.2.0" +description = "pasta is an AST-based Python refactoring library" +category = "main" optional = false python-versions = "*" -version = "0.2.0" [package.dependencies] six = "*" [[package]] -category = "dev" -description = "Utilities for Google Media Downloads and Resumable Uploads" name = "google-resumable-media" +version = "1.2.0" +description = "Utilities for Google Media Downloads and Resumable Uploads" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" -version = "1.2.0" [package.dependencies] +google-crc32c = {version = ">=1.0,<2.0dev", markers = "python_version >= \"3.5\""} six = "*" -[package.dependencies.google-crc32c] -python = ">=3.5" -version = ">=1.0,<2.0dev" - [package.extras] -aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)"] requests = ["requests (>=2.18.0,<3.0.0dev)"] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)"] [[package]] -category = "dev" -description = "Common protobufs used in Google APIs" name = "googleapis-common-protos" +version = "1.52.0" +description = "Common protobufs used in Google APIs" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" -version = "1.52.0" [package.dependencies] protobuf = ">=3.6.0" @@ -920,235 +879,226 @@ protobuf = ">=3.6.0" grpc = ["grpcio (>=1.0.0)"] [[package]] -category = "main" -description = "HTTP/2-based RPC framework" name = "grpcio" +version = "1.35.0" +description = "HTTP/2-based RPC framework" +category = "main" optional = false python-versions = "*" -version = "1.34.0" [package.dependencies] six = ">=1.5.2" [package.extras] -protobuf = ["grpcio-tools (>=1.34.0)"] +protobuf = ["grpcio-tools (>=1.35.0)"] [[package]] -category = "main" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" name = "h11" +version = "0.9.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" optional = false python-versions = "*" -version = "0.9.0" [[package]] -category = "main" -description = "HTTP/2 State-Machine based protocol implementation" name = "h2" +version = "3.2.0" +description = "HTTP/2 State-Machine based protocol implementation" +category = "main" optional = false python-versions = "*" -version = "3.2.0" [package.dependencies] -hpack = ">=3.0,<4" hyperframe = ">=5.2.0,<6" +hpack = ">=3.0,<4" [[package]] -category = "main" -description = "Read and write HDF5 files from Python" name = "h5py" +version = "2.10.0" +description = "Read and write HDF5 files from Python" +category = "main" optional = false python-versions = "*" -version = "2.10.0" [package.dependencies] -numpy = ">=1.7" six = "*" +numpy = ">=1.7" [[package]] -category = "main" -description = "Pure-Python HPACK header compression" name = "hpack" +version = "3.0.0" +description = "Pure-Python HPACK header compression" +category = "main" optional = false python-versions = "*" -version = "3.0.0" [[package]] -category = "main" -description = "Chromium HSTS Preload list as a Python package" name = "hstspreload" +version = "2020.12.22" +description = "Chromium HSTS Preload list as a Python package" +category = "main" optional = false python-versions = ">=3.6" -version = "2020.12.22" [[package]] -category = "main" -description = "A comprehensive HTTP client library." name = "httplib2" +version = "0.18.1" +description = "A comprehensive HTTP client library." +category = "main" optional = false python-versions = "*" -version = "0.18.1" [[package]] -category = "main" -description = "A collection of framework independent HTTP protocol utils." name = "httptools" +version = "0.1.1" +description = "A collection of framework independent HTTP protocol utils." +category = "main" optional = false python-versions = "*" -version = "0.1.1" [package.extras] -test = ["Cython (0.29.14)"] +test = ["Cython (==0.29.14)"] [[package]] -category = "main" -description = "The next generation HTTP client." name = "httpx" +version = "0.11.1" +description = "The next generation HTTP client." +category = "main" optional = false python-versions = ">=3.6" -version = "0.11.1" [package.dependencies] -certifi = "*" -chardet = ">=3.0.0,<4.0.0" -h11 = ">=0.8,<0.10" -h2 = ">=3.0.0,<4.0.0" hstspreload = "*" -idna = ">=2.0.0,<3.0.0" -rfc3986 = ">=1.3,<2" -sniffio = ">=1.0.0,<2.0.0" +h2 = ">=3.0.0,<4.0.0" +h11 = ">=0.8,<0.10" urllib3 = ">=1.0.0,<2.0.0" +sniffio = ">=1.0.0,<2.0.0" +chardet = ">=3.0.0,<4.0.0" +rfc3986 = ">=1.3,<2" +certifi = "*" +idna = ">=2.0.0,<3.0.0" [[package]] -category = "main" -description = "Human friendly output for text interfaces using Python" name = "humanfriendly" +version = "9.1" +description = "Human friendly output for text interfaces using Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "9.1" [package.dependencies] -pyreadline = "*" +pyreadline = {version = "*", markers = "sys_platform == \"win32\""} [[package]] -category = "main" -description = "HTTP/2 framing layer for Python" name = "hyperframe" +version = "5.2.0" +description = "HTTP/2 framing layer for Python" +category = "main" optional = false python-versions = "*" -version = "5.2.0" [[package]] -category = "main" -description = "Internationalized Domain Names in Applications (IDNA)" name = "idna" +version = "2.10" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.10" [[package]] -category = "main" -description = "Patch ssl.match_hostname for Unicode(idna) domains support" -marker = "python_version < \"3.7\"" name = "idna-ssl" +version = "1.1.0" +description = "Patch ssl.match_hostname for Unicode(idna) domains support" +category = "main" optional = false python-versions = "*" -version = "1.1.0" [package.dependencies] idna = ">=2.0" [[package]] -category = "main" -description = "Immutable Collections" -marker = "python_version < \"3.7\"" name = "immutables" +version = "0.14" +description = "Immutable Collections" +category = "main" optional = false python-versions = ">=3.5" -version = "0.14" [[package]] -category = "main" -description = "Read metadata from Python packages" -marker = "sys_platform != \"win32\" and python_version < \"3.8\" or python_version < \"3.8\"" name = "importlib-metadata" +version = "3.4.0" +description = "Read metadata from Python packages" +category = "main" optional = false python-versions = ">=3.6" -version = "3.3.0" [package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" -[package.dependencies.typing-extensions] -python = "<3.8" -version = ">=3.6.4" - [package.extras] -docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] [[package]] -category = "dev" -description = "Read resources from Python packages" -marker = "python_version < \"3.7\" and python_version != \"3.4\"" name = "importlib-resources" +version = "3.3.1" +description = "Read resources from Python packages" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -version = "3.3.1" [package.dependencies] -[package.dependencies.zipp] -python = "<3.8" -version = ">=0.4" +zipp = {version = ">=0.4", markers = "python_version < \"3.8\""} [package.extras] docs = ["sphinx", "rst.linker", "jaraco.packaging"] [[package]] -category = "dev" -description = "" name = "incremental" +version = "17.5.0" +description = "" +category = "dev" optional = false python-versions = "*" -version = "17.5.0" [package.extras] scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] [[package]] -category = "main" -description = "IPv4/IPv6 manipulation library" name = "ipaddress" +version = "1.0.23" +description = "IPv4/IPv6 manipulation library" +category = "main" optional = false python-versions = "*" -version = "1.0.23" [[package]] -category = "dev" -description = "An ISO 8601 date/time/duration parser and formatter" name = "isodate" +version = "0.6.0" +description = "An ISO 8601 date/time/duration parser and formatter" +category = "dev" optional = false python-versions = "*" -version = "0.6.0" [package.dependencies] six = "*" [[package]] -category = "main" -description = "Chinese Words Segmentation Utilities" name = "jieba" +version = "0.42.1" +description = "Chinese Words Segmentation Utilities" +category = "main" optional = true python-versions = "*" -version = "0.42.1" [[package]] -category = "dev" -description = "A very fast and expressive template engine." name = "jinja2" +version = "2.11.2" +description = "A very fast and expressive template engine." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "2.11.2" [package.dependencies] MarkupSafe = ">=0.23" @@ -1157,332 +1107,318 @@ MarkupSafe = ">=0.23" i18n = ["Babel (>=0.8)"] [[package]] -category = "main" -description = "JSON Matching Expressions" name = "jmespath" +version = "0.10.0" +description = "JSON Matching Expressions" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.10.0" [[package]] -category = "main" -description = "Lightweight pipelining: using Python functions as pipeline jobs." name = "joblib" +version = "0.15.1" +description = "Lightweight pipelining: using Python functions as pipeline jobs." +category = "main" optional = false python-versions = ">=3.6" -version = "0.15.1" [[package]] -category = "dev" -description = "Diff JSON and JSON-like structures in Python" name = "jsondiff" +version = "1.2.0" +description = "Diff JSON and JSON-like structures in Python" +category = "dev" optional = false python-versions = "*" -version = "1.2.0" [[package]] -category = "dev" -description = "Apply JSON-Patches (RFC 6902)" -marker = "python_version != \"3.4\"" name = "jsonpatch" +version = "1.28" +description = "Apply JSON-Patches (RFC 6902)" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "1.28" [package.dependencies] jsonpointer = ">=1.9" [[package]] -category = "main" -description = "Python library for serializing any arbitrary object graph into JSON" name = "jsonpickle" +version = "1.5.0" +description = "Python library for serializing any arbitrary object graph into JSON" +category = "main" optional = false python-versions = ">=2.7" -version = "1.5.0" [package.dependencies] -[package.dependencies.importlib-metadata] -python = "<3.8" -version = "*" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [package.extras] docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["coverage (<5)", "pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-black-multipy", "pytest-cov", "ecdsa", "feedparser", "numpy", "pandas", "pymongo", "sqlalchemy", "enum34", "jsonlib"] "testing.libs" = ["demjson", "simplejson", "ujson", "yajl"] +testing = ["coverage (<5)", "pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-black-multipy", "pytest-cov", "ecdsa", "feedparser", "numpy", "pandas", "pymongo", "sqlalchemy", "enum34", "jsonlib"] [[package]] -category = "dev" -description = "Identify specific nodes in a JSON document (RFC 6901)" -marker = "python_version != \"3.4\"" name = "jsonpointer" +version = "2.0" +description = "Identify specific nodes in a JSON document (RFC 6901)" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.0" [[package]] -category = "main" -description = "An implementation of JSON Schema validation for Python" name = "jsonschema" +version = "3.2.0" +description = "An implementation of JSON Schema validation for Python" +category = "main" optional = false python-versions = "*" -version = "3.2.0" [package.dependencies] -attrs = ">=17.4.0" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} pyrsistent = ">=0.14.0" -setuptools = "*" six = ">=1.11.0" - -[package.dependencies.importlib-metadata] -python = "<3.8" -version = "*" +attrs = ">=17.4.0" [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 = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] [[package]] -category = "dev" -description = "Creates JUnit XML test result documents that can be read by tools such as Jenkins" name = "junit-xml" +version = "1.9" +description = "Creates JUnit XML test result documents that can be read by tools such as Jenkins" +category = "dev" optional = false python-versions = "*" -version = "1.9" [package.dependencies] six = "*" [[package]] -category = "main" -description = "Implementation of JOSE Web standards" name = "jwcrypto" +version = "0.8" +description = "Implementation of JOSE Web standards" +category = "main" optional = true python-versions = "*" -version = "0.8" [package.dependencies] cryptography = ">=2.3" [[package]] -category = "main" -description = "Pure Python client for Apache Kafka" name = "kafka-python" +version = "2.0.2" +description = "Pure Python client for Apache Kafka" +category = "main" optional = false python-versions = "*" -version = "2.0.2" [package.extras] crc32c = ["crc32c"] [[package]] -category = "main" -description = "Easy data preprocessing and data augmentation for deep learning models" name = "keras-preprocessing" +version = "1.1.2" +description = "Easy data preprocessing and data augmentation for deep learning models" +category = "main" optional = false python-versions = "*" -version = "1.1.2" [package.dependencies] -numpy = ">=1.9.1" six = ">=1.9.0" +numpy = ">=1.9.1" [package.extras] -image = ["scipy (>=0.14)", "Pillow (>=5.2.0)"] pep8 = ["flake8"] +image = ["scipy (>=0.14)", "Pillow (>=5.2.0)"] tests = ["pandas", "pillow", "tensorflow", "keras", "pytest", "pytest-xdist", "pytest-cov"] [[package]] -category = "main" -description = "A fast implementation of the Cassowary constraint solver" name = "kiwisolver" +version = "1.3.1" +description = "A fast implementation of the Cassowary constraint solver" +category = "main" optional = false python-versions = ">=3.6" -version = "1.3.1" [[package]] -category = "main" -description = "Python implementation of Markdown." name = "markdown" +version = "3.3.3" +description = "Python implementation of Markdown." +category = "main" optional = false python-versions = ">=3.6" -version = "3.3.3" [package.dependencies] -[package.dependencies.importlib-metadata] -python = "<3.8" -version = "*" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [package.extras] testing = ["coverage", "pyyaml"] [[package]] -category = "dev" -description = "Safely add untrusted strings to HTML/XML markup." name = "markupsafe" +version = "1.1.1" +description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" -version = "1.1.1" [[package]] -category = "main" -description = "Python plotting package" name = "matplotlib" +version = "3.3.3" +description = "Python plotting package" +category = "main" optional = false python-versions = ">=3.6" -version = "3.3.3" [package.dependencies] -cycler = ">=0.10" -kiwisolver = ">=1.0.1" -numpy = ">=1.15" pillow = ">=6.2.0" -pyparsing = ">=2.0.3,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" python-dateutil = ">=2.1" +pyparsing = ">=2.0.3,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" +numpy = ">=1.15" +cycler = ">=0.10" +kiwisolver = ">=1.0.1" [[package]] -category = "main" -description = "A mattermost api v4 wrapper to interact with api" name = "mattermostwrapper" +version = "2.2" +description = "A mattermost api v4 wrapper to interact with api" +category = "main" optional = false python-versions = "*" -version = "2.2" [package.dependencies] requests = "*" [[package]] -category = "dev" -description = "McCabe checker, plugin for flake8" name = "mccabe" +version = "0.6.1" +description = "McCabe checker, plugin for flake8" +category = "dev" optional = false python-versions = "*" -version = "0.6.1" [[package]] -category = "dev" -description = "Rolling backport of unittest.mock for all Pythons" name = "mock" +version = "4.0.3" +description = "Rolling backport of unittest.mock for all Pythons" +category = "dev" optional = false python-versions = ">=3.6" -version = "4.0.3" [package.extras] -build = ["twine", "wheel", "blurb"] -docs = ["sphinx"] test = ["pytest (<5.4)", "pytest-cov"] +docs = ["sphinx"] +build = ["twine", "wheel", "blurb"] [[package]] -category = "dev" -description = "Fake pymongo stub for testing simple MongoDB-dependent code" name = "mongomock" +version = "3.22.1" +description = "Fake pymongo stub for testing simple MongoDB-dependent code" +category = "dev" optional = false python-versions = "*" -version = "3.22.0" [package.dependencies] sentinels = "*" six = "*" [[package]] -category = "dev" -description = "More routines for operating on iterables, beyond itertools" name = "more-itertools" +version = "8.6.0" +description = "More routines for operating on iterables, beyond itertools" +category = "dev" optional = false python-versions = ">=3.5" -version = "8.6.0" [[package]] -category = "dev" -description = "A library that allows your python tests to easily mock out the boto library" name = "moto" +version = "1.3.16" +description = "A library that allows your python tests to easily mock out the boto library" +category = "dev" optional = false python-versions = "*" -version = "1.3.16" [package.dependencies] -Jinja2 = ">=2.10.1" -MarkupSafe = "<2.0" -PyYAML = ">=5.1" -aws-xray-sdk = ">=0.93,<0.96 || >0.96" -boto = ">=2.36.0" +more-itertools = "*" +jsondiff = ">=1.1.2" boto3 = ">=1.9.201" botocore = ">=1.12.201" -cfn-lint = ">=0.4.0" -cryptography = ">=2.3.0" -docker = ">=2.5.1" +python-jose = {version = ">=3.1.0,<4.0.0", extras = ["cryptography"]} +six = ">1.9" +Jinja2 = ">=2.10.1" +werkzeug = "*" ecdsa = "<0.15" -idna = ">=2.5,<3" -jsondiff = ">=1.1.2" mock = "*" -more-itertools = "*" -python-dateutil = ">=2.1,<3.0.0" -pytz = "*" -requests = ">=2.5" +PyYAML = ">=5.1" +cfn-lint = ">=0.4.0" responses = ">=0.9.0" -setuptools = "*" -six = ">1.9" -werkzeug = "*" -xmltodict = "*" +cryptography = ">=2.3.0" +MarkupSafe = "<2.0" +pytz = "*" +python-dateutil = ">=2.1,<3.0.0" zipp = "*" - -[package.dependencies.python-jose] -extras = ["cryptography"] -version = ">=3.1.0,<4.0.0" +docker = ">=2.5.1" +boto = ">=2.36.0" +aws-xray-sdk = ">=0.93,<0.96 || >0.96" +xmltodict = "*" +requests = ">=2.5" +idna = ">=2.5,<3" [package.extras] -acm = ["cryptography (>=2.3.0)"] -all = ["cryptography (>=2.3.0)", "PyYAML (>=5.1)", "python-jose (>=3.1.0,<4.0.0)", "ecdsa (<0.15)", "docker (>=2.5.1)", "jsondiff (>=1.1.2)", "aws-xray-sdk (>=0.93,<0.96 || >0.96)", "idna (>=2.5,<3)", "cfn-lint (>=0.4.0)", "sshpubkeys (>=3.1.0,<4.0)", "sshpubkeys (>=3.1.0)"] -awslambda = ["docker (>=2.5.1)"] -batch = ["docker (>=2.5.1)"] -cloudformation = ["PyYAML (>=5.1)", "cfn-lint (>=0.4.0)"] -cognitoidp = ["python-jose (>=3.1.0,<4.0.0)", "ecdsa (<0.15)"] -ec2 = ["cryptography (>=2.3.0)", "sshpubkeys (>=3.1.0,<4.0)", "sshpubkeys (>=3.1.0)"] iam = ["cryptography (>=2.3.0)"] +all = ["cryptography (>=2.3.0)", "PyYAML (>=5.1)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "ecdsa (<0.15)", "docker (>=2.5.1)", "jsondiff (>=1.1.2)", "aws-xray-sdk (>=0.93,!=0.96)", "idna (>=2.5,<3)", "cfn-lint (>=0.4.0)", "sshpubkeys (>=3.1.0,<4.0)", "sshpubkeys (>=3.1.0)"] iotdata = ["jsondiff (>=1.1.2)"] s3 = ["cryptography (>=2.3.0)"] -server = ["cryptography (>=2.3.0)", "PyYAML (>=5.1)", "python-jose (>=3.1.0,<4.0.0)", "ecdsa (<0.15)", "docker (>=2.5.1)", "jsondiff (>=1.1.2)", "aws-xray-sdk (>=0.93,<0.96 || >0.96)", "idna (>=2.5,<3)", "cfn-lint (>=0.4.0)", "flask", "sshpubkeys (>=3.1.0,<4.0)", "sshpubkeys (>=3.1.0)"] -xray = ["aws-xray-sdk (>=0.93,<0.96 || >0.96)"] +batch = ["docker (>=2.5.1)"] +cloudformation = ["PyYAML (>=5.1)", "cfn-lint (>=0.4.0)"] +awslambda = ["docker (>=2.5.1)"] +xray = ["aws-xray-sdk (>=0.93,!=0.96)"] +cognitoidp = ["python-jose[cryptography] (>=3.1.0,<4.0.0)", "ecdsa (<0.15)"] +acm = ["cryptography (>=2.3.0)"] +server = ["cryptography (>=2.3.0)", "PyYAML (>=5.1)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "ecdsa (<0.15)", "docker (>=2.5.1)", "jsondiff (>=1.1.2)", "aws-xray-sdk (>=0.93,!=0.96)", "idna (>=2.5,<3)", "cfn-lint (>=0.4.0)", "flask", "sshpubkeys (>=3.1.0,<4.0)", "sshpubkeys (>=3.1.0)"] +ec2 = ["cryptography (>=2.3.0)", "sshpubkeys (>=3.1.0,<4.0)", "sshpubkeys (>=3.1.0)"] [[package]] -category = "dev" -description = "AutoRest swagger generator Python client runtime." name = "msrest" +version = "0.6.19" +description = "AutoRest swagger generator Python client runtime." +category = "dev" optional = false python-versions = "*" -version = "0.6.19" [package.dependencies] +requests-oauthlib = ">=0.5.0" +requests = ">=2.16,<3.0" certifi = ">=2017.4.17" isodate = ">=0.6.0" -requests = ">=2.16,<3.0" -requests-oauthlib = ">=0.5.0" [package.extras] async = ["aiohttp (>=3.0)", "aiodns"] [[package]] -category = "main" -description = "multidict implementation" name = "multidict" +version = "4.7.6" +description = "multidict implementation" +category = "main" optional = false python-versions = ">=3.5" -version = "4.7.6" [[package]] -category = "main" -description = "Cython bindings for MurmurHash" name = "murmurhash" +version = "1.0.5" +description = "Cython bindings for MurmurHash" +category = "main" optional = true python-versions = "*" -version = "1.0.5" [[package]] -category = "dev" -description = "Optional static typing for Python" name = "mypy" +version = "0.790" +description = "Optional static typing for Python" +category = "dev" optional = false python-versions = ">=3.5" -version = "0.790" [package.dependencies] mypy-extensions = ">=0.4.3,<0.5.0" @@ -1493,529 +1429,519 @@ typing-extensions = ">=3.7.4" dmypy = ["psutil (>=4.0)"] [[package]] -category = "dev" -description = "Experimental type system extensions for programs checked with the mypy typechecker." name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "dev" optional = false python-versions = "*" -version = "0.4.3" [[package]] -category = "main" -description = "Python package for creating and manipulating graphs and networks" name = "networkx" +version = "2.5" +description = "Python package for creating and manipulating graphs and networks" +category = "main" optional = false python-versions = ">=3.6" -version = "2.5" [package.dependencies] decorator = ">=4.3.0" [package.extras] all = ["numpy", "scipy", "pandas", "matplotlib", "pygraphviz", "pydot", "pyyaml", "lxml", "pytest"] -gdal = ["gdal"] lxml = ["lxml"] -matplotlib = ["matplotlib"] -numpy = ["numpy"] -pandas = ["pandas"] pydot = ["pydot"] -pygraphviz = ["pygraphviz"] -pytest = ["pytest"] +numpy = ["numpy"] pyyaml = ["pyyaml"] +matplotlib = ["matplotlib"] scipy = ["scipy"] +pytest = ["pytest"] +pygraphviz = ["pygraphviz"] +pandas = ["pandas"] +gdal = ["gdal"] [[package]] -category = "dev" -description = "Useful container datatypes for Python 2 and 3." name = "nr.collections" +version = "0.0.1" +description = "Useful container datatypes for Python 2 and 3." +category = "dev" optional = false python-versions = "*" -version = "0.0.1" [package.dependencies] -"nr.metaclass" = ">=0.0.1,<0.1.0" six = ">=1.11.0,<2.0.0" +"nr.metaclass" = ">=0.0.1,<0.1.0" [package.extras] test = ["nr.fs (>=1.5.0,<2.0.0)"] [[package]] -category = "dev" -description = "Bind structured data directly to typed objects." name = "nr.databind.core" +version = "0.0.22" +description = "Bind structured data directly to typed objects." +category = "dev" optional = false python-versions = "*" -version = "0.0.22" [package.dependencies] -"nr.collections" = ">=0.0.1,<1.0.0" -"nr.interface" = ">=0.0.1,<0.1.0" "nr.pylang.utils" = ">=0.0.3,<0.1.0" +"nr.interface" = ">=0.0.1,<0.1.0" "nr.stream" = ">=0.0.1,<0.1.0" +"nr.collections" = ">=0.0.1,<1.0.0" [[package]] -category = "dev" -description = "Deserialize JSON into Python objects and reverse." name = "nr.databind.json" +version = "0.0.14" +description = "Deserialize JSON into Python objects and reverse." +category = "dev" optional = false python-versions = "*" -version = "0.0.14" [package.dependencies] -"nr.collections" = ">=0.0.1,<1.0.0" +"nr.pylang.utils" = ">=0.0.1,<0.1.0" "nr.databind.core" = ">=0.0.21,<0.1.0" "nr.interface" = ">=0.0.1,<0.1.0" "nr.parsing.date" = ">=0.1.0,<1.0.0" -"nr.pylang.utils" = ">=0.0.1,<0.1.0" +"nr.collections" = ">=0.0.1,<1.0.0" [[package]] -category = "dev" -description = "Filesystem and path manipulation tools." name = "nr.fs" +version = "1.6.3" +description = "Filesystem and path manipulation tools." +category = "dev" optional = false python-versions = "*" -version = "1.6.3" [package.dependencies] six = ">=1.11.0,<2.0.0" [[package]] -category = "dev" -description = "Interface definitions for Python." name = "nr.interface" +version = "0.0.4" +description = "Interface definitions for Python." +category = "dev" optional = false python-versions = "*" -version = "0.0.4" [package.dependencies] -"nr.collections" = ">=0.0.1,<1.0.0" -"nr.metaclass" = ">=0.0.1,<0.1.0" "nr.pylang.utils" = ">=0.0.1,<0.1.0" +"nr.metaclass" = ">=0.0.1,<0.1.0" six = ">=1.11.0,<2.0.0" +"nr.collections" = ">=0.0.1,<1.0.0" [[package]] -category = "dev" -description = "Metaclass utilities." name = "nr.metaclass" +version = "0.0.6" +description = "Metaclass utilities." +category = "dev" optional = false python-versions = "*" -version = "0.0.6" [[package]] -category = "dev" -description = "A simple and fast date parsing library. Uses dateutil for timezone offset support." name = "nr.parsing.date" +version = "0.4.4" +description = "A simple and fast date parsing library. Uses dateutil for timezone offset support." +category = "dev" optional = false python-versions = ">=3.5.0,<4.0.0" -version = "0.4.3" [package.dependencies] "nr.utils.re" = ">=0.1.0,<0.2.0" [[package]] -category = "dev" -description = "Package description here." name = "nr.pylang.utils" +version = "0.0.4" +description = "Package description here." +category = "dev" optional = false python-versions = ">=3.4.0,<4.0.0" -version = "0.0.4" [package.dependencies] "nr.collections" = ">=0.0.1,<1.0.0" [[package]] -category = "dev" -description = "Use iterators like Java streams." name = "nr.stream" +version = "0.0.5" +description = "Use iterators like Java streams." +category = "dev" optional = false python-versions = "*" -version = "0.0.5" [package.dependencies] -"nr.collections" = ">=0.0.1,<1.0.0" "nr.pylang.utils" = ">=0.0.1,<1.0.0" six = ">=1.11.0,<2.0.0" +"nr.collections" = ">=0.0.1,<1.0.0" [[package]] -category = "dev" -description = "Sumtypes in Python." name = "nr.sumtype" +version = "0.0.4" +description = "Sumtypes in Python." +category = "dev" optional = false python-versions = "*" -version = "0.0.4" [package.dependencies] -"nr.metaclass" = ">=0.0.4,<1.0.0" "nr.stream" = ">=0.0.2,<1.0.0" +"nr.metaclass" = ">=0.0.4,<1.0.0" [[package]] -category = "dev" -description = "This module provides some utility functions for applying regular expressions." name = "nr.utils.re" +version = "0.1.1" +description = "This module provides some utility functions for applying regular expressions." +category = "dev" optional = false python-versions = "*" -version = "0.1.1" [[package]] -category = "main" -description = "NumPy is the fundamental package for array computing with Python." name = "numpy" +version = "1.18.5" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" optional = false python-versions = ">=3.5" -version = "1.18.5" [[package]] -category = "main" -description = "OAuth 2.0 client library" name = "oauth2client" +version = "4.1.3" +description = "OAuth 2.0 client library" +category = "main" optional = false python-versions = "*" -version = "4.1.3" [package.dependencies] -httplib2 = ">=0.9.1" -pyasn1 = ">=0.1.7" pyasn1-modules = ">=0.0.5" -rsa = ">=3.1.4" six = ">=1.6.1" +pyasn1 = ">=0.1.7" +httplib2 = ">=0.9.1" +rsa = ">=3.1.4" [[package]] -category = "main" -description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" name = "oauthlib" +version = "3.1.0" +description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "3.1.0" [package.extras] -rsa = ["cryptography"] signals = ["blinker"] signedtoken = ["cryptography", "pyjwt (>=1.0.0)"] +rsa = ["cryptography"] [[package]] -category = "main" -description = "Optimizing numpys einsum function" name = "opt-einsum" +version = "3.3.0" +description = "Optimizing numpys einsum function" +category = "main" optional = false python-versions = ">=3.5" -version = "3.3.0" [package.dependencies] numpy = ">=1.7" [package.extras] -docs = ["sphinx (1.2.3)", "sphinxcontrib-napoleon", "sphinx-rtd-theme", "numpydoc"] +docs = ["sphinx (==1.2.3)", "sphinxcontrib-napoleon", "sphinx-rtd-theme", "numpydoc"] tests = ["pytest", "pytest-cov", "pytest-pep8"] [[package]] -category = "main" -description = "Core utilities for Python packages" name = "packaging" +version = "20.8" +description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "20.8" [package.dependencies] pyparsing = ">=2.0.2" [[package]] -category = "main" -description = "RabbitMQ Focused AMQP low-level library" name = "pamqp" +version = "2.3.0" +description = "RabbitMQ Focused AMQP low-level library" +category = "main" optional = false python-versions = "*" -version = "2.3.0" [package.extras] codegen = ["lxml"] [[package]] -category = "dev" -description = "Utility library for gitignore style pattern matching of file paths." name = "pathspec" +version = "0.8.1" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "0.8.1" [[package]] -category = "dev" -description = "Python Build Reasonableness" name = "pbr" +version = "5.5.1" +description = "Python Build Reasonableness" +category = "dev" optional = false python-versions = ">=2.6" -version = "5.5.1" [[package]] -category = "dev" -description = "Utilities to deal with pep440 versioning" name = "pep440-version-utils" +version = "0.3.0" +description = "Utilities to deal with pep440 versioning" +category = "dev" optional = false python-versions = ">=3.6,<4.0" -version = "0.3.0" [package.dependencies] packaging = ">=20.3,<21.0" [[package]] -category = "main" -description = "Python Imaging Library (Fork)" name = "pillow" +version = "8.1.0" +description = "Python Imaging Library (Fork)" +category = "main" optional = false python-versions = ">=3.6" -version = "8.1.0" [[package]] -category = "main" -description = "The smartest command line arguments parser in the world" name = "plac" +version = "1.1.3" +description = "The smartest command line arguments parser in the world" +category = "main" optional = true python-versions = "*" -version = "1.1.3" [[package]] -category = "dev" -description = "plugin and hook calling mechanisms for python" name = "pluggy" +version = "0.13.1" +description = "plugin and hook calling mechanisms for python" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.13.1" [package.dependencies] -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.12" +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} [package.extras] dev = ["pre-commit", "tox"] [[package]] -category = "main" -description = "Cython hash table that trusts the keys are pre-hashed" name = "preshed" +version = "3.0.5" +description = "Cython hash table that trusts the keys are pre-hashed" +category = "main" optional = true python-versions = "*" -version = "3.0.5" [package.dependencies] -cymem = ">=2.0.2,<2.1.0" murmurhash = ">=0.28.0,<1.1.0" +cymem = ">=2.0.2,<2.1.0" [[package]] -category = "main" -description = "Library for building powerful interactive command lines in Python" name = "prompt-toolkit" +version = "2.0.10" +description = "Library for building powerful interactive command lines in Python" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "2.0.10" [package.dependencies] six = ">=1.9.0" wcwidth = "*" [[package]] -category = "main" -description = "Protocol Buffers" name = "protobuf" +version = "3.14.0" +description = "Protocol Buffers" +category = "main" optional = false python-versions = "*" -version = "3.14.0" [package.dependencies] six = ">=1.9" [[package]] -category = "main" -description = "psycopg2 - Python-PostgreSQL Database Adapter" name = "psycopg2-binary" +version = "2.8.6" +description = "psycopg2 - Python-PostgreSQL Database Adapter" +category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" -version = "2.8.6" [[package]] -category = "dev" -description = "library with cross-python path, ini-parsing, io, code, log facilities" name = "py" +version = "1.10.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.10.0" [[package]] -category = "main" -description = "ASN.1 types and codecs" name = "pyasn1" +version = "0.4.8" +description = "ASN.1 types and codecs" +category = "main" optional = false python-versions = "*" -version = "0.4.8" [[package]] -category = "main" -description = "A collection of ASN.1-based protocols modules." name = "pyasn1-modules" +version = "0.2.8" +description = "A collection of ASN.1-based protocols modules." +category = "main" optional = false python-versions = "*" -version = "0.2.8" [package.dependencies] pyasn1 = ">=0.4.6,<0.5.0" [[package]] -category = "dev" -description = "Python style guide checker" name = "pycodestyle" +version = "2.6.0" +description = "Python style guide checker" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.6.0" [[package]] -category = "main" -description = "C parser in Python" name = "pycparser" +version = "2.20" +description = "C parser in Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.20" [[package]] -category = "dev" -description = "Create Python API documentation in Markdown format." name = "pydoc-markdown" +version = "3.9.0" +description = "Create Python API documentation in Markdown format." +category = "dev" optional = false python-versions = ">=3.5.0,<4.0.0" -version = "3.9.0" [package.dependencies] PyYAML = ">=5.3.0,<6.0.0" -click = ">=7.0.0,<8.0.0" docspec = ">=0.2.0,<0.3.0" -docspec-python = ">=0.0.7,<0.1.0" -"nr.collections" = ">=0.0.1,<0.1.0" -"nr.databind.core" = ">=0.0.18,<0.1.0" -"nr.databind.json" = ">=0.0.9,<0.1.0" "nr.fs" = ">=1.6.0,<2.0.0" -"nr.interface" = ">=0.0.3,<0.1.0" -requests = ">=2.23.0,<3.0.0" six = ">=1.11.0,<2.0.0" +"nr.collections" = ">=0.0.1,<0.1.0" +"nr.databind.core" = ">=0.0.18,<0.1.0" +docspec-python = ">=0.0.7,<0.1.0" toml = ">=0.10.1,<1.0.0" watchdog = ">=1.0.0,<2.0.0" +"nr.databind.json" = ">=0.0.9,<0.1.0" +requests = ">=2.23.0,<3.0.0" +click = ">=7.0.0,<8.0.0" +"nr.interface" = ">=0.0.3,<0.1.0" [[package]] -category = "dev" -description = "Python docstring style checker" name = "pydocstyle" +version = "5.1.1" +description = "Python docstring style checker" +category = "dev" optional = false python-versions = ">=3.5" -version = "5.1.1" [package.dependencies] snowballstemmer = "*" [[package]] -category = "main" -description = "Python interface to Graphviz's Dot" name = "pydot" +version = "1.4.1" +description = "Python interface to Graphviz's Dot" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.4.1" [package.dependencies] pyparsing = ">=2.1.4" [[package]] -category = "dev" -description = "passive checker of Python programs" name = "pyflakes" +version = "2.2.0" +description = "passive checker of Python programs" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.2.0" [[package]] -category = "main" -description = "JSON Web Token implementation in Python" name = "pyjwt" +version = "2.0.1" +description = "JSON Web Token implementation in Python" +category = "main" optional = false python-versions = ">=3.6" -version = "2.0.0" [package.dependencies] -[package.dependencies.cryptography] -optional = true -version = ">=3.3.1,<4.0.0" +cryptography = {version = ">=3.3.1,<4.0.0", optional = true, markers = "extra == \"crypto\""} [package.extras] -crypto = ["cryptography (>=3.3.1,<4.0.0)"] -dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1,<4.0.0)", "pytest (>=6.0.0,<7.0.0)", "coverage (5.0.4)", "mypy", "pre-commit"] docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["pytest (>=6.0.0,<7.0.0)", "coverage (5.0.4)"] +tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"] +crypto = ["cryptography (>=3.3.1,<4.0.0)"] +dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1,<4.0.0)", "pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)", "mypy", "pre-commit"] [[package]] -category = "main" -description = "Python lib/cli for JSON/YAML schema validation" name = "pykwalify" +version = "1.8.0" +description = "Python lib/cli for JSON/YAML schema validation" +category = "main" optional = false python-versions = "*" -version = "1.8.0" [package.dependencies] -docopt = ">=0.6.2" python-dateutil = ">=2.8.0" +docopt = ">=0.6.2" "ruamel.yaml" = ">=0.16.0" [[package]] -category = "main" -description = "Python driver for MongoDB " name = "pymongo" +version = "3.10.1" +description = "Python driver for MongoDB " +category = "main" optional = false python-versions = "*" -version = "3.10.1" [package.dependencies] -[package.dependencies.dnspython] -optional = true -version = ">=1.16.0,<1.17.0" - -[package.dependencies.ipaddress] -optional = true -version = "*" +dnspython = {version = ">=1.16.0,<1.17.0", optional = true, markers = "extra == \"srv\""} +ipaddress = {version = "*", optional = true, markers = "extra == \"tls\""} [package.extras] +tls = ["ipaddress"] encryption = ["pymongocrypt (<2.0.0)"] gssapi = ["pykerberos"] snappy = ["python-snappy"] srv = ["dnspython (>=1.16.0,<1.17.0)"] -tls = ["ipaddress"] zstd = ["zstandard"] [[package]] -category = "main" -description = "Python parsing module" name = "pyparsing" +version = "2.4.7" +description = "Python parsing module" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "2.4.7" [[package]] -category = "main" -description = "A python implmementation of GNU readline." -marker = "sys_platform == \"win32\"" name = "pyreadline" +version = "2.1" +description = "A python implmementation of GNU readline." +category = "main" optional = false python-versions = "*" -version = "2.1" [[package]] -category = "main" -description = "Persistent/Functional/Immutable data structures" name = "pyrsistent" +version = "0.17.3" +description = "Persistent/Functional/Immutable data structures" +category = "main" optional = false python-versions = ">=3.5" -version = "0.17.3" [[package]] -category = "main" -description = "Python Telegram bot api." name = "pytelegrambotapi" +version = "3.7.6" +description = "Python Telegram bot api." +category = "main" optional = false python-versions = "*" -version = "3.7.5" [package.dependencies] requests = "*" @@ -2025,38 +1951,35 @@ json = ["ujson"] redis = ["redis (>=3.4.1)"] [[package]] -category = "dev" -description = "pytest: simple powerful testing with Python" name = "pytest" +version = "5.4.3" +description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.5" -version = "5.4.3" [package.dependencies] -atomicwrites = ">=1.0" -attrs = ">=17.4.0" -colorama = "*" more-itertools = ">=4.0.0" -packaging = "*" -pluggy = ">=0.12,<1.0" py = ">=1.5.0" wcwidth = "*" - -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.12" +packaging = "*" +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +colorama = {version = "*", markers = "sys_platform == \"win32\""} +attrs = ">=17.4.0" +pluggy = ">=0.12,<1.0" +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} [package.extras] -checkqa-mypy = ["mypy (v0.761)"] +checkqa-mypy = ["mypy (==v0.761)"] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] [[package]] -category = "dev" -description = "Pytest support for asyncio." name = "pytest-asyncio" +version = "0.10.0" +description = "Pytest support for asyncio." +category = "dev" optional = false python-versions = ">= 3.5" -version = "0.10.0" [package.dependencies] pytest = ">=3.0.6" @@ -2065,135 +1988,132 @@ pytest = ">=3.0.6" testing = ["async-generator (>=1.3)", "coverage", "hypothesis (>=3.64)"] [[package]] -category = "dev" -description = "Pytest plugin for measuring coverage." name = "pytest-cov" +version = "2.11.1" +description = "Pytest plugin for measuring coverage." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "2.10.1" [package.dependencies] -coverage = ">=4.4" pytest = ">=4.6" +coverage = ">=5.2.1" [package.extras] -testing = ["fields", "hunter", "process-tests (2.0.2)", "six", "pytest-xdist", "virtualenv"] +testing = ["fields", "hunter", "process-tests (==2.0.2)", "six", "pytest-xdist", "virtualenv"] [[package]] -category = "dev" -description = "run tests in isolated forked subprocesses" name = "pytest-forked" +version = "1.3.0" +description = "run tests in isolated forked subprocesses" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "1.3.0" [package.dependencies] py = "*" pytest = ">=3.10" [[package]] -category = "dev" -description = "py.test plugin to test server connections locally." name = "pytest-localserver" +version = "0.5.0" +description = "py.test plugin to test server connections locally." +category = "dev" optional = false python-versions = "*" -version = "0.5.0" [package.dependencies] werkzeug = ">=0.10" [[package]] -category = "dev" -description = "a pytest plugin for Sanic" name = "pytest-sanic" +version = "1.6.2" +description = "a pytest plugin for Sanic" +category = "dev" optional = false python-versions = ">=3.6,<4.0" -version = "1.6.2" [package.dependencies] -aiohttp = ">=3.6.2,<4.0.0" -async_generator = ">=1.10,<2.0" pytest = ">=5.2" +async_generator = ">=1.10,<2.0" +aiohttp = ">=3.6.2,<4.0.0" [[package]] -category = "dev" -description = "py.test plugin to abort hanging tests" name = "pytest-timeout" +version = "1.4.2" +description = "py.test plugin to abort hanging tests" +category = "dev" optional = false python-versions = "*" -version = "1.4.2" [package.dependencies] pytest = ">=3.6.0" [[package]] -category = "dev" -description = "pytest xdist plugin for distributed testing and loop-on-failing modes" name = "pytest-xdist" +version = "1.34.0" +description = "pytest xdist plugin for distributed testing and loop-on-failing modes" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "1.34.0" [package.dependencies] +six = "*" execnet = ">=1.1" -pytest = ">=4.4.0" pytest-forked = "*" -six = "*" +pytest = ">=4.4.0" [package.extras] testing = ["filelock"] [[package]] -category = "main" -description = "Python binding for CRFsuite" name = "python-crfsuite" -optional = false -python-versions = "*" version = "0.9.7" +description = "Python binding for CRFsuite" +category = "main" +optional = false +python-versions = "*" [[package]] -category = "main" -description = "Extensions to the standard Python datetime module" name = "python-dateutil" +version = "2.8.1" +description = "Extensions to the standard Python datetime module" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -version = "2.8.1" [package.dependencies] six = ">=1.5" [[package]] -category = "main" -description = "Engine.IO server" name = "python-engineio" +version = "3.13.2" +description = "Engine.IO server" +category = "main" optional = false python-versions = "*" -version = "3.13.2" [package.dependencies] six = ">=1.9.0" [package.extras] -asyncio_client = ["aiohttp (>=3.4)"] client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] +asyncio_client = ["aiohttp (>=3.4)"] [[package]] -category = "dev" -description = "JOSE implementation in Python" name = "python-jose" +version = "3.2.0" +description = "JOSE implementation in Python" +category = "dev" optional = false python-versions = "*" -version = "3.2.0" [package.dependencies] -ecdsa = "<0.15" +six = "<2.0" pyasn1 = "*" +ecdsa = "<0.15" +cryptography = {version = "*", optional = true, markers = "extra == \"cryptography\""} rsa = "*" -six = "<2.0" - -[package.dependencies.cryptography] -optional = true -version = "*" [package.extras] cryptography = ["cryptography"] @@ -2201,53 +2121,52 @@ pycrypto = ["pycrypto (>=2.6.0,<2.7.0)", "pyasn1"] pycryptodome = ["pycryptodome (>=3.3.1,<4.0.0)", "pyasn1"] [[package]] -category = "main" -description = "Socket.IO server" name = "python-socketio" +version = "4.6.1" +description = "Socket.IO server" +category = "main" optional = false python-versions = "*" -version = "4.6.1" [package.dependencies] -python-engineio = ">=3.13.0,<4" six = ">=1.9.0" +python-engineio = ">=3.13.0,<4" [package.extras] -asyncio_client = ["aiohttp (>=3.4)", "websockets (>=7.0)"] client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] +asyncio_client = ["aiohttp (>=3.4)", "websockets (>=7.0)"] [[package]] -category = "main" -description = "World timezone definitions, modern and historical" name = "pytz" +version = "2020.5" +description = "World timezone definitions, modern and historical" +category = "main" optional = false python-versions = "*" -version = "2020.5" [[package]] -category = "dev" -description = "Python for Window Extensions" -marker = "sys_platform == \"win32\"" name = "pywin32" +version = "227" +description = "Python for Window Extensions" +category = "dev" optional = false python-versions = "*" -version = "227" [[package]] -category = "dev" -description = "YAML parser and emitter for Python" name = "pyyaml" +version = "5.4.1" +description = "YAML parser and emitter for Python" +category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "5.3.1" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [[package]] -category = "main" -description = "Python library to build pretty command line user prompts ⭐️" name = "questionary" +version = "1.5.2" +description = "Python library to build pretty command line user prompts ⭐️" +category = "main" optional = false python-versions = "*" -version = "1.5.2" [package.dependencies] prompt-toolkit = ">=2.0,<4.0" @@ -2256,89 +2175,89 @@ prompt-toolkit = ">=2.0,<4.0" test = ["pytest", "pytest-pycodestyle", "pytest-cov", "coveralls"] [[package]] -category = "main" -description = "Open source machine learning framework to automate text- and voice-based conversations: NLU, dialogue management, connect to Slack, Facebook, and more - Create chatbots and voice assistants" name = "rasa-sdk" +version = "2.2.0" +description = "Open source machine learning framework to automate text- and voice-based conversations: NLU, dialogue management, connect to Slack, Facebook, and more - Create chatbots and voice assistants" +category = "main" optional = false python-versions = ">=3.6,<3.9" -version = "2.2.0" [package.dependencies] -coloredlogs = ">=10,<15" requests = ">=2.23,<3.0" -sanic = ">=19.12.2,<21.0.0" +coloredlogs = ">=10,<15" sanic-cors = ">=0.10.0,<0.11.0" +sanic = ">=19.12.2,<21.0.0" [[package]] -category = "main" -description = "Python client for Redis key-value store" name = "redis" +version = "3.5.3" +description = "Python client for Redis key-value store" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "3.5.3" [package.extras] hiredis = ["hiredis (>=0.1.3)"] [[package]] -category = "main" -description = "Alternative regular expression module, to replace re." name = "regex" +version = "2020.9.27" +description = "Alternative regular expression module, to replace re." +category = "main" optional = false python-versions = "*" -version = "2020.9.27" [[package]] -category = "main" -description = "Python HTTP for Humans." name = "requests" +version = "2.25.1" +description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "2.25.1" [package.dependencies] +idna = ">=2.5,<3" certifi = ">=2017.4.17" chardet = ">=3.0.2,<5" -idna = ">=2.5,<3" urllib3 = ">=1.21.1,<1.27" [package.extras] security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] [[package]] -category = "main" -description = "OAuthlib authentication support for Requests." name = "requests-oauthlib" +version = "1.3.0" +description = "OAuthlib authentication support for Requests." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.3.0" [package.dependencies] oauthlib = ">=3.0.0" requests = ">=2.0.0" [package.extras] -rsa = ["oauthlib (>=3.0.0)"] +rsa = ["oauthlib[signedtoken] (>=3.0.0)"] [[package]] -category = "main" -description = "A utility belt for advanced users of python-requests" name = "requests-toolbelt" +version = "0.9.1" +description = "A utility belt for advanced users of python-requests" +category = "main" optional = false python-versions = "*" -version = "0.9.1" [package.dependencies] requests = ">=2.0.1,<3.0.0" [[package]] -category = "dev" -description = "A utility library for mocking out the `requests` Python library." name = "responses" +version = "0.10.16" +description = "A utility library for mocking out the `requests` Python library." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.10.16" [package.dependencies] requests = ">=2.0" @@ -2349,256 +2268,252 @@ urllib3 = ">=1.25.10" tests = ["coverage (>=3.7.1,<5.0.0)", "pytest-cov", "pytest-localserver", "flake8", "pytest (>=4.6,<5.0)", "pytest (>=4.6)"] [[package]] -category = "main" -description = "Validating URI References per RFC 3986" name = "rfc3986" +version = "1.4.0" +description = "Validating URI References per RFC 3986" +category = "main" optional = false python-versions = "*" -version = "1.4.0" [package.extras] idna2008 = ["idna"] [[package]] -category = "main" -description = "Python API wrapper for Rocket.Chat" name = "rocketchat-api" +version = "1.9.1" +description = "Python API wrapper for Rocket.Chat" +category = "main" optional = false python-versions = "*" -version = "1.9.1" [package.dependencies] requests = "*" [[package]] -category = "main" -description = "Pure-Python RSA implementation" name = "rsa" +version = "4.7" +description = "Pure-Python RSA implementation" +category = "main" optional = false python-versions = ">=3.5, <4" -version = "4.6" [package.dependencies] pyasn1 = ">=0.1.3" [[package]] -category = "main" -description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" name = "ruamel.yaml" +version = "0.16.12" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "main" optional = false python-versions = "*" -version = "0.16.12" [package.dependencies] -[package.dependencies."ruamel.yaml.clib"] -python = "<3.9" -version = ">=0.1.2" +"ruamel.yaml.clib" = {version = ">=0.1.2", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.9\""} [package.extras] docs = ["ryd"] jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] [[package]] -category = "main" -description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" -marker = "platform_python_implementation == \"CPython\" and python_version < \"3.9\"" name = "ruamel.yaml.clib" +version = "0.2.2" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "main" optional = false python-versions = "*" -version = "0.2.2" [[package]] -category = "main" -description = "An Amazon S3 Transfer Manager" name = "s3transfer" +version = "0.3.4" +description = "An Amazon S3 Transfer Manager" +category = "main" optional = false python-versions = "*" -version = "0.3.3" [package.dependencies] botocore = ">=1.12.36,<2.0a.0" [[package]] -category = "main" -description = "SacreMoses" name = "sacremoses" +version = "0.0.43" +description = "SacreMoses" +category = "main" optional = true python-versions = "*" -version = "0.0.43" [package.dependencies] -click = "*" joblib = "*" regex = "*" six = "*" tqdm = "*" +click = "*" [[package]] -category = "main" -description = "A web server and web framework that's written to go fast. Build fast. Run fast." name = "sanic" +version = "20.3.0" +description = "A web server and web framework that's written to go fast. Build fast. Run fast." +category = "main" optional = false python-versions = ">=3.6" -version = "20.3.0" [package.dependencies] -aiofiles = ">=0.3.0" +uvloop = {version = ">=0.5.3", markers = "sys_platform != \"win32\" and implementation_name == \"cpython\""} +ujson = {version = ">=1.35", markers = "sys_platform != \"win32\" and implementation_name == \"cpython\""} httptools = ">=0.0.10" -httpx = "0.11.1" +aiofiles = ">=0.3.0" multidict = ">=4.0,<5.0" -ujson = ">=1.35" -uvloop = ">=0.5.3" +httpx = "0.11.1" websockets = ">=7.0,<9.0" [package.extras] -all = ["pytest (5.2.1)", "multidict (>=4.0,<5.0)", "gunicorn", "pytest-cov", "httpcore (0.3.0)", "beautifulsoup4", "pytest-sanic", "pytest-sugar", "pytest-benchmark", "aiofiles", "tox", "black", "flake8", "bandit", "towncrier", "sphinx (>=2.1.2)", "sphinx-rtd-theme", "recommonmark (>=0.5.0)", "docutils", "pygments", "uvloop (>=0.5.3)", "ujson (>=1.35)"] -dev = ["pytest (5.2.1)", "multidict (>=4.0,<5.0)", "gunicorn", "pytest-cov", "httpcore (0.3.0)", "beautifulsoup4", "pytest-sanic", "pytest-sugar", "pytest-benchmark", "aiofiles", "tox", "black", "flake8", "bandit", "towncrier", "uvloop (>=0.5.3)", "ujson (>=1.35)"] +test = ["pytest (==5.2.1)", "multidict (>=4.0,<5.0)", "gunicorn", "pytest-cov", "httpcore (==0.3.0)", "beautifulsoup4", "pytest-sanic", "pytest-sugar", "pytest-benchmark", "uvloop (>=0.5.3)", "ujson (>=1.35)"] docs = ["sphinx (>=2.1.2)", "sphinx-rtd-theme", "recommonmark (>=0.5.0)", "docutils", "pygments"] -test = ["pytest (5.2.1)", "multidict (>=4.0,<5.0)", "gunicorn", "pytest-cov", "httpcore (0.3.0)", "beautifulsoup4", "pytest-sanic", "pytest-sugar", "pytest-benchmark", "uvloop (>=0.5.3)", "ujson (>=1.35)"] +all = ["pytest (==5.2.1)", "multidict (>=4.0,<5.0)", "gunicorn", "pytest-cov", "httpcore (==0.3.0)", "beautifulsoup4", "pytest-sanic", "pytest-sugar", "pytest-benchmark", "aiofiles", "tox", "black", "flake8", "bandit", "towncrier", "sphinx (>=2.1.2)", "sphinx-rtd-theme", "recommonmark (>=0.5.0)", "docutils", "pygments", "uvloop (>=0.5.3)", "ujson (>=1.35)"] +dev = ["pytest (==5.2.1)", "multidict (>=4.0,<5.0)", "gunicorn", "pytest-cov", "httpcore (==0.3.0)", "beautifulsoup4", "pytest-sanic", "pytest-sugar", "pytest-benchmark", "aiofiles", "tox", "black", "flake8", "bandit", "towncrier", "uvloop (>=0.5.3)", "ujson (>=1.35)"] [[package]] -category = "main" -description = "A Sanic extension adding a decorator for CORS support. Based on flask-cors by Cory Dolphin." name = "sanic-cors" +version = "0.10.0.post3" +description = "A Sanic extension adding a decorator for CORS support. Based on flask-cors by Cory Dolphin." +category = "main" optional = false python-versions = "*" -version = "0.10.0.post3" [package.dependencies] -sanic = ">=18.12.0" sanic-plugins-framework = ">=0.9.0" +sanic = ">=18.12.0" [[package]] -category = "main" -description = "JWT oauth flow for Sanic" name = "sanic-jwt" +version = "1.4.1" +description = "JWT oauth flow for Sanic" +category = "main" optional = false python-versions = "*" -version = "1.4.1" [package.dependencies] pyjwt = "*" [package.extras] -all = ["sphinx", "sphinx"] docs = ["sphinx"] +all = ["sphinx", "sphinx"] [[package]] -category = "main" -description = "Doing all of the boilerplate to create a Sanic Plugin, so you don't have to." name = "sanic-plugins-framework" +version = "0.9.5" +description = "Doing all of the boilerplate to create a Sanic Plugin, so you don't have to." +category = "main" optional = false python-versions = "*" -version = "0.9.4.post1" [package.dependencies] -sanic = ">=18.12.0" -setuptools = ">=40.0" +sanic = ">=18.12.0,<21" [[package]] -category = "main" -description = "A set of python modules for machine learning and data mining" name = "scikit-learn" +version = "0.24.1" +description = "A set of python modules for machine learning and data mining" +category = "main" optional = false python-versions = ">=3.6" -version = "0.24.1" [package.dependencies] joblib = ">=0.11" -numpy = ">=1.13.3" -scipy = ">=0.19.1" threadpoolctl = ">=2.0.0" +scipy = ">=0.19.1" +numpy = ">=1.13.3" [package.extras] -benchmark = ["matplotlib (>=2.1.1)", "pandas (>=0.25.0)", "memory-profiler (>=0.57.0)"] docs = ["matplotlib (>=2.1.1)", "scikit-image (>=0.13)", "pandas (>=0.25.0)", "seaborn (>=0.9.0)", "memory-profiler (>=0.57.0)", "sphinx (>=3.2.0)", "sphinx-gallery (>=0.7.0)", "numpydoc (>=1.0.0)", "Pillow (>=7.1.2)", "sphinx-prompt (>=1.3.0)"] -examples = ["matplotlib (>=2.1.1)", "scikit-image (>=0.13)", "pandas (>=0.25.0)", "seaborn (>=0.9.0)"] tests = ["matplotlib (>=2.1.1)", "scikit-image (>=0.13)", "pandas (>=0.25.0)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "flake8 (>=3.8.2)", "mypy (>=0.770)", "pyamg (>=4.0.0)"] +benchmark = ["matplotlib (>=2.1.1)", "pandas (>=0.25.0)", "memory-profiler (>=0.57.0)"] +examples = ["matplotlib (>=2.1.1)", "scikit-image (>=0.13)", "pandas (>=0.25.0)", "seaborn (>=0.9.0)"] [[package]] -category = "main" -description = "SciPy: Scientific Library for Python" name = "scipy" +version = "1.5.4" +description = "SciPy: Scientific Library for Python" +category = "main" optional = false python-versions = ">=3.6" -version = "1.5.4" [package.dependencies] numpy = ">=1.14.5" [[package]] -category = "main" -description = "SentencePiece python wrapper" name = "sentencepiece" +version = "0.1.95" +description = "SentencePiece python wrapper" +category = "main" optional = true python-versions = "*" -version = "0.1.94" [[package]] -category = "dev" -description = "Various objects to denote special meanings in python" name = "sentinels" +version = "1.0.0" +description = "Various objects to denote special meanings in python" +category = "dev" optional = false python-versions = "*" -version = "1.0.0" [[package]] -category = "main" -description = "Python client for Sentry (https://sentry.io)" name = "sentry-sdk" +version = "0.19.5" +description = "Python client for Sentry (https://sentry.io)" +category = "main" optional = false python-versions = "*" -version = "0.19.5" [package.dependencies] certifi = "*" urllib3 = ">=1.10.0" [package.extras] -aiohttp = ["aiohttp (>=3.5)"] -beam = ["apache-beam (>=2.12)"] -bottle = ["bottle (>=0.12.13)"] celery = ["celery (>=3)"] -chalice = ["chalice (>=1.16.0)"] -django = ["django (>=1.8)"] -falcon = ["falcon (>=1.4)"] +sqlalchemy = ["sqlalchemy (>=1.2)"] +rq = ["rq (>=0.6)"] +aiohttp = ["aiohttp (>=3.5)"] +pyspark = ["pyspark (>=2.4.4)"] flask = ["flask (>=0.11)", "blinker (>=1.1)"] pure_eval = ["pure-eval", "executing", "asttokens"] -pyspark = ["pyspark (>=2.4.4)"] -rq = ["rq (>=0.6)"] -sanic = ["sanic (>=0.8)"] -sqlalchemy = ["sqlalchemy (>=1.2)"] +django = ["django (>=1.8)"] +chalice = ["chalice (>=1.16.0)"] +beam = ["apache-beam (>=2.12)"] tornado = ["tornado (>=5)"] +bottle = ["bottle (>=0.12.13)"] +sanic = ["sanic (>=0.8)"] +falcon = ["falcon (>=1.4)"] [[package]] -category = "main" -description = "Python 2 and 3 compatibility utilities" name = "six" +version = "1.15.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -version = "1.15.0" [[package]] -category = "main" -description = "CRFsuite (python-crfsuite) wrapper which provides interface simlar to scikit-learn" name = "sklearn-crfsuite" +version = "0.3.6" +description = "CRFsuite (python-crfsuite) wrapper which provides interface simlar to scikit-learn" +category = "main" optional = false python-versions = "*" -version = "0.3.6" [package.dependencies] -python-crfsuite = ">=0.8.3" +tqdm = ">=2.0" six = "*" +python-crfsuite = ">=0.8.3" tabulate = "*" -tqdm = ">=2.0" [[package]] -category = "main" -description = "Slack API clients for Web API and RTM API" name = "slackclient" +version = "2.9.3" +description = "Slack API clients for Web API and RTM API" +category = "main" optional = false python-versions = ">=3.6.0" -version = "2.9.3" [package.dependencies] aiohttp = ">3.5.2,<4.0.0" @@ -2607,633 +2522,600 @@ aiohttp = ">3.5.2,<4.0.0" optional = ["aiodns (>1.0)"] [[package]] -category = "dev" -description = "A pure Python implementation of a sliding window memory map manager" name = "smmap" +version = "3.0.5" +description = "A pure Python implementation of a sliding window memory map manager" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "3.0.4" [[package]] -category = "main" -description = "Sniff out which async library your code is running under" name = "sniffio" +version = "1.2.0" +description = "Sniff out which async library your code is running under" +category = "main" optional = false python-versions = ">=3.5" -version = "1.2.0" [package.dependencies] -[package.dependencies.contextvars] -python = "<3.7" -version = ">=2.1" +contextvars = {version = ">=2.1", markers = "python_version < \"3.7\""} [[package]] -category = "dev" -description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms." name = "snowballstemmer" +version = "2.1.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" optional = false python-versions = "*" -version = "2.0.0" [[package]] -category = "dev" -description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" name = "sortedcontainers" +version = "2.3.0" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +category = "dev" optional = false python-versions = "*" -version = "2.3.0" [[package]] -category = "main" -description = "Industrial-strength Natural Language Processing (NLP) in Python" name = "spacy" +version = "2.2.4" +description = "Industrial-strength Natural Language Processing (NLP) in Python" +category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" -version = "2.2.4" [package.dependencies] -blis = ">=0.4.0,<0.5.0" +tqdm = ">=4.38.0,<5.0.0" +preshed = ">=3.0.2,<3.1.0" catalogue = ">=0.0.7,<1.1.0" -cymem = ">=2.0.2,<2.1.0" +wasabi = ">=0.4.0,<1.1.0" +blis = ">=0.4.0,<0.5.0" +srsly = ">=1.0.2,<1.1.0" +thinc = "7.4.0" +plac = ">=0.9.6,<1.2.0" murmurhash = ">=0.28.0,<1.1.0" numpy = ">=1.15.0" -plac = ">=0.9.6,<1.2.0" -preshed = ">=3.0.2,<3.1.0" requests = ">=2.13.0,<3.0.0" -setuptools = "*" -srsly = ">=1.0.2,<1.1.0" -thinc = "7.4.0" -tqdm = ">=4.38.0,<5.0.0" -wasabi = ">=0.4.0,<1.1.0" +cymem = ">=2.0.2,<2.1.0" [package.extras] -cuda = ["cupy (>=5.0.0b4)"] -cuda100 = ["cupy-cuda100 (>=5.0.0b4)"] -cuda80 = ["cupy-cuda80 (>=5.0.0b4)"] +lookups = ["spacy-lookups-data (>=0.0.5,<0.2.0)"] cuda90 = ["cupy-cuda90 (>=5.0.0b4)"] cuda91 = ["cupy-cuda91 (>=5.0.0b4)"] cuda92 = ["cupy-cuda92 (>=5.0.0b4)"] -ja = ["fugashi (>=0.1.3)"] -ko = ["natto-py (0.9.0)"] -lookups = ["spacy-lookups-data (>=0.0.5,<0.2.0)"] +ko = ["natto-py (==0.9.0)"] +cuda = ["cupy (>=5.0.0b4)"] th = ["pythainlp (>=2.0)"] +cuda80 = ["cupy-cuda80 (>=5.0.0b4)"] +ja = ["fugashi (>=0.1.3)"] +cuda100 = ["cupy-cuda100 (>=5.0.0b4)"] [[package]] -category = "main" -description = "Database Abstraction Library" name = "sqlalchemy" +version = "1.3.22" +description = "Database Abstraction Library" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.3.22" [package.extras] -mssql = ["pyodbc"] -mssql_pymssql = ["pymssql"] -mssql_pyodbc = ["pyodbc"] -mysql = ["mysqlclient"] -oracle = ["cx-oracle"] -postgresql = ["psycopg2"] postgresql_pg8000 = ["pg8000"] -postgresql_psycopg2binary = ["psycopg2-binary"] +postgresql = ["psycopg2"] postgresql_psycopg2cffi = ["psycopg2cffi"] pymysql = ["pymysql"] +mssql_pymssql = ["pymssql"] +postgresql_psycopg2binary = ["psycopg2-binary"] +mysql = ["mysqlclient"] +oracle = ["cx-oracle"] +mssql = ["pyodbc"] +mssql_pyodbc = ["pyodbc"] [[package]] -category = "main" -description = "Modern high-performance serialization utilities for Python" name = "srsly" +version = "1.0.5" +description = "Modern high-performance serialization utilities for Python" +category = "main" optional = true python-versions = "*" -version = "1.0.5" [[package]] -category = "dev" -description = "Manage dynamic plugins for Python applications" name = "stevedore" +version = "3.3.0" +description = "Manage dynamic plugins for Python applications" +category = "dev" optional = false python-versions = ">=3.6" -version = "3.3.0" [package.dependencies] +importlib-metadata = {version = ">=1.7.0", markers = "python_version < \"3.8\""} pbr = ">=2.0.0,<2.1.0 || >2.1.0" -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=1.7.0" - [[package]] -category = "main" -description = "Pretty-print tabular data" name = "tabulate" +version = "0.8.7" +description = "Pretty-print tabular data" +category = "main" optional = false python-versions = "*" -version = "0.8.7" [package.extras] widechars = ["wcwidth"] [[package]] -category = "main" -description = "TensorBoard lets you watch Tensors Flow" name = "tensorboard" +version = "2.4.1" +description = "TensorBoard lets you watch Tensors Flow" +category = "main" optional = false python-versions = ">= 2.7, != 3.0.*, != 3.1.*" -version = "2.4.0" [package.dependencies] -absl-py = ">=0.4" -google-auth = ">=1.6.3,<2" -google-auth-oauthlib = ">=0.4.1,<0.5" -grpcio = ">=1.24.3" markdown = ">=2.6.8" -numpy = ">=1.12.0" protobuf = ">=3.6.0" -requests = ">=2.21.0,<3" -setuptools = ">=41.0.0" -six = ">=1.10.0" tensorboard-plugin-wit = ">=1.6.0" +six = ">=1.10.0" +grpcio = ">=1.24.3" +absl-py = ">=0.4" werkzeug = ">=0.11.15" - -[package.dependencies.wheel] -python = ">=3" -version = ">=0.26" +requests = ">=2.21.0,<3" +google-auth = ">=1.6.3,<2" +numpy = ">=1.12.0" +google-auth-oauthlib = ">=0.4.1,<0.5" [[package]] -category = "main" -description = "What-If Tool TensorBoard plugin." name = "tensorboard-plugin-wit" +version = "1.8.0" +description = "What-If Tool TensorBoard plugin." +category = "main" optional = false python-versions = "*" -version = "1.7.0" [[package]] -category = "main" -description = "TensorFlow is an open source machine learning framework for everyone." name = "tensorflow" +version = "2.3.2" +description = "TensorFlow is an open source machine learning framework for everyone." +category = "main" optional = false python-versions = "*" -version = "2.3.2" [package.dependencies] -absl-py = ">=0.7.0" -astunparse = "1.6.3" -gast = "0.3.3" -google-pasta = ">=0.1.8" -grpcio = ">=1.8.6" -h5py = ">=2.10.0,<2.11.0" keras-preprocessing = ">=1.1.1,<1.2" -numpy = ">=1.16.0,<1.19.0" -opt-einsum = ">=2.3.2" +google-pasta = ">=0.1.8" protobuf = ">=3.9.2" -six = ">=1.12.0" -tensorboard = ">=2.3.0,<3" tensorflow-estimator = ">=2.3.0,<2.4.0" +opt-einsum = ">=2.3.2" +astunparse = "1.6.3" +grpcio = ">=1.8.6" +absl-py = ">=0.7.0" +six = ">=1.12.0" termcolor = ">=1.1.0" -wheel = ">=0.26" +tensorboard = ">=2.3.0,<3" +h5py = ">=2.10.0,<2.11.0" +numpy = ">=1.16.0,<1.19.0" +gast = "0.3.3" wrapt = ">=1.11.1" [[package]] -category = "main" -description = "TensorFlow Addons." name = "tensorflow-addons" +version = "0.12.0" +description = "TensorFlow Addons." +category = "main" optional = false python-versions = "*" -version = "0.12.0" [package.dependencies] typeguard = ">=2.7" [package.extras] +tensorflow-gpu = ["tensorflow-gpu (>=2.3.0,<2.5.0)"] tensorflow = ["tensorflow (>=2.3.0,<2.5.0)"] tensorflow-cpu = ["tensorflow-cpu (>=2.3.0,<2.5.0)"] -tensorflow-gpu = ["tensorflow-gpu (>=2.3.0,<2.5.0)"] [[package]] -category = "main" -description = "TensorFlow Estimator." name = "tensorflow-estimator" +version = "2.3.0" +description = "TensorFlow Estimator." +category = "main" optional = false python-versions = "*" -version = "2.3.0" [[package]] -category = "main" -description = "TensorFlow Hub is a library to foster the publication, discovery, and consumption of reusable parts of machine learning models." name = "tensorflow-hub" +version = "0.9.0" +description = "TensorFlow Hub is a library to foster the publication, discovery, and consumption of reusable parts of machine learning models." +category = "main" optional = false python-versions = "*" -version = "0.9.0" [package.dependencies] +six = ">=1.12.0" numpy = ">=1.12.0" protobuf = ">=3.8.0" -six = ">=1.12.0" [package.extras] -make_image_classifier = ["keras-preprocessing"] make_nearest_neighbour_index = ["apache-beam", "annoy"] +make_image_classifier = ["keras-preprocessing"] [[package]] -category = "main" -description = "Probabilistic modeling and statistical inference in TensorFlow" name = "tensorflow-probability" +version = "0.11.1" +description = "Probabilistic modeling and statistical inference in TensorFlow" +category = "main" optional = false python-versions = "*" -version = "0.11.1" [package.dependencies] cloudpickle = ">=1.3" -decorator = "*" +six = ">=1.10.0" dm-tree = "*" -gast = ">=0.3.2" numpy = ">=1.13.3" -six = ">=1.10.0" +gast = ">=0.3.2" +decorator = "*" [package.extras] -jax = ["jax (0.1.74)", "jaxlib (0.1.52)"] tfds = ["tensorflow-datasets (>=2.2.0)"] +jax = ["jax (==0.1.74)", "jaxlib (==0.1.52)"] -[[package]] -category = "main" -description = "TF.Text is a TensorFlow library of text related ops, modules, and subgraphs." -marker = "sys_platform != \"win32\"" +[[package]] name = "tensorflow-text" +version = "2.3.0" +description = "TF.Text is a TensorFlow library of text related ops, modules, and subgraphs." +category = "main" optional = false python-versions = "*" -version = "2.3.0" [package.dependencies] tensorflow = ">=2.3.0,<2.4" [package.extras] -tensorflow_gpu = ["tensorflow-gpu (>=2.1.0,<2.2)"] tests = ["absl-py", "pytest"] +tensorflow_gpu = ["tensorflow-gpu (>=2.1.0,<2.2)"] [[package]] -category = "main" -description = "ANSII Color formatting for output in terminal." name = "termcolor" +version = "1.1.0" +description = "ANSII Color formatting for output in terminal." +category = "main" optional = false python-versions = "*" -version = "1.1.0" [[package]] -category = "main" -description = "Generate simple tables in terminals from a nested list of strings." name = "terminaltables" +version = "3.1.0" +description = "Generate simple tables in terminals from a nested list of strings." +category = "main" optional = false python-versions = "*" -version = "3.1.0" [[package]] -category = "main" -description = "Practical Machine Learning for NLP" name = "thinc" +version = "7.4.0" +description = "Practical Machine Learning for NLP" +category = "main" optional = true python-versions = "*" -version = "7.4.0" [package.dependencies] -blis = ">=0.4.0,<0.5.0" +tqdm = ">=4.10.0,<5.0.0" +preshed = ">=1.0.1,<3.1.0" catalogue = ">=0.0.7,<1.1.0" -cymem = ">=2.0.2,<2.1.0" +wasabi = ">=0.0.9,<1.1.0" +blis = ">=0.4.0,<0.5.0" +srsly = ">=0.0.6,<1.1.0" +plac = ">=0.9.6,<1.2.0" murmurhash = ">=0.28.0,<1.1.0" numpy = ">=1.7.0" -plac = ">=0.9.6,<1.2.0" -preshed = ">=1.0.1,<3.1.0" -srsly = ">=0.0.6,<1.1.0" -tqdm = ">=4.10.0,<5.0.0" -wasabi = ">=0.0.9,<1.1.0" +cymem = ">=2.0.2,<2.1.0" [package.extras] -cuda = ["cupy (>=5.0.0b4)"] -cuda100 = ["cupy-cuda100 (>=5.0.0b4)"] -cuda101 = ["cupy-cuda101 (>=5.0.0b4)"] -cuda80 = ["cupy-cuda80 (>=5.0.0b4)"] cuda90 = ["cupy-cuda90 (>=5.0.0b4)"] cuda91 = ["cupy-cuda91 (>=5.0.0b4)"] cuda92 = ["cupy-cuda92 (>=5.0.0b4)"] +cuda101 = ["cupy-cuda101 (>=5.0.0b4)"] +cuda = ["cupy (>=5.0.0b4)"] +cuda80 = ["cupy-cuda80 (>=5.0.0b4)"] +cuda100 = ["cupy-cuda100 (>=5.0.0b4)"] [[package]] -category = "main" -description = "threadpoolctl" name = "threadpoolctl" +version = "2.1.0" +description = "threadpoolctl" +category = "main" optional = false python-versions = ">=3.5" -version = "2.1.0" [[package]] -category = "main" -description = "Fast and Customizable Tokenizers" name = "tokenizers" +version = "0.7.0" +description = "Fast and Customizable Tokenizers" +category = "main" optional = true python-versions = "*" -version = "0.7.0" [package.extras] testing = ["pytest"] [[package]] -category = "dev" -description = "Python Library for Tom's Obvious, Minimal Language" name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "0.10.2" [[package]] -category = "dev" -description = "Building newsfiles for your project." name = "towncrier" +version = "19.2.0" +description = "Building newsfiles for your project." +category = "dev" optional = false python-versions = "*" -version = "19.2.0" [package.dependencies] -Click = "*" +toml = "*" incremental = "*" jinja2 = "*" -toml = "*" +Click = "*" [[package]] -category = "main" -description = "Fast, Extensible Progress Meter" name = "tqdm" +version = "4.56.0" +description = "Fast, Extensible Progress Meter" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" -version = "4.56.0" [package.extras] -dev = ["py-make (>=0.1.0)", "twine", "wheel"] telegram = ["requests"] +dev = ["py-make (>=0.1.0)", "twine", "wheel"] [[package]] -category = "main" -description = "State-of-the-art Natural Language Processing for TensorFlow 2.0 and PyTorch" name = "transformers" +version = "2.11.0" +description = "State-of-the-art Natural Language Processing for TensorFlow 2.0 and PyTorch" +category = "main" optional = true python-versions = ">=3.6.0" -version = "2.11.0" [package.dependencies] +regex = "!=2019.12.17" +tqdm = ">=4.27" filelock = "*" -numpy = "*" +dataclasses = {version = "*", markers = "python_version < \"3.7\""} packaging = "*" -regex = "!=2019.12.17" -requests = "*" sacremoses = "*" sentencepiece = "*" tokenizers = "0.7.0" -tqdm = ">=4.27" - -[package.dependencies.dataclasses] -python = "<3.7" -version = "*" +requests = "*" +numpy = "*" [package.extras] all = ["pydantic", "uvicorn", "fastapi", "starlette", "tensorflow", "torch"] -dev = ["pytest", "pytest-xdist", "timeout-decorator", "black", "isort", "flake8", "mecab-python3", "scikit-learn", "tensorflow", "torch"] +serving = ["pydantic", "uvicorn", "fastapi", "starlette"] docs = ["recommonmark", "sphinx", "sphinx-markdown-tables", "sphinx-rtd-theme"] +torch = ["torch"] mecab = ["mecab-python3"] -quality = ["black", "isort", "flake8"] -serving = ["pydantic", "uvicorn", "fastapi", "starlette"] -sklearn = ["scikit-learn"] +dev = ["pytest", "pytest-xdist", "timeout-decorator", "black", "isort", "flake8", "mecab-python3", "scikit-learn", "tensorflow", "torch"] testing = ["pytest", "pytest-xdist", "timeout-decorator"] tf = ["tensorflow", "onnxconverter-common", "keras2onnx"] tf-cpu = ["tensorflow-cpu", "onnxconverter-common", "keras2onnx"] -torch = ["torch"] +quality = ["black", "isort", "flake8"] +sklearn = ["scikit-learn"] [[package]] -category = "main" -description = "Twilio API client and TwiML generator" name = "twilio" +version = "6.50.1" +description = "Twilio API client and TwiML generator" +category = "main" optional = false python-versions = "*" -version = "6.50.1" [package.dependencies] -PyJWT = ">=1.4.2" -pytz = "*" six = "*" - -[package.dependencies.requests] -python = ">=3.0" -version = ">=2.0.0" +requests = {version = ">=2.0.0", markers = "python_version >= \"3.0\""} +pytz = "*" +PyJWT = ">=1.4.2" [[package]] -category = "dev" -description = "a fork of Python 2 and 3 ast modules with type comment support" name = "typed-ast" +version = "1.4.2" +description = "a fork of Python 2 and 3 ast modules with type comment support" +category = "dev" optional = false python-versions = "*" -version = "1.4.2" [[package]] -category = "main" -description = "Run-time type checker for Python" name = "typeguard" +version = "2.10.0" +description = "Run-time type checker for Python" +category = "main" optional = false python-versions = ">=3.5.3" -version = "2.10.0" [package.extras] -doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] test = ["pytest", "typing-extensions"] +doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] [[package]] -category = "main" -description = "Backported and Experimental Type Hints for Python 3.5+" name = "typing-extensions" +version = "3.7.4.3" +description = "Backported and Experimental Type Hints for Python 3.5+" +category = "main" optional = false python-versions = "*" -version = "3.7.4.3" [[package]] -category = "main" -description = "tzinfo object for the local timezone" name = "tzlocal" +version = "2.1" +description = "tzinfo object for the local timezone" +category = "main" optional = false python-versions = "*" -version = "2.1" [package.dependencies] pytz = "*" [[package]] -category = "main" -description = "Ultra fast JSON encoder and decoder for Python" name = "ujson" +version = "3.2.0" +description = "Ultra fast JSON encoder and decoder for Python" +category = "main" optional = false python-versions = ">=3.5" -version = "3.2.0" [[package]] -category = "main" -description = "URI templates" name = "uritemplate" +version = "3.0.1" +description = "URI templates" +category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "3.0.1" [[package]] -category = "main" -description = "HTTP library with thread-safe connection pooling, file post, and more." name = "urllib3" +version = "1.26.2" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" -version = "1.26.2" [package.extras] brotli = ["brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] -category = "main" -description = "Fast implementation of asyncio event loop on top of libuv" -marker = "sys_platform != \"win32\" and implementation_name == \"cpython\"" name = "uvloop" +version = "0.14.0" +description = "Fast implementation of asyncio event loop on top of libuv" +category = "main" optional = false python-versions = "*" -version = "0.14.0" [[package]] -category = "main" -description = "A lightweight console printing and formatting toolkit" name = "wasabi" +version = "0.8.1" +description = "A lightweight console printing and formatting toolkit" +category = "main" optional = true python-versions = "*" -version = "0.8.0" [[package]] -category = "dev" -description = "Filesystem events monitoring" name = "watchdog" +version = "1.0.2" +description = "Filesystem events monitoring" +category = "dev" optional = false python-versions = ">=3.6" -version = "1.0.2" [package.extras] watchmedo = ["PyYAML (>=3.10)", "argh (>=0.24.1)"] [[package]] -category = "main" -description = "Measures the displayed width of unicode strings in a terminal" name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "main" optional = false python-versions = "*" -version = "0.2.5" [[package]] -category = "main" -description = "Community-developed Python SDK for the Webex Teams APIs" name = "webexteamssdk" +version = "1.6" +description = "Community-developed Python SDK for the Webex Teams APIs" +category = "main" optional = false python-versions = "*" -version = "1.6" [package.dependencies] -PyJWT = "*" -future = "*" requests = ">=2.4.2" +future = "*" +PyJWT = "*" requests-toolbelt = "*" [[package]] -category = "dev" -description = "WebSocket client for Python. hybi13 is supported." name = "websocket-client" +version = "0.57.0" +description = "WebSocket client for Python. hybi13 is supported." +category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.57.0" [package.dependencies] six = "*" [[package]] -category = "main" -description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" name = "websockets" +version = "8.0.2" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +category = "main" optional = false python-versions = ">=3.6" -version = "8.0.2" [[package]] -category = "main" -description = "The comprehensive WSGI web application library." name = "werkzeug" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" version = "1.0.1" - -[package.extras] -dev = ["pytest", "pytest-timeout", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"] -watchdog = ["watchdog"] - -[[package]] +description = "The comprehensive WSGI web application library." category = "main" -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.36.2" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] -test = ["pytest (>=3.0.0)", "pytest-cov"] +watchdog = ["watchdog"] +dev = ["pytest", "pytest-timeout", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"] [[package]] -category = "main" -description = "Module for decorators, wrappers and monkey patching." name = "wrapt" +version = "1.12.1" +description = "Module for decorators, wrappers and monkey patching." +category = "main" optional = false python-versions = "*" -version = "1.12.1" [[package]] -category = "dev" -description = "Makes working with XML feel like you are working with JSON" name = "xmltodict" +version = "0.12.0" +description = "Makes working with XML feel like you are working with JSON" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.12.0" [[package]] -category = "main" -description = "Yet another URL library" name = "yarl" +version = "1.5.1" +description = "Yet another URL library" +category = "main" optional = false python-versions = ">=3.5" -version = "1.5.1" [package.dependencies] -idna = ">=2.0" +typing-extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} multidict = ">=4.0" - -[package.dependencies.typing-extensions] -python = "<3.8" -version = ">=3.7.4" +idna = ">=2.0" [[package]] -category = "main" -description = "Backport of pathlib-compatible object wrapper for zip files" name = "zipp" +version = "3.4.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" optional = false python-versions = ">=3.6" -version = "3.4.0" [package.extras] docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] +testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] [extras] -full = ["spacy", "transformers", "jieba"] gh-release-notes = ["github3.py"] jieba = ["jieba"] -spacy = ["spacy"] +full = ["spacy", "transformers", "jieba"] transformers = ["transformers"] +spacy = ["spacy"] [metadata] -content-hash = "3aceb2ff2ba7ccee4e1c46e675cfbe3acf5ef5b40b7577dbb42a8979d1877268" +lock-version = "1.1" python-versions = ">=3.6,<3.9" +content-hash = "3aceb2ff2ba7ccee4e1c46e675cfbe3acf5ef5b40b7577dbb42a8979d1877268" [metadata.files] absl-py = [ @@ -3313,8 +3195,8 @@ aws-xray-sdk = [ {file = "aws_xray_sdk-2.6.0-py2.py3-none-any.whl", hash = "sha256:076f7c610cd3564bbba3507d43e328fb6ff4a2e841d3590f39b2c3ce99d41e1d"}, ] azure-core = [ - {file = "azure-core-1.9.0.zip", hash = "sha256:ef8ae93a2ce8b595f231395579be11aadc1838168cbc2582e2d0bbd8b15c461f"}, - {file = "azure_core-1.9.0-py2.py3-none-any.whl", hash = "sha256:a4db9e64fc0de9d19d004d6b3b908459aa7d9cb6730734c485f738cb56a1ef27"}, + {file = "azure-core-1.10.0.zip", hash = "sha256:b9cddf3eb239e32b14cf44750b21d7bc8d78b82aa53d57628523598dcd006803"}, + {file = "azure_core-1.10.0-py2.py3-none-any.whl", hash = "sha256:1467d0785dbf01f45248330d98ad3482b68b30f816eb6123b777a60be57ca99d"}, ] azure-storage-blob = [ {file = "azure-storage-blob-12.5.0.zip", hash = "sha256:1469a5a0410296fb5ff96c326618d939c9cb0c0ea45eb931c89c98fa742d8daa"}, @@ -3351,16 +3233,16 @@ boto = [ {file = "boto-2.49.0.tar.gz", hash = "sha256:ea0d3b40a2d852767be77ca343b58a9e3a4b00d9db440efb8da74b4e58025e5a"}, ] boto3 = [ - {file = "boto3-1.16.57-py2.py3-none-any.whl", hash = "sha256:2fd3c2f42006988dc8ddae43c988aea481d11e2af7ab1deb83b293640357986c"}, - {file = "boto3-1.16.57.tar.gz", hash = "sha256:4a499cc2f53dd557a88c6db6a552748a2abd83ffeda70ceb71dc8db39a027314"}, + {file = "boto3-1.16.59-py2.py3-none-any.whl", hash = "sha256:f8a2f0bf929af92c4d254d1e495f6642dd335818cc7172e1bdc3dfe28655fb94"}, + {file = "boto3-1.16.59.tar.gz", hash = "sha256:550a513315194292651bb6cc96e94185bfc4dc6b299c3cf1594882bdd16b3905"}, ] botocore = [ - {file = "botocore-1.19.57-py2.py3-none-any.whl", hash = "sha256:cf7d108a4d67a0fe670379111927b5d9e0ff1160146c81c326bb9e54c2b8cb19"}, - {file = "botocore-1.19.57.tar.gz", hash = "sha256:c756d65ffa989c5c0e92178175e41abf7b18ad19b2fe2e82e192f085e264e03a"}, + {file = "botocore-1.19.59-py2.py3-none-any.whl", hash = "sha256:67d273b5dcc5033edb2def244ecab51ca24351becf5c1644de279e5653e4e932"}, + {file = "botocore-1.19.59.tar.gz", hash = "sha256:33959aa19cb6d336c47495c871b00d8670de0023b53bbbbd25790ba0bc5cefe9"}, ] cachetools = [ - {file = "cachetools-4.2.0-py3-none-any.whl", hash = "sha256:c6b07a6ded8c78bf36730b3dc452dfff7d95f2a12a2fed856b1a0cb13ca78c61"}, - {file = "cachetools-4.2.0.tar.gz", hash = "sha256:3796e1de094f0eaca982441c92ce96c68c89cced4cd97721ab297ea4b16db90e"}, + {file = "cachetools-4.2.1-py3-none-any.whl", hash = "sha256:1d9d5f567be80f7c07d765e21b814326d78c61eb0c3a637dffc0e5d1796cb2e2"}, + {file = "cachetools-4.2.1.tar.gz", hash = "sha256:f469e29e7aa4cff64d8de4aad95ce76de8ea1125a16c68e0d93f65c3c3dc92e9"}, ] catalogue = [ {file = "catalogue-1.0.0-py2.py3-none-any.whl", hash = "sha256:584d78e7f4c3c6e2fd498eb56dfc8ef1f4ff738480237de2ccd26cbe2cf47172"}, @@ -3409,8 +3291,8 @@ cffi = [ {file = "cffi-1.14.4.tar.gz", hash = "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c"}, ] cfn-lint = [ - {file = "cfn-lint-0.44.2.tar.gz", hash = "sha256:d429fe5552d9afdd19f9bbaddfeaeef881c14301ae20c63b3abb2cf6934a00dc"}, - {file = "cfn_lint-0.44.2-py3-none-any.whl", hash = "sha256:eb14a690cbf04ed05cf7e35bfdf35e3fdfdd1938a29706c3d37bc44283b12d3a"}, + {file = "cfn-lint-0.44.4.tar.gz", hash = "sha256:8f7e249353d2335a5346994cc179ef2364c0ad2161cdf036ee6817ab3cea816b"}, + {file = "cfn_lint-0.44.4-py3-none-any.whl", hash = "sha256:fd822f4520246cb9a37e3b6b62530e772e195f19d1bcd08a9e48d0e4dff3ffb4"}, ] chardet = [ {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, @@ -3533,8 +3415,8 @@ cymem = [ {file = "cymem-2.0.5.tar.gz", hash = "sha256:190e15d9cf2c3bde60ae37bddbae6568a36044dc4a326d84081a5fa08818eee0"}, ] dataclasses = [ - {file = "dataclasses-0.6-py3-none-any.whl", hash = "sha256:454a69d788c7fda44efd71e259be79577822f5e3f53f029a22d08004e951dc9f"}, - {file = "dataclasses-0.6.tar.gz", hash = "sha256:6988bd2b895eef432d562370bb707d540f32f7360ab13da45340101bc2307d84"}, + {file = "dataclasses-0.8-py3-none-any.whl", hash = "sha256:0201d89fa866f68c8ebd9d08ee6ff50c0b255f8ec63a71c16fda7af82bb887bf"}, + {file = "dataclasses-0.8.tar.gz", hash = "sha256:8479067f342acf957dc82ec415d355ab5edb7e7646b90dc6e2fd1d96ad084c97"}, ] decorator = [ {file = "decorator-4.4.2-py2.py3-none-any.whl", hash = "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760"}, @@ -3606,8 +3488,8 @@ flake8-docstrings = [ {file = "flake8_docstrings-1.5.0-py2.py3-none-any.whl", hash = "sha256:a256ba91bc52307bef1de59e2a009c3cf61c3d0952dbe035d6ff7208940c2edc"}, ] freezegun = [ - {file = "freezegun-1.0.0-py2.py3-none-any.whl", hash = "sha256:02b35de52f4699a78f6ac4518e4cd3390dddc43b0aeb978335a8f270a2d9668b"}, - {file = "freezegun-1.0.0.tar.gz", hash = "sha256:1cf08e441f913ff5e59b19cc065a8faa9dd1ddc442eaf0375294f344581a0643"}, + {file = "freezegun-1.1.0-py2.py3-none-any.whl", hash = "sha256:2ae695f7eb96c62529f03a038461afe3c692db3465e215355e1bb4b0ab408712"}, + {file = "freezegun-1.1.0.tar.gz", hash = "sha256:177f9dd59861d871e27a484c3332f35a6e3f5d14626f2bf91be37891f18927f3"}, ] future = [ {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, @@ -3629,8 +3511,8 @@ gitpython = [ {file = "GitPython-3.1.12.tar.gz", hash = "sha256:42dbefd8d9e2576c496ed0059f3103dcef7125b9ce16f9d5f9c834aed44a1dac"}, ] google-api-core = [ - {file = "google-api-core-1.24.1.tar.gz", hash = "sha256:0f1dee446db2685863c3c493a90fefa5fc7f4defaf8e1a320b50ccaddfb5d469"}, - {file = "google_api_core-1.24.1-py2.py3-none-any.whl", hash = "sha256:a7f5794446a22ff7d36764959ba5f319f37628faf4da04fdc0dedf1598b556c1"}, + {file = "google-api-core-1.25.0.tar.gz", hash = "sha256:d967beae8d8acdb88fb2f6f769e2ee0ee813042576a08891bded3b8e234150ae"}, + {file = "google_api_core-1.25.0-py2.py3-none-any.whl", hash = "sha256:4656345cba9627ab1290eab51300a6397cc50370d99366133df1ae64b744e1eb"}, ] google-auth = [ {file = "google-auth-1.24.0.tar.gz", hash = "sha256:0b0e026b412a0ad096e753907559e4bdb180d9ba9f68dd9036164db4fdc4ad2e"}, @@ -3649,22 +3531,35 @@ google-cloud-storage = [ {file = "google_cloud_storage-1.35.0-py2.py3-none-any.whl", hash = "sha256:7b48b74683dafec5da315c7b0861ab168c208e04c763aa5db7ea8d7ecd8b6c5d"}, ] google-crc32c = [ - {file = "google-crc32c-1.1.0.tar.gz", hash = "sha256:6a6f3a365de5f433e41602b73df21306f67f02f15fdd2750961ae7d4a4629863"}, - {file = "google_crc32c-1.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e9be2ccfc510fc84a7de875d8f8e59d70818c819fbd0f74ff0a8aa4a1c057f94"}, - {file = "google_crc32c-1.1.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ebc3c794d9f96d0fbb5177984e12206d3d7371762f67782cfd150e32722b8aed"}, - {file = "google_crc32c-1.1.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:4a9ab614ec85d0977af76a093cab514ce78ec20ba3cecd3af4715a111a5ec250"}, - {file = "google_crc32c-1.1.0-cp36-cp36m-win32.whl", hash = "sha256:bb1d7efb881406963dd919fbc3db4f248a5aa0c600295b2a65ea68d4ca79032a"}, - {file = "google_crc32c-1.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:e25e8cf79d1daf05dae69bf4dd1b73f2ee34674f4ea44176ed3cd764f206cc9d"}, - {file = "google_crc32c-1.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e5cc963e4c76f1c85a4b5045f86fdbb501c1ff0579a3d40431eac2137508af68"}, - {file = "google_crc32c-1.1.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f050433604b55ff7efbca099d0b806dcbbf5fc1eec2a2640eb61ca0e44aaed5b"}, - {file = "google_crc32c-1.1.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:279f38be88b274872d9c9ef8d0479a0bc3279e5b7faebea45a86501d18000242"}, - {file = "google_crc32c-1.1.0-cp37-cp37m-win32.whl", hash = "sha256:d0cede9482ec2c3cc3c1b8fa11c10f1ac4760e1dbd8efdb5e39f93420ca75bec"}, - {file = "google_crc32c-1.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:28e0712ddb73ba02e5a4f03d571a864e8a1e64941e394a8ace1118128903c73b"}, - {file = "google_crc32c-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ade6f03d3670bec8ccc1b9a6ca7123985c14e83923ecba2b88dedd3f88e795e5"}, - {file = "google_crc32c-1.1.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:55e44136e0a23de7f31207644d5765c1c55402f7b23bf1a6625317f4d50c8725"}, - {file = "google_crc32c-1.1.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:9ad95a167f7bf8e27992677b5b1e411eaadf0ffa81961fa203d88b2be5394618"}, - {file = "google_crc32c-1.1.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:6385d87cd15a7c9f7ff63b08f6d01c8665053ad69f1ac80054cf7a94a7139bfc"}, - {file = "google_crc32c-1.1.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:82b4ce1c515a455f21e4f6aea8d45252e2b319fa604b8d9f2cb301d5a752f578"}, + {file = "google-crc32c-1.1.2.tar.gz", hash = "sha256:dff5bd1236737f66950999d25de7a78144548ebac7788d30ada8c1b6ead60b27"}, + {file = "google_crc32c-1.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:8ed8f6dc4f55850cba2eb22b78902ad37f397ee02692d3b8e00842e9af757321"}, + {file = "google_crc32c-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:110157fb19ab5db15603debfaf5fcfbac9627576787d9caf8618ff96821a7a1f"}, + {file = "google_crc32c-1.1.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:80abca603187093ea089cd1215c3779040dda55d3cdabc0cd5ea0e10df7bff99"}, + {file = "google_crc32c-1.1.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:6789db0b12aab12a0f04de22ed8412dfa5f6abd5a342ea19f15355064e1cc387"}, + {file = "google_crc32c-1.1.2-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:ea170341a4a9078a067b431044cd56c73553425833a7c2bb81734777a230ad4b"}, + {file = "google_crc32c-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:a64e0e8ed6076a8d867fc4622ad821c55eba8dff1b48b18f56b7c2392e22ab9d"}, + {file = "google_crc32c-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:9372211acbcc207f63ffaffea1d05f3244a21311e4710721ffff3e8b7a0d24d0"}, + {file = "google_crc32c-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:0ae3cf54e0d4d83c8af1afe96fc0970fbf32f1b29275f3bfd44ce25c4b622a2b"}, + {file = "google_crc32c-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:34a97937f164147aefa53c3277364fd3bfa7fd244cbebbd5a976fa8325fb496b"}, + {file = "google_crc32c-1.1.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:91ad96ee2958311d0bb75ffe5c25c87fb521ef547c09e04a8bb6143e75fb1367"}, + {file = "google_crc32c-1.1.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b5ea1055fe470334ced844270e7c808b04fe31e3e6394675daa77f6789ca9eff"}, + {file = "google_crc32c-1.1.2-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:e6458c41236d37cb982120b070ebcc115687c852bee24cdd18792da2640cf44d"}, + {file = "google_crc32c-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:e5af77656e8d367701f40f80a91c985ca43319f322f0a36ba9f93909d0bc4cb2"}, + {file = "google_crc32c-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:ae7b9e7e2ca1b06c3a68b6ef223947a52c30ffae329b1a2be3402756073f2732"}, + {file = "google_crc32c-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:7c5138ed2e815189ba524756e027ac5833365e86115b1c2e6d9e833974a58d82"}, + {file = "google_crc32c-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:a6c8a712ffae56c805ca732b735af02860b246bed2c1acb38ea954a8b2dc4581"}, + {file = "google_crc32c-1.1.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:49838ede42592154f9fcd21d07c7a43a67b00a36e252f82ae72542fde09dc51f"}, + {file = "google_crc32c-1.1.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:ef2ed6d0ac4de4ac602903e203eccd25ec8e37f1446fe1a3d2953a658035e0a5"}, + {file = "google_crc32c-1.1.2-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:51f4aa06125bf0641f65fb83268853545dbeb36b98ccfec69ef57dcb6b73b176"}, + {file = "google_crc32c-1.1.2-cp38-cp38-win32.whl", hash = "sha256:1dc6904c0d958f43102c85d70792cca210d3d051ddbeecd0eff10abcd981fdfa"}, + {file = "google_crc32c-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:298a9a922d35b123a73be80233d0f19c6ea01f008743561a8937f9dd83fb586b"}, + {file = "google_crc32c-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:ab2b31395fbeeae6d15c98bd7f8b9fb76a18f18f87adc11b1f6dbe8f90d8382f"}, + {file = "google_crc32c-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:d4a0d4fb938c2c3c0076445c9bd1215a3bd3df557b88d8b05ec2889ca0c92f8d"}, + {file = "google_crc32c-1.1.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:d0630670d27785d7e610e72752dc8087436d00d2c7115e149c0a754babb56d3e"}, + {file = "google_crc32c-1.1.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:364eb36e8d9d34542c17b0c410035b0557edd4300a92ed736b237afaa0fd6dae"}, + {file = "google_crc32c-1.1.2-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:0dd9b61d0c63043b013349c9ec8a83ec2b05c96410c5bc257da5d0de743fc171"}, + {file = "google_crc32c-1.1.2-cp39-cp39-win32.whl", hash = "sha256:92ed6062792b989e84621e07a5f3d37da9cc3153b77d23a582921f14863af31d"}, + {file = "google_crc32c-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:78cf5b1bd30f3a6033b41aa4ce8c796870bc4645a15d3ef47a4b05d31b0a6dc1"}, ] google-pasta = [ {file = "google-pasta-0.2.0.tar.gz", hash = "sha256:c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e"}, @@ -3680,52 +3575,52 @@ googleapis-common-protos = [ {file = "googleapis_common_protos-1.52.0-py2.py3-none-any.whl", hash = "sha256:c8961760f5aad9a711d37b675be103e0cc4e9a39327e0d6d857872f698403e24"}, ] grpcio = [ - {file = "grpcio-1.34.0-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:e2ffa46db9103706640c74886ac23ed18d1487a8523cc128da239e1d5a4e3301"}, - {file = "grpcio-1.34.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:843436e69c37eb45b0285fa42f7acc06d147f2e9c1d515b0f901e94d40107e79"}, - {file = "grpcio-1.34.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a403ed4d8fcc441a2c2ec9ede838b0ae5f9da996d950cf2ff9f82242b496e0a7"}, - {file = "grpcio-1.34.0-cp27-cp27m-win32.whl", hash = "sha256:dc45f5750ce50f34f20a0607efae5c797d01681a44465b8287bebef1e9847d5b"}, - {file = "grpcio-1.34.0-cp27-cp27m-win_amd64.whl", hash = "sha256:2fd4a80f267aa258f5a74df5fe243eff80299a4f5b356c1da53f6f5793bbbf4b"}, - {file = "grpcio-1.34.0-cp27-cp27mu-linux_armv7l.whl", hash = "sha256:f2e4d64675351a058f9cb35fe390ca0956bd2926171bfb7c87596a1ee10ff6ba"}, - {file = "grpcio-1.34.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:4a2c85cd4a67c36fe12535fe32eb336635843d1eb31d3fa301444e60a8df9c90"}, - {file = "grpcio-1.34.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:32ad56f6d3d7e699f9a0d62719f2de9092e79f444d875d70f58cf7f8bb19684c"}, - {file = "grpcio-1.34.0-cp35-cp35m-linux_armv7l.whl", hash = "sha256:e69ac6fc9096bbb43f5276655661db746233cd320808e0d302198eb43dc7bd04"}, - {file = "grpcio-1.34.0-cp35-cp35m-macosx_10_10_intel.whl", hash = "sha256:5b105adb44486fb594b8d8142b5d4fbe50cb125c77ac7d270f5d0277ce5c554a"}, - {file = "grpcio-1.34.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:923a3b18badc3749c4d715216934f62f46a818790e325ece6184d07e7d6c7f73"}, - {file = "grpcio-1.34.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:9579f22222ac89ceee64c1101cced6434d9f6b12078b43ece0f9d8ebdb657f73"}, - {file = "grpcio-1.34.0-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:dfa098a6ff8d1b68ed7bd655150ee91f57c29042c093ff51113176aded3f0071"}, - {file = "grpcio-1.34.0-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:32fbc78d558d9468a4b16f79f4130daec8e431bc7a3b1775b0e98f09a7ab45a2"}, - {file = "grpcio-1.34.0-cp35-cp35m-win32.whl", hash = "sha256:205eda06d8aeffc87a1e29ff1f090546adf0b6e766378cc4c13686534397fdb4"}, - {file = "grpcio-1.34.0-cp35-cp35m-win_amd64.whl", hash = "sha256:2ea864ae3d3abc99d3988d1d27dee3f6350b60149ccf810a89cd9a9d02a675d6"}, - {file = "grpcio-1.34.0-cp36-cp36m-linux_armv7l.whl", hash = "sha256:5d8108b240fd5b8a0483f95ab2651fe2d633311faae93a12938ea06cf61a5efd"}, - {file = "grpcio-1.34.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:bda0f52eb1279a7119526df2ef33ea2808691120daf9effaf60ca0c07f76058a"}, - {file = "grpcio-1.34.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:c89b6a3eca8eae10eea78896ccfdc9d04aa2f7b2ee96de20246e5c96494c68f5"}, - {file = "grpcio-1.34.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa834f4c70b9df83d5af610097747c224513d59af1f03e8c06bca9a7d81fd1a3"}, - {file = "grpcio-1.34.0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:20606ec7c265f81c5a0226f69842dc8dde66d921968ab9448e59d440cf98bebf"}, - {file = "grpcio-1.34.0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:72b6a89aabf937d706946230f5aa13bdf7d2a42874810fa54436c647577b543e"}, - {file = "grpcio-1.34.0-cp36-cp36m-win32.whl", hash = "sha256:49da07ae43c552280b8b4c70617f9b589588404c2545d6eba2c55179b3d836af"}, - {file = "grpcio-1.34.0-cp36-cp36m-win_amd64.whl", hash = "sha256:beef6be49ada569edf3b73fd4eb57d6c2af7e10c0c82a210dbe51de7c4a1ed53"}, - {file = "grpcio-1.34.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:8d92e884f6d67b9a2a4514631d3c9836281044caedb5fd34d4ce2bbec138c87d"}, - {file = "grpcio-1.34.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:e238a554f29d90b0e7fca15e8119b9a7c5f88faacbf9b982751ad54d639b57f8"}, - {file = "grpcio-1.34.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:98b0b6e44c451093354a38b620e6e0df958b0710abd6a0ddd84da84424bce003"}, - {file = "grpcio-1.34.0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:bbd3522f821fb5d01049db214fb9f949a8b2d92761c2780a20ff73818efd5360"}, - {file = "grpcio-1.34.0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:2f54046ca2a81ff45ec8f6d3d7447ad562adb067c3640c35354e440fd771b625"}, - {file = "grpcio-1.34.0-cp37-cp37m-win32.whl", hash = "sha256:50c4f10e7deff96d197bc6d1988c2a5a0bc6252bbd31d7fb374ce8923f937e7a"}, - {file = "grpcio-1.34.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6fafdba42c26bbdf78948c09a93a8b3a8a509c66c6b4324bc1fb360bf4e82b9d"}, - {file = "grpcio-1.34.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:bd7634f8c49c8467fec5fd9e0d1abb205b0aa61670ff0113ef835ca6548aad3d"}, - {file = "grpcio-1.34.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:69127393fc3513da228bc3908914df2284923e0eacf8d73f21ad387317450317"}, - {file = "grpcio-1.34.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:5e8e6035d4f9ab856ab437e381e652b31dfd42443d2243d45bdf4b90adaf3559"}, - {file = "grpcio-1.34.0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:95de4ad9ae39590668e3330d414253f672aedd46cc107d7f71b4a2268f3d6066"}, - {file = "grpcio-1.34.0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:a1024006fe61ee7e43e7099faf08f4508ea0c944a1558e8d715a5b4556937ace"}, - {file = "grpcio-1.34.0-cp38-cp38-win32.whl", hash = "sha256:dea35dcf09aee91552cb4b3e250efdbcb79564b5b5517246bcbead8d5871e291"}, - {file = "grpcio-1.34.0-cp38-cp38-win_amd64.whl", hash = "sha256:e95bda60c584b3deb5c37babb44d4300cf4bf3a6c43198a244ddcaddca3fde3a"}, - {file = "grpcio-1.34.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:c88ce184973fe2035ffa176eb08cd492db090505e6b1ddc68b5cc1e0b01a07a0"}, - {file = "grpcio-1.34.0-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:57a30f9df0f5342e4dad384e7023b9f88742c325838da977828c37f49eb8940a"}, - {file = "grpcio-1.34.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:924d5e8b18942ebea1260e60be7e2bde2a3587ea386190b442790f84180bf372"}, - {file = "grpcio-1.34.0-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:43fafebcc2e81d012f7147a0ddf9be69864c40fc4edd9844937eba0020508297"}, - {file = "grpcio-1.34.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:9550b7c9d2f11579b484accc6183e02ebe33ce80a0ff15f5c28895df6b3d3108"}, - {file = "grpcio-1.34.0-cp39-cp39-win32.whl", hash = "sha256:d16f7f5a10bf24640fa639974d409c220e587b3e2fa2620af00d43ba36dafc2c"}, - {file = "grpcio-1.34.0-cp39-cp39-win_amd64.whl", hash = "sha256:25958bd7c6773e6de79781cc0d6f19d0c82332984dd07ef238889e93485d5afc"}, - {file = "grpcio-1.34.0.tar.gz", hash = "sha256:f98f746cacbaa681de0bcd90d7aa77b440e3e1327a9988f6a2b580d54e27d4c3"}, + {file = "grpcio-1.35.0-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:95cc4d2067deced18dc807442cf8062a93389a86abf8d40741120054389d3f29"}, + {file = "grpcio-1.35.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:d186a0ce291f4386e28a7042ec31c85250b0c2e25d2794b87fa3c15ff473c46c"}, + {file = "grpcio-1.35.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:c8d0a6a58a42275c6cb616e7cb9f9fcf5eba1e809996546e561cd818b8f7cff7"}, + {file = "grpcio-1.35.0-cp27-cp27m-win32.whl", hash = "sha256:8d08f90d72a8e8d9af087476337da76d26749617b0a092caff4e684ce267af21"}, + {file = "grpcio-1.35.0-cp27-cp27m-win_amd64.whl", hash = "sha256:0072ec4563ab4268c4c32e936955085c2d41ea175b662363496daedd2273372c"}, + {file = "grpcio-1.35.0-cp27-cp27mu-linux_armv7l.whl", hash = "sha256:aca45d2ccb693c9227fbf21144891422a42dc4b76b52af8dd1d4e43afebe321d"}, + {file = "grpcio-1.35.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:87147b1b306c88fe7dca7e3dff8aefd1e63d6aed86e224f9374ddf283f17d7f1"}, + {file = "grpcio-1.35.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:22edfc278070d54f3ab7f741904e09155a272fe934e842babbf84476868a50de"}, + {file = "grpcio-1.35.0-cp35-cp35m-linux_armv7l.whl", hash = "sha256:f3654a52f72ba28953dbe2e93208099f4903f4b3c07dc7ff4db671c92968111d"}, + {file = "grpcio-1.35.0-cp35-cp35m-macosx_10_10_intel.whl", hash = "sha256:dc2589370ef84eb1cc53530070d658a7011d2ee65f18806581809c11cd016136"}, + {file = "grpcio-1.35.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:f0c27fd16582a303e5baf6cffd9345c9ac5f855d69a51232664a0b888a77ba80"}, + {file = "grpcio-1.35.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:b2985f73611b637271b00d9c4f177e65cc3193269bc9760f16262b1a12757265"}, + {file = "grpcio-1.35.0-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:acb489b7aafdcf960f1a0000a1f22b45e5b6ccdf8dba48f97617d627f4133195"}, + {file = "grpcio-1.35.0-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:16fd33030944672e49e0530dec2c60cd4089659ccdf327e99569b3b29246a0b6"}, + {file = "grpcio-1.35.0-cp35-cp35m-win32.whl", hash = "sha256:1757e81c09132851e85495b802fe4d4fbef3547e77fa422a62fb4f7d51785be0"}, + {file = "grpcio-1.35.0-cp35-cp35m-win_amd64.whl", hash = "sha256:35b72884e09cbc46c564091f4545a39fa66d132c5676d1a6e827517fff47f2c1"}, + {file = "grpcio-1.35.0-cp36-cp36m-linux_armv7l.whl", hash = "sha256:17940a7dc461066f28816df48be44f24d3b9f150db344308ee2aeae033e1af0b"}, + {file = "grpcio-1.35.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:75ea903edc42a8c6ec61dbc5f453febd79d8bdec0e1bad6df7088c34282e8c42"}, + {file = "grpcio-1.35.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:b180a3ec4a5d6f96d3840c83e5f8ab49afac9fa942921e361b451d7a024efb00"}, + {file = "grpcio-1.35.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:e163c27d2062cd3eb07057f23f8d1330925beaba16802312b51b4bad33d74098"}, + {file = "grpcio-1.35.0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:764b50ba1a15a2074cdd1a841238f2dead0a06529c495a46821fae84cb9c7342"}, + {file = "grpcio-1.35.0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:088c8bea0f6b596937fefacf2c8df97712e7a3dd49496975049cc95dbf02af1a"}, + {file = "grpcio-1.35.0-cp36-cp36m-win32.whl", hash = "sha256:1aa53f82362c7f2791fe0cdd9a3b3aec325c11d8f0dfde600f91907dfaa8546b"}, + {file = "grpcio-1.35.0-cp36-cp36m-win_amd64.whl", hash = "sha256:efb3d67405eb8030db6f27920b4be023fabfb5d4e09c34deab094a7c473a5472"}, + {file = "grpcio-1.35.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:44aaa6148d18a8e836f99dadcdec17b27bc7ec0995b2cc12c94e61826040ec90"}, + {file = "grpcio-1.35.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:18ad7644e23757420ea839ac476ef861e4f4841c8566269b7c91c100ca1943b3"}, + {file = "grpcio-1.35.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:859a0ceb23d7189362cc06fe7e906e9ed5c7a8f3ac960cc04ce13fe5847d0b62"}, + {file = "grpcio-1.35.0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:3e7d4428ed752fdfe2dddf2a404c93d3a2f62bf4b9109c0c10a850c698948891"}, + {file = "grpcio-1.35.0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:a36151c335280b09afd5123f3b25085027ae2b10682087a4342fb6f635b928fb"}, + {file = "grpcio-1.35.0-cp37-cp37m-win32.whl", hash = "sha256:dfecb2acd3acb8bb50e9aa31472c6e57171d97c1098ee67cd283a6fe7d56a926"}, + {file = "grpcio-1.35.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e87e55fba98ebd7b4c614dcef9940dc2a7e057ad8bba5f91554934d47319a35b"}, + {file = "grpcio-1.35.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:da44bf613eed5d9e8df0785463e502a416de1be6e4ac31edbe99c9111abaed5f"}, + {file = "grpcio-1.35.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:9e503eaf853199804a954dc628c5207e67d6c7848dcba42a997fbe718618a2b1"}, + {file = "grpcio-1.35.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:6ba3d7acf70acde9ce27e22921db921b84a71be578b32739536c32377b65041a"}, + {file = "grpcio-1.35.0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:048c01d1eb5c2ae7cba2254b98938d2fc81f6dc10d172d9261d65266adb0fdb3"}, + {file = "grpcio-1.35.0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:efd896e8ca7adb2654cf014479a5e1f74e4f776b6b2c0fbf95a6c92787a6631a"}, + {file = "grpcio-1.35.0-cp38-cp38-win32.whl", hash = "sha256:8a29a26b9f39701ce15aa1d5aa5e96e0b5f7028efe94f95341a4ed8dbe4bed78"}, + {file = "grpcio-1.35.0-cp38-cp38-win_amd64.whl", hash = "sha256:aea3d592a7ece84739b92d212cd16037c51d84a259414f64b51c14e946611f3d"}, + {file = "grpcio-1.35.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2f8e8d35d4799aa1627a212dbe8546594abf4064056415c31bd1b3b8f2a62027"}, + {file = "grpcio-1.35.0-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:9f0da13b215068e7434b161a35d0b4e92140ffcfa33ddda9c458199ea1d7ce45"}, + {file = "grpcio-1.35.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:7ae408780b79c9b9b91a2592abd1d7abecd05675d988ea75038580f420966b59"}, + {file = "grpcio-1.35.0-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:0f714e261e1d63615476cda4ee808a79cca62f8f09e2943c136c2f87ec5347b1"}, + {file = "grpcio-1.35.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:7ee7d54da9d176d3c9a0f47c04d7ff6fdc6ee1c17643caff8c33d6c8a70678a4"}, + {file = "grpcio-1.35.0-cp39-cp39-win32.whl", hash = "sha256:94c3b81089a86d3c5877d22b07ebc66b5ed1d84771e24b001844e29a5b6178dd"}, + {file = "grpcio-1.35.0-cp39-cp39-win_amd64.whl", hash = "sha256:399ee377b312ac652b07ef4365bbbba009da361fa7708c4d3d4ce383a1534ea7"}, + {file = "grpcio-1.35.0.tar.gz", hash = "sha256:7bd0ebbb14dde78bf66a1162efd29d3393e4e943952e2f339757aa48a184645c"}, ] h11 = [ {file = "h11-0.9.0-py2.py3-none-any.whl", hash = "sha256:4bc6d6a1238b7615b266ada57e0618568066f57dd6fa967d1290ec9309b2f2f1"}, @@ -3826,8 +3721,8 @@ immutables = [ {file = "immutables-0.14.tar.gz", hash = "sha256:a0a1cc238b678455145bae291d8426f732f5255537ed6a5b7645949704c70a78"}, ] importlib-metadata = [ - {file = "importlib_metadata-3.3.0-py3-none-any.whl", hash = "sha256:bf792d480abbd5eda85794e4afb09dd538393f7d6e6ffef6e9f03d2014cf9450"}, - {file = "importlib_metadata-3.3.0.tar.gz", hash = "sha256:5c5a2720817414a6c41f0a49993908068243ae02c1635a228126519b509c8aed"}, + {file = "importlib_metadata-3.4.0-py3-none-any.whl", hash = "sha256:ace61d5fc652dc280e7b6b4ff732a9c2d40db2c0f92bc6cb74e07b73d53a1771"}, + {file = "importlib_metadata-3.4.0.tar.gz", hash = "sha256:fa5daa4477a7414ae34e95942e4dd07f62adf589143c875c133c1e53c4eff38d"}, ] importlib-resources = [ {file = "importlib_resources-3.3.1-py2.py3-none-any.whl", hash = "sha256:42068585cc5e8c2bf0a17449817401102a5125cbfbb26bb0f43cde1568f6f2df"}, @@ -4006,8 +3901,8 @@ mock = [ {file = "mock-4.0.3.tar.gz", hash = "sha256:7d3fbbde18228f4ff2f1f119a45cdffa458b4c0dee32eb4d2bb2f82554bac7bc"}, ] mongomock = [ - {file = "mongomock-3.22.0-py2.py3-none-any.whl", hash = "sha256:b4c5ef32f10c3d74425c57d096819de9f607e1e0fe59fa7f92dd27aa57a3dbe3"}, - {file = "mongomock-3.22.0.tar.gz", hash = "sha256:8512b42a66d34a42df698bba319daa35a36ee3c0d4fe941acebe8957bda8d13c"}, + {file = "mongomock-3.22.1-py2.py3-none-any.whl", hash = "sha256:c721a7b8ce3ae44442de3cf314a89f4be3fe65bd337d8e7d0d909d8af0d1584e"}, + {file = "mongomock-3.22.1.tar.gz", hash = "sha256:70d6d0d5e4c4e225eb46a109c527c2388e54f684b6d32bdb4718c0618ecec168"}, ] more-itertools = [ {file = "more-itertools-8.6.0.tar.gz", hash = "sha256:b3a9005928e5bed54076e6e549c792b306fddfe72b2d1d22dd63d42d5d3899cf"}, @@ -4107,8 +4002,8 @@ networkx = [ {file = "nr.metaclass-0.0.6.tar.gz", hash = "sha256:3d52f8e603e3c2944b9135e5a09593c3c36191f26cf1c29a7c71efb192552b10"}, ] "nr.parsing.date" = [ - {file = "nr.parsing.date-0.4.3-py3-none-any.whl", hash = "sha256:899ee068883ce43cd6502915121b6667470b9cad10d4753f74db6d7ca23ac5b3"}, - {file = "nr.parsing.date-0.4.3.tar.gz", hash = "sha256:540b926a6e9b5d0f2b042b614c094ca08d6445227e2769d0ca5581fb459b3cd3"}, + {file = "nr.parsing.date-0.4.4-py3-none-any.whl", hash = "sha256:047404978517d892b961bf065d3373ba5e53b6207af978b2c08b2e49498e7bb0"}, + {file = "nr.parsing.date-0.4.4.tar.gz", hash = "sha256:1c4d25f8f7141676cce03728153f4216d2170adc537aefb2f535a4bad78e3d5d"}, ] "nr.pylang.utils" = [ {file = "nr.pylang.utils-0.0.4-py3-none-any.whl", hash = "sha256:cf8c88b9e7821a256e31e83e16dcd506d1fb33ea3cf37578eb163526ab044a27"}, @@ -4363,8 +4258,8 @@ pyflakes = [ {file = "pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"}, ] pyjwt = [ - {file = "PyJWT-2.0.0-py3-none-any.whl", hash = "sha256:5c2ff2eb27d7e342dfc3cafcc16412781f06db2690fbef81922b0172598f085b"}, - {file = "PyJWT-2.0.0.tar.gz", hash = "sha256:7a2b271c6dac2fda9e0c33d176c4253faba2c6c6b3a99c7f28a32c3c97522779"}, + {file = "PyJWT-2.0.1-py3-none-any.whl", hash = "sha256:b70b15f89dc69b993d8a8d32c299032d5355c82f9b5b7e851d1a6d706dffe847"}, + {file = "PyJWT-2.0.1.tar.gz", hash = "sha256:a5c70a06e1f33d81ef25eecd50d50bd30e34de1ca8b2b9fa3fe0daaabcf69bf7"}, ] pykwalify = [ {file = "pykwalify-1.8.0-py2.py3-none-any.whl", hash = "sha256:731dfa87338cca9f559d1fca2bdea37299116e3139b73f78ca90a543722d6651"}, @@ -4441,7 +4336,7 @@ pyrsistent = [ {file = "pyrsistent-0.17.3.tar.gz", hash = "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e"}, ] pytelegrambotapi = [ - {file = "pyTelegramBotAPI-3.7.5.tar.gz", hash = "sha256:5d39667669b357ccf002955139f585954bcd451c8374110072d290e14a3d5022"}, + {file = "pyTelegramBotAPI-3.7.6.tar.gz", hash = "sha256:859136cbd50e99922e1ea495d4ebe8235b2cb10fe419a5421f28855249db4278"}, ] pytest = [ {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, @@ -4452,8 +4347,8 @@ pytest-asyncio = [ {file = "pytest_asyncio-0.10.0-py3-none-any.whl", hash = "sha256:d734718e25cfc32d2bf78d346e99d33724deeba774cc4afdf491530c6184b63b"}, ] pytest-cov = [ - {file = "pytest-cov-2.10.1.tar.gz", hash = "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e"}, - {file = "pytest_cov-2.10.1-py2.py3-none-any.whl", hash = "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191"}, + {file = "pytest-cov-2.11.1.tar.gz", hash = "sha256:359952d9d39b9f822d9d29324483e7ba04a3a17dd7d05aa6beb7ea01e359e5f7"}, + {file = "pytest_cov-2.11.1-py2.py3-none-any.whl", hash = "sha256:bdb9fdb0b85a7cc825269a4c56b48ccaa5c7e365054b6038772c32ddcdc969da"}, ] pytest-forked = [ {file = "pytest-forked-1.3.0.tar.gz", hash = "sha256:6aa9ac7e00ad1a539c41bec6d21011332de671e938c7637378ec9710204e37ca"}, @@ -4542,19 +4437,27 @@ pywin32 = [ {file = "pywin32-227-cp39-cp39-win_amd64.whl", hash = "sha256:f27cec5e7f588c3d1051651830ecc00294f90728d19c3bf6916e6dba93ea357c"}, ] pyyaml = [ - {file = "PyYAML-5.3.1-cp27-cp27m-win32.whl", hash = "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f"}, - {file = "PyYAML-5.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76"}, - {file = "PyYAML-5.3.1-cp35-cp35m-win32.whl", hash = "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2"}, - {file = "PyYAML-5.3.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c"}, - {file = "PyYAML-5.3.1-cp36-cp36m-win32.whl", hash = "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2"}, - {file = "PyYAML-5.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648"}, - {file = "PyYAML-5.3.1-cp37-cp37m-win32.whl", hash = "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"}, - {file = "PyYAML-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf"}, - {file = "PyYAML-5.3.1-cp38-cp38-win32.whl", hash = "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97"}, - {file = "PyYAML-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee"}, - {file = "PyYAML-5.3.1-cp39-cp39-win32.whl", hash = "sha256:ad9c67312c84def58f3c04504727ca879cb0013b2517c85a9a253f0cb6380c0a"}, - {file = "PyYAML-5.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:6034f55dab5fea9e53f436aa68fa3ace2634918e8b5994d82f3621c04ff5ed2e"}, - {file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"}, + {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, + {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"}, + {file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"}, + {file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"}, + {file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"}, + {file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"}, + {file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"}, + {file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"}, + {file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"}, + {file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"}, + {file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"}, + {file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"}, + {file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"}, + {file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"}, + {file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"}, + {file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"}, + {file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"}, + {file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"}, + {file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"}, + {file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"}, + {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, ] questionary = [ {file = "questionary-1.5.2-py3-none-any.whl", hash = "sha256:6998a1fe0639daec0da44e0a973f387e7c778bdc418d76ecfa45a7b3a0997049"}, @@ -4622,8 +4525,8 @@ rocketchat-api = [ {file = "rocketchat_API-1.9.1-py3-none-any.whl", hash = "sha256:8bc8afa216691ff9a67140e4dfa0116ee70f2b2d393d7819a32f6154951f1780"}, ] rsa = [ - {file = "rsa-4.6-py3-none-any.whl", hash = "sha256:6166864e23d6b5195a5cfed6cd9fed0fe774e226d8f854fcb23b7bbef0350233"}, - {file = "rsa-4.6.tar.gz", hash = "sha256:109ea5a66744dd859bf16fe904b8d8b627adafb9408753161e766a92e7d681fa"}, + {file = "rsa-4.7-py3-none-any.whl", hash = "sha256:a8774e55b59fd9fc893b0d05e9bfc6f47081f46ff5b46f39ccf24631b7be356b"}, + {file = "rsa-4.7.tar.gz", hash = "sha256:69805d6b69f56eb05b62daea3a7dbd7aa44324ad1306445e05da8060232d00f4"}, ] "ruamel.yaml" = [ {file = "ruamel.yaml-0.16.12-py2.py3-none-any.whl", hash = "sha256:012b9470a0ea06e4e44e99e7920277edf6b46eee0232a04487ea73a7386340a5"}, @@ -4663,8 +4566,8 @@ rsa = [ {file = "ruamel.yaml.clib-0.2.2.tar.gz", hash = "sha256:2d24bd98af676f4990c4d715bcdc2a60b19c56a3fb3a763164d2d8ca0e806ba7"}, ] s3transfer = [ - {file = "s3transfer-0.3.3-py2.py3-none-any.whl", hash = "sha256:2482b4259524933a022d59da830f51bd746db62f047d6eb213f2f8855dcb8a13"}, - {file = "s3transfer-0.3.3.tar.gz", hash = "sha256:921a37e2aefc64145e7b73d50c71bb4f26f46e4c9f414dc648c6245ff92cf7db"}, + {file = "s3transfer-0.3.4-py2.py3-none-any.whl", hash = "sha256:1e28620e5b444652ed752cf87c7e0cb15b0e578972568c6609f0f18212f259ed"}, + {file = "s3transfer-0.3.4.tar.gz", hash = "sha256:7fdddb4f22275cf1d32129e21f056337fd2a80b6ccef1664528145b72c49e6d2"}, ] sacremoses = [ {file = "sacremoses-0.0.43.tar.gz", hash = "sha256:123c1bf2664351fb05e16f87d3786dbe44a050cfd7b85161c09ad9a63a8e2948"}, @@ -4681,27 +4584,35 @@ sanic-jwt = [ {file = "sanic-jwt-1.4.1.tar.gz", hash = "sha256:f55b8c50735340cf943af642cbdfedcf774ca3f9028e60d6784d26cd9be9246b"}, ] sanic-plugins-framework = [ - {file = "Sanic-Plugins-Framework-0.9.4.post1.tar.gz", hash = "sha256:eea5b874c15255467c21acfb2e8b16b0e6bff5d11dffed698c63b2e759f3ec50"}, - {file = "Sanic_Plugins_Framework-0.9.4.post1-py2.py3-none-any.whl", hash = "sha256:958a648a891526022c33ef20f041782a211ad8bfe7efa21ec9626b9ac59ac6e8"}, + {file = "Sanic-Plugins-Framework-0.9.5.tar.gz", hash = "sha256:0e9fad57f223818cbc286419be2a9ae7b3e89cf0fd50f818f63e33365325acd8"}, + {file = "Sanic_Plugins_Framework-0.9.5-py2.py3-none-any.whl", hash = "sha256:f64d447bad6eee18d219451769ef6a41b853491ae8fab4484e5501ed3b905ad5"}, ] scikit-learn = [ {file = "scikit-learn-0.24.1.tar.gz", hash = "sha256:a0334a1802e64d656022c3bfab56a73fbd6bf4b1298343f3688af2151810bbdf"}, {file = "scikit_learn-0.24.1-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:9bed8a1ef133c8e2f13966a542cb8125eac7f4b67dcd234197c827ba9c7dd3e0"}, + {file = "scikit_learn-0.24.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a36e159a0521e13bbe15ca8c8d038b3a1dd4c7dad18d276d76992e03b92cf643"}, + {file = "scikit_learn-0.24.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c658432d8a20e95398f6bb95ff9731ce9dfa343fdf21eea7ec6a7edfacd4b4d9"}, {file = "scikit_learn-0.24.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:9dfa564ef27e8e674aa1cc74378416d580ac4ede1136c13dd555a87996e13422"}, {file = "scikit_learn-0.24.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:9c6097b6a9b2bafc5e0f31f659e6ab5e131383209c30c9e978c5b8abdac5ed2a"}, {file = "scikit_learn-0.24.1-cp36-cp36m-win32.whl", hash = "sha256:7b04691eb2f41d2c68dbda8d1bd3cb4ef421bdc43aaa56aeb6c762224552dfb6"}, {file = "scikit_learn-0.24.1-cp36-cp36m-win_amd64.whl", hash = "sha256:1adf483e91007a87171d7ce58c34b058eb5dab01b5fee6052f15841778a8ecd8"}, {file = "scikit_learn-0.24.1-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:ddb52d088889f5596bc4d1de981f2eca106b58243b6679e4782f3ba5096fd645"}, + {file = "scikit_learn-0.24.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:a29460499c1e62b7a830bb57ca42e615375a6ab1bcad053cd25b493588348ea8"}, + {file = "scikit_learn-0.24.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0567a2d29ad08af98653300c623bd8477b448fe66ced7198bef4ed195925f082"}, {file = "scikit_learn-0.24.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:99349d77f54e11f962d608d94dfda08f0c9e5720d97132233ebdf35be2858b2d"}, {file = "scikit_learn-0.24.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:83b21ff053b1ff1c018a2d24db6dd3ea339b1acfbaa4d9c881731f43748d8b3b"}, {file = "scikit_learn-0.24.1-cp37-cp37m-win32.whl", hash = "sha256:c3deb3b19dd9806acf00cf0d400e84562c227723013c33abefbbc3cf906596e9"}, {file = "scikit_learn-0.24.1-cp37-cp37m-win_amd64.whl", hash = "sha256:d54dbaadeb1425b7d6a66bf44bee2bb2b899fe3e8850b8e94cfb9c904dcb46d0"}, {file = "scikit_learn-0.24.1-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:3c4f07f47c04e81b134424d53c3f5e16dfd7f494e44fd7584ba9ce9de2c5e6c1"}, + {file = "scikit_learn-0.24.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c13ebac42236b1c46397162471ea1c46af68413000e28b9309f8c05722c65a09"}, + {file = "scikit_learn-0.24.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:4ddd2b6f7449a5d539ff754fa92d75da22de261fd8fdcfb3596799fadf255101"}, {file = "scikit_learn-0.24.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:826b92bf45b8ad80444814e5f4ac032156dd481e48d7da33d611f8fe96d5f08b"}, {file = "scikit_learn-0.24.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:259ec35201e82e2db1ae2496f229e63f46d7f1695ae68eef9350b00dc74ba52f"}, {file = "scikit_learn-0.24.1-cp38-cp38-win32.whl", hash = "sha256:8772b99d683be8f67fcc04789032f1b949022a0e6880ee7b75a7ec97dbbb5d0b"}, {file = "scikit_learn-0.24.1-cp38-cp38-win_amd64.whl", hash = "sha256:ed9d65594948678827f4ff0e7ae23344e2f2b4cabbca057ccaed3118fdc392ca"}, {file = "scikit_learn-0.24.1-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:8aa1b3ac46b80eaa552b637eeadbbce3be5931e4b5002b964698e33a1b589e1e"}, + {file = "scikit_learn-0.24.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:c7f4eb77504ac586d8ac1bde1b0c04b504487210f95297235311a0ab7edd7e38"}, + {file = "scikit_learn-0.24.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:087dfede39efb06ab30618f9ab55a0397f29c38d63cd0ab88d12b500b7d65fd7"}, {file = "scikit_learn-0.24.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:895dbf2030aa7337649e36a83a007df3c9811396b4e2fa672a851160f36ce90c"}, {file = "scikit_learn-0.24.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:9a24d1ccec2a34d4cd3f2a1f86409f3f5954cc23d4d2270ba0d03cf018aa4780"}, {file = "scikit_learn-0.24.1-cp39-cp39-win32.whl", hash = "sha256:fab31f48282ebf54dd69f6663cd2d9800096bad1bb67bbc9c9ac84eb77b41972"}, @@ -4735,43 +4646,45 @@ scipy = [ {file = "scipy-1.5.4.tar.gz", hash = "sha256:4a453d5e5689de62e5d38edf40af3f17560bfd63c9c5bd228c18c1f99afa155b"}, ] sentencepiece = [ - {file = "sentencepiece-0.1.94-cp35-cp35m-macosx_10_6_x86_64.whl", hash = "sha256:7b6c794d30272a5e635e958fdb4976dd991bf35eed90441104a042b2e51723c7"}, - {file = "sentencepiece-0.1.94-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:b5e3eedad0ef5b3a4ae1d201fc0edc7f4b4d567c016913d4b996ebf0ab66748b"}, - {file = "sentencepiece-0.1.94-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:58db565195ee31efbaca9d00937f9f73aa131cc820c2ad46a39ac62f8671866f"}, - {file = "sentencepiece-0.1.94-cp35-cp35m-manylinux2014_ppc64le.whl", hash = "sha256:cbde526df19d6bcfa2b8503b2a4bf6996dd3172f631fd2b7efd7b6435d96407c"}, - {file = "sentencepiece-0.1.94-cp35-cp35m-manylinux2014_s390x.whl", hash = "sha256:b01057743c2488c8d6e7b45b0732ee23976ac3d58d11cd90390cbc3221c07402"}, - {file = "sentencepiece-0.1.94-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:cd6434909e1c8494b3254bf3150420e45489214d9bc7ab6ad4d1804d75d6d58f"}, - {file = "sentencepiece-0.1.94-cp36-cp36m-macosx_10_6_x86_64.whl", hash = "sha256:7b4867845e6935c43e37042a451d2ce84d9d97365300151a8c1c1cc724acad32"}, - {file = "sentencepiece-0.1.94-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:4d7d0844a57156b630fb98e21203c2755b342824b8c5a445e4ac78612c291218"}, - {file = "sentencepiece-0.1.94-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:a75f418bd92c6c92e2ee0c95e89b45b76bc54e45ed7cf2b3b74d313b263d1baa"}, - {file = "sentencepiece-0.1.94-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:995e645a94107e46317987d348216a0fb1ae3a8befec9c99cc506b8994aa133d"}, - {file = "sentencepiece-0.1.94-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:232a882ebf074966e24943119ab83554642bd339bd5d6bd2641092133983bc6a"}, - {file = "sentencepiece-0.1.94-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:db744b73b5a5fd7adfa5cfc4eb4b7d0f408c2059783fd52c934b49743a0d2326"}, - {file = "sentencepiece-0.1.94-cp36-cp36m-win32.whl", hash = "sha256:1d7c9f52a2e32a7a2eb9685ddf74a86b5df94fcaccf37be661ac9bb5c9db4893"}, - {file = "sentencepiece-0.1.94-cp36-cp36m-win_amd64.whl", hash = "sha256:11bd70be4baf4e67b1714e43bcd1e7fed0ce04616a20388367299846fdaf712d"}, - {file = "sentencepiece-0.1.94-cp37-cp37m-macosx_10_6_x86_64.whl", hash = "sha256:9c8476febe8eb0a165cf04192ebd2b15124d83cfc44269e10d2a83ace677f109"}, - {file = "sentencepiece-0.1.94-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:9d2245d400424ab261e3253308001606668126a08efdc19ee2c348b0e228e1e1"}, - {file = "sentencepiece-0.1.94-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:e4aef0be184f3c5b72a1c3f7e01fbf245eb3b3c70365f823e24542008afe387f"}, - {file = "sentencepiece-0.1.94-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:5c2969c4f62039d82f761c9548011bf39673a1eb8dc8f747943b88851523c943"}, - {file = "sentencepiece-0.1.94-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:c9d440d9ecf8c8787b89bc8596f7a47c548a9968f802d654faaf5652598ffbb0"}, - {file = "sentencepiece-0.1.94-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:295ef1ccf570c33728040a461cf837611495e8a5bd954012a5784fb3529ff460"}, - {file = "sentencepiece-0.1.94-cp37-cp37m-win32.whl", hash = "sha256:9d446ad41744a898f34800ee492553b4a24255a0f922cb32fe33a3c0a865d153"}, - {file = "sentencepiece-0.1.94-cp37-cp37m-win_amd64.whl", hash = "sha256:fd12969cf8420870bee743398e2e60f722d1ffdf9d201dc1d6b09096c971bfd9"}, - {file = "sentencepiece-0.1.94-cp38-cp38-macosx_10_6_x86_64.whl", hash = "sha256:3f6c0b5c501053a2f9d99daccbf187f367ded5ae35e9e031feae56188b352433"}, - {file = "sentencepiece-0.1.94-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:05e6ef6a669d2e2d3232d95acfb2a9d255272484b898ea0650659d95448bf93f"}, - {file = "sentencepiece-0.1.94-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:1e6b711563163fc8cf2c873d08b4495244859e3f6d6c18859b524395d8550482"}, - {file = "sentencepiece-0.1.94-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:bf524fa6243cfd05a04f65a6b17516ddd58438adf3c35df02ca3ebb832270a47"}, - {file = "sentencepiece-0.1.94-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:ed49f1187a25db531e2ad95718a5640a3f7e0467bc82e4267cc6f7b6caa3054a"}, - {file = "sentencepiece-0.1.94-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:fb31a1827da0de50dc8ca33d4e657121594092c7231a4fb2d6a86149dfd98bc5"}, - {file = "sentencepiece-0.1.94-cp38-cp38-win32.whl", hash = "sha256:9c87f759dddefff52c12d4a3500a00faf22ea476a004c33c78794699069d8fc9"}, - {file = "sentencepiece-0.1.94-cp38-cp38-win_amd64.whl", hash = "sha256:4c11b2fc89c71510a900e2dbd4d93fb18a867ce7160f298bb6bb8a581d646d63"}, - {file = "sentencepiece-0.1.94-cp39-cp39-macosx_10_6_x86_64.whl", hash = "sha256:88ef71e36b09ddd53498064efaec5470a09698df2427362cc4e86198d88aa01e"}, - {file = "sentencepiece-0.1.94-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a89d90b45ba5025fcd19cad685c7572624a036d883091af967a75f3793c2aee4"}, - {file = "sentencepiece-0.1.94-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:c571b26017d8dd1c47dc2eeae09caa15cfe3d2f31fb01f004d463403a1f1349b"}, - {file = "sentencepiece-0.1.94-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:42d35adb51eb530d57c56c2cd445dbf9bd9db36bf82741aa5b42216f7f34c12d"}, - {file = "sentencepiece-0.1.94-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fee3e6849b9e0cef774fb003ba2950b282b1910cdd761794bbf8dc0aa9d5f7d3"}, - {file = "sentencepiece-0.1.94-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:e5074d8239dcc6130dce8ffd734ab797f86679fc75a4a1d96adc243293178c05"}, - {file = "sentencepiece-0.1.94.tar.gz", hash = "sha256:849d74885f6f7af03a5d354b919bf23c757f94257d7a068bc464efd70d651e3a"}, + {file = "sentencepiece-0.1.95-cp35-cp35m-macosx_10_6_x86_64.whl", hash = "sha256:21cfec2ec80eb6f603fb92b0416479272f3ec30cfd511b8525a964e2f1cf82a6"}, + {file = "sentencepiece-0.1.95-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:f05663139279718421084d618131a24cffc068860873531ebfe38a73085cbd2e"}, + {file = "sentencepiece-0.1.95-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:43acdb01466de8189b899de153b96eb50e0ea3b77608c1d4f4f8f0c6f343fe45"}, + {file = "sentencepiece-0.1.95-cp35-cp35m-manylinux2014_ppc64le.whl", hash = "sha256:243ce7c067ba15e5883ab772117b144a8fa1f5827c466a664c9f52d173f6e375"}, + {file = "sentencepiece-0.1.95-cp35-cp35m-manylinux2014_s390x.whl", hash = "sha256:8613286b537056e6d2029e306719e33d4e09c369a1741490e4e18f2a6a797996"}, + {file = "sentencepiece-0.1.95-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:c510e0d26760d51b31f2fb05e1638419a1590df8783300d79e898f2bb93975a8"}, + {file = "sentencepiece-0.1.95-cp36-cp36m-macosx_10_6_x86_64.whl", hash = "sha256:94f866601203b78095d9f219995820ff4606d67281895a6c79d5c1ffe75575ac"}, + {file = "sentencepiece-0.1.95-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d789bcdce025b377a45830d3962d041b1acf7e416e5451bef081bd6a9c758dfd"}, + {file = "sentencepiece-0.1.95-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:53951098eddfc25a5fa0cd9be748c9346db3c2be0b6c74a8ac6663acbde2b639"}, + {file = "sentencepiece-0.1.95-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:f5b6ab735d30eb1801998d4c413592149f9414d9aa300d90a28e8769792d2a5b"}, + {file = "sentencepiece-0.1.95-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:60715ef703af2410e5f5cac89d8123f1a0a8dbce1406a2ceaecf805eb0c0cfd9"}, + {file = "sentencepiece-0.1.95-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:d880e8f70822fe98b4f584814f5cccebf9e72aea7b44acc1a26731780fac03f7"}, + {file = "sentencepiece-0.1.95-cp36-cp36m-win32.whl", hash = "sha256:d89c04aeedab0d5c25de8fc6302d58ec6fb135e2670449376c7d0301d7963680"}, + {file = "sentencepiece-0.1.95-cp36-cp36m-win_amd64.whl", hash = "sha256:8e2f6096899a32246a0c65ea7f24a01ff32ea49563ef013b348acb7bca5831d5"}, + {file = "sentencepiece-0.1.95-cp37-cp37m-macosx_10_6_x86_64.whl", hash = "sha256:438ee23faf095a9ebcc97debad2b07c0647ff6a306ed4d430146c3f80c7f6354"}, + {file = "sentencepiece-0.1.95-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:48fd95e0bf082a432cff5d4b7e5fa6d5fdaf87fb2de210aa91f90086c89464a2"}, + {file = "sentencepiece-0.1.95-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:163d869ce8dd7a9ed11187756272e8c73cd1caae1f47a701e5d70ad80485a655"}, + {file = "sentencepiece-0.1.95-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:087373b148b82854a3c03a9ad57d58a8ff5366b2f6d718bca27f262c102439ce"}, + {file = "sentencepiece-0.1.95-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fa8ee7411f31a7e7e1b4ed48de958e63befdba3465d7c7d9bd5a87235f7e5bd1"}, + {file = "sentencepiece-0.1.95-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:ad2866aebdf702b0d6a992b2b3b46c2de3739ca8a92bce17f24cf51c29fa4f3e"}, + {file = "sentencepiece-0.1.95-cp37-cp37m-win32.whl", hash = "sha256:7f7929c7741ea276d44c1e7966a1347943fab2089a55bc32fc42ba3c71a6e2e1"}, + {file = "sentencepiece-0.1.95-cp37-cp37m-win_amd64.whl", hash = "sha256:c2add7d87c30898661de5b9e492bd99c5b184c731dec3c7dd3d2c956e4003446"}, + {file = "sentencepiece-0.1.95-cp38-cp38-macosx_10_6_x86_64.whl", hash = "sha256:453f9cf531b5ea694472a5f0a4dc727bfb4f383c8a80a9b5261db6d3a59d4018"}, + {file = "sentencepiece-0.1.95-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:5ff761f322a1b34d691d8b1d87c735d8de725ce3458d879d9d0c319e285e7169"}, + {file = "sentencepiece-0.1.95-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:bc7324da0209b632be107123f40505e2400e6aa49e39b49a35d081c36e6cee1b"}, + {file = "sentencepiece-0.1.95-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:5e177f6e40b074e08d3c0c2a1a862fbc94897d9c3439c7752a03a4f61197a743"}, + {file = "sentencepiece-0.1.95-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:5cac1dcacc2c6bea397188daa549f194ca2bc4d0a7005633ecd03b165e1ad16f"}, + {file = "sentencepiece-0.1.95-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:77dff55aa8f74e36f7fd7df861723574630327fdfff0ca18fdbb4fe031c9ecbe"}, + {file = "sentencepiece-0.1.95-cp38-cp38-win32.whl", hash = "sha256:e3cf28e56f49edb9ac021e247399671b8099e516ecd8091ee8ad5d35716e16e3"}, + {file = "sentencepiece-0.1.95-cp38-cp38-win_amd64.whl", hash = "sha256:6365bb9b7a17573e1ed9a277eafad6b5a489100840149297b2f399294ca11817"}, + {file = "sentencepiece-0.1.95-cp39-cp39-macosx_10_6_x86_64.whl", hash = "sha256:58a1013c2a676e16647c64505b9e8cd7e7e5fb9f2d92ec91f2d2a5f777632a69"}, + {file = "sentencepiece-0.1.95-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:10e8119175e35075d05dad49c2903903229c7b1331b872fff5ad6a85d369152c"}, + {file = "sentencepiece-0.1.95-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:99ba407001cc45b76e56e03f63eb27e011fe614c3a38e2c0ed5818bb88e050f6"}, + {file = "sentencepiece-0.1.95-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:fa52e8a438f500e07c81c068fe128f9c4e677331eff0b17b28c55585aa7c112a"}, + {file = "sentencepiece-0.1.95-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:26676ecc4985902cf4af5d597df3d2c4f32f58ed3e23db20c47950f6065089d7"}, + {file = "sentencepiece-0.1.95-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:03ac268fa1f5f2adcb083f40becd63b5bbbe2c13dec2cd46222688f8477827c5"}, + {file = "sentencepiece-0.1.95-cp39-cp39-win32.whl", hash = "sha256:4749b187c91e796fe52b82abef3c05a60d82065088844c0fe45d5c221ddc097a"}, + {file = "sentencepiece-0.1.95-cp39-cp39-win_amd64.whl", hash = "sha256:d3410cffb275c319c61977ae3a8729ab224d330bdf69d66cf5f6c55a4deb3d9a"}, + {file = "sentencepiece-0.1.95.tar.gz", hash = "sha256:8dd6e3e110f4c3f85a46e4a2ae1b6f7cf020b907fab50eac22beccf1680e0ea5"}, ] sentinels = [ {file = "sentinels-1.0.0.tar.gz", hash = "sha256:7be0704d7fe1925e397e92d18669ace2f619c92b5d4eb21a89f31e026f9ff4b1"}, @@ -4793,16 +4706,16 @@ slackclient = [ {file = "slackclient-2.9.3.tar.gz", hash = "sha256:07ec8fa76f6aa64852210ae235ff9e637ba78124e06c0b07a7eeea4abb955965"}, ] 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-3.0.5-py2.py3-none-any.whl", hash = "sha256:7bfcf367828031dc893530a29cb35eb8c8f2d7c8f2d0989354d75d24c8573714"}, + {file = "smmap-3.0.5.tar.gz", hash = "sha256:84c2751ef3072d4f6b2785ec7ee40244c6f45eb934d9e543e2c51f1bd3d54c50"}, ] sniffio = [ {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, ] 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.1.0-py2.py3-none-any.whl", hash = "sha256:b51b447bea85f9968c13b650126a888aabd4cb4463fca868ec596826325dedc2"}, + {file = "snowballstemmer-2.1.0.tar.gz", hash = "sha256:e997baa4f2e9139951b6f4c631bad912dfd3c792467e2f03d7239464af90e914"}, ] sortedcontainers = [ {file = "sortedcontainers-2.3.0-py2.py3-none-any.whl", hash = "sha256:37257a32add0a3ee490bb170b599e93095eed89a55da91fa9f48753ea12fd73f"}, @@ -4884,10 +4797,10 @@ tabulate = [ {file = "tabulate-0.8.7.tar.gz", hash = "sha256:db2723a20d04bcda8522165c73eea7c300eda74e0ce852d9022e0159d7895007"}, ] tensorboard = [ - {file = "tensorboard-2.4.0-py3-none-any.whl", hash = "sha256:cde0c663a85609441cb4d624e7255fd8e2b6b1d679645095aac8a234a2812738"}, + {file = "tensorboard-2.4.1-py3-none-any.whl", hash = "sha256:7b8c53c396069b618f6f276ec94fc45d17e3282d668979216e5d30be472115e4"}, ] tensorboard-plugin-wit = [ - {file = "tensorboard_plugin_wit-1.7.0-py3-none-any.whl", hash = "sha256:ee775f04821185c90d9a0e9c56970ee43d7c41403beb6629385b39517129685b"}, + {file = "tensorboard_plugin_wit-1.8.0-py3-none-any.whl", hash = "sha256:2a80d1c551d741e99b2f197bb915d8a133e24adb8da1732b840041860f91183a"}, ] tensorflow = [ {file = "tensorflow-2.3.2-cp36-cp36m-macosx_10_11_x86_64.whl", hash = "sha256:6aa0aa1e496979daaa577a04bf0db298e2193404c8bedee800e5caded84cf4b5"}, @@ -5080,8 +4993,8 @@ uvloop = [ {file = "uvloop-0.14.0.tar.gz", hash = "sha256:123ac9c0c7dd71464f58f1b4ee0bbd81285d96cdda8bc3519281b8973e3a461e"}, ] wasabi = [ - {file = "wasabi-0.8.0-py3-none-any.whl", hash = "sha256:98bc9c492c6aa8628303a02961a5cfa7b0c7fa6d2b397abdeb0adc4b39397c49"}, - {file = "wasabi-0.8.0.tar.gz", hash = "sha256:75fec6db6193c8615d7f398ae4aa2c4ad294e6e3e81c6a6dbbbd3864ee2223c3"}, + {file = "wasabi-0.8.1-py3-none-any.whl", hash = "sha256:62284f46cac06607508395aa75fb716eb61944f79b39bc894891e3c7351f3e09"}, + {file = "wasabi-0.8.1.tar.gz", hash = "sha256:6e5228a51f5550844ef5080e74759e7ecb6e344241989d018686ba968f0b4f5a"}, ] watchdog = [ {file = "watchdog-1.0.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e2a531e71be7b5cc3499ae2d1494d51b6a26684bcc7c3146f63c810c00e8a3cc"}, @@ -5131,10 +5044,6 @@ werkzeug = [ {file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"}, {file = "Werkzeug-1.0.1.tar.gz", hash = "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"}, ] -wheel = [ - {file = "wheel-0.36.2-py2.py3-none-any.whl", hash = "sha256:78b5b185f0e5763c26ca1e324373aadd49182ca90e825f7853f4b2509215dc0e"}, - {file = "wheel-0.36.2.tar.gz", hash = "sha256:e11eefd162658ea59a60a0f6c7d493a7190ea4b9a85e335b33489d9f17e0245e"}, -] wrapt = [ {file = "wrapt-1.12.1.tar.gz", hash = "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"}, ] diff --git a/pyproject.toml b/pyproject.toml index 88d116cd7733..269adcc832f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,4 +1,5 @@ [build-system] +# keep this in sync with the version in pyproject.toml and Dockerfile.base requires = [ "poetry>=1.1.4",] build-backend = "poetry.masonry.api" diff --git a/rasa/core/policies/ted_policy.py b/rasa/core/policies/ted_policy.py index 820b83e3c4fe..aa026e0f1c09 100644 --- a/rasa/core/policies/ted_policy.py +++ b/rasa/core/policies/ted_policy.py @@ -32,6 +32,8 @@ ENTITY_ATTRIBUTE_TYPE, ENTITY_TAGS, EXTRACTOR, + SPLIT_ENTITIES_BY_COMMA, + SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, ) from rasa.shared.nlu.interpreter import NaturalLanguageInterpreter from rasa.core.policies.policy import Policy, PolicyPrediction @@ -274,6 +276,10 @@ class TEDPolicy(Policy): FEATURIZERS: [], # If set to true, entities are predicted in user utterances. ENTITY_RECOGNITION: True, + # Split entities by comma, this makes sense e.g. for a list of + # ingredients in a recipe, but it doesn't make sense for the parts of + # an address + SPLIT_ENTITIES_BY_COMMA: SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, } @staticmethod @@ -294,6 +300,11 @@ def __init__( **kwargs: Any, ) -> None: """Declare instance variables with default values.""" + self.split_entities_config = rasa.utils.train_utils.init_split_entities( + kwargs.get(SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE), + self.defaults[SPLIT_ENTITIES_BY_COMMA], + ) + if not featurizer: featurizer = self._standard_featurizer(max_history) @@ -667,7 +678,11 @@ def _create_optional_event_for_entities( parsed_message = interpreter.featurize_message(Message(data={TEXT: text})) tokens = parsed_message.get(TOKENS_NAMES[TEXT]) entities = EntityExtractor.convert_predictions_into_entities( - text, tokens, predicted_tags, confidences=confidence_values + text, + tokens, + predicted_tags, + self.split_entities_config, + confidences=confidence_values, ) # add the extractor name diff --git a/rasa/nlu/extractors/extractor.py b/rasa/nlu/extractors/extractor.py index 4d79b89ab622..7d51e3b40f17 100644 --- a/rasa/nlu/extractors/extractor.py +++ b/rasa/nlu/extractors/extractor.py @@ -28,17 +28,40 @@ SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, SINGLE_ENTITY_ALLOWED_INTERLEAVING_CHARSET, ) +import rasa.utils.train_utils class EntityExtractor(Component): + """Entity extractors are components which extract entities. + + They can be placed in the pipeline like other components, and can extract + entities like a person's name, or a location. + """ + def add_extractor_name( self, entities: List[Dict[Text, Any]] ) -> List[Dict[Text, Any]]: + """Adds this extractor's name to a list of entities. + + Args: + entities: the extracted entities. + + Returns: + the modified entities. + """ for entity in entities: entity[EXTRACTOR] = self.name return entities def add_processor_name(self, entity: Dict[Text, Any]) -> Dict[Text, Any]: + """Adds this extractor's name to the list of processors for this entity. + + Args: + entity: the extracted entity and its metadata. + + Returns: + the modified entity. + """ if "processors" in entity: entity["processors"].append(self.name) else: @@ -46,18 +69,23 @@ def add_processor_name(self, entity: Dict[Text, Any]) -> Dict[Text, Any]: return entity - def init_split_entities(self): - """Initialise the behaviour for splitting entities by comma (or not).""" + def init_split_entities(self) -> Dict[Text, bool]: + """Initialises the behaviour for splitting entities by comma (or not). + + Returns: + Defines desired behaviour for splitting specific entity types and + default behaviour for splitting any entity types for which no + behaviour is defined. + """ split_entities_config = self.component_config.get( SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE ) - if isinstance(split_entities_config, bool): - split_entities_config = {SPLIT_ENTITIES_BY_COMMA: split_entities_config} - else: - split_entities_config[SPLIT_ENTITIES_BY_COMMA] = self.defaults[ - SPLIT_ENTITIES_BY_COMMA - ] - return split_entities_config + default_value = self.defaults.get( + SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE + ) + return rasa.utils.train_utils.init_split_entities( + split_entities_config, default_value + ) @staticmethod def filter_irrelevant_entities(extracted: list, requested_dimensions: set) -> list: diff --git a/rasa/utils/train_utils.py b/rasa/utils/train_utils.py index fb9ea1faf6ed..6fffa4589714 100644 --- a/rasa/utils/train_utils.py +++ b/rasa/utils/train_utils.py @@ -23,7 +23,12 @@ NUM_TRANSFORMER_LAYERS, DENSE_DIMENSION, ) -from rasa.shared.nlu.constants import ACTION_NAME, INTENT, ENTITIES +from rasa.shared.nlu.constants import ( + ACTION_NAME, + INTENT, + ENTITIES, + SPLIT_ENTITIES_BY_COMMA, +) from rasa.shared.core.constants import ACTIVE_LOOP, SLOTS from rasa.core.constants import DIALOGUE @@ -335,3 +340,23 @@ def override_defaults( config[key] = custom[key] return config + + +def init_split_entities( + split_entities_config, default_split_entity +) -> Dict[Text, bool]: + """Initialise the behaviour for splitting entities by comma (or not). + + Returns: + Defines desired behaviour for splitting specific entity types and + default behaviour for splitting any entity types for which no behaviour + is defined. + """ + if isinstance(split_entities_config, bool): + # All entities will be split according to `split_entities_config` + split_entities_config = {SPLIT_ENTITIES_BY_COMMA: split_entities_config} + else: + # All entities not named in split_entities_config will be split + # according to `split_entities_config` + split_entities_config[SPLIT_ENTITIES_BY_COMMA] = default_split_entity + return split_entities_config diff --git a/tests/utils/test_train_utils.py b/tests/utils/test_train_utils.py index 8400a2be68e9..9ec906d9606e 100644 --- a/tests/utils/test_train_utils.py +++ b/tests/utils/test_train_utils.py @@ -1,8 +1,15 @@ +from typing import Any, Dict + import numpy as np +import pytest import rasa.utils.train_utils as train_utils from rasa.nlu.constants import NUMBER_OF_SUB_TOKENS from rasa.nlu.tokenizers.tokenizer import Token +from rasa.shared.nlu.constants import ( + SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, + SPLIT_ENTITIES_BY_COMMA, +) def test_align_token_features(): @@ -26,3 +33,31 @@ def test_align_token_features(): assert np.all(actual_features[0][3] == np.mean(token_features[0][3:5], axis=0)) # embedding is split into 4 sub-tokens assert np.all(actual_features[0][4] == np.mean(token_features[0][5:10], axis=0)) + + +@pytest.mark.parametrize( + "split_entities_config, expected_initialized_config", + [ + ( + SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, + {SPLIT_ENTITIES_BY_COMMA: SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE}, + ), + ( + {"address": False, "ingredients": True}, + { + "address": False, + "ingredients": True, + SPLIT_ENTITIES_BY_COMMA: SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, + }, + ), + ], +) +def test_init_split_entities_config( + split_entities_config: Any, expected_initialized_config: Dict[(str, bool)], +): + assert ( + train_utils.init_split_entities( + split_entities_config, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE + ) + == expected_initialized_config + )