From 67bbecfeef02a10187f35e6a489991e69afaa15d Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Wed, 13 Jan 2021 10:00:46 +0100 Subject: [PATCH 01/29] Add to TEDPolicy --- rasa/core/policies/ted_policy.py | 25 +++++++++++++++++++++++-- tests/core/test_policies.py | 20 ++++++++++++++++++-- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/rasa/core/policies/ted_policy.py b/rasa/core/policies/ted_policy.py index f06530b26a54..9a4bd5a3122b 100644 --- a/rasa/core/policies/ted_policy.py +++ b/rasa/core/policies/ted_policy.py @@ -31,7 +31,7 @@ FEATURE_TYPE_SENTENCE, ENTITY_ATTRIBUTE_TYPE, ENTITY_TAGS, - EXTRACTOR, + 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 @@ -272,6 +272,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 @@ -280,6 +284,16 @@ def _standard_featurizer(max_history: Optional[int] = None) -> TrackerFeaturizer SingleStateFeaturizer(), max_history=max_history ) + def init_split_entities(self, split_entities_config): + """Initialise the behaviour for splitting entities by comma (or not).""" + 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 + def __init__( self, featurizer: Optional[TrackerFeaturizer] = None, @@ -292,6 +306,9 @@ def __init__( **kwargs: Any, ) -> None: """Declare instance variables with default values.""" + self.split_entities_config = self.init_split_entities(kwargs.get(SPLIT_ENTITIES_BY_COMMA, + SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE)) + if not featurizer: featurizer = self._standard_featurizer(max_history) @@ -662,7 +679,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/tests/core/test_policies.py b/tests/core/test_policies.py index 997eb5228352..91534b483594 100644 --- a/tests/core/test_policies.py +++ b/tests/core/test_policies.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Type, List, Text, Tuple, Optional, Any +from typing import Type, List, Text, Tuple, Optional, Any, Dict from unittest.mock import Mock, patch import numpy as np @@ -18,7 +18,8 @@ from rasa.shared.core.training_data.story_writer.markdown_story_writer import ( MarkdownStoryWriter, ) -from rasa.shared.nlu.constants import ACTION_NAME, INTENT_NAME_KEY +from rasa.shared.nlu.constants import ACTION_NAME, INTENT_NAME_KEY, \ + SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, SPLIT_ENTITIES_BY_COMMA from rasa.shared.core.constants import ( USER_INTENT_RESTART, USER_INTENT_BACK, @@ -556,6 +557,21 @@ async def test_gen_batch(self, trained_policy: TEDPolicy, default_domain: Domain or batch_slots_sentence_shape[1] == 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( + self, + trained_policy: TEDPolicy, + split_entities_config: Any, + expected_initialized_config: Dict[(str, bool)] + ): + assert trained_policy.init_split_entities(split_entities_config=split_entities_config) class TestTEDPolicyMargin(TestTEDPolicy): def create_policy( From ee22e61bb44eb7a4063be44466f3b22bdef70498 Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Wed, 13 Jan 2021 10:42:53 +0100 Subject: [PATCH 02/29] Add docs and changelog, as well as cleanup --- changelog/7707.bugfix.md | 2 ++ docs/docs/policies.mdx | 19 +++++++++++++++++ rasa/core/policies/ted_policy.py | 11 ++++++---- tests/core/test_policies.py | 36 +++++++++++++++++++++++--------- 4 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 changelog/7707.bugfix.md 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/docs/docs/policies.mdx b/docs/docs/policies.mdx index 6dcd139907cf..0ea57c32d05c 100644 --- a/docs/docs/policies.mdx +++ b/docs/docs/policies.mdx @@ -176,6 +176,25 @@ 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, + whether the entities with type ingredients "apple, banana" should be split into "apple" and "banana". 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: + 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. diff --git a/rasa/core/policies/ted_policy.py b/rasa/core/policies/ted_policy.py index 9a4bd5a3122b..5991d5fa2c4a 100644 --- a/rasa/core/policies/ted_policy.py +++ b/rasa/core/policies/ted_policy.py @@ -31,7 +31,9 @@ FEATURE_TYPE_SENTENCE, ENTITY_ATTRIBUTE_TYPE, ENTITY_TAGS, - EXTRACTOR, SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, + 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 @@ -306,8 +308,9 @@ def __init__( **kwargs: Any, ) -> None: """Declare instance variables with default values.""" - self.split_entities_config = self.init_split_entities(kwargs.get(SPLIT_ENTITIES_BY_COMMA, - SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE)) + self.split_entities_config = self.init_split_entities( + kwargs.get(SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE) + ) if not featurizer: featurizer = self._standard_featurizer(max_history) @@ -683,7 +686,7 @@ def _create_optional_event_for_entities( tokens, predicted_tags, self.split_entities_config, - confidences=confidence_values + confidences=confidence_values, ) # add the extractor name diff --git a/tests/core/test_policies.py b/tests/core/test_policies.py index 91534b483594..9f6f635e91d8 100644 --- a/tests/core/test_policies.py +++ b/tests/core/test_policies.py @@ -18,8 +18,12 @@ from rasa.shared.core.training_data.story_writer.markdown_story_writer import ( MarkdownStoryWriter, ) -from rasa.shared.nlu.constants import ACTION_NAME, INTENT_NAME_KEY, \ - SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, SPLIT_ENTITIES_BY_COMMA +from rasa.shared.nlu.constants import ( + ACTION_NAME, + INTENT_NAME_KEY, + SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, + SPLIT_ENTITIES_BY_COMMA, +) from rasa.shared.core.constants import ( USER_INTENT_RESTART, USER_INTENT_BACK, @@ -560,18 +564,30 @@ async def test_gen_batch(self, trained_policy: TEDPolicy, default_domain: Domain @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}), + ( + 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( - self, - trained_policy: TEDPolicy, - split_entities_config: Any, - expected_initialized_config: Dict[(str, bool)] + self, + trained_policy: TEDPolicy, + split_entities_config: Any, + expected_initialized_config: Dict[(str, bool)], ): - assert trained_policy.init_split_entities(split_entities_config=split_entities_config) + assert trained_policy.init_split_entities( + split_entities_config=split_entities_config + ) + class TestTEDPolicyMargin(TestTEDPolicy): def create_policy( From a11deaccd3bece25e78a214d9c2c1a00988be96e Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Wed, 13 Jan 2021 11:04:28 +0100 Subject: [PATCH 03/29] Fix typo in docs --- docs/docs/policies.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/docs/policies.mdx b/docs/docs/policies.mdx index 0ea57c32d05c..e48a6ee28756 100644 --- a/docs/docs/policies.mdx +++ b/docs/docs/policies.mdx @@ -187,7 +187,6 @@ If you want to fine-tune your model, start by modifying the following parameters ``` or set per entity type, such as: ```yaml-rasa title="config.yml" - policies: policies: - name: TEDPolicy split_entities_by_comma: From 28f300eb4227fe9678fee7da0c63b5bb1d73edb0 Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Wed, 13 Jan 2021 18:15:37 +0100 Subject: [PATCH 04/29] Move init_split_entities_config into train_utils, and apply suggestions to docs --- docs/docs/policies.mdx | 9 +++++++++ rasa/core/policies/ted_policy.py | 15 +++------------ rasa/nlu/extractors/extractor.py | 11 ++++------- rasa/utils/train_utils.py | 16 +++++++++++++++- 4 files changed, 31 insertions(+), 20 deletions(-) diff --git a/docs/docs/policies.mdx b/docs/docs/policies.mdx index e48a6ee28756..41bfd358a026 100644 --- a/docs/docs/policies.mdx +++ b/docs/docs/policies.mdx @@ -338,6 +338,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/rasa/core/policies/ted_policy.py b/rasa/core/policies/ted_policy.py index 5991d5fa2c4a..38b3088922e6 100644 --- a/rasa/core/policies/ted_policy.py +++ b/rasa/core/policies/ted_policy.py @@ -286,16 +286,6 @@ def _standard_featurizer(max_history: Optional[int] = None) -> TrackerFeaturizer SingleStateFeaturizer(), max_history=max_history ) - def init_split_entities(self, split_entities_config): - """Initialise the behaviour for splitting entities by comma (or not).""" - 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 - def __init__( self, featurizer: Optional[TrackerFeaturizer] = None, @@ -308,8 +298,9 @@ def __init__( **kwargs: Any, ) -> None: """Declare instance variables with default values.""" - self.split_entities_config = self.init_split_entities( - kwargs.get(SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE) + 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: diff --git a/rasa/nlu/extractors/extractor.py b/rasa/nlu/extractors/extractor.py index 4d79b89ab622..9aeb06a7b804 100644 --- a/rasa/nlu/extractors/extractor.py +++ b/rasa/nlu/extractors/extractor.py @@ -28,6 +28,7 @@ SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, SINGLE_ENTITY_ALLOWED_INTERLEAVING_CHARSET, ) +import rasa.utils.train_utils class EntityExtractor(Component): @@ -51,13 +52,9 @@ def init_split_entities(self): 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 + rasa.utils.train_utils.init_split_entities( + split_entities_config, self.defaults[SPLIT_ENTITIES_BY_COMMA] + ) @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..cf7aa34ab443 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,12 @@ def override_defaults( config[key] = custom[key] return config + + +def init_split_entities(split_entities_config, default_split_entity): + """Initialise the behaviour for splitting entities by comma (or not).""" + if isinstance(split_entities_config, bool): + split_entities_config = {SPLIT_ENTITIES_BY_COMMA: split_entities_config} + else: + split_entities_config[SPLIT_ENTITIES_BY_COMMA] = default_split_entity + return split_entities_config From 374f2a63f0c62d88672e0a0ef754d6042fc83f4b Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Thu, 14 Jan 2021 15:37:57 +0100 Subject: [PATCH 05/29] Use buildx for Docker builds --- .dockerignore | 2 + .gitattributes | 4 +- .github/workflows/continous-integration.yml | 213 ++++++++++++++++-- Dockerfile | 36 +-- docker/Dockerfile.base | 39 ++++ docker/Dockerfile.base-mitie | 7 + docker/Dockerfile.full | 61 +++++ .../Dockerfile.pretrained_embeddings_mitie_en | 51 +++++ .../Dockerfile.pretrained_embeddings_spacy_de | 52 +++++ .../Dockerfile.pretrained_embeddings_spacy_en | 52 +++++ docker/Dockerfile_full | 87 ------- .../Dockerfile_pretrained_embeddings_mitie_en | 78 ------- .../Dockerfile_pretrained_embeddings_spacy_de | 79 ------- .../Dockerfile_pretrained_embeddings_spacy_en | 79 ------- docker/docker-bake.hcl | 115 ++++++++++ 15 files changed, 575 insertions(+), 380 deletions(-) create mode 100644 docker/Dockerfile.base create mode 100644 docker/Dockerfile.base-mitie create mode 100644 docker/Dockerfile.full create mode 100644 docker/Dockerfile.pretrained_embeddings_mitie_en create mode 100644 docker/Dockerfile.pretrained_embeddings_spacy_de create mode 100644 docker/Dockerfile.pretrained_embeddings_spacy_en delete mode 100644 docker/Dockerfile_full delete mode 100644 docker/Dockerfile_pretrained_embeddings_mitie_en delete mode 100644 docker/Dockerfile_pretrained_embeddings_spacy_de delete mode 100644 docker/Dockerfile_pretrained_embeddings_spacy_en create mode 100644 docker/docker-bake.hcl diff --git a/.dockerignore b/.dockerignore index 29e6912ac6c6..8d8690403396 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,3 +4,5 @@ docs **/*.pyc **/__pycache__ !docker/configs +rasa/tests +rasa/scripts 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 689c6bc7e709..450850d8f841 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: @@ -279,27 +281,170 @@ 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: latest + 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 + run: | + DOCKERHUB_TAGS_URL="https://registry.hub.docker.com/v2/repositories/rasa/rasa/tags?page_size=10000" + + # Base image + BASE_IMAGE_HASH=${{ hashFiles('docker/Dockerfile.base') }} + BASE_IMAGE_TAG=$(curl -s ${DOCKERHUB_TAGS_URL} | jq -r '.results[] | select(.name == "base-'${BASE_IMAGE_HASH}'") | .name') + + echo "::set-output name=base_image_hash::${BASE_IMAGE_HASH}" + + echo $BASE_IMAGE_TAG $BASE_IMAGE_HASH + if [[ "${BASE_IMAGE_TAG}" == "base-${BASE_IMAGE_HASH}" ]]; then + echo "::set-output name=base_exists::true" + else + echo "::set-output name=base_exists::false" + fi + + # Base MITIE image + BASE_MITIE_IMAGE_HASH=${{ hashFiles('docker/Dockerfile.base-mitie') }} + BASE_MITIE_IMAGE_TAG=$(curl -s ${DOCKERHUB_TAGS_URL} | jq -r '.results[] | select(.name == "base-mitie-'${BASE_MITIE_IMAGE_HASH}'") | .name') + + echo "::set-output name=base_mitie_image_hash::${BASE_MITIE_IMAGE_HASH}" + + echo $BASE_MITIE_IMAGE_TAG $BASE_MITIE_IMAGE_HASH + if [[ "${BASE_MITIE_IMAGE_TAG}" == "base-mitie-${BASE_MITIE_IMAGE_HASH}" ]]; then + echo "::set-output name=base_mitie_exists::true" + else + echo "::set-output name=base_mitie_exists::false" + fi + + - name: Build Docker base image and push πŸ›  ⬆ + if: steps.check_image.outputs.base_exists == 'false' || env.IS_TAG_BUILD == 'true' + run: | + export IMAGE_TAG=${{ hashFiles('docker/Dockerfile.base') }} + 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=${{ hashFiles('docker/Dockerfile.base-mitie') }} + 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 master branch + # + # Example output: + # IMAGE_TAG=master + - 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=${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' @@ -312,14 +457,16 @@ jobs: docker rmi $(docker image ls -aq) df -h + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + 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: @@ -328,22 +475,38 @@ 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 master tag πŸ“¦ if: needs.changes.outputs.docker == 'true' && github.event_name == 'push' && github.ref == 'refs/heads/master' && 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/docker/Dockerfile.base b/docker/Dockerfile.base new file mode 100644 index 000000000000..d4d6c772d173 --- /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 +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..2b8b4a34c38a --- /dev/null +++ b/docker/Dockerfile.base-mitie @@ -0,0 +1,7 @@ +# The base image used for all images that require a MITIE model +FROM alpine:latest + +# download mitie model +RUN mkdir -p /build/data/ && 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 diff --git a/docker/Dockerfile.full b/docker/Dockerfile.full new file mode 100644 index 000000000000..7fc0401c4f0a --- /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..c4ad855b5d59 --- /dev/null +++ b/docker/docker-bake.hcl @@ -0,0 +1,115 @@ +variable "IMAGE_NAME" { + default = "rasa/rasa" +} + +variable "IMAGE_TAG" { + default = "localdev" +} + +variable "BASE_IMAGE_HASH" { + default = "localdev" +} + +variable "BASE_MITIE_IMAGE_HASH" { + default = "localdev" +} + +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", + ] +} From 5e04e2e5ed51248cb1bfff210b3e76d8e3b56e77 Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Fri, 15 Jan 2021 16:55:36 +0100 Subject: [PATCH 06/29] Add a changelog entry + update the README --- Makefile | 32 +++++++++++++++++++- README.md | 68 ++++++++++++++++++++++++------------------ changelog/7574.misc.md | 5 ++++ docker/docker-bake.hcl | 4 +++ 4 files changed, 79 insertions(+), 30 deletions(-) create mode 100644 changelog/7574.misc.md diff --git a/Makefile b/Makefile index ee3cda52f057..901253cbe50b 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 @@ -178,3 +178,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 ee80404ec9b6..5a80ea7d988c 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 +``` + +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 (`master` 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 (`master` 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/docker/docker-bake.hcl b/docker/docker-bake.hcl index c4ad855b5d59..f2d8a232738b 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -14,6 +14,10 @@ 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}"] From 39b95bb3da0fd20fe5f45a640ece8cca49274e6e Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Mon, 18 Jan 2021 16:52:14 +0100 Subject: [PATCH 07/29] Fixed tests --- rasa/nlu/extractors/extractor.py | 26 ++++++++++++++++-- rasa/nlu/selectors/response_selector.py | 5 ++++ tests/core/test_policies.py | 27 ------------------- tests/utils/test_train_utils.py | 36 +++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 29 deletions(-) diff --git a/rasa/nlu/extractors/extractor.py b/rasa/nlu/extractors/extractor.py index 9aeb06a7b804..686e1d2aabd9 100644 --- a/rasa/nlu/extractors/extractor.py +++ b/rasa/nlu/extractors/extractor.py @@ -32,14 +32,36 @@ 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: @@ -48,11 +70,11 @@ 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).""" + """Initialises the behaviour for splitting entities by comma (or not).""" split_entities_config = self.component_config.get( SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE ) - rasa.utils.train_utils.init_split_entities( + return rasa.utils.train_utils.init_split_entities( split_entities_config, self.defaults[SPLIT_ENTITIES_BY_COMMA] ) diff --git a/rasa/nlu/selectors/response_selector.py b/rasa/nlu/selectors/response_selector.py index ac78b6d3964a..c5695c740a4a 100644 --- a/rasa/nlu/selectors/response_selector.py +++ b/rasa/nlu/selectors/response_selector.py @@ -90,6 +90,7 @@ INTENT_RESPONSE_KEY, INTENT_NAME_KEY, PREDICTED_CONFIDENCE_KEY, + SPLIT_ENTITIES_BY_COMMA, ) from rasa.utils.tensorflow.model_data import RasaModelData @@ -230,6 +231,10 @@ def required_components(cls) -> List[Type[Component]]: FEATURIZERS: [], # Perform model checkpointing CHECKPOINT_MODEL: False, + # 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: True, } def __init__( diff --git a/tests/core/test_policies.py b/tests/core/test_policies.py index 9f6f635e91d8..6af77eb844fc 100644 --- a/tests/core/test_policies.py +++ b/tests/core/test_policies.py @@ -561,33 +561,6 @@ async def test_gen_batch(self, trained_policy: TEDPolicy, default_domain: Domain or batch_slots_sentence_shape[1] == 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( - self, - trained_policy: TEDPolicy, - split_entities_config: Any, - expected_initialized_config: Dict[(str, bool)], - ): - assert trained_policy.init_split_entities( - split_entities_config=split_entities_config - ) - class TestTEDPolicyMargin(TestTEDPolicy): def create_policy( diff --git a/tests/utils/test_train_utils.py b/tests/utils/test_train_utils.py index 8400a2be68e9..1b19de41cde1 100644 --- a/tests/utils/test_train_utils.py +++ b/tests/utils/test_train_utils.py @@ -1,8 +1,16 @@ +from typing import Any, Dict + import numpy as np +import pytest import rasa.utils.train_utils as train_utils +from rasa.core.policies.ted_policy import TEDPolicy 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 +34,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 + ) From 685d9464bf610b06ef0e4c76a959214e8dc2810a Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Mon, 18 Jan 2021 17:03:12 +0100 Subject: [PATCH 08/29] Removed SPLIT_ENTITIES_BY_COMMA from ResponseSelector defaults, because it doesn't make sense --- rasa/nlu/extractors/extractor.py | 5 ++++- rasa/nlu/selectors/response_selector.py | 4 ---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/rasa/nlu/extractors/extractor.py b/rasa/nlu/extractors/extractor.py index 686e1d2aabd9..30579ce6b7c3 100644 --- a/rasa/nlu/extractors/extractor.py +++ b/rasa/nlu/extractors/extractor.py @@ -74,8 +74,11 @@ def init_split_entities(self): split_entities_config = self.component_config.get( SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE ) + default_value = (self.defaults[SPLIT_ENTITIES_BY_COMMA] + if SPLIT_ENTITIES_BY_COMMA in self.defaults + else SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE) return rasa.utils.train_utils.init_split_entities( - split_entities_config, self.defaults[SPLIT_ENTITIES_BY_COMMA] + split_entities_config, default_value ) @staticmethod diff --git a/rasa/nlu/selectors/response_selector.py b/rasa/nlu/selectors/response_selector.py index c5695c740a4a..2aa9e34b8889 100644 --- a/rasa/nlu/selectors/response_selector.py +++ b/rasa/nlu/selectors/response_selector.py @@ -231,10 +231,6 @@ def required_components(cls) -> List[Type[Component]]: FEATURIZERS: [], # Perform model checkpointing CHECKPOINT_MODEL: False, - # 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: True, } def __init__( From 9fb007f95b06bdf28560ee2a9d7416dbee8039a1 Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Mon, 18 Jan 2021 17:31:40 +0100 Subject: [PATCH 09/29] Lint --- rasa/nlu/extractors/extractor.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rasa/nlu/extractors/extractor.py b/rasa/nlu/extractors/extractor.py index 30579ce6b7c3..881fd242e9f1 100644 --- a/rasa/nlu/extractors/extractor.py +++ b/rasa/nlu/extractors/extractor.py @@ -74,9 +74,11 @@ def init_split_entities(self): split_entities_config = self.component_config.get( SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE ) - default_value = (self.defaults[SPLIT_ENTITIES_BY_COMMA] - if SPLIT_ENTITIES_BY_COMMA in self.defaults - else SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE) + default_value = ( + self.defaults[SPLIT_ENTITIES_BY_COMMA] + if SPLIT_ENTITIES_BY_COMMA in self.defaults + else SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE + ) return rasa.utils.train_utils.init_split_entities( split_entities_config, default_value ) From 0a84c767395bd8cb88711afae8bc94b045d50e78 Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Mon, 18 Jan 2021 17:33:58 +0100 Subject: [PATCH 10/29] Remove unused import --- tests/utils/test_train_utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/utils/test_train_utils.py b/tests/utils/test_train_utils.py index 1b19de41cde1..9ec906d9606e 100644 --- a/tests/utils/test_train_utils.py +++ b/tests/utils/test_train_utils.py @@ -4,7 +4,6 @@ import pytest import rasa.utils.train_utils as train_utils -from rasa.core.policies.ted_policy import TEDPolicy from rasa.nlu.constants import NUMBER_OF_SUB_TOKENS from rasa.nlu.tokenizers.tokenizer import Token from rasa.shared.nlu.constants import ( From 94ff9a48ef57b98ba5c5323fa55a95da2036ccd2 Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Tue, 19 Jan 2021 11:53:19 +0100 Subject: [PATCH 11/29] Apply suggestions based on the code review --- .dockerignore | 2 ++ .github/workflows/continous-integration.yml | 24 ++++++++++----------- Makefile | 23 +++++++++----------- README.md | 2 +- docs/docs/docker/building-in-docker.mdx | 3 +-- 5 files changed, 26 insertions(+), 28 deletions(-) diff --git a/.dockerignore b/.dockerignore index 8d8690403396..34d9c074f7df 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,3 +6,5 @@ docs !docker/configs rasa/tests rasa/scripts +data/ +examples/ diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index 450850d8f841..96560e2f5577 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -211,6 +211,12 @@ jobs: echo "POETRY_VERSION=$(scripts/poetry-version.sh)" >> $GITHUB_ENV shell: bash + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + with: + version: v0.5.1 + driver: docker + - name: Install poetry πŸ¦„ if: needs.changes.outputs.backend == 'true' uses: Gr1N/setup-poetry@v4 @@ -308,7 +314,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 with: - version: latest + version: v0.5.1 driver: docker - name: Login to DockerHub Registry πŸ”’ @@ -337,16 +343,12 @@ jobs: - name: Check if a base image exists id: check_image run: | - DOCKERHUB_TAGS_URL="https://registry.hub.docker.com/v2/repositories/rasa/rasa/tags?page_size=10000" - # Base image BASE_IMAGE_HASH=${{ hashFiles('docker/Dockerfile.base') }} - BASE_IMAGE_TAG=$(curl -s ${DOCKERHUB_TAGS_URL} | jq -r '.results[] | select(.name == "base-'${BASE_IMAGE_HASH}'") | .name') - echo "::set-output name=base_image_hash::${BASE_IMAGE_HASH}" - echo $BASE_IMAGE_TAG $BASE_IMAGE_HASH - if [[ "${BASE_IMAGE_TAG}" == "base-${BASE_IMAGE_HASH}" ]]; then + docker manifest inspect rasa/rasa:base-${BASE_IMAGE_HASH} > /dev/null; EXIT_CODE=$? || true + if [[ $EXIT_CODE -eq 0 ]]; then echo "::set-output name=base_exists::true" else echo "::set-output name=base_exists::false" @@ -354,12 +356,10 @@ jobs: # Base MITIE image BASE_MITIE_IMAGE_HASH=${{ hashFiles('docker/Dockerfile.base-mitie') }} - BASE_MITIE_IMAGE_TAG=$(curl -s ${DOCKERHUB_TAGS_URL} | jq -r '.results[] | select(.name == "base-mitie-'${BASE_MITIE_IMAGE_HASH}'") | .name') - echo "::set-output name=base_mitie_image_hash::${BASE_MITIE_IMAGE_HASH}" - echo $BASE_MITIE_IMAGE_TAG $BASE_MITIE_IMAGE_HASH - if [[ "${BASE_MITIE_IMAGE_TAG}" == "base-mitie-${BASE_MITIE_IMAGE_HASH}" ]]; then + docker manifest inspect rasa/rasa:base-mitie-${BASE_MITIE_IMAGE_HASH} > /dev/null; EXIT_CODE=$? || true + if [[ $EXIT_CODE -eq 0 ]]; then echo "::set-output name=base_mitie_exists::true" else echo "::set-output name=base_mitie_exists::false" @@ -460,7 +460,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 with: - version: latest + version: v0.5.1 driver: docker - name: Login to DockerHub Registry πŸ”’ diff --git a/Makefile b/Makefile index 901253cbe50b..de9277fa7a1b 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: clean test lint init docs build-docker build-docker-full build-docker-mitie-en build-docker-spacy-en build-docker-spacy-de +.PHONY: clean test lint init docs build-docker build-docker-full build-docker-mitie-en build-docker-spacy-en build-docker-spacy-de build-docker-base-mitie JOBS ?= 1 @@ -121,18 +121,10 @@ prepare-spacy: poetry run python -m spacy link en_core_web_md en --force poetry run python -m spacy link de_core_news_sm de --force -prepare-mitie: - wget --progress=dot:giga -N -P data/ https://github.com/mit-nlp/MITIE/releases/download/v0.4/MITIE-models-v0.2.tar.bz2 -ifeq ($(OS),Windows_NT) - 7z x data/MITIE-models-v0.2.tar.bz2 -bb3 - 7z x MITIE-models-v0.2.tar -bb3 - cp MITIE-models/english/total_word_feature_extractor.dat data/ - rm -r MITIE-models - rm MITIE-models-v0.2.tar -else - tar -xvjf data/MITIE-models-v0.2.tar.bz2 --strip-components 2 -C data/ MITIE-models/english/total_word_feature_extractor.dat -endif - rm data/MITIE*.bz2 +prepare-mitie: build-docker-base-mitie + docker run --rm -v ${PWD}/data:/mnt --entrypoint cp \ + rasa:base-mitie-localdev \ + /build/data/total_word_feature_extractor.dat /mnt/total_word_feature_extractor.dat prepare-tests-files: prepare-spacy prepare-mitie @@ -179,6 +171,11 @@ livedocs: release: poetry run python scripts/release.py +build-docker-base-mitie: + export IMAGE_NAME=rasa && \ + docker buildx use default && \ + docker buildx bake -f docker/docker-bake.hcl base-mitie + build-docker: export IMAGE_NAME=rasa && \ docker buildx use default && \ diff --git a/README.md b/README.md index 5a80ea7d988c..bccce2573950 100644 --- a/README.md +++ b/README.md @@ -210,7 +210,7 @@ In order to build a Docker image on your local machine execute the following com make build-docker ``` -Docker image is available on your local machine as `rasa:localdev`. +The Docker image is available on your local machine as `rasa:localdev`. ### Code Style diff --git a/docs/docs/docker/building-in-docker.mdx b/docs/docs/docker/building-in-docker.mdx index 6057b94b3c32..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 master 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. ::: From d6c313fb1d90ed96c41fc36600b834828e22a546 Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Tue, 19 Jan 2021 11:58:22 +0100 Subject: [PATCH 12/29] Use docker manifest commnad --- .github/workflows/continous-integration.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index 96560e2f5577..ae27aedb65ac 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -342,6 +342,8 @@ jobs: - 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') }} From ef01aea03f43f44cd50c0ae0b840370ed5eaec87 Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Tue, 19 Jan 2021 12:01:03 +0100 Subject: [PATCH 13/29] Don't install buildx on Windows --- .github/workflows/continous-integration.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index ae27aedb65ac..87b1d0e41382 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -211,12 +211,6 @@ jobs: echo "POETRY_VERSION=$(scripts/poetry-version.sh)" >> $GITHUB_ENV shell: bash - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - with: - version: v0.5.1 - driver: docker - - name: Install poetry πŸ¦„ if: needs.changes.outputs.backend == 'true' uses: Gr1N/setup-poetry@v4 From 3b5a715ecbf8d7ed593a162b893a7ccd525677a8 Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Tue, 19 Jan 2021 12:21:30 +0100 Subject: [PATCH 14/29] Don't install wget on Windows --- .github/workflows/continous-integration.yml | 3 +++ Makefile | 10 ++-------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index 9594ad3af275..b3d0bd5f4779 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -255,6 +255,9 @@ jobs: make prepare-tests-ubuntu - name: Install Dependencies (Windows) πŸ“¦ + env: + # required in order to use buildx command + DOCKER_CLI_EXPERIMENTAL: enabled if: needs.changes.outputs.backend == 'true' && matrix.os == 'windows-latest' # Restoring cache doesn't work properly on Windows due to symlinks. # We create symlinks for spacy models, that's why we need to clean them up diff --git a/Makefile b/Makefile index de9277fa7a1b..9860397512be 100644 --- a/Makefile +++ b/Makefile @@ -128,19 +128,13 @@ prepare-mitie: build-docker-base-mitie prepare-tests-files: prepare-spacy prepare-mitie -prepare-wget-macos: - brew install wget || true - -prepare-wget-windows: - choco install wget - -prepare-tests-macos: prepare-wget-macos prepare-tests-files +prepare-tests-macos: prepare-tests-files brew install graphviz || true prepare-tests-ubuntu: prepare-tests-files sudo apt-get -y install graphviz graphviz-dev python-tk -prepare-tests-windows: prepare-wget-windows prepare-tests-files +prepare-tests-windows: prepare-tests-files choco install graphviz test: clean From 2aa731e8edc1bd6e3d9b1cb415630674d5aa451f Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Tue, 19 Jan 2021 12:37:02 +0100 Subject: [PATCH 15/29] Remove useless env variable --- .github/workflows/continous-integration.yml | 3 --- Makefile | 4 +--- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index b3d0bd5f4779..9594ad3af275 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -255,9 +255,6 @@ jobs: make prepare-tests-ubuntu - name: Install Dependencies (Windows) πŸ“¦ - env: - # required in order to use buildx command - DOCKER_CLI_EXPERIMENTAL: enabled if: needs.changes.outputs.backend == 'true' && matrix.os == 'windows-latest' # Restoring cache doesn't work properly on Windows due to symlinks. # We create symlinks for spacy models, that's why we need to clean them up diff --git a/Makefile b/Makefile index 9860397512be..c08754ca25c4 100644 --- a/Makefile +++ b/Makefile @@ -166,9 +166,7 @@ release: poetry run python scripts/release.py build-docker-base-mitie: - export IMAGE_NAME=rasa && \ - docker buildx use default && \ - docker buildx bake -f docker/docker-bake.hcl base-mitie + docker build -f docker/Dockerfile.base-mitie -t rasa:base-mitie-localdev docker/ build-docker: export IMAGE_NAME=rasa && \ From 685b0ee079fa314e1e372e98700fa59924d55d4d Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Wed, 20 Jan 2021 10:47:55 +0100 Subject: [PATCH 16/29] Use Makefile to download MITIE --- Makefile | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index c08754ca25c4..22f90c220927 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: clean test lint init docs build-docker build-docker-full build-docker-mitie-en build-docker-spacy-en build-docker-spacy-de build-docker-base-mitie +.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 @@ -39,6 +39,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 {} + @@ -121,20 +123,34 @@ prepare-spacy: poetry run python -m spacy link en_core_web_md en --force poetry run python -m spacy link de_core_news_sm de --force -prepare-mitie: build-docker-base-mitie - docker run --rm -v ${PWD}/data:/mnt --entrypoint cp \ - rasa:base-mitie-localdev \ - /build/data/total_word_feature_extractor.dat /mnt/total_word_feature_extractor.dat +prepare-mitie: + wget --progress=dot:giga -N -P data/ https://github.com/mit-nlp/MITIE/releases/download/v0.4/MITIE-models-v0.2.tar.bz2 +ifeq ($(OS),Windows_NT) + 7z x data/MITIE-models-v0.2.tar.bz2 -bb3 + 7z x MITIE-models-v0.2.tar -bb3 + cp MITIE-models/english/total_word_feature_extractor.dat data/ + rm -r MITIE-models + rm MITIE-models-v0.2.tar +else + tar -xvjf data/MITIE-models-v0.2.tar.bz2 --strip-components 2 -C data/ MITIE-models/english/total_word_feature_extractor.dat +endif + rm data/MITIE*.bz2 prepare-tests-files: prepare-spacy prepare-mitie -prepare-tests-macos: prepare-tests-files +prepare-wget-macos: + brew install wget || true + +prepare-wget-windows: + choco install wget + +prepare-tests-macos: prepare-wget-macos prepare-tests-files brew install graphviz || true prepare-tests-ubuntu: prepare-tests-files sudo apt-get -y install graphviz graphviz-dev python-tk -prepare-tests-windows: prepare-tests-files +prepare-tests-windows: prepare-wget-windows prepare-tests-files choco install graphviz test: clean @@ -165,9 +181,6 @@ livedocs: release: poetry run python scripts/release.py -build-docker-base-mitie: - docker build -f docker/Dockerfile.base-mitie -t rasa:base-mitie-localdev docker/ - build-docker: export IMAGE_NAME=rasa && \ docker buildx use default && \ From 05f8707a0b6d114c0bed75909d651958f73e39e1 Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Wed, 20 Jan 2021 11:03:51 +0100 Subject: [PATCH 17/29] Remove unused imports in test_policies --- tests/core/test_policies.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/tests/core/test_policies.py b/tests/core/test_policies.py index 6af77eb844fc..e3840f29dbec 100644 --- a/tests/core/test_policies.py +++ b/tests/core/test_policies.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Type, List, Text, Tuple, Optional, Any, Dict +from typing import Type, List, Text, Tuple, Optional, Any from unittest.mock import Mock, patch import numpy as np @@ -18,12 +18,7 @@ from rasa.shared.core.training_data.story_writer.markdown_story_writer import ( MarkdownStoryWriter, ) -from rasa.shared.nlu.constants import ( - ACTION_NAME, - INTENT_NAME_KEY, - SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE, - SPLIT_ENTITIES_BY_COMMA, -) +from rasa.shared.nlu.constants import (ACTION_NAME, INTENT_NAME_KEY) from rasa.shared.core.constants import ( USER_INTENT_RESTART, USER_INTENT_BACK, From 6b0ad481d1c412c9ac6178eb4388234a9b7ddf6a Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Wed, 20 Jan 2021 11:25:06 +0100 Subject: [PATCH 18/29] Fix formatting --- tests/core/test_policies.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/core/test_policies.py b/tests/core/test_policies.py index e3840f29dbec..997eb5228352 100644 --- a/tests/core/test_policies.py +++ b/tests/core/test_policies.py @@ -18,7 +18,7 @@ from rasa.shared.core.training_data.story_writer.markdown_story_writer import ( MarkdownStoryWriter, ) -from rasa.shared.nlu.constants import (ACTION_NAME, INTENT_NAME_KEY) +from rasa.shared.nlu.constants import ACTION_NAME, INTENT_NAME_KEY from rasa.shared.core.constants import ( USER_INTENT_RESTART, USER_INTENT_BACK, From cc6d2ed68b52531cb204204c7979fbca5c0bf6fc Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Wed, 20 Jan 2021 11:31:10 +0100 Subject: [PATCH 19/29] Remove unused import --- rasa/nlu/selectors/response_selector.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rasa/nlu/selectors/response_selector.py b/rasa/nlu/selectors/response_selector.py index 2aa9e34b8889..6004b236b32f 100644 --- a/rasa/nlu/selectors/response_selector.py +++ b/rasa/nlu/selectors/response_selector.py @@ -89,8 +89,7 @@ RESPONSE, INTENT_RESPONSE_KEY, INTENT_NAME_KEY, - PREDICTED_CONFIDENCE_KEY, - SPLIT_ENTITIES_BY_COMMA, + PREDICTED_CONFIDENCE_KEY ) from rasa.utils.tensorflow.model_data import RasaModelData From 4cad92ca47baa3e7e3463326f8853cc7c2e9cb74 Mon Sep 17 00:00:00 2001 From: koernerfelicia <45405119+koernerfelicia@users.noreply.github.com> Date: Wed, 20 Jan 2021 11:33:04 +0100 Subject: [PATCH 20/29] Undo changes to response_selector. --- rasa/nlu/selectors/response_selector.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rasa/nlu/selectors/response_selector.py b/rasa/nlu/selectors/response_selector.py index 6004b236b32f..ac78b6d3964a 100644 --- a/rasa/nlu/selectors/response_selector.py +++ b/rasa/nlu/selectors/response_selector.py @@ -89,7 +89,7 @@ RESPONSE, INTENT_RESPONSE_KEY, INTENT_NAME_KEY, - PREDICTED_CONFIDENCE_KEY + PREDICTED_CONFIDENCE_KEY, ) from rasa.utils.tensorflow.model_data import RasaModelData From 8eea27f99d0bc25be7acad20d299e8f92ddd3ee6 Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Thu, 21 Jan 2021 12:57:58 +0100 Subject: [PATCH 21/29] Add more comments, use Makefile to install mitie --- .github/workflows/continous-integration.yml | 5 +- docker/Dockerfile.base | 2 +- docker/Dockerfile.base-mitie | 8 +- poetry.lock | 2553 +++++++++---------- pyproject.toml | 1 + 5 files changed, 1237 insertions(+), 1332 deletions(-) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index 9594ad3af275..37208f6a73d2 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -356,9 +356,10 @@ jobs: # 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}" - docker manifest inspect rasa/rasa:base-mitie-${BASE_MITIE_IMAGE_HASH} > /dev/null; EXIT_CODE=$? || true + docker manifest inspect rasa/rasa:base-mitie-${BASE_MITIE_IMAGE_HASH}-${MAKEFILE_MITIE_HASH} > /dev/null; EXIT_CODE=$? || true if [[ $EXIT_CODE -eq 0 ]]; then echo "::set-output name=base_mitie_exists::true" else @@ -374,7 +375,7 @@ jobs: - name: Build Docker mitie base image and push πŸ›  ⬆ if: steps.check_image.outputs.base_mitie_exists == 'false' run: | - export IMAGE_TAG=${{ hashFiles('docker/Dockerfile.base-mitie') }} + export IMAGE_TAG=${{ hashFiles('docker/Dockerfile.base-mitie') }}-${{ hashFiles('Makefile') }} docker buildx bake -f docker/docker-bake.hcl base-mitie --push # Set environment variables for a pull request diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base index d4d6c772d173..cc041f79b7a2 100644 --- a/docker/Dockerfile.base +++ b/docker/Dockerfile.base @@ -33,7 +33,7 @@ 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 +# 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 index 2b8b4a34c38a..3995622b77be 100644 --- a/docker/Dockerfile.base-mitie +++ b/docker/Dockerfile.base-mitie @@ -1,7 +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 -RUN mkdir -p /build/data/ && 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 +WORKDIR /build +COPY ./Makefile . +RUN make prepare-mitie diff --git a/poetry.lock b/poetry.lock index 5547820b2b73..25676d7a4db6 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.6.3" +description = "In-process task scheduler with Cron-like capabilities" +category = "main" optional = false python-versions = "*" -version = "3.6.3" [package.dependencies] pytz = "*" -setuptools = ">=0.7" -six = ">=1.4.0" tzlocal = ">=1.2" +six = ">=1.4.0" [package.extras] -asyncio = ["trollius"] -doc = ["sphinx", "sphinx-rtd-theme"] -gevent = ["gevent"] -mongodb = ["pymongo (>=2.8)"] -redis = ["redis (>=3.0)"] rethinkdb = ["rethinkdb (>=2.4.0)"] sqlalchemy = ["sqlalchemy (>=0.8)"] -testing = ["pytest", "pytest-cov", "pytest-tornado5", "mock", "pytest-asyncio (<0.6)", "pytest-asyncio"] tornado = ["tornado (>=4.3)"] +doc = ["sphinx", "sphinx-rtd-theme"] +testing = ["pytest", "pytest-cov", "pytest-tornado5", "mock", "pytest-asyncio (<0.6)", "pytest-asyncio"] +redis = ["redis (>=3.0)"] twisted = ["twisted"] +gevent = ["gevent"] zookeeper = ["kazoo"] +mongodb = ["pymongo (>=2.8)"] +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.57" +description = "The AWS SDK for Python" +category = "main" optional = false python-versions = "*" -version = "1.16.53" [package.dependencies] -botocore = ">=1.19.53,<1.20.0" jmespath = ">=0.7.1,<1.0.0" +botocore = ">=1.19.57,<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.57" +description = "Low-level, data-driven core of boto 3." +category = "main" optional = false python-versions = "*" -version = "1.19.53" [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.0" +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" -optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" 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.*" [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.4.2" +description = "Python library for serializing any arbitrary object graph into JSON" +category = "main" optional = false python-versions = ">=2.7" -version = "1.4.2" [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" -optional = false -python-versions = ">=3.6" version = "3.3.3" +description = "Python plotting package" +category = "main" +optional = false +python-versions = ">=3.6" [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.3" +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" +version = "0.9.7" +description = "Python binding for CRFsuite" +category = "main" optional = false python-versions = "*" -version = "0.9.7" [[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,253 +2268,249 @@ 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.23.2" +description = "A set of python modules for machine learning and data mining" +category = "main" optional = false python-versions = ">=3.6" -version = "0.23.2" [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] alldeps = ["numpy (>=1.13.3)", "scipy (>=0.19.1)"] [[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" @@ -2604,633 +2519,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.4" +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\"" 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.45.4" +description = "Twilio API client and TwiML generator" +category = "main" optional = false python-versions = "*" -version = "6.45.4" [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.0" +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 = "d5807469d90a8eca2ecf292deddfad482315bfb0b71f5f7b58dfa3077834f19e" +lock-version = "1.1" python-versions = ">=3.6,<3.9" +content-hash = "d5807469d90a8eca2ecf292deddfad482315bfb0b71f5f7b58dfa3077834f19e" [metadata.files] absl-py = [ @@ -3310,8 +3192,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"}, @@ -3348,12 +3230,12 @@ boto = [ {file = "boto-2.49.0.tar.gz", hash = "sha256:ea0d3b40a2d852767be77ca343b58a9e3a4b00d9db440efb8da74b4e58025e5a"}, ] boto3 = [ - {file = "boto3-1.16.53-py2.py3-none-any.whl", hash = "sha256:b1e91860fe2cae986f8e8238c12724f7fe4631a183e2c6f6b86714cc98645a6a"}, - {file = "boto3-1.16.53.tar.gz", hash = "sha256:71a0c22a040ac3a785f558628abfea8be86bb30b29003ebd124c51aba97dfeb8"}, + {file = "boto3-1.16.57-py2.py3-none-any.whl", hash = "sha256:2fd3c2f42006988dc8ddae43c988aea481d11e2af7ab1deb83b293640357986c"}, + {file = "boto3-1.16.57.tar.gz", hash = "sha256:4a499cc2f53dd557a88c6db6a552748a2abd83ffeda70ceb71dc8db39a027314"}, ] botocore = [ - {file = "botocore-1.19.53-py2.py3-none-any.whl", hash = "sha256:21677cda7b32492a1a74ac40e51d691a6623578d6700feb9976966d26a576414"}, - {file = "botocore-1.19.53.tar.gz", hash = "sha256:e93539781c43bd64291798a01cc6df2c0ff98e01ae7fe48286942ca8fa351680"}, + {file = "botocore-1.19.57-py2.py3-none-any.whl", hash = "sha256:cf7d108a4d67a0fe670379111927b5d9e0ff1160146c81c326bb9e54c2b8cb19"}, + {file = "botocore-1.19.57.tar.gz", hash = "sha256:c756d65ffa989c5c0e92178175e41abf7b18ad19b2fe2e82e192f085e264e03a"}, ] cachetools = [ {file = "cachetools-4.2.0-py3-none-any.whl", hash = "sha256:c6b07a6ded8c78bf36730b3dc452dfff7d95f2a12a2fed856b1a0cb13ca78c61"}, @@ -3406,8 +3288,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"}, @@ -3530,8 +3412,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"}, @@ -3603,8 +3485,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"}, @@ -3626,8 +3508,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"}, @@ -3646,22 +3528,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"}, @@ -3677,52 +3572,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"}, @@ -3823,8 +3718,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"}, @@ -4003,8 +3898,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"}, @@ -4360,8 +4255,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"}, @@ -4438,7 +4333,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"}, @@ -4449,8 +4344,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"}, @@ -4539,19 +4434,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"}, @@ -4619,8 +4522,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"}, @@ -4660,8 +4563,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"}, @@ -4678,8 +4581,8 @@ 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.23.2.tar.gz", hash = "sha256:20766f515e6cd6f954554387dfae705d93c7b544ec0e6c6a5d8e006f6f7ef480"}, @@ -4727,43 +4630,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,8 +4698,8 @@ sniffio = [ {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"}, @@ -4876,10 +4781,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"}, @@ -5123,10 +5028,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 624fb48b1e3b..cf1fe1f6d1d8 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" From d5afbbf3c014c771bf7b9a2dceea78b54fceb8d8 Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Thu, 21 Jan 2021 13:08:43 +0100 Subject: [PATCH 22/29] Check if base images exist - refactor --- .github/workflows/continous-integration.yml | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index 37208f6a73d2..466c040deccd 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -347,24 +347,16 @@ jobs: BASE_IMAGE_HASH=${{ hashFiles('docker/Dockerfile.base') }} echo "::set-output name=base_image_hash::${BASE_IMAGE_HASH}" - docker manifest inspect rasa/rasa:base-${BASE_IMAGE_HASH} > /dev/null; EXIT_CODE=$? || true - if [[ $EXIT_CODE -eq 0 ]]; then - echo "::set-output name=base_exists::true" - else - echo "::set-output name=base_exists::false" - fi + 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}" + echo "::set-output name=base_mitie_image_hash::${BASE_MITIE_IMAGE_HASH}-${MAKEFILE_MITIE_HASH}" - docker manifest inspect rasa/rasa:base-mitie-${BASE_MITIE_IMAGE_HASH}-${MAKEFILE_MITIE_HASH} > /dev/null; EXIT_CODE=$? || true - if [[ $EXIT_CODE -eq 0 ]]; then - echo "::set-output name=base_mitie_exists::true" - else - echo "::set-output name=base_mitie_exists::false" - fi + BASE_IMAGE_MITIE_EXISTS=$((docker manifest inspect rasa/rasa:base-mitie-${BASE_MITIE_IMAGE_HASH}-${MAKEFILE_MITIE_HASH} &> /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' From b1b1c7f6707e705d2597944e4b50f0146fc3ecda Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Thu, 21 Jan 2021 13:32:59 +0100 Subject: [PATCH 23/29] Trim a tag name for the base mitie image --- .github/workflows/continous-integration.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index 466c040deccd..58da5a3203f4 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -353,9 +353,9 @@ jobs: # 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}-${MAKEFILE_MITIE_HASH}" + 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}-${MAKEFILE_MITIE_HASH} &> /dev/null && echo true || echo false) || true) + 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 πŸ›  ⬆ From d673a3a4df082311bbc6762ce57cfe8d2ab0c5bc Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Thu, 21 Jan 2021 13:36:58 +0100 Subject: [PATCH 24/29] Trim a tag name for the base mitie image --- .github/workflows/continous-integration.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index 58da5a3203f4..732e6832a1e4 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -353,9 +353,9 @@ jobs: # 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}" + echo "::set-output name=base_mitie_image_hash::${BASE_MITIE_IMAGE_HASH:0:40}-${MAKEFILE_MITIE_HASH:0:40}" - 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) + BASE_IMAGE_MITIE_EXISTS=$((docker manifest inspect rasa/rasa:base-mitie-${BASE_MITIE_IMAGE_HASH:0:40}-${MAKEFILE_MITIE_HASH:0:40} &> /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 πŸ›  ⬆ From d043c7b087670db4ad20e806ed50c7b8aa941de8 Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Thu, 21 Jan 2021 13:41:27 +0100 Subject: [PATCH 25/29] Use outputs to determine IMAGE_TAG --- .github/workflows/continous-integration.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index 732e6832a1e4..0a00bb5becfb 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -353,21 +353,21 @@ jobs: # 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:40}-${MAKEFILE_MITIE_HASH:0:40}" + 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:40}-${MAKEFILE_MITIE_HASH:0:40} &> /dev/null && echo true || echo false) || true) + 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=${{ hashFiles('docker/Dockerfile.base') }} + 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=${{ hashFiles('docker/Dockerfile.base-mitie') }}-${{ hashFiles('Makefile') }} + 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 From 51564e60a14ee41b204827cf155dda1bcf60cfb2 Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Fri, 22 Jan 2021 09:18:43 +0100 Subject: [PATCH 26/29] Apply the code review suggestions --- .github/workflows/continous-integration.yml | 6 +++--- docker/Dockerfile.full | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index 126db9cab2f4..19bab6fd3aa5 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -396,15 +396,15 @@ jobs: # Set environment variables for a branch # - # In this scenario, we've pushed changes into the master branch + # In this scenario, we've pushed changes into the main branch # # Example output: - # IMAGE_TAG=master + # 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') + SAFE_BRANCH_NAME="$(echo ${GITHUB_REF#refs/heads/} | sed 's/[\\*+.$\#\-\/]/-/g')" echo "IMAGE_TAG=${BRANCH_NAME}" >> $GITHUB_ENV - name: Set output diff --git a/docker/Dockerfile.full b/docker/Dockerfile.full index 7fc0401c4f0a..4e59b70cbf00 100644 --- a/docker/Dockerfile.full +++ b/docker/Dockerfile.full @@ -19,7 +19,7 @@ WORKDIR /build # install dependencies RUN python -m venv /opt/venv && \ . /opt/venv/bin/activate && \ - pip install --no-cache-dir -U 'pip<20' + 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 && \ From d2e4f4a7086da46100b830b481103ac8780286b3 Mon Sep 17 00:00:00 2001 From: koernerfelicia Date: Sat, 23 Jan 2021 17:49:18 +0100 Subject: [PATCH 27/29] Apply suggestions from code review - docstrings and add example to docs --- docs/docs/policies.mdx | 5 ++++- rasa/nlu/extractors/extractor.py | 16 ++++++++++------ rasa/utils/train_utils.py | 15 +++++++++++++-- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/docs/docs/policies.mdx b/docs/docs/policies.mdx index 41bfd358a026..e53c9eaf6caf 100644 --- a/docs/docs/policies.mdx +++ b/docs/docs/policies.mdx @@ -178,7 +178,10 @@ If you want to fine-tune your model, start by modifying the following parameters * `split_entities_by_comma`: This parameter defines whether adjacent entities separated by a comma should be treated as one, or split. For example, - whether the entities with type ingredients "apple, banana" should be split into "apple" and "banana". Can either be + 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: diff --git a/rasa/nlu/extractors/extractor.py b/rasa/nlu/extractors/extractor.py index 881fd242e9f1..7d51e3b40f17 100644 --- a/rasa/nlu/extractors/extractor.py +++ b/rasa/nlu/extractors/extractor.py @@ -69,15 +69,19 @@ def add_processor_name(self, entity: Dict[Text, Any]) -> Dict[Text, Any]: return entity - def init_split_entities(self): - """Initialises 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 ) - default_value = ( - self.defaults[SPLIT_ENTITIES_BY_COMMA] - if SPLIT_ENTITIES_BY_COMMA in self.defaults - else SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE + 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 diff --git a/rasa/utils/train_utils.py b/rasa/utils/train_utils.py index cf7aa34ab443..6fffa4589714 100644 --- a/rasa/utils/train_utils.py +++ b/rasa/utils/train_utils.py @@ -342,10 +342,21 @@ def override_defaults( return config -def init_split_entities(split_entities_config, default_split_entity): - """Initialise the behaviour for splitting entities by comma (or not).""" +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 From 52f149a25278dc320887d083e3f8dca7e3294c9d Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Mon, 25 Jan 2021 14:28:54 +0100 Subject: [PATCH 28/29] Update poetry.lock --- poetry.lock | 68 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/poetry.lock b/poetry.lock index d01d8e6e2b7c..ce8e3308a0a7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -96,15 +96,15 @@ python-versions = "*" [[package]] name = "apscheduler" -version = "3.6.3" +version = "3.7.0" description = "In-process task scheduler with Cron-like capabilities" category = "main" optional = false -python-versions = "*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.dependencies] pytz = "*" -tzlocal = ">=1.2" +tzlocal = ">=2.0,<3.0" six = ">=1.4.0" [package.extras] @@ -112,12 +112,12 @@ rethinkdb = ["rethinkdb (>=2.4.0)"] sqlalchemy = ["sqlalchemy (>=0.8)"] tornado = ["tornado (>=4.3)"] doc = ["sphinx", "sphinx-rtd-theme"] -testing = ["pytest", "pytest-cov", "pytest-tornado5", "mock", "pytest-asyncio (<0.6)", "pytest-asyncio"] +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 (>=2.8)"] +mongodb = ["pymongo (>=3.0)"] asyncio = ["trollius"] [[package]] @@ -280,7 +280,7 @@ python-versions = "*" [[package]] name = "boto3" -version = "1.16.57" +version = "1.16.59" description = "The AWS SDK for Python" category = "main" optional = false @@ -288,12 +288,12 @@ python-versions = "*" [package.dependencies] jmespath = ">=0.7.1,<1.0.0" -botocore = ">=1.19.57,<1.20.0" +botocore = ">=1.19.59,<1.20.0" s3transfer = ">=0.3.0,<0.4.0" [[package]] name = "botocore" -version = "1.19.57" +version = "1.19.59" description = "Low-level, data-driven core of boto 3." category = "main" optional = false @@ -306,7 +306,7 @@ urllib3 = {version = ">=1.25.4,<1.27", markers = "python_version != \"3.4\""} [[package]] name = "cachetools" -version = "4.2.0" +version = "4.2.1" description = "Extensible memoizing collections and decorators" category = "main" optional = false @@ -1143,7 +1143,7 @@ jsonpointer = ">=1.9" [[package]] name = "jsonpickle" -version = "1.4.2" +version = "1.5.0" description = "Python library for serializing any arbitrary object graph into JSON" category = "main" optional = false @@ -1539,7 +1539,7 @@ python-versions = "*" [[package]] name = "nr.parsing.date" -version = "0.4.3" +version = "0.4.4" description = "A simple and fast date parsing library. Uses dateutil for timezone offset support." category = "dev" optional = false @@ -2412,7 +2412,7 @@ sanic = ">=18.12.0,<21" [[package]] name = "scikit-learn" -version = "0.23.2" +version = "0.24.1" description = "A set of python modules for machine learning and data mining" category = "main" optional = false @@ -2425,10 +2425,10 @@ 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]] name = "scipy" @@ -2523,7 +2523,7 @@ optional = ["aiodns (>1.0)"] [[package]] name = "smmap" -version = "3.0.4" +version = "3.0.5" description = "A pure Python implementation of a sliding window memory map manager" category = "dev" optional = false @@ -2904,7 +2904,7 @@ sklearn = ["scikit-learn"] [[package]] name = "twilio" -version = "6.45.4" +version = "6.50.1" description = "Twilio API client and TwiML generator" category = "main" optional = false @@ -2994,7 +2994,7 @@ python-versions = "*" [[package]] name = "wasabi" -version = "0.8.0" +version = "0.8.1" description = "A lightweight console printing and formatting toolkit" category = "main" optional = true @@ -3115,7 +3115,7 @@ spacy = ["spacy"] [metadata] lock-version = "1.1" python-versions = ">=3.6,<3.9" -content-hash = "d5807469d90a8eca2ecf292deddfad482315bfb0b71f5f7b58dfa3077834f19e" +content-hash = "3aceb2ff2ba7ccee4e1c46e675cfbe3acf5ef5b40b7577dbb42a8979d1877268" [metadata.files] absl-py = [ @@ -3233,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"}, @@ -4002,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"}, @@ -4590,21 +4590,29 @@ sanic-plugins-framework = [ 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"}, @@ -4698,8 +4706,8 @@ 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"}, @@ -4985,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"}, From 5932c458a802f0da221c729ab5b335e635d096c0 Mon Sep 17 00:00:00 2001 From: tczekajlo Date: Mon, 25 Jan 2021 16:58:11 +0100 Subject: [PATCH 29/29] Use SAFE_BRANCH_NAME as IMAGE_TAG --- .github/workflows/continous-integration.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/continous-integration.yml b/.github/workflows/continous-integration.yml index fc325721ab44..79f485c4e554 100644 --- a/.github/workflows/continous-integration.yml +++ b/.github/workflows/continous-integration.yml @@ -405,7 +405,7 @@ jobs: run: | BRANCH_NAME=${GITHUB_REF#refs/heads/} SAFE_BRANCH_NAME="$(echo ${GITHUB_REF#refs/heads/} | sed 's/[\\*+.$\#\-\/]/-/g')" - echo "IMAGE_TAG=${BRANCH_NAME}" >> $GITHUB_ENV + echo "IMAGE_TAG=${SAFE_BRANCH_NAME}" >> $GITHUB_ENV - name: Set output id: set_output @@ -499,8 +499,6 @@ jobs: docker push rasa/rasa:${LATEST_TAG} fi - - deploy: name: Deploy to PyPI runs-on: ubuntu-latest