diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index 599f6b1edc..9e644cbf73 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -28,9 +28,10 @@ jobs: renku-ui: ${{ steps.deploy-comment.outputs.renku-ui}} test-enabled: ${{ steps.deploy-comment.outputs.test-enabled}} extra-values: ${{ steps.deploy-comment.outputs.extra-values}} + persist: ${{ steps.deploy-comment.outputs.persist}} steps: - id: deploy-comment - uses: SwissDataScienceCenter/renku-actions/check-pr-description@v0.3.2 + uses: SwissDataScienceCenter/renku-actions/check-pr-description@v0.5.0 with: string: /deploy pr_ref: ${{ github.event.number }} @@ -42,7 +43,7 @@ jobs: name: renku-ci-rp-${{ github.event.number }} steps: - name: deploy-pr - uses: SwissDataScienceCenter/renku-actions/deploy-renku@v0.3.2 + uses: SwissDataScienceCenter/renku-actions/deploy-renku@v0.5.0 env: DOCKER_PASSWORD: ${{ secrets.RENKU_DOCKER_PASSWORD }} DOCKER_USERNAME: ${{ secrets.RENKU_DOCKER_USERNAME }} @@ -84,43 +85,27 @@ jobs: test-pr: runs-on: ubuntu-20.04 - if: github.event.action != 'closed' + if: ${{ github.event.action != 'closed' && needs.check-deploy.outputs.pr-contains-string == 'true' && needs.check-deploy.outputs.test-enabled == 'true' }} needs: [check-deploy, deploy-pr] steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v1 - with: - python-version: 3.8 - - name: Test the PR - if: "needs.check-deploy.outputs.pr-contains-string == 'true' && needs.check-deploy.outputs.test-enabled == 'true'" - env: - KUBECONFIG: ${{ github.workspace }}/renkubot-kube.config - RENKUBOT_KUBECONFIG: ${{ secrets.RENKUBOT_DEV_KUBECONFIG }} - RENKU_RELEASE: renku-ci-rp-${{ github.event.number }} - run: | - echo "$RENKUBOT_KUBECONFIG" > ${{ github.workspace }}/renkubot-kube.config - helm test ${RENKU_RELEASE} --namespace ${RENKU_RELEASE} --timeout 80m --logs - - name: Download artifact for packaging on failure - if: failure() - uses: SwissDataScienceCenter/renku-actions/download-test-artifacts@v0.3.2 - env: - RENKU_VALUES: ${{ secrets.CI_RENKU_VALUES }} - TEST_ARTIFACTS_PATH: "tests-artifacts-${{ github.sha }}" - - name: Upload screenshots on failure - if: failure() - uses: actions/upload-artifact@v1 + - uses: SwissDataScienceCenter/renku-actions/test-renku@v0.5.0 with: - name: acceptance-test-artifacts - path: ${{ github.workspace }}/test-artifacts/ + renkubot-kubeconfig: ${{ secrets.RENKUBOT_DEV_KUBECONFIG }} + renku-release: renku-ci-rp-${{ github.event.number }} + gitlab-token: ${{ secrets.DEV_GITLAB_TOKEN }} + persist: "${{ needs.check-deploy.outputs.persist }}" + ci-renku-values: ${{ secrets.CI_RENKU_VALUES }} + cleanup: - if: github.event.action == 'closed' + needs: check-deploy + if: github.event.action == 'closed' && needs.check-deploy.outputs.pr-contains-string == 'true' runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - name: renku teardown - uses: SwissDataScienceCenter/renku-actions/teardown-renku@v0.3.2 + uses: SwissDataScienceCenter/renku-actions/cleanup-renku-ci-deployments@v0.5.0 env: + HELM_RELEASE_REGEX: "^renku-ci-rp-${{ github.event.number }}$" GITLAB_TOKEN: ${{ secrets.DEV_GITLAB_TOKEN }} - KUBECONFIG: "${{ github.workspace }}/renkubot-kube.config" - RENKU_RELEASE: renku-ci-rp-${{ github.event.number }} RENKUBOT_KUBECONFIG: ${{ secrets.RENKUBOT_DEV_KUBECONFIG }} + MAX_AGE_SECONDS: 0 + DELETE_NAMESPACE: "true" diff --git a/.github/workflows/test_deploy.yml b/.github/workflows/test_deploy.yml index 8e65695693..c454769556 100644 --- a/.github/workflows/test_deploy.yml +++ b/.github/workflows/test_deploy.yml @@ -889,19 +889,19 @@ jobs: echo "GIT_USER=Renku Bot" >> $GITHUB_ENV echo "GIT_EMAIL=renku@datascience.ch" >> $GITHUB_ENV - name: Push chart and images - uses: SwissDataScienceCenter/renku-actions/publish-chart@v0.3.2 + uses: SwissDataScienceCenter/renku-actions/publish-chart@v0.5.0 env: CHART_NAME: renku-core - GITHUB_TOKEN: ${{ secrets.RENKU_CI_TOKEN }} + GITHUB_TOKEN: ${{ secrets.RENKUBOT_GITHUB_TOKEN }} DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - name: Wait for chart to be available run: sleep 120 - name: Update component version - uses: SwissDataScienceCenter/renku-actions/update-component-version@v0.3.2 + uses: SwissDataScienceCenter/renku-actions/update-component-version@v0.5.0 env: CHART_NAME: renku-core - GITHUB_TOKEN: ${{ secrets.RENKU_CI_TOKEN }} + GITHUB_TOKEN: ${{ secrets.RENKUBOT_GITHUB_TOKEN }} coveralls-final: name: Aggregate coveralls data diff --git a/.github/workflows/test_publish.yml b/.github/workflows/test_publish.yml index 9bac04249f..3ef5f92214 100644 --- a/.github/workflows/test_publish.yml +++ b/.github/workflows/test_publish.yml @@ -27,7 +27,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install -e .[all] + python -m pip install .[all] git config --global --add user.name "Renku @ SDSC" git config --global --add user.email "renku@datascience.ch" - name: Test with pytest @@ -60,7 +60,7 @@ jobs: curl -L https://raw.githubusercontent.com/Homebrew/homebrew-core/43842898fd3ff43273466052722f5ba2789196cb/Formula/git-lfs.rb > git-lfs.rb && brew install git-lfs.rb && rm git-lfs.rb brew install shellcheck node || brew link --overwrite node python -m pip install --upgrade pip - python -m pip install -e .[all] + python -m pip install .[all] git config --global --add user.name "Renku @ SDSC" git config --global --add user.email "renku@datascience.ch" - name: Test with pytest diff --git a/CHANGES.rst b/CHANGES.rst index 5c60da6ec3..c2d694c3b0 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -18,8 +18,72 @@ Changes ======= -` `__ (2022-01-18) --------------------------------------------------------------------------------------------------- +`1.0.4 `__ (2022-01-28) +------------------------------------------------------------------------------------------------------- + +Bug Fixes +~~~~~~~~~ + +- **service:** Unlimited uploaded file size for multiple core-service deployment + (`#2609 `__) + +`1.0.3 `__ (2022-01-26) +------------------------------------------------------------------------------------------------------- + +Bug Fixes +~~~~~~~~~ + +- **core:** Execution graph linking of plans + `#2600 `__ + (`0528d7c `__) +- **core:** fix copying keywords of a plan + (`818093f `__) +- **core:** fix cwl float type and derived from + (`#2570 `__) + (`19454ba `__) +- **core:** fix SHACL for Plan and CompositePlan + (`#2598 `__) + (`21b022e `__) +- **core:** fix Zenodo dataset import if ``sameAs`` is set + (`#2572 `__) + (`f704916 `__) +- **core:** make activity ids deterministic in migration + (`#2581 `__) + (`7ed6102 `__) +- **core:** move NodeJS requirement check to cwltool plugin + (`#2586 `__) + (`1d79ce2 `__) +- **service:** fix cache.migrate not locking the project + (`#2573 `__) + (`ed2bcd8 `__) +- **service:** use separate queues for multi core service deployment + (`#2602 `__) + (`0f3fefb `__) + +Features +~~~~~~~~ + +- **cli:** add explicit parameters to renku run + (`#2583 `__) + (`5118774 `__) +- **core:** extended template variable functionality + (`#2120 `__) + (`0e13fc1 `__) +- **core:** ignore quotation mark in git user/email config + (`#2537 `__) + (`e70481c `__) +- **core:** pass parameters as environment vars to scripts (and renku.api) + (`#2596 `__) + (`c4fd71c `__) +- **core:** support forward compatibility of datasets + (`#2554 `__) + (`c6a7013 `__) +- **core:** reintroduce shell completion command + (`#2562 `__) + (`6b3ee60 `__) + +`1.0.2 `__ (2022-01-18) +------------------------------------------------------------------------------------------------------- Bug Fixes ~~~~~~~~~ @@ -72,8 +136,8 @@ Features (`#2531 `__) (`082e897 `__) -` `__ (2021-12-07) --------------------------------------------------------------------------------------------------- +`1.0.1 `__ (2021-12-07) +------------------------------------------------------------------------------------------------------- Bug Fixes ~~~~~~~~~ @@ -89,8 +153,8 @@ Bug Fixes (`4946f89 `__) -` `__ (2021-12-02) ---------------------------------------------------------------------------------------------------- +`1.0.0 `__ (2021-12-02) +-------------------------------------------------------------------------------------------------------- Overview ~~~~~~~~ diff --git a/docs/how-to-guides/implementing_a_provider.rst b/docs/how-to-guides/implementing_a_provider.rst index 9de3960a57..39889410a0 100644 --- a/docs/how-to-guides/implementing_a_provider.rst +++ b/docs/how-to-guides/implementing_a_provider.rst @@ -53,7 +53,9 @@ The ``workflow_provider`` function shall return a tuple of ``(object, str)``, w should be the plugin object, i.e. ``self`` and the string is a unique identifier of the provider plugin. This unique string will be the string that the user can provide to the ``--provider`` command line argument to select this plugin for executing the desired -workflows. +workflows. A dummy provider implementation is available +`here `_ in order to ease the +initial implementation of a provider plugin. A provider HAS to set environment variables for a plans parameters, so they can be used by scripts. These environment variables have to be prefixed with the value of the diff --git a/docs/how-to-guides/shell-integration.rst b/docs/how-to-guides/shell-integration.rst index f4707a1700..03c58547a2 100644 --- a/docs/how-to-guides/shell-integration.rst +++ b/docs/how-to-guides/shell-integration.rst @@ -5,6 +5,14 @@ Shell integration of Renku CLI Renku CLI supports shell auto-completion for Renku commands and their arguments like datasets and workflows. +A convenience method is available for printing to the standard output the shell completion command for the +currently used shell: + +.. code-block:: console + + $ renku env --shell-completion + _RENKU_COMPLETE=zsh_source renku + To activate tab completion for your supported shell run the following command after installing Renku CLI: .. tabs:: @@ -37,7 +45,7 @@ in case of ``renku workflow execute`` the available ``Plans`` are going to be li .. note:: - Tab completion of available ``Plans`` only works if the user is executing the command + Tab completion of available ``Plans`` (or ``Datasets``) only works if the user is executing the command within a Renku project. diff --git a/docs/reference/plugins.rst b/docs/reference/plugins.rst index ed052cb214..7f80d261d5 100644 --- a/docs/reference/plugins.rst +++ b/docs/reference/plugins.rst @@ -54,6 +54,8 @@ where `myproject.pluginmodule` points to a Renku `hookimpl` e.g.: .. automodule:: renku.core.plugins.run :members: +`This `_ repository contains an implementation of +an activity annotation plugin. CLI Plugins ----------- @@ -82,6 +84,25 @@ where `myproject.pluginmodule:mycmd` points to a click command e.g.: def mycmd(): ... +An example implementation of such plugin is available `here `_. + +Workflow Converter Plugins +-------------------------- + +Additional workflow converters can be implemented by extending +:class:`renku.core.models.workflow.converters.IWorkflowConverter`. By default renku +provides a CWL converter plugins that is used when exporting a workflow: + +.. code-block:: console + + $ renku workflow export --format cwl + +.. autoclass:: renku.core.models.workflow.converters.IWorkflowConverter + :members: + +We created a `dummy `_ implementation of such +a converter plugin. + Workflow Provider Plugins ------------------------- diff --git a/helm-chart/renku-core/Chart.yaml b/helm-chart/renku-core/Chart.yaml index bb9d662f16..2f76f55fb7 100644 --- a/helm-chart/renku-core/Chart.yaml +++ b/helm-chart/renku-core/Chart.yaml @@ -3,4 +3,4 @@ appVersion: "1.0" description: A Helm chart for Kubernetes name: renku-core icon: https://avatars0.githubusercontent.com/u/53332360?s=400&u=a4311d22842343604ef61a8c8a1e5793209a67e9&v=4 -version: 1.0.2 +version: 1.0.4 diff --git a/helm-chart/renku-core/requirements.yaml b/helm-chart/renku-core/requirements.yaml index 351499d46c..f8ccd3783f 100644 --- a/helm-chart/renku-core/requirements.yaml +++ b/helm-chart/renku-core/requirements.yaml @@ -2,4 +2,6 @@ dependencies: - name: redis version: 10.7.11 repository: "https://charts.bitnami.com/bitnami" - +- name: certificates + version: 0.0.1 + repository: "https://swissdatasciencecenter.github.io/helm-charts/" diff --git a/helm-chart/renku-core/templates/configmap.yaml b/helm-chart/renku-core/templates/configmap.yaml index e0d6222132..7413da41dd 100644 --- a/helm-chart/renku-core/templates/configmap.yaml +++ b/helm-chart/renku-core/templates/configmap.yaml @@ -17,6 +17,7 @@ data: sendfile on; tcp_nopush on; + client_max_body_size 0; # Required for uploading large files location /renku/versions { root /; diff --git a/helm-chart/renku-core/templates/deployment.yaml b/helm-chart/renku-core/templates/deployment.yaml index 73f3813a02..876d89094b 100644 --- a/helm-chart/renku-core/templates/deployment.yaml +++ b/helm-chart/renku-core/templates/deployment.yaml @@ -1,4 +1,11 @@ {{- range $version := .Values.versions }} +{{- $queuesWithVersion := dict "datasetqueues" (list) "managementqueues" (list) -}} +{{- range $queue := (split "," $.Values.datasetsWorkerQueues) -}} +{{- $var := printf "%s.%s" $version.name $queue | append $queuesWithVersion.datasetqueues | set $queuesWithVersion "datasetqueues" -}} +{{- end }} +{{- range $queue := (split "," $.Values.managementWorkerQueues) -}} +{{- $var := printf "%s.%s" $version.name $queue | append $queuesWithVersion.managementqueues | set $queuesWithVersion "managementqueues" -}} +{{- end }} --- apiVersion: apps/v1 kind: Deployment @@ -35,6 +42,9 @@ spec: volumes: - name: shared-volume emptyDir: {} + {{- include "certificates.volumes" $ | nindent 8 }} + initContainers: + {{- include "certificates.initContainer" $ | nindent 8 }} containers: {{ if $.Values.metrics.enabled }} - name: {{ $.Chart.Name}}-rqmetrics @@ -69,7 +79,7 @@ spec: value: "0" - name: REDIS_PASSWORD value: - - name: WALRUS_NAMESPACE + - name: REDIS_NAMESPACE value: {{ $version.name }} - name: CACHE_DIR value: {{ $.Values.cacheDirectory }} @@ -105,9 +115,11 @@ spec: value: {{ $.Values.gitLFSSkipSmudge | quote }} - name: RENKU_DOMAIN value: {{ $.Values.global.renku.domain }} + {{- include "certificates.env.python" $ | nindent 12 }} volumeMounts: - name: shared-volume mountPath: {{ $.Values.cacheDirectory }} + {{- include "certificates.volumeMounts.system" $ | nindent 12 }} ports: - name: http containerPort: 8080 @@ -135,7 +147,7 @@ spec: value: "0" - name: REDIS_PASSWORD value: - - name: WALRUS_NAMESPACE + - name: REDIS_NAMESPACE value: {{ $version.name }} - name: RENKU_JWT_TOKEN_SECRET value: {{ $.Values.jwtTokenSecret }} @@ -144,7 +156,7 @@ spec: - name: RENKU_SVC_CLEANUP_INTERVAL value: {{ $.Values.cleanupInterval | quote }} - name: RENKU_SVC_WORKER_QUEUES - value: {{ $.Values.datasetsWorkerQueues }} + value: {{ join "," $queuesWithVersion.datasetqueues }} - name: RENKU_SVC_CLEANUP_TTL_FILES value: {{ $.Values.cleanupFilesTTL | quote }} - name: RENKU_SVC_CLEANUP_TTL_PROJECTS @@ -161,9 +173,11 @@ spec: value: {{ $.Values.gitLFSSkipSmudge | quote }} - name: RENKU_DOMAIN value: {{ $.Values.global.renku.domain }} + {{- include "certificates.env.python" $ | nindent 12 }} volumeMounts: - name: shared-volume mountPath: {{ $.Values.cacheDirectory }} + {{- include "certificates.volumeMounts.system" $ | nindent 12 }} - name: {{ $.Chart.Name }}-management-workers image: "{{ $version.image.repository }}:{{ $version.image.tag }}" @@ -178,14 +192,14 @@ spec: value: "0" - name: REDIS_PASSWORD value: - - name: WALRUS_NAMESPACE + - name: REDIS_NAMESPACE value: {{ $version.name }} - name: CACHE_DIR value: {{ $.Values.cacheDirectory }} - name: RENKU_SVC_CLEANUP_INTERVAL value: {{ $.Values.cleanupInterval | quote }} - name: RENKU_SVC_WORKER_QUEUES - value: {{ $.Values.managementWorkerQueues }} + value: {{ join "," $queuesWithVersion.managementqueues }} - name: RENKU_SVC_CLEANUP_TTL_FILES value: {{ $.Values.cleanupFilesTTL | quote }} - name: RENKU_SVC_CLEANUP_TTL_PROJECTS @@ -202,9 +216,11 @@ spec: value: {{ $.Values.gitLFSSkipSmudge | quote }} - name: RENKU_DOMAIN value: {{ $.Values.global.renku.domain }} + {{- include "certificates.env.python" $ | nindent 12 }} volumeMounts: - name: shared-volume mountPath: {{ $.Values.cacheDirectory }} + {{- include "certificates.volumeMounts.system" $ | nindent 12 }} - name: {{ $.Chart.Name }}-scheduler image: "{{ $version.image.repository }}:{{ $version.image.tag }}" @@ -219,7 +235,7 @@ spec: value: "0" - name: REDIS_PASSWORD value: - - name: WALRUS_NAMESPACE + - name: REDIS_NAMESPACE value: {{ $version.name }} - name: CACHE_DIR value: {{ $.Values.cacheDirectory | quote }} @@ -231,6 +247,9 @@ spec: value: {{ $.Values.sentry.sample_rate | quote }} - name: SENTRY_ENV value: {{ $.Values.sentry.environment }} + {{- include "certificates.env.python" $ | nindent 12 }} + volumeMounts: + {{- include "certificates.volumeMounts.system" $ | nindent 12 }} {{- with $.Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} diff --git a/helm-chart/renku-core/values.yaml b/helm-chart/renku-core/values.yaml index 93d35cf954..f1bb099f32 100644 --- a/helm-chart/renku-core/values.yaml +++ b/helm-chart/renku-core/values.yaml @@ -4,6 +4,19 @@ replicaCount: 1 +global: + ## Specify a secret that containes the certificate + ## if you would like to use a custom CA. The key for the secret + ## should have the .crt extension otherwise it is ignored. The + ## keys across all secrets are mounted as files in one location so + ## the keys across all secrets have to be unique. + certificates: + image: + repository: renku/certificates + tag: '0.0.1' + customCAs: [] + # - secret: + # base path - this is the reverse proxy base path apiBasePath: /api @@ -104,7 +117,7 @@ versions: fullnameOverride: "" image: repository: renku/renku-core - tag: "v1.0.1" + tag: "v1.0.4" pullPolicy: IfNotPresent v8: name: v8 @@ -113,5 +126,5 @@ versions: fullnameOverride: "" image: repository: renku/renku-core - tag: "v0.16.2" + tag: "v0.16.4" pullPolicy: IfNotPresent diff --git a/poetry.lock b/poetry.lock index d4cec38b8d..ced3a77e27 100644 --- a/poetry.lock +++ b/poetry.lock @@ -151,7 +151,7 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "blessed" -version = "1.19.0" +version = "1.19.1" description = "Easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen Positioning capabilities." category = "main" optional = true @@ -278,7 +278,7 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.0.10" +version = "2.0.11" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false @@ -438,7 +438,7 @@ name = "cwl-upgrader" version = "1.2.2" description = "Common Workflow Language standalone document upgrader" category = "main" -optional = true +optional = false python-versions = ">=3.6, <4" [package.dependencies] @@ -450,7 +450,7 @@ name = "cwl-utils" version = "0.13" description = "" category = "main" -optional = true +optional = false python-versions = ">=3.6" [package.dependencies] @@ -462,17 +462,6 @@ schema-salad = ">=8.2,<9" [package.extras] pretty = ["cwlformat"] -[[package]] -name = "cwlgen" -version = "0.4.2" -description = "Generation of CWL programmatically. Available types: Workflow, CommandLineTool and Requirements" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -"ruamel.yaml" = ">=0.12.4,<=0.16.5" - [[package]] name = "cwltool" version = "3.1.20210922203925" @@ -558,11 +547,11 @@ prefixed = ">=0.3.2" [[package]] name = "entrypoints" -version = "0.3" +version = "0.4" description = "Discover and load entry points from installed packages." category = "main" optional = true -python-versions = ">=2.7" +python-versions = ">=3.6" [[package]] name = "environ-config" @@ -695,7 +684,7 @@ python-dateutil = ">=2.7" [[package]] name = "frozendict" -version = "2.2.0" +version = "2.3.0" description = "A simple immutable dictionary" category = "main" optional = false @@ -975,11 +964,11 @@ python-versions = "*" [[package]] name = "multidict" -version = "5.2.0" +version = "6.0.2" description = "multidict implementation" category = "main" optional = true -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "mypy-extensions" @@ -1018,7 +1007,7 @@ test = ["pytest (>=6.2)", "pytest-cov (>=2.12)", "codecov (>=2.1)"] [[package]] name = "numpy" -version = "1.21.0" +version = "1.21.1" description = "NumPy is the fundamental package for array computing with Python." category = "main" optional = false @@ -1373,7 +1362,7 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"] [[package]] name = "pyparsing" -version = "3.0.6" +version = "3.0.7" description = "Python parsing module" category = "main" optional = false @@ -1392,7 +1381,7 @@ python-versions = "*" [[package]] name = "pyreadline3" -version = "3.3" +version = "3.4.1" description = "A python implementation of GNU readline." category = "main" optional = false @@ -1696,7 +1685,7 @@ hiredis = ["hiredis (>=0.1.3)"] [[package]] name = "regex" -version = "2021.11.10" +version = "2022.1.18" description = "Alternative regular expression module, to replace re." category = "main" optional = true @@ -1809,14 +1798,14 @@ rq = ">=0.13" [[package]] name = "ruamel.yaml" -version = "0.16.5" +version = "0.17.16" 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 = "*" +python-versions = ">=3" [package.dependencies] -"ruamel.yaml.clib" = {version = ">=0.1.2", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.8\""} +"ruamel.yaml.clib" = {version = ">=0.1.2", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.10\""} [package.extras] docs = ["ryd"] @@ -1832,7 +1821,7 @@ python-versions = ">=3.5" [[package]] name = "schema-salad" -version = "8.2.20220103095339" +version = "8.2.20220204150214" description = "Schema Annotations for Linked Avro Data (SALAD)" category = "main" optional = false @@ -1889,6 +1878,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "shellingham" +version = "1.4.0" +description = "Tool to Detect Surrounding Shell" +category = "main" +optional = false +python-versions = "!=3.0,!=3.1,!=3.2,!=3.3,>=2.6" + [[package]] name = "six" version = "1.16.0" @@ -2172,7 +2169,7 @@ testing = ["nose", "coverage", "mock"] [[package]] name = "typed-ast" -version = "1.5.1" +version = "1.5.2" description = "a fork of Python 2 and 3 ast modules with type comment support" category = "main" optional = true @@ -2479,16 +2476,16 @@ cffi = {version = ">=1.11", markers = "platform_python_implementation == \"PyPy\ cffi = ["cffi (>=1.11)"] [extras] -all = ["apispec", "apispec-webframeworks", "black", "check-manifest", "circus", "coverage", "cwl-utils", "fakeredis", "flakehell", "flaky", "flask", "freezegun", "gunicorn", "isort", "jinja2", "marshmallow", "pexpect", "pillow", "ptvsd", "pydocstyle", "pyte", "pytest", "pytest-black", "pytest-cache", "pytest-cov", "pytest-flake8", "pytest-mock", "pytest-pep8", "pytest-recording", "pytest-timeout", "pytest-xdist", "python-dotenv", "redis", "renku-sphinx-theme", "responses", "rq", "rq-scheduler", "sentry-sdk", "sphinxcontrib-spelling", "sphinx-rtd-theme", "sphinx-tabs", "toil", "walrus"] +all = ["apispec", "apispec-webframeworks", "black", "check-manifest", "circus", "coverage", "fakeredis", "flakehell", "flaky", "flask", "freezegun", "gunicorn", "isort", "marshmallow", "pexpect", "pillow", "ptvsd", "pydocstyle", "pyte", "pytest", "pytest-black", "pytest-cache", "pytest-cov", "pytest-flake8", "pytest-mock", "pytest-pep8", "pytest-recording", "pytest-timeout", "pytest-xdist", "python-dotenv", "redis", "renku-sphinx-theme", "responses", "rq", "rq-scheduler", "sentry-sdk", "sphinxcontrib-spelling", "sphinx-rtd-theme", "sphinx-tabs", "toil", "walrus"] docs = ["renku-sphinx-theme", "sphinx-rtd-theme", "sphinxcontrib-spelling", "sphinx-tabs"] service = ["apispec", "apispec-webframeworks", "circus", "flask", "gunicorn", "marshmallow", "pillow", "ptvsd", "python-dotenv", "redis", "rq", "rq-scheduler", "sentry-sdk", "walrus"] -tests = ["black", "check-manifest", "coverage", "cwl-utils", "fakeredis", "flakehell", "flaky", "freezegun", "isort", "pexpect", "pydocstyle", "pyte", "pytest", "pytest-black", "pytest-cache", "pytest-cov", "pytest-flake8", "pytest-mock", "pytest-pep8", "pytest-recording", "pytest-timeout", "pytest-xdist", "responses"] +tests = ["black", "check-manifest", "coverage", "fakeredis", "flakehell", "flaky", "freezegun", "isort", "pexpect", "pydocstyle", "pyte", "pytest", "pytest-black", "pytest-cache", "pytest-cov", "pytest-flake8", "pytest-mock", "pytest-pep8", "pytest-recording", "pytest-timeout", "pytest-xdist", "responses"] toil = ["toil"] [metadata] lock-version = "1.1" python-versions = "^3.7.1" -content-hash = "a8eb1bb6cd2bfdcc58d5fec062b1252bbcd135fc5c7afc49036c0519a9996260" +content-hash = "4a96956fce68ca7c90eb70586d92ce7ffad5310052a2bf4da2d2dc7e32a850f1" [metadata.files] addict = [ @@ -2540,8 +2537,8 @@ black = [ {file = "black-21.9b0.tar.gz", hash = "sha256:7de4cfc7eb6b710de325712d40125689101d21d25283eed7e9998722cf10eb91"}, ] blessed = [ - {file = "blessed-1.19.0-py2.py3-none-any.whl", hash = "sha256:1f2d462631b2b6d2d4c3c65b54ef79ad87a6ca2dd55255df2f8d739fcc8a1ddb"}, - {file = "blessed-1.19.0.tar.gz", hash = "sha256:4db0f94e5761aea330b528e84a250027ffe996b5a94bf03e502600c9a5ad7a61"}, + {file = "blessed-1.19.1-py2.py3-none-any.whl", hash = "sha256:63b8554ae2e0e7f43749b6715c734cc8f3883010a809bf16790102563e6cf25b"}, + {file = "blessed-1.19.1.tar.gz", hash = "sha256:9a0d099695bf621d4680dd6c73f6ad547f6a3442fbdbe80c4b1daa1edbc492fc"}, ] blinker = [ {file = "blinker-1.4.tar.gz", hash = "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6"}, @@ -2671,8 +2668,8 @@ cffi = [ {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.0.10.tar.gz", hash = "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd"}, - {file = "charset_normalizer-2.0.10-py3-none-any.whl", hash = "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455"}, + {file = "charset-normalizer-2.0.11.tar.gz", hash = "sha256:98398a9d69ee80548c762ba991a4728bfc3836768ed226b3945908d1a688371c"}, + {file = "charset_normalizer-2.0.11-py3-none-any.whl", hash = "sha256:2842d8f5e82a1f6aa437380934d5e1cd4fcf2003b06fed6940769c164a480a45"}, ] check-manifest = [ {file = "check-manifest-0.47.tar.gz", hash = "sha256:56dadd260a9c7d550b159796d2894b6d0bcc176a94cbc426d9bb93e5e48d12ce"}, @@ -2789,9 +2786,6 @@ cwl-utils = [ {file = "cwl-utils-0.13.tar.gz", hash = "sha256:47171decb93e05b9deb74bbad564db3b5aff971e16c632624cdc56f00bb1b47f"}, {file = "cwl_utils-0.13-py3-none-any.whl", hash = "sha256:0f23d091a7fd1e15ad233255a3a0f12aeeb0a6aa6ecdec2db449c92f1d577bb2"}, ] -cwlgen = [ - {file = "cwlgen-0.4.2.tar.gz", hash = "sha256:8ee26cddc0f352dd485fc11696711b810b7b8bf4f4a39b33f481294fc0b0c2a0"}, -] cwltool = [ {file = "cwltool-3.1.20210922203925-py3-none-any.whl", hash = "sha256:eb894d91be7cb8a6845a2f468d09bc7ce237b3ff7393b4a3f12dea4843e7b2d0"}, {file = "cwltool-3.1.20210922203925.tar.gz", hash = "sha256:c43b37a240ae2ea53a6dadd73607c9109bf961b0d6aa4cdb04d48a807703d1fc"}, @@ -2817,8 +2811,8 @@ enlighten = [ {file = "enlighten-1.10.2.tar.gz", hash = "sha256:7a5b83cd0f4d095e59d80c648ebb5f7ffca0cd8bcf7ae6639828ee1ad000632a"}, ] entrypoints = [ - {file = "entrypoints-0.3-py2.py3-none-any.whl", hash = "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19"}, - {file = "entrypoints-0.3.tar.gz", hash = "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451"}, + {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, + {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, ] environ-config = [ {file = "environ-config-21.2.0.tar.gz", hash = "sha256:24bebf69d814a18242483c83a2856f20db1b623eab2d34fb712d3d02f5cd22c8"}, @@ -2857,23 +2851,23 @@ freezegun = [ {file = "freezegun-1.1.0.tar.gz", hash = "sha256:177f9dd59861d871e27a484c3332f35a6e3f5d14626f2bf91be37891f18927f3"}, ] frozendict = [ - {file = "frozendict-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b39cfcf563b3432d4780bf15769e2de2a2906c46c26fb73a9582b69142621814"}, - {file = "frozendict-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7198dda9741f3da79db952ecd27607d836727ed320f29438eac565133008c8c"}, - {file = "frozendict-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:3a564bd93767044e740e0f6c59606cf612a143160ace9d2c047c4a297a74329a"}, - {file = "frozendict-2.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2a47f3f7fe52094904777d29f300ad6c11213dd81a8fbdec96aa2d4763104319"}, - {file = "frozendict-2.2.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfacb9f75768903495747ddaacb1bf98738fb3e966a27f0627f7f163fd676eb"}, - {file = "frozendict-2.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:efc138fb1e2c115c39240f60b4b0daf752f1cca591d5f93ac4e788af0665d737"}, - {file = "frozendict-2.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:722e915421b2d869b236d8de8e0ab42f1e2f7e12d670f9bc3dedfc055550bcb9"}, - {file = "frozendict-2.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4519f6eb661f268c60a3ea14f000d321159cf5e6db397129ea4921aef3bf2173"}, - {file = "frozendict-2.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9c720e4a19e9b5f48d1b12e193d39765898dff4952320251c0ccd9960631cae9"}, - {file = "frozendict-2.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1708828a3fed512ea8fa18e75622b29e551a5524c14aea0b0364f4472ca15f7d"}, - {file = "frozendict-2.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ede1bc6b6d734ba36bdcd99659463d96620069281e6bb6f72cbed719d679c1bb"}, - {file = "frozendict-2.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:f6293ec3181ff98e5ae98f748e8ffe6c937caf14ca9561d3a6d6d02a82c7fbff"}, - {file = "frozendict-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ebf36b78ce0a43f7372e94eee8b0327a12c15914e1a29c088f9bcfba20971929"}, - {file = "frozendict-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e237adae46cc28eb0355f6d65900e946c0a7bc4536145c6d8e6bbb2b6c28ac2a"}, - {file = "frozendict-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:14ab850309632198b28e74948b800ac75609380a6f779a5779482a3189af7299"}, - {file = "frozendict-2.2.0-py3-none-any.whl", hash = "sha256:a6d56ec83e5120f273adbf7f3798f78e8775158eee95469cd66e2e28be153ee3"}, - {file = "frozendict-2.2.0.tar.gz", hash = "sha256:8e3d4735f9a13d1077567e568471663f3244f85ac89b23f8cb31cf231dbe45b9"}, + {file = "frozendict-2.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e18e2abd144a9433b0a8334582843b2aa0d3b9ac8b209aaa912ad365115fe2e1"}, + {file = "frozendict-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96dc7a02e78da5725e5e642269bb7ae792e0c9f13f10f2e02689175ebbfedb35"}, + {file = "frozendict-2.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:752a6dcfaf9bb20a7ecab24980e4dbe041f154509c989207caf185522ef85461"}, + {file = "frozendict-2.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5346d9fc1c936c76d33975a9a9f1a067342963105d9a403a99e787c939cc2bb2"}, + {file = "frozendict-2.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60dd2253f1bacb63a7c486ec541a968af4f985ffb06602ee8954a3d39ec6bd2e"}, + {file = "frozendict-2.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:b2e044602ce17e5cd86724add46660fb9d80169545164e763300a3b839cb1b79"}, + {file = "frozendict-2.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a27a69b1ac3591e4258325108aee62b53c0eeb6ad0a993ae68d3c7eaea980420"}, + {file = "frozendict-2.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f45ef5f6b184d84744fff97b61f6b9a855e24d36b713ea2352fc723a047afa5"}, + {file = "frozendict-2.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2d3f5016650c0e9a192f5024e68fb4d63f670d0ee58b099ed3f5b4c62ea30ecb"}, + {file = "frozendict-2.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6cf605916f50aabaaba5624c81eb270200f6c2c466c46960237a125ec8fe3ae0"}, + {file = "frozendict-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6da06e44904beae4412199d7e49be4f85c6cc168ab06b77c735ea7da5ce3454"}, + {file = "frozendict-2.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:1f34793fb409c4fa70ffd25bea87b01f3bd305fb1c6b09e7dff085b126302206"}, + {file = "frozendict-2.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fd72494a559bdcd28aa71f4aa81860269cd0b7c45fff3e2614a0a053ecfd2a13"}, + {file = "frozendict-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00ea9166aa68cc5feed05986206fdbf35e838a09cb3feef998cf35978ff8a803"}, + {file = "frozendict-2.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9ffaf440648b44e0bc694c1a4701801941378ba3ba6541e17750ae4b4aeeb116"}, + {file = "frozendict-2.3.0-py3-none-any.whl", hash = "sha256:8578fe06815fcdcc672bd5603eebc98361a5317c1c3a13b28c6c810f6ea3b323"}, + {file = "frozendict-2.3.0.tar.gz", hash = "sha256:da4231adefc5928e7810da2732269d3ad7b5616295b3e693746392a8205ea0b5"}, ] gitdb = [ {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, @@ -3151,78 +3145,65 @@ msgpack = [ {file = "msgpack-1.0.3.tar.gz", hash = "sha256:51fdc7fb93615286428ee7758cecc2f374d5ff363bdd884c7ea622a7a327a81e"}, ] multidict = [ - {file = "multidict-5.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3822c5894c72e3b35aae9909bef66ec83e44522faf767c0ad39e0e2de11d3b55"}, - {file = "multidict-5.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:28e6d883acd8674887d7edc896b91751dc2d8e87fbdca8359591a13872799e4e"}, - {file = "multidict-5.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b61f85101ef08cbbc37846ac0e43f027f7844f3fade9b7f6dd087178caedeee7"}, - {file = "multidict-5.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9b668c065968c5979fe6b6fa6760bb6ab9aeb94b75b73c0a9c1acf6393ac3bf"}, - {file = "multidict-5.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517d75522b7b18a3385726b54a081afd425d4f41144a5399e5abd97ccafdf36b"}, - {file = "multidict-5.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b4ac3ba7a97b35a5ccf34f41b5a8642a01d1e55454b699e5e8e7a99b5a3acf5"}, - {file = "multidict-5.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:df23c83398715b26ab09574217ca21e14694917a0c857e356fd39e1c64f8283f"}, - {file = "multidict-5.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e58a9b5cc96e014ddf93c2227cbdeca94b56a7eb77300205d6e4001805391747"}, - {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f76440e480c3b2ca7f843ff8a48dc82446b86ed4930552d736c0bac507498a52"}, - {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cfde464ca4af42a629648c0b0d79b8f295cf5b695412451716531d6916461628"}, - {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:0fed465af2e0eb6357ba95795d003ac0bdb546305cc2366b1fc8f0ad67cc3fda"}, - {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:b70913cbf2e14275013be98a06ef4b412329fe7b4f83d64eb70dce8269ed1e1a"}, - {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5635bcf1b75f0f6ef3c8a1ad07b500104a971e38d3683167b9454cb6465ac86"}, - {file = "multidict-5.2.0-cp310-cp310-win32.whl", hash = "sha256:77f0fb7200cc7dedda7a60912f2059086e29ff67cefbc58d2506638c1a9132d7"}, - {file = "multidict-5.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:9416cf11bcd73c861267e88aea71e9fcc35302b3943e45e1dbb4317f91a4b34f"}, - {file = "multidict-5.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fd77c8f3cba815aa69cb97ee2b2ef385c7c12ada9c734b0f3b32e26bb88bbf1d"}, - {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98ec9aea6223adf46999f22e2c0ab6cf33f5914be604a404f658386a8f1fba37"}, - {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e5283c0a00f48e8cafcecadebfa0ed1dac8b39e295c7248c44c665c16dc1138b"}, - {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5f79c19c6420962eb17c7e48878a03053b7ccd7b69f389d5831c0a4a7f1ac0a1"}, - {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e4a67f1080123de76e4e97a18d10350df6a7182e243312426d508712e99988d4"}, - {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:94b117e27efd8e08b4046c57461d5a114d26b40824995a2eb58372b94f9fca02"}, - {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2e77282fd1d677c313ffcaddfec236bf23f273c4fba7cdf198108f5940ae10f5"}, - {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:116347c63ba049c1ea56e157fa8aa6edaf5e92925c9b64f3da7769bdfa012858"}, - {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:dc3a866cf6c13d59a01878cd806f219340f3e82eed514485e094321f24900677"}, - {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ac42181292099d91217a82e3fa3ce0e0ddf3a74fd891b7c2b347a7f5aa0edded"}, - {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:f0bb0973f42ffcb5e3537548e0767079420aefd94ba990b61cf7bb8d47f4916d"}, - {file = "multidict-5.2.0-cp36-cp36m-win32.whl", hash = "sha256:ea21d4d5104b4f840b91d9dc8cbc832aba9612121eaba503e54eaab1ad140eb9"}, - {file = "multidict-5.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:e6453f3cbeb78440747096f239d282cc57a2997a16b5197c9bc839099e1633d0"}, - {file = "multidict-5.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d3def943bfd5f1c47d51fd324df1e806d8da1f8e105cc7f1c76a1daf0f7e17b0"}, - {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35591729668a303a02b06e8dba0eb8140c4a1bfd4c4b3209a436a02a5ac1de11"}, - {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8cacda0b679ebc25624d5de66c705bc53dcc7c6f02a7fb0f3ca5e227d80422"}, - {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:baf1856fab8212bf35230c019cde7c641887e3fc08cadd39d32a421a30151ea3"}, - {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a43616aec0f0d53c411582c451f5d3e1123a68cc7b3475d6f7d97a626f8ff90d"}, - {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25cbd39a9029b409167aa0a20d8a17f502d43f2efebfe9e3ac019fe6796c59ac"}, - {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a2cbcfbea6dc776782a444db819c8b78afe4db597211298dd8b2222f73e9cd0"}, - {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3d2d7d1fff8e09d99354c04c3fd5b560fb04639fd45926b34e27cfdec678a704"}, - {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a37e9a68349f6abe24130846e2f1d2e38f7ddab30b81b754e5a1fde32f782b23"}, - {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:637c1896497ff19e1ee27c1c2c2ddaa9f2d134bbb5e0c52254361ea20486418d"}, - {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9815765f9dcda04921ba467957be543423e5ec6a1136135d84f2ae092c50d87b"}, - {file = "multidict-5.2.0-cp37-cp37m-win32.whl", hash = "sha256:8b911d74acdc1fe2941e59b4f1a278a330e9c34c6c8ca1ee21264c51ec9b67ef"}, - {file = "multidict-5.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:380b868f55f63d048a25931a1632818f90e4be71d2081c2338fcf656d299949a"}, - {file = "multidict-5.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e7d81ce5744757d2f05fc41896e3b2ae0458464b14b5a2c1e87a6a9d69aefaa8"}, - {file = "multidict-5.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d1d55cdf706ddc62822d394d1df53573d32a7a07d4f099470d3cb9323b721b6"}, - {file = "multidict-5.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4771d0d0ac9d9fe9e24e33bed482a13dfc1256d008d101485fe460359476065"}, - {file = "multidict-5.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da7d57ea65744d249427793c042094c4016789eb2562576fb831870f9c878d9e"}, - {file = "multidict-5.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdd68778f96216596218b4e8882944d24a634d984ee1a5a049b300377878fa7c"}, - {file = "multidict-5.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ecc99bce8ee42dcad15848c7885197d26841cb24fa2ee6e89d23b8993c871c64"}, - {file = "multidict-5.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:067150fad08e6f2dd91a650c7a49ba65085303fcc3decbd64a57dc13a2733031"}, - {file = "multidict-5.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:78c106b2b506b4d895ddc801ff509f941119394b89c9115580014127414e6c2d"}, - {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e6c4fa1ec16e01e292315ba76eb1d012c025b99d22896bd14a66628b245e3e01"}, - {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b227345e4186809d31f22087d0265655114af7cda442ecaf72246275865bebe4"}, - {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:06560fbdcf22c9387100979e65b26fba0816c162b888cb65b845d3def7a54c9b"}, - {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7878b61c867fb2df7a95e44b316f88d5a3742390c99dfba6c557a21b30180cac"}, - {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:246145bff76cc4b19310f0ad28bd0769b940c2a49fc601b86bfd150cbd72bb22"}, - {file = "multidict-5.2.0-cp38-cp38-win32.whl", hash = "sha256:c30ac9f562106cd9e8071c23949a067b10211917fdcb75b4718cf5775356a940"}, - {file = "multidict-5.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:f19001e790013ed580abfde2a4465388950728861b52f0da73e8e8a9418533c0"}, - {file = "multidict-5.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c1ff762e2ee126e6f1258650ac641e2b8e1f3d927a925aafcfde943b77a36d24"}, - {file = "multidict-5.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bd6c9c50bf2ad3f0448edaa1a3b55b2e6866ef8feca5d8dbec10ec7c94371d21"}, - {file = "multidict-5.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc66d4016f6e50ed36fb39cd287a3878ffcebfa90008535c62e0e90a7ab713ae"}, - {file = "multidict-5.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9acb76d5f3dd9421874923da2ed1e76041cb51b9337fd7f507edde1d86535d6"}, - {file = "multidict-5.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dfc924a7e946dd3c6360e50e8f750d51e3ef5395c95dc054bc9eab0f70df4f9c"}, - {file = "multidict-5.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32fdba7333eb2351fee2596b756d730d62b5827d5e1ab2f84e6cbb287cc67fe0"}, - {file = "multidict-5.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b9aad49466b8d828b96b9e3630006234879c8d3e2b0a9d99219b3121bc5cdb17"}, - {file = "multidict-5.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:93de39267c4c676c9ebb2057e98a8138bade0d806aad4d864322eee0803140a0"}, - {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f9bef5cff994ca3026fcc90680e326d1a19df9841c5e3d224076407cc21471a1"}, - {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5f841c4f14331fd1e36cbf3336ed7be2cb2a8f110ce40ea253e5573387db7621"}, - {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:38ba256ee9b310da6a1a0f013ef4e422fca30a685bcbec86a969bd520504e341"}, - {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3bc3b1621b979621cee9f7b09f024ec76ec03cc365e638126a056317470bde1b"}, - {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6ee908c070020d682e9b42c8f621e8bb10c767d04416e2ebe44e37d0f44d9ad5"}, - {file = "multidict-5.2.0-cp39-cp39-win32.whl", hash = "sha256:1c7976cd1c157fa7ba5456ae5d31ccdf1479680dc9b8d8aa28afabc370df42b8"}, - {file = "multidict-5.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:c9631c642e08b9fff1c6255487e62971d8b8e821808ddd013d8ac058087591ac"}, - {file = "multidict-5.2.0.tar.gz", hash = "sha256:0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389"}, + {file = "multidict-6.0.2-cp310-cp310-win32.whl", hash = "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293"}, + {file = "multidict-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658"}, + {file = "multidict-6.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15"}, + {file = "multidict-6.0.2-cp37-cp37m-win32.whl", hash = "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc"}, + {file = "multidict-6.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d"}, + {file = "multidict-6.0.2-cp38-cp38-win32.whl", hash = "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57"}, + {file = "multidict-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937"}, + {file = "multidict-6.0.2-cp39-cp39-win32.whl", hash = "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a"}, + {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, + {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, ] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, @@ -3238,34 +3219,34 @@ networkx = [ {file = "networkx-2.6.3.tar.gz", hash = "sha256:c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51"}, ] numpy = [ - {file = "numpy-1.21.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d5caa946a9f55511e76446e170bdad1d12d6b54e17a2afe7b189112ed4412bb8"}, - {file = "numpy-1.21.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ac4fd578322842dbda8d968e3962e9f22e862b6ec6e3378e7415625915e2da4d"}, - {file = "numpy-1.21.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:598fe100b2948465cf3ed64b1a326424b5e4be2670552066e17dfaa67246011d"}, - {file = "numpy-1.21.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c55407f739f0bfcec67d0df49103f9333edc870061358ac8a8c9e37ea02fcd2"}, - {file = "numpy-1.21.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:75579acbadbf74e3afd1153da6177f846212ea2a0cc77de53523ae02c9256513"}, - {file = "numpy-1.21.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cc367c86eb87e5b7c9592935620f22d13b090c609f1b27e49600cd033b529f54"}, - {file = "numpy-1.21.0-cp37-cp37m-win32.whl", hash = "sha256:d89b0dc7f005090e32bb4f9bf796e1dcca6b52243caf1803fdd2b748d8561f63"}, - {file = "numpy-1.21.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eda2829af498946c59d8585a9fd74da3f810866e05f8df03a86f70079c7531dd"}, - {file = "numpy-1.21.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1a784e8ff7ea2a32e393cc53eb0003eca1597c7ca628227e34ce34eb11645a0e"}, - {file = "numpy-1.21.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bba474a87496d96e61461f7306fba2ebba127bed7836212c360f144d1e72ac54"}, - {file = "numpy-1.21.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fd0a359c1c17f00cb37de2969984a74320970e0ceef4808c32e00773b06649d9"}, - {file = "numpy-1.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e4d5a86a5257843a18fb1220c5f1c199532bc5d24e849ed4b0289fb59fbd4d8f"}, - {file = "numpy-1.21.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:620732f42259eb2c4642761bd324462a01cdd13dd111740ce3d344992dd8492f"}, - {file = "numpy-1.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9205711e5440954f861ceeea8f1b415d7dd15214add2e878b4d1cf2bcb1a914"}, - {file = "numpy-1.21.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ad09f55cc95ed8d80d8ab2052f78cc21cb231764de73e229140d81ff49d8145e"}, - {file = "numpy-1.21.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a1f2fb2da242568af0271455b89aee0f71e4e032086ee2b4c5098945d0e11cf6"}, - {file = "numpy-1.21.0-cp38-cp38-win32.whl", hash = "sha256:e58ddb53a7b4959932f5582ac455ff90dcb05fac3f8dcc8079498d43afbbde6c"}, - {file = "numpy-1.21.0-cp38-cp38-win_amd64.whl", hash = "sha256:d2910d0a075caed95de1a605df00ee03b599de5419d0b95d55342e9a33ad1fb3"}, - {file = "numpy-1.21.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a290989cd671cd0605e9c91a70e6df660f73ae87484218e8285c6522d29f6e38"}, - {file = "numpy-1.21.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3537b967b350ad17633b35c2f4b1a1bbd258c018910b518c30b48c8e41272717"}, - {file = "numpy-1.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc6c650f8700ce1e3a77668bb7c43e45c20ac06ae00d22bdf6760b38958c883"}, - {file = "numpy-1.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:709884863def34d72b183d074d8ba5cfe042bc3ff8898f1ffad0209161caaa99"}, - {file = "numpy-1.21.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bebab3eaf0641bba26039fb0b2c5bf9b99407924b53b1ea86e03c32c64ef5aef"}, - {file = "numpy-1.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf680682ad0a3bef56dae200dbcbac2d57294a73e5b0f9864955e7dd7c2c2491"}, - {file = "numpy-1.21.0-cp39-cp39-win32.whl", hash = "sha256:d95d16204cd51ff1a1c8d5f9958ce90ae190be81d348b514f9be39f878b8044a"}, - {file = "numpy-1.21.0-cp39-cp39-win_amd64.whl", hash = "sha256:2ba579dde0563f47021dcd652253103d6fd66165b18011dce1a0609215b2791e"}, - {file = "numpy-1.21.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3c40e6b860220ed862e8097b8f81c9af6d7405b723f4a7af24a267b46f90e461"}, - {file = "numpy-1.21.0.zip", hash = "sha256:e80fe25cba41c124d04c662f33f6364909b985f2eb5998aaa5ae4b9587242cce"}, + {file = "numpy-1.21.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38e8648f9449a549a7dfe8d8755a5979b45b3538520d1e735637ef28e8c2dc50"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fd7d7409fa643a91d0a05c7554dd68aa9c9bb16e186f6ccfe40d6e003156e33a"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a75b4498b1e93d8b700282dc8e655b8bd559c0904b3910b144646dbbbc03e062"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1412aa0aec3e00bc23fbb8664d76552b4efde98fb71f60737c83efbac24112f1"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e46ceaff65609b5399163de5893d8f2a82d3c77d5e56d976c8b5fb01faa6b671"}, + {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c6a2324085dd52f96498419ba95b5777e40b6bcbc20088fddb9e8cbb58885e8e"}, + {file = "numpy-1.21.1-cp37-cp37m-win32.whl", hash = "sha256:73101b2a1fef16602696d133db402a7e7586654682244344b8329cdcbbb82172"}, + {file = "numpy-1.21.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7a708a79c9a9d26904d1cca8d383bf869edf6f8e7650d85dbc77b041e8c5a0f8"}, + {file = "numpy-1.21.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95b995d0c413f5d0428b3f880e8fe1660ff9396dcd1f9eedbc311f37b5652e16"}, + {file = "numpy-1.21.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:635e6bd31c9fb3d475c8f44a089569070d10a9ef18ed13738b03049280281267"}, + {file = "numpy-1.21.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a3d5fb89bfe21be2ef47c0614b9c9c707b7362386c9a3ff1feae63e0267ccb6"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a326af80e86d0e9ce92bcc1e65c8ff88297de4fa14ee936cb2293d414c9ec63"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:791492091744b0fe390a6ce85cc1bf5149968ac7d5f0477288f78c89b385d9af"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0318c465786c1f63ac05d7c4dbcecd4d2d7e13f0959b01b534ea1e92202235c5"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a513bd9c1551894ee3d31369f9b07460ef223694098cf27d399513415855b68"}, + {file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91c6f5fc58df1e0a3cc0c3a717bb3308ff850abdaa6d2d802573ee2b11f674a8"}, + {file = "numpy-1.21.1-cp38-cp38-win32.whl", hash = "sha256:978010b68e17150db8765355d1ccdd450f9fc916824e8c4e35ee620590e234cd"}, + {file = "numpy-1.21.1-cp38-cp38-win_amd64.whl", hash = "sha256:9749a40a5b22333467f02fe11edc98f022133ee1bfa8ab99bda5e5437b831214"}, + {file = "numpy-1.21.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d7a4aeac3b94af92a9373d6e77b37691b86411f9745190d2c351f410ab3a791f"}, + {file = "numpy-1.21.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9e7912a56108aba9b31df688a4c4f5cb0d9d3787386b87d504762b6754fbb1b"}, + {file = "numpy-1.21.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:25b40b98ebdd272bc3020935427a4530b7d60dfbe1ab9381a39147834e985eac"}, + {file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a92c5aea763d14ba9d6475803fc7904bda7decc2a0a68153f587ad82941fec1"}, + {file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05a0f648eb28bae4bcb204e6fd14603de2908de982e761a2fc78efe0f19e96e1"}, + {file = "numpy-1.21.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f01f28075a92eede918b965e86e8f0ba7b7797a95aa8d35e1cc8821f5fc3ad6a"}, + {file = "numpy-1.21.1-cp39-cp39-win32.whl", hash = "sha256:88c0b89ad1cc24a5efbb99ff9ab5db0f9a86e9cc50240177a571fbe9c2860ac2"}, + {file = "numpy-1.21.1-cp39-cp39-win_amd64.whl", hash = "sha256:01721eefe70544d548425a07c80be8377096a54118070b8a62476866d5208e33"}, + {file = "numpy-1.21.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2d4d1de6e6fb3d28781c73fbde702ac97f03d79e4ffd6598b880b2d95d62ead4"}, + {file = "numpy-1.21.1.zip", hash = "sha256:dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd"}, ] owlrl = [ {file = "owlrl-5.2.3-py3-none-any.whl", hash = "sha256:0514239bfbf72fa67f3e5813a40bcc5bd88fd16093d9f76b45a0d4c84ee1c5e2"}, @@ -3541,8 +3522,8 @@ pyopenssl = [ {file = "pyOpenSSL-20.0.1.tar.gz", hash = "sha256:4c231c759543ba02560fcd2480c48dcec4dae34c9da7d3747c508227e0624b51"}, ] pyparsing = [ - {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"}, - {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"}, + {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, + {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, ] pyreadline = [ {file = "pyreadline-2.1.win-amd64.exe", hash = "sha256:9ce5fa65b8992dfa373bddc5b6e0864ead8f291c94fbfec05fbd5c836162e67b"}, @@ -3550,8 +3531,8 @@ pyreadline = [ {file = "pyreadline-2.1.zip", hash = "sha256:4530592fc2e85b25b1a9f79664433da09237c1a270e4d78ea5aa3a2c7229e2d1"}, ] pyreadline3 = [ - {file = "pyreadline3-3.3-py3-none-any.whl", hash = "sha256:0003fd0079d152ecbd8111202c5a7dfa6a5569ffd65b235e45f3c2ecbee337b4"}, - {file = "pyreadline3-3.3.tar.gz", hash = "sha256:ff3b5a1ac0010d0967869f723e687d42cabc7dccf33b14934c92aa5168d260b3"}, + {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"}, + {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"}, ] pyshacl = [ {file = "pyshacl-0.17.2-py3-none-any.whl", hash = "sha256:ec147758eabadac13d8a981c5b9da9447ac6eb04cc6f013b92902cf24adad373"}, @@ -3727,55 +3708,80 @@ redis = [ {file = "redis-3.5.3.tar.gz", hash = "sha256:0e7e0cfca8660dea8b7d5cd8c4f6c5e29e11f31158c0b0ae91a397f00e5a05a2"}, ] regex = [ - {file = "regex-2021.11.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9345b6f7ee578bad8e475129ed40123d265464c4cfead6c261fd60fc9de00bcf"}, - {file = "regex-2021.11.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:416c5f1a188c91e3eb41e9c8787288e707f7d2ebe66e0a6563af280d9b68478f"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0538c43565ee6e703d3a7c3bdfe4037a5209250e8502c98f20fea6f5fdf2965"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee1227cf08b6716c85504aebc49ac827eb88fcc6e51564f010f11a406c0a667"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6650f16365f1924d6014d2ea770bde8555b4a39dc9576abb95e3cd1ff0263b36"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30ab804ea73972049b7a2a5c62d97687d69b5a60a67adca07eb73a0ddbc9e29f"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68a067c11463de2a37157930d8b153005085e42bcb7ad9ca562d77ba7d1404e0"}, - {file = "regex-2021.11.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:162abfd74e88001d20cb73ceaffbfe601469923e875caf9118333b1a4aaafdc4"}, - {file = "regex-2021.11.10-cp310-cp310-win32.whl", hash = "sha256:98ba568e8ae26beb726aeea2273053c717641933836568c2a0278a84987b2a1a"}, - {file = "regex-2021.11.10-cp310-cp310-win_amd64.whl", hash = "sha256:780b48456a0f0ba4d390e8b5f7c661fdd218934388cde1a974010a965e200e12"}, - {file = "regex-2021.11.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:dba70f30fd81f8ce6d32ddeef37d91c8948e5d5a4c63242d16a2b2df8143aafc"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1f54b9b4b6c53369f40028d2dd07a8c374583417ee6ec0ea304e710a20f80a0"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbb9dc00e39f3e6c0ef48edee202f9520dafb233e8b51b06b8428cfcb92abd30"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666abff54e474d28ff42756d94544cdfd42e2ee97065857413b72e8a2d6a6345"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5537f71b6d646f7f5f340562ec4c77b6e1c915f8baae822ea0b7e46c1f09b733"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2e07c6a26ed4bea91b897ee2b0835c21716d9a469a96c3e878dc5f8c55bb23"}, - {file = "regex-2021.11.10-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ca5f18a75e1256ce07494e245cdb146f5a9267d3c702ebf9b65c7f8bd843431e"}, - {file = "regex-2021.11.10-cp36-cp36m-win32.whl", hash = "sha256:93a5051fcf5fad72de73b96f07d30bc29665697fb8ecdfbc474f3452c78adcf4"}, - {file = "regex-2021.11.10-cp36-cp36m-win_amd64.whl", hash = "sha256:b483c9d00a565633c87abd0aaf27eb5016de23fed952e054ecc19ce32f6a9e7e"}, - {file = "regex-2021.11.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fff55f3ce50a3ff63ec8e2a8d3dd924f1941b250b0aac3d3d42b687eeff07a8e"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32d2a2b02ccbef10145df9135751abea1f9f076e67a4e261b05f24b94219e36"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53db2c6be8a2710b359bfd3d3aa17ba38f8aa72a82309a12ae99d3c0c3dcd74d"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2207ae4f64ad3af399e2d30dde66f0b36ae5c3129b52885f1bffc2f05ec505c8"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5ca078bb666c4a9d1287a379fe617a6dccd18c3e8a7e6c7e1eb8974330c626a"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd33eb9bdcfbabab3459c9ee651d94c842bc8a05fabc95edf4ee0c15a072495e"}, - {file = "regex-2021.11.10-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05b7d6d7e64efe309972adab77fc2af8907bb93217ec60aa9fe12a0dad35874f"}, - {file = "regex-2021.11.10-cp37-cp37m-win32.whl", hash = "sha256:e71255ba42567d34a13c03968736c5d39bb4a97ce98188fafb27ce981115beec"}, - {file = "regex-2021.11.10-cp37-cp37m-win_amd64.whl", hash = "sha256:07856afef5ffcc052e7eccf3213317fbb94e4a5cd8177a2caa69c980657b3cb4"}, - {file = "regex-2021.11.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba05430e819e58544e840a68b03b28b6d328aff2e41579037e8bab7653b37d83"}, - {file = "regex-2021.11.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7f301b11b9d214f83ddaf689181051e7f48905568b0c7017c04c06dfd065e244"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aaa4e0705ef2b73dd8e36eeb4c868f80f8393f5f4d855e94025ce7ad8525f50"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:788aef3549f1924d5c38263104dae7395bf020a42776d5ec5ea2b0d3d85d6646"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f8af619e3be812a2059b212064ea7a640aff0568d972cd1b9e920837469eb3cb"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85bfa6a5413be0ee6c5c4a663668a2cad2cbecdee367630d097d7823041bdeec"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f23222527b307970e383433daec128d769ff778d9b29343fb3496472dc20dabe"}, - {file = "regex-2021.11.10-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:da1a90c1ddb7531b1d5ff1e171b4ee61f6345119be7351104b67ff413843fe94"}, - {file = "regex-2021.11.10-cp38-cp38-win32.whl", hash = "sha256:0617383e2fe465732af4509e61648b77cbe3aee68b6ac8c0b6fe934db90be5cc"}, - {file = "regex-2021.11.10-cp38-cp38-win_amd64.whl", hash = "sha256:a3feefd5e95871872673b08636f96b61ebef62971eab044f5124fb4dea39919d"}, - {file = "regex-2021.11.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7f325be2804246a75a4f45c72d4ce80d2443ab815063cdf70ee8fb2ca59ee1b"}, - {file = "regex-2021.11.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:537ca6a3586931b16a85ac38c08cc48f10fc870a5b25e51794c74df843e9966d"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef2afb0fd1747f33f1ee3e209bce1ed582d1896b240ccc5e2697e3275f037c7"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:432bd15d40ed835a51617521d60d0125867f7b88acf653e4ed994a1f8e4995dc"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b43c2b8a330a490daaef5a47ab114935002b13b3f9dc5da56d5322ff218eeadb"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:962b9a917dd7ceacbe5cd424556914cb0d636001e393b43dc886ba31d2a1e449"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa8c626d6441e2d04b6ee703ef2d1e17608ad44c7cb75258c09dd42bacdfc64b"}, - {file = "regex-2021.11.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3c5fb32cc6077abad3bbf0323067636d93307c9fa93e072771cf9a64d1c0f3ef"}, - {file = "regex-2021.11.10-cp39-cp39-win32.whl", hash = "sha256:3b5df18db1fccd66de15aa59c41e4f853b5df7550723d26aa6cb7f40e5d9da5a"}, - {file = "regex-2021.11.10-cp39-cp39-win_amd64.whl", hash = "sha256:83ee89483672b11f8952b158640d0c0ff02dc43d9cb1b70c1564b49abe92ce29"}, - {file = "regex-2021.11.10.tar.gz", hash = "sha256:f341ee2df0999bfdf7a95e448075effe0db212a59387de1a70690e4acb03d4c6"}, + {file = "regex-2022.1.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:34316bf693b1d2d29c087ee7e4bb10cdfa39da5f9c50fa15b07489b4ab93a1b5"}, + {file = "regex-2022.1.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a0b9f6a1a15d494b35f25ed07abda03209fa76c33564c09c9e81d34f4b919d7"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f99112aed4fb7cee00c7f77e8b964a9b10f69488cdff626ffd797d02e2e4484f"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a2bf98ac92f58777c0fafc772bf0493e67fcf677302e0c0a630ee517a43b949"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8618d9213a863c468a865e9d2ec50221015f7abf52221bc927152ef26c484b4c"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b52cc45e71657bc4743a5606d9023459de929b2a198d545868e11898ba1c3f59"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e12949e5071c20ec49ef00c75121ed2b076972132fc1913ddf5f76cae8d10b4"}, + {file = "regex-2022.1.18-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b02e3e72665cd02afafb933453b0c9f6c59ff6e3708bd28d0d8580450e7e88af"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:abfcb0ef78df0ee9df4ea81f03beea41849340ce33a4c4bd4dbb99e23ec781b6"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6213713ac743b190ecbf3f316d6e41d099e774812d470422b3a0f137ea635832"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:61ebbcd208d78658b09e19c78920f1ad38936a0aa0f9c459c46c197d11c580a0"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:b013f759cd69cb0a62de954d6d2096d648bc210034b79b1881406b07ed0a83f9"}, + {file = "regex-2022.1.18-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9187500d83fd0cef4669385cbb0961e227a41c0c9bc39219044e35810793edf7"}, + {file = "regex-2022.1.18-cp310-cp310-win32.whl", hash = "sha256:94c623c331a48a5ccc7d25271399aff29729fa202c737ae3b4b28b89d2b0976d"}, + {file = "regex-2022.1.18-cp310-cp310-win_amd64.whl", hash = "sha256:1a171eaac36a08964d023eeff740b18a415f79aeb212169080c170ec42dd5184"}, + {file = "regex-2022.1.18-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:49810f907dfe6de8da5da7d2b238d343e6add62f01a15d03e2195afc180059ed"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d2f5c3f7057530afd7b739ed42eb04f1011203bc5e4663e1e1d01bb50f813e3"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85ffd6b1cb0dfb037ede50ff3bef80d9bf7fa60515d192403af6745524524f3b"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba37f11e1d020969e8a779c06b4af866ffb6b854d7229db63c5fdddfceaa917f"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e27ea1ebe4a561db75a880ac659ff439dec7f55588212e71700bb1ddd5af9"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:37978254d9d00cda01acc1997513f786b6b971e57b778fbe7c20e30ae81a97f3"}, + {file = "regex-2022.1.18-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54a1eb9fd38f2779e973d2f8958fd575b532fe26013405d1afb9ee2374e7ab8"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:768632fd8172ae03852e3245f11c8a425d95f65ff444ce46b3e673ae5b057b74"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:de2923886b5d3214be951bc2ce3f6b8ac0d6dfd4a0d0e2a4d2e5523d8046fdfb"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:1333b3ce73269f986b1fa4d5d395643810074dc2de5b9d262eb258daf37dc98f"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:d19a34f8a3429bd536996ad53597b805c10352a8561d8382e05830df389d2b43"}, + {file = "regex-2022.1.18-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d2f355a951f60f0843f2368b39970e4667517e54e86b1508e76f92b44811a8a"}, + {file = "regex-2022.1.18-cp36-cp36m-win32.whl", hash = "sha256:2245441445099411b528379dee83e56eadf449db924648e5feb9b747473f42e3"}, + {file = "regex-2022.1.18-cp36-cp36m-win_amd64.whl", hash = "sha256:25716aa70a0d153cd844fe861d4f3315a6ccafce22b39d8aadbf7fcadff2b633"}, + {file = "regex-2022.1.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7e070d3aef50ac3856f2ef5ec7214798453da878bb5e5a16c16a61edf1817cc3"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22709d701e7037e64dae2a04855021b62efd64a66c3ceed99dfd684bfef09e38"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9099bf89078675c372339011ccfc9ec310310bf6c292b413c013eb90ffdcafc"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04611cc0f627fc4a50bc4a9a2e6178a974c6a6a4aa9c1cca921635d2c47b9c87"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:552a39987ac6655dad4bf6f17dd2b55c7b0c6e949d933b8846d2e312ee80005a"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e031899cb2bc92c0cf4d45389eff5b078d1936860a1be3aa8c94fa25fb46ed8"}, + {file = "regex-2022.1.18-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2dacb3dae6b8cc579637a7b72f008bff50a94cde5e36e432352f4ca57b9e54c4"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e5c31d70a478b0ca22a9d2d76d520ae996214019d39ed7dd93af872c7f301e52"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bb804c7d0bfbd7e3f33924ff49757de9106c44e27979e2492819c16972ec0da2"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:36b2d700a27e168fa96272b42d28c7ac3ff72030c67b32f37c05616ebd22a202"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:16f81025bb3556eccb0681d7946e2b35ff254f9f888cff7d2120e8826330315c"}, + {file = "regex-2022.1.18-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:da80047524eac2acf7c04c18ac7a7da05a9136241f642dd2ed94269ef0d0a45a"}, + {file = "regex-2022.1.18-cp37-cp37m-win32.whl", hash = "sha256:6ca45359d7a21644793de0e29de497ef7f1ae7268e346c4faf87b421fea364e6"}, + {file = "regex-2022.1.18-cp37-cp37m-win_amd64.whl", hash = "sha256:38289f1690a7e27aacd049e420769b996826f3728756859420eeee21cc857118"}, + {file = "regex-2022.1.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6014038f52b4b2ac1fa41a58d439a8a00f015b5c0735a0cd4b09afe344c94899"}, + {file = "regex-2022.1.18-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0b5d6f9aed3153487252d00a18e53f19b7f52a1651bc1d0c4b5844bc286dfa52"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9d24b03daf7415f78abc2d25a208f234e2c585e5e6f92f0204d2ab7b9ab48e3"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf594cc7cc9d528338d66674c10a5b25e3cde7dd75c3e96784df8f371d77a298"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd914db437ec25bfa410f8aa0aa2f3ba87cdfc04d9919d608d02330947afaeab"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90b6840b6448203228a9d8464a7a0d99aa8fa9f027ef95fe230579abaf8a6ee1"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11772be1eb1748e0e197a40ffb82fb8fd0d6914cd147d841d9703e2bef24d288"}, + {file = "regex-2022.1.18-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a602bdc8607c99eb5b391592d58c92618dcd1537fdd87df1813f03fed49957a6"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7e26eac9e52e8ce86f915fd33380f1b6896a2b51994e40bb094841e5003429b4"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:519c0b3a6fbb68afaa0febf0d28f6c4b0a1074aefc484802ecb9709faf181607"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3c7ea86b9ca83e30fa4d4cd0eaf01db3ebcc7b2726a25990966627e39577d729"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:51f02ca184518702975b56affde6c573ebad4e411599005ce4468b1014b4786c"}, + {file = "regex-2022.1.18-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:385ccf6d011b97768a640e9d4de25412204fbe8d6b9ae39ff115d4ff03f6fe5d"}, + {file = "regex-2022.1.18-cp38-cp38-win32.whl", hash = "sha256:1f8c0ae0a0de4e19fddaaff036f508db175f6f03db318c80bbc239a1def62d02"}, + {file = "regex-2022.1.18-cp38-cp38-win_amd64.whl", hash = "sha256:760c54ad1b8a9b81951030a7e8e7c3ec0964c1cb9fee585a03ff53d9e531bb8e"}, + {file = "regex-2022.1.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:93c20777a72cae8620203ac11c4010365706062aa13aaedd1a21bb07adbb9d5d"}, + {file = "regex-2022.1.18-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6aa427c55a0abec450bca10b64446331b5ca8f79b648531138f357569705bc4a"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c38baee6bdb7fe1b110b6b3aaa555e6e872d322206b7245aa39572d3fc991ee4"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:752e7ddfb743344d447367baa85bccd3629c2c3940f70506eb5f01abce98ee68"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8acef4d8a4353f6678fd1035422a937c2170de58a2b29f7da045d5249e934101"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c73d2166e4b210b73d1429c4f1ca97cea9cc090e5302df2a7a0a96ce55373f1c"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24c89346734a4e4d60ecf9b27cac4c1fee3431a413f7aa00be7c4d7bbacc2c4d"}, + {file = "regex-2022.1.18-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:596f5ae2eeddb79b595583c2e0285312b2783b0ec759930c272dbf02f851ff75"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ecfe51abf7f045e0b9cdde71ca9e153d11238679ef7b5da6c82093874adf3338"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1d6301f5288e9bdca65fab3de6b7de17362c5016d6bf8ee4ba4cbe833b2eda0f"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:93cce7d422a0093cfb3606beae38a8e47a25232eea0f292c878af580a9dc7605"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cf0db26a1f76aa6b3aa314a74b8facd586b7a5457d05b64f8082a62c9c49582a"}, + {file = "regex-2022.1.18-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:defa0652696ff0ba48c8aff5a1fac1eef1ca6ac9c660b047fc8e7623c4eb5093"}, + {file = "regex-2022.1.18-cp39-cp39-win32.whl", hash = "sha256:6db1b52c6f2c04fafc8da17ea506608e6be7086715dab498570c3e55e4f8fbd1"}, + {file = "regex-2022.1.18-cp39-cp39-win_amd64.whl", hash = "sha256:ebaeb93f90c0903233b11ce913a7cb8f6ee069158406e056f884854c737d2442"}, + {file = "regex-2022.1.18.tar.gz", hash = "sha256:97f32dc03a8054a4c4a5ab5d761ed4861e828b2c200febd4e46857069a483916"}, ] renku-sphinx-theme = [ {file = "renku-sphinx-theme-0.2.2.tar.gz", hash = "sha256:b33d7bcbae1b95fda678afec0f4995a10a60722663e80609cf9b36a38d63005d"}, @@ -3806,8 +3812,8 @@ rq-scheduler = [ {file = "rq_scheduler-0.11.0-py2.py3-none-any.whl", hash = "sha256:da94e9b6badf112995ff38fe16192e4f4c43c412b3c9614684ed8c8f7ca517d2"}, ] "ruamel.yaml" = [ - {file = "ruamel.yaml-0.16.5-py2.py3-none-any.whl", hash = "sha256:0db639b1b2742dae666c6fc009b8d1931ef15c9276ef31c0673cc6dcf766cf40"}, - {file = "ruamel.yaml-0.16.5.tar.gz", hash = "sha256:412a6f5cfdc0525dee6a27c08f5415c7fd832a7afcb7a0ed7319628aed23d408"}, + {file = "ruamel.yaml-0.17.16-py3-none-any.whl", hash = "sha256:ea21da1198c4b41b8e7a259301cc9710d3b972bf8ba52f06218478e6802dd1f1"}, + {file = "ruamel.yaml-0.17.16.tar.gz", hash = "sha256:1a771fc92d3823682b7f0893ad56cb5a5c87c48e62b5399d6f42c8759a583b33"}, ] "ruamel.yaml.clib" = [ {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"}, @@ -3833,20 +3839,20 @@ rq-scheduler = [ {file = "ruamel.yaml.clib-0.2.6.tar.gz", hash = "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd"}, ] schema-salad = [ - {file = "schema-salad-8.2.20220103095339.tar.gz", hash = "sha256:051690a2f89b98e35100cd2cb489406a5169a60c2f27a716f3f287a42d45be2d"}, - {file = "schema_salad-8.2.20220103095339-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e7ed71f53076e9d3baab3fdfedf850834f6de10ec9fb40b1ab3376a9f168a56"}, - {file = "schema_salad-8.2.20220103095339-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b3ff052b2ab83ba5ecdddd783b4f1a2c8a150f8a923cb0d366b0d282f8e1f3f"}, - {file = "schema_salad-8.2.20220103095339-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6ea4820568f90382585dcf269352b9fd26f00a245e3906398cef84b99a63ea7"}, - {file = "schema_salad-8.2.20220103095339-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:295e7334cf4023997fa198ef134ee0aab8918efcdbc9e27ee2cf6f75c7fe767b"}, - {file = "schema_salad-8.2.20220103095339-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ce33774970da53434c966a5d1af063672b18127992d407b57fb6b354b134030"}, - {file = "schema_salad-8.2.20220103095339-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:43366cc97bed82ee7a49a3ea39b2769bf732dd52bd678144717c7aec5fc40da6"}, - {file = "schema_salad-8.2.20220103095339-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91f1b15e83470c721e2d79a4290c1961262942435c483844a4b11873e3091f3d"}, - {file = "schema_salad-8.2.20220103095339-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35cc32ba214faca47a39e97da1bd2df0b49c824118b283f9101037d89777627b"}, - {file = "schema_salad-8.2.20220103095339-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60060fc8065ec29704e35d59b9c9b7042710734edf96a205ef8c76121c5d0cc2"}, - {file = "schema_salad-8.2.20220103095339-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3483e800f58169afa3bfed117bc1396e329bee8d09b1cb427f55fb67d8cb131"}, - {file = "schema_salad-8.2.20220103095339-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4744b5fdc5894c49f8c7dbca8393e90c97e4b3f4f227c848a5c8feeb5bf70d7d"}, - {file = "schema_salad-8.2.20220103095339-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d9656313c17d439a14a5f8e9149a2a708a5dcd5d69d81cbced52ff5beddb6972"}, - {file = "schema_salad-8.2.20220103095339-py3-none-any.whl", hash = "sha256:ea54e6606ecacaa5a2453532aa8e78b38154c34aa99167f8ccfa92f914a72f2c"}, + {file = "schema-salad-8.2.20220204150214.tar.gz", hash = "sha256:3e53dbfe7137796b9e5135920e96bb2713ded9e7be2859dae554d1dc8b029704"}, + {file = "schema_salad-8.2.20220204150214-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:609ba090fb40f493cedf64bb124c1d208af7388b6663af9d76a91a03ec7d8710"}, + {file = "schema_salad-8.2.20220204150214-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecf2c386cff04f7bc08b0ec4f3f3f0c6196043d746799c64a98ca4cb596e4c9f"}, + {file = "schema_salad-8.2.20220204150214-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ec4ad0f1fd56637ad3f935d647adceaebc28bbe7c204cf24165c231320c09b8"}, + {file = "schema_salad-8.2.20220204150214-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77ff2a0d76e490f5c39375ca4d3f625fffa51a93aa719966a5c06b5375f76fc8"}, + {file = "schema_salad-8.2.20220204150214-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86addbf36269646914c666035318ca38a5e84a4ae5732c013cde3f03550ca5f7"}, + {file = "schema_salad-8.2.20220204150214-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b72181040f4330decdad422130fac6d7953d0415843a6bb02d6e7835f20e10e7"}, + {file = "schema_salad-8.2.20220204150214-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b27300acf4d71547dae3c0f065789075c157391de74e71fdbf1daf318ef958dc"}, + {file = "schema_salad-8.2.20220204150214-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd1f72602c21fb4e201cecba36c60f896f0cc95edaeb49bb9b720ed9869af372"}, + {file = "schema_salad-8.2.20220204150214-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2de190abaccd39408e384982c0bbb871708502ebb81682cf0a6e522bcdf86dc3"}, + {file = "schema_salad-8.2.20220204150214-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c8d4b433f745e3c51fa8ea83ab319c45269af3003cb180d53e6eb719c1f8606"}, + {file = "schema_salad-8.2.20220204150214-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4976cbb5c4801b29295bdadb3e234e7b9572b1b9716b063f79806cb30820181"}, + {file = "schema_salad-8.2.20220204150214-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1627e1666e8f835d337926fac65d5484128ce5798fefa4bb1a0ae862e1f9ec82"}, + {file = "schema_salad-8.2.20220204150214-py3-none-any.whl", hash = "sha256:ce49adf0bc97fd44d99df98bf00d6bc66b38a2483b3cc721cbd200d010add3c5"}, ] sentry-sdk = [ {file = "sentry-sdk-1.4.3.tar.gz", hash = "sha256:b9844751e40710e84a457c5bc29b21c383ccb2b63d76eeaad72f7f1c808c8828"}, @@ -3856,6 +3862,10 @@ shellescape = [ {file = "shellescape-3.8.1-py2.py3-none-any.whl", hash = "sha256:f17127e390fa3f9aaa80c69c16ea73615fd9b5318fd8309c1dca6168ae7d85bf"}, {file = "shellescape-3.8.1.tar.gz", hash = "sha256:40b310b30479be771bf3ab28bd8d40753778488bd46ea0969ba0b35038c3ec26"}, ] +shellingham = [ + {file = "shellingham-1.4.0-py2.py3-none-any.whl", hash = "sha256:536b67a0697f2e4af32ab176c00a50ac2899c5a05e0d8e2dadac8e58888283f9"}, + {file = "shellingham-1.4.0.tar.gz", hash = "sha256:4855c2458d6904829bd34c299f11fdeed7cfefbf8a2c522e4caea6cd76b3171e"}, +] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -3981,25 +3991,30 @@ transaction = [ {file = "transaction-3.0.1.tar.gz", hash = "sha256:0c15ef0b7ff3518357ceea75722a30d974c3f85e11aa5cec5d5a2b6a40cfcf68"}, ] typed-ast = [ - {file = "typed_ast-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d8314c92414ce7481eee7ad42b353943679cf6f30237b5ecbf7d835519e1212"}, - {file = "typed_ast-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b53ae5de5500529c76225d18eeb060efbcec90ad5e030713fe8dab0fb4531631"}, - {file = "typed_ast-1.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:24058827d8f5d633f97223f5148a7d22628099a3d2efe06654ce872f46f07cdb"}, - {file = "typed_ast-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a6d495c1ef572519a7bac9534dbf6d94c40e5b6a608ef41136133377bba4aa08"}, - {file = "typed_ast-1.5.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:de4ecae89c7d8b56169473e08f6bfd2df7f95015591f43126e4ea7865928677e"}, - {file = "typed_ast-1.5.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:256115a5bc7ea9e665c6314ed6671ee2c08ca380f9d5f130bd4d2c1f5848d695"}, - {file = "typed_ast-1.5.1-cp36-cp36m-win_amd64.whl", hash = "sha256:7c42707ab981b6cf4b73490c16e9d17fcd5227039720ca14abe415d39a173a30"}, - {file = "typed_ast-1.5.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:71dcda943a471d826ea930dd449ac7e76db7be778fcd722deb63642bab32ea3f"}, - {file = "typed_ast-1.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4f30a2bcd8e68adbb791ce1567fdb897357506f7ea6716f6bbdd3053ac4d9471"}, - {file = "typed_ast-1.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ca9e8300d8ba0b66d140820cf463438c8e7b4cdc6fd710c059bfcfb1531d03fb"}, - {file = "typed_ast-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9caaf2b440efb39ecbc45e2fabde809cbe56272719131a6318fd9bf08b58e2cb"}, - {file = "typed_ast-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c9bcad65d66d594bffab8575f39420fe0ee96f66e23c4d927ebb4e24354ec1af"}, - {file = "typed_ast-1.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:591bc04e507595887160ed7aa8d6785867fb86c5793911be79ccede61ae96f4d"}, - {file = "typed_ast-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:a80d84f535642420dd17e16ae25bb46c7f4c16ee231105e7f3eb43976a89670a"}, - {file = "typed_ast-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:38cf5c642fa808300bae1281460d4f9b7617cf864d4e383054a5ef336e344d32"}, - {file = "typed_ast-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5b6ab14c56bc9c7e3c30228a0a0b54b915b1579613f6e463ba6f4eb1382e7fd4"}, - {file = "typed_ast-1.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2b8d7007f6280e36fa42652df47087ac7b0a7d7f09f9468f07792ba646aac2d"}, - {file = "typed_ast-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:b6d17f37f6edd879141e64a5db17b67488cfeffeedad8c5cec0392305e9bc775"}, - {file = "typed_ast-1.5.1.tar.gz", hash = "sha256:484137cab8ecf47e137260daa20bafbba5f4e3ec7fda1c1e69ab299b75fa81c5"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc2542e83ac8399752bc16e0b35e038bdb659ba237f4222616b4e83fb9654985"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74cac86cc586db8dfda0ce65d8bcd2bf17b58668dfcc3652762f3ef0e6677e76"}, + {file = "typed_ast-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:18fe320f354d6f9ad3147859b6e16649a0781425268c4dde596093177660e71a"}, + {file = "typed_ast-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:31d8c6b2df19a777bc8826770b872a45a1f30cfefcfd729491baa5237faae837"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:963a0ccc9a4188524e6e6d39b12c9ca24cc2d45a71cfdd04a26d883c922b4b78"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0eb77764ea470f14fcbb89d51bc6bbf5e7623446ac4ed06cbd9ca9495b62e36e"}, + {file = "typed_ast-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:294a6903a4d087db805a7656989f613371915fc45c8cc0ddc5c5a0a8ad9bea4d"}, + {file = "typed_ast-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26a432dc219c6b6f38be20a958cbe1abffcc5492821d7e27f08606ef99e0dffd"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7407cfcad702f0b6c0e0f3e7ab876cd1d2c13b14ce770e412c0c4b9728a0f88"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f30ddd110634c2d7534b2d4e0e22967e88366b0d356b24de87419cc4410c41b7"}, + {file = "typed_ast-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8c08d6625bb258179b6e512f55ad20f9dfef019bbfbe3095247401e053a3ea30"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:90904d889ab8e81a956f2c0935a523cc4e077c7847a836abee832f868d5c26a4"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bbebc31bf11762b63bf61aaae232becb41c5bf6b3461b80a4df7e791fabb3aca"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29dd9a3a9d259c9fa19d19738d021632d673f6ed9b35a739f48e5f807f264fb"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:58ae097a325e9bb7a684572d20eb3e1809802c5c9ec7108e85da1eb6c1a3331b"}, + {file = "typed_ast-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:da0a98d458010bf4fe535f2d1e367a2e2060e105978873c04c04212fb20543f7"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:33b4a19ddc9fc551ebabca9765d54d04600c4a50eda13893dadf67ed81d9a098"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1098df9a0592dd4c8c0ccfc2e98931278a6c6c53cb3a3e2cf7e9ee3b06153344"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c47c3b43fe3a39ddf8de1d40dbbfca60ac8530a36c9b198ea5b9efac75c09e"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f290617f74a610849bd8f5514e34ae3d09eafd521dceaa6cf68b3f4414266d4e"}, + {file = "typed_ast-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:df05aa5b241e2e8045f5f4367a9f6187b09c4cdf8578bb219861c4e27c443db5"}, + {file = "typed_ast-1.5.2.tar.gz", hash = "sha256:525a2d4088e70a9f75b08b3f87a51acc9cde640e19cc523c7e41aa355564ae27"}, ] typing-extensions = [ {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"}, diff --git a/pyproject.toml b/pyproject.toml index f9fefd4527..4b16c26582 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,8 +64,7 @@ click-option-group = "<0.6.0,>=0.5.2" click-plugins = "==1.1.1" coverage = { version = "<6.2,>=4.5.3", optional = true } cryptography = "<35.1,>=3.4.1" -cwl-utils = { version = ">=0.12", optional = true } -cwlgen = "<=0.4.2,>=0.4.0" +cwl-utils = ">=0.12" cwltool = "==3.1.20210922203925" deepmerge = "==0.3.0" environ-config = "<21.3.0,>=18.2.0" @@ -129,6 +128,7 @@ rich = "<10.13.0,>=9.3.0" rq = { version = "==1.10.0", optional = true } rq-scheduler = { version = "==0.11.0", optional = true } sentry-sdk = { version = "<1.4.4,>=0.7.4", extras = ["flask"], optional = true } +shellingham = "1.4.0" sphinxcontrib-spelling = { version = "7.*", optional = true } sphinx-rtd-theme = { version = "<1.1,>=0.5.0", optional = true } sphinx-tabs = { version = "==3.2.0", optional = true } @@ -168,7 +168,6 @@ tests = [ "black", "check-manifest", "coverage", - "cwl-utils", "fakeredis", "flakehell", "flaky", @@ -198,7 +197,6 @@ all = [ "check-manifest", "circus", "coverage", - "cwl-utils", "fakeredis", "flakehell", "flaky", @@ -206,7 +204,6 @@ all = [ "freezegun", "gunicorn", "isort", - "jinja2", "marshmallow", "pexpect", "pillow", diff --git a/renku/cli/__init__.py b/renku/cli/__init__.py index 99ccd9dabb..0ca1e9d60f 100644 --- a/renku/cli/__init__.py +++ b/renku/cli/__init__.py @@ -73,6 +73,7 @@ from renku.cli.config import config from renku.cli.dataset import dataset from renku.cli.doctor import doctor +from renku.cli.env import env from renku.cli.exception_handler import IssueFromTraceback from renku.cli.githooks import githooks as githooks_command from renku.cli.graph import graph @@ -115,7 +116,7 @@ def get_entry_points(name: str): return all_entry_points.get(name, []) -WARNING_UNPROTECTED_COMMANDS = ["clone", "init", "help", "login", "logout", "service", "credentials"] +WARNING_UNPROTECTED_COMMANDS = ["clone", "init", "help", "login", "logout", "service", "credentials", "env"] def _uuid_representer(dumper, data): @@ -209,6 +210,7 @@ def help(ctx): cli.add_command(config) cli.add_command(dataset) cli.add_command(doctor) +cli.add_command(env) cli.add_command(githooks_command) cli.add_command(graph) cli.add_command(init_command) diff --git a/renku/cli/env.py b/renku/cli/env.py new file mode 100644 index 0000000000..56d14ff5e7 --- /dev/null +++ b/renku/cli/env.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# +# Copyright 2018-2022 - Swiss Data Science Center (SDSC) +# A partnership between École Polytechnique Fédérale de Lausanne (EPFL) and +# Eidgenössische Technische Hochschule Zürich (ETHZ). +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Renku environment related commands.""" + +import click + + +@click.command() +@click.option("shell_completion", "--shell-completion", is_flag=True, help="Print shell completion command") +@click.pass_context +def env(ctx, shell_completion): + """Renku environment commands.""" + + if shell_completion: + import shellingham + + from renku.core.errors import UsageError + + shell = shellingham.detect_shell()[0] + if shell == "bash": + click.echo("_RENKU_COMPLETE=bash_source renku") + elif shell == "zsh": + click.echo("_RENKU_COMPLETE=zsh_source renku") + elif shell == "fish": + click.echo("env _RENKU_COMPLETE=fish_source renku") + else: + raise UsageError(f"The currently used shell '{shell}' is not supported for shell completion.") + else: + click.echo(ctx.get_help()) diff --git a/renku/core/management/migrate.py b/renku/core/management/migrate.py index 8eb8cf94a5..126dfcfb46 100644 --- a/renku/core/management/migrate.py +++ b/renku/core/management/migrate.py @@ -376,7 +376,7 @@ def get_migrations(): """Return a sorted list of versions and migration modules.""" migrations = [] for entry in importlib_resources.files("renku.core.management.migrations").iterdir(): - match = re.search(r"m_([0-9]{4})__[a-zA-Z0-9_-]*.py", entry.name) + match = re.search(r"^m_([0-9]{4})__[a-zA-Z0-9_-]*.py$", entry.name) if match is None: # migration files match m_0000__[name].py format continue diff --git a/renku/core/management/migrations/m_0005__2_cwl.py b/renku/core/management/migrations/m_0005__2_cwl.py index e30418fb69..f8a0f177ba 100644 --- a/renku/core/management/migrations/m_0005__2_cwl.py +++ b/renku/core/management/migrations/m_0005__2_cwl.py @@ -25,9 +25,10 @@ from functools import cmp_to_key from hashlib import sha1 from pathlib import Path +from urllib.parse import urlparse -from cwlgen import CommandLineTool, parse_cwl -from cwlgen.requirements import InitialWorkDirRequirement +from cwl_utils.parser import load_document_by_uri +from cwl_utils.parser.cwl_v1_0 import CommandLineTool, InitialWorkDirRequirement from werkzeug.utils import secure_filename from renku.core import errors @@ -149,7 +150,7 @@ def _migrate_single_step(client, cmd_line_tool, path, commit=None, parent_commit if name.endswith(")"): name = name[:-1] - matched_input = next(i for i in inputs if i.id == name) + matched_input = next(i for i in inputs if i.id.endswith(name)) inputs.remove(matched_input) path = client.renku_path / OLD_WORKFLOW_PATH / Path(matched_input.default["path"]) @@ -174,7 +175,7 @@ def _migrate_single_step(client, cmd_line_tool, path, commit=None, parent_commit ) ) - matched_output = next(o for o in outputs if o.id == "output_stdout") + matched_output = next(o for o in outputs if o.id.endswith("output_stdout")) if matched_output: outputs.remove(matched_output) @@ -189,7 +190,7 @@ def _migrate_single_step(client, cmd_line_tool, path, commit=None, parent_commit ) ) - matched_output = next(o for o in outputs if o.id == "output_stderr") + matched_output = next(o for o in outputs if o.id.endswith("output_stderr")) if matched_output: outputs.remove(matched_output) @@ -215,7 +216,7 @@ def _migrate_single_step(client, cmd_line_tool, path, commit=None, parent_commit if name.endswith(")"): name = name[:-1] - matched_input = next(i for i in all_inputs if i.id == name) + matched_input = next(i for i in all_inputs if i.id.endswith(name)) try: inputs.remove(matched_input) except ValueError: @@ -290,8 +291,8 @@ def _migrate_single_step(client, cmd_line_tool, path, commit=None, parent_commit ) for a in cmd_line_tool.arguments: - id_ = CommandArgument.generate_id(base_id, a["position"]) - run.arguments.append(CommandArgument(id=id_, position=a["position"], value=a["valueFrom"])) + id_ = CommandArgument.generate_id(base_id, a.position) + run.arguments.append(CommandArgument(id=id_, position=a.position, value=a.valueFrom)) if not persist: return run, None @@ -327,15 +328,15 @@ def _migrate_composite_step(client, workflow, path, commit=None): name = "{0}_migrated.yaml".format(uuid.uuid4().hex) wf_path = client.renku_path / OLD_WORKFLOW_PATH - run.path = (wf_path / name).relative_to(client.path) for step in workflow.steps: if isinstance(step.run, dict): continue else: - path = wf_path / step.run - subrun = parse_cwl_cached(str(path)) + uri = urlparse(step.run) + path = uri.path + subrun = parse_cwl_cached(path) subprocess, _ = _migrate_single_step(client, subrun, path, parent_commit=commit) run.add_subprocess(subprocess) @@ -424,7 +425,7 @@ def parse_cwl_cached(path): if path in _cwl_cache: return _cwl_cache[path] - cwl = parse_cwl(path) + cwl = load_document_by_uri(path) _cwl_cache[path] = cwl diff --git a/renku/core/management/repository.py b/renku/core/management/repository.py index 8a1e72c586..d5a5248907 100644 --- a/renku/core/management/repository.py +++ b/renku/core/management/repository.py @@ -290,6 +290,8 @@ def init_repository(self, force=False, user=None, initial_branch=None): # initialize repo and set user data path = self.path.absolute() + if force and (path / RENKU_HOME).exists(): + shutil.rmtree(path / RENKU_HOME) self.repository = Repository.initialize(path=path, branch=initial_branch) if user: with self.repository.get_configuration(writable=True) as config_writer: diff --git a/renku/core/management/workflow/converters/cwl.py b/renku/core/management/workflow/converters/cwl.py index 37692dd408..b9e8098c9a 100644 --- a/renku/core/management/workflow/converters/cwl.py +++ b/renku/core/management/workflow/converters/cwl.py @@ -24,10 +24,11 @@ from typing import Optional, Union from uuid import uuid4 -import cwlgen +import cwl_utils.parser.cwl_v1_2 as cwl from renku.core import errors from renku.core.management.workflow.concrete_execution_graph import ExecutionGraph +from renku.core.models.jsonld import write_yaml from renku.core.models.workflow.composite_plan import CompositePlan from renku.core.models.workflow.converters import IWorkflowConverter from renku.core.models.workflow.parameter import DIRECTORY_MIME_TYPE, CommandInput, CommandParameter @@ -36,7 +37,7 @@ from renku.core.plugins.provider import RENKU_ENV_PREFIX -class CommandLineTool(cwlgen.CommandLineTool): +class CommandLineTool(cwl.CommandLineTool): """CommandLineTool that supports empty outputs.""" def get_dict(self): @@ -47,7 +48,7 @@ def get_dict(self): return d -class WorkflowStep(cwlgen.WorkflowStep): +class WorkflowStep(cwl.WorkflowStep): """WorkflowStep that supports empty outputs.""" def get_dict(self): @@ -107,15 +108,15 @@ def workflow_convert( tmpdir = Path(tempfile.mkdtemp()) if isinstance(workflow, CompositePlan): - tool_object, path = CWLExporter._convert_composite( + path = CWLExporter._convert_composite( workflow, tmpdir, basedir, filename=filename, output_format=output_format ) else: - tool_object, path = CWLExporter._convert_step( + _, path = CWLExporter._convert_step( workflow, tmpdir, basedir, filename=filename, output_format=output_format ) - return tool_object.export_string() + return path.read_text() @staticmethod def _sanitize_id(id): @@ -144,10 +145,10 @@ def _convert_composite( import networkx as nx for i, wf in enumerate(nx.topological_sort(graph.workflow_graph)): - _, path = CWLExporter._convert_step( + cwl_workflow, path = CWLExporter._convert_step( workflow=wf, tmpdir=tmpdir, basedir=basedir, filename=None, output_format=output_format ) - step = WorkflowStep("step_{}".format(i), str(path.resolve())) + step = WorkflowStep(in_=[], out=[], run=str(path), id="step_{}".format(i)) for input in wf.inputs: input_path = input.actual_value @@ -155,25 +156,25 @@ def _convert_composite( sanitized_id = CWLExporter._sanitize_id(input.id) if input_path in inputs: # already used as top-level input elsewhere, reuse - step.inputs.append(cwlgen.WorkflowStepInput(sanitized_id, source=inputs[input_path])) + step.in_.append(cwl.WorkflowStepInput(sanitized_id, source=inputs[input_path])) elif input_path in outputs: # output of a previous step, refer to it consumed_outputs.add(outputs[input_path][0]) - step.inputs.append( - cwlgen.WorkflowStepInput( + step.in_.append( + cwl.WorkflowStepInput( sanitized_id, source="{}/{}".format(outputs[input_path][1], outputs[input_path][0]) ) ) else: # input isn't output and doesn't exist yet, add new inputs[input_path] = "input_{}".format(input_index) - step.inputs.append(cwlgen.WorkflowStepInput(sanitized_id, source=inputs[input_path])) + step.in_.append(cwl.WorkflowStepInput(sanitized_id, source=inputs[input_path])) input_index += 1 for parameter in wf.parameters: argument_id = "argument_{}".format(argument_index) arguments[argument_id] = parameter.actual_value - step.inputs.append(cwlgen.WorkflowStepInput(CWLExporter._sanitize_id(parameter.id), source=argument_id)) + step.in_.append(cwl.WorkflowStepInput(CWLExporter._sanitize_id(parameter.id), source=argument_id)) argument_index += 1 for output in wf.outputs: @@ -182,43 +183,41 @@ def _convert_composite( if output.mapped_to: sanitized_id = "output_{}".format(output.mapped_to.stream_type) outputs[output.actual_value] = (sanitized_id, step.id) - step.out.append(cwlgen.WorkflowStepOutput(sanitized_id)) + step.out.append(cwl.WorkflowStepOutput(sanitized_id)) steps.append(step) - workflow_object = cwlgen.Workflow(str(uuid4()), cwl_version="v1.0") - workflow_object.hints = [] - workflow_object.requirements = [] + workflow_object = cwl.Workflow([], [], steps, id=str(uuid4()), requirements=[], hints=[], cwlVersion="v1.0") # check types of paths and add as top level inputs/outputs for path, id_ in inputs.items(): type_ = "Directory" if os.path.isdir(path) else "File" workflow_object.inputs.append( - cwlgen.InputParameter( - id_, - param_type=type_, + cwl.WorkflowInputParameter( + id=id_, + type=type_, default={"location": Path(path).resolve().as_uri(), "class": type_}, ) ) for id_, value in arguments.items(): value, type_ = _get_argument_type(value) - workflow_object.inputs.append(cwlgen.InputParameter(id_, param_type=type_, default=value)) + workflow_object.inputs.append(cwl.WorkflowInputParameter(id=id_, type=type_, default=value)) for index, (path, (id_, step_id)) in enumerate(outputs.items(), 1): type_ = "Directory" if os.path.isdir(path) else "File" workflow_object.outputs.append( - cwlgen.WorkflowOutputParameter( - "output_{}".format(index), output_source="{}/{}".format(step_id, id_), param_type=type_ + cwl.WorkflowOutputParameter( + id="output_{}".format(index), outputSource="{}/{}".format(step_id, id_), type=type_ ) ) - workflow_object.steps.extend(steps) if not filename: filename = "parent_{}.cwl".format(uuid4()) - path = tmpdir / filename - workflow_object.export(path.resolve()) - return workflow_object, path + output = workflow_object.save() + path = (tmpdir / filename).resolve() + write_yaml(path, output) + return path @staticmethod def _convert_step( @@ -238,15 +237,18 @@ def _convert_step( stdout = output_.actual_value tool_object = CommandLineTool( - tool_id=str(uuid4()), - base_command=workflow.command.split(" "), + inputs=[], + outputs=[], + id=str(uuid4()), + baseCommand=workflow.command.split(" "), + requirements=[], stdin=stdin, stderr=stderr, stdout=stdout, - cwl_version="v1.0", + cwlVersion="v1.0", ) - workdir_req = cwlgen.InitialWorkDirRequirement([]) + workdir_req = cwl.InitialWorkDirRequirement([]) jsrequirement = False environment_variables = [] @@ -260,16 +262,12 @@ def _convert_step( # workflow needs to create subdirectory for output file, # if the directory was not already present workdir_req.listing.append( - cwlgen.InitialWorkDirRequirement.Dirent( - entry='$({"listing": [], "class": "Directory"})', entryname=path, writable=True - ) + cwl.Dirent(entry='$({"listing": [], "class": "Directory"})', entryname=path, writable=True) ) dirents.append(path) jsrequirement = True - environment_variables.append( - cwlgen.EnvVarRequirement.EnvironmentDef(f"{RENKU_ENV_PREFIX}{output_.name}", output_.actual_value) - ) + environment_variables.append(cwl.EnvironmentDef(f"{RENKU_ENV_PREFIX}{output_.name}", output_.actual_value)) outp, arg = CWLExporter._convert_output(output_) tool_object.outputs.append(outp) if arg: @@ -279,34 +277,29 @@ def _convert_step( tool_input = CWLExporter._convert_input(input_, basedir) workdir_req.listing.append( - cwlgen.InitialWorkDirRequirement.Dirent( - entry="$(inputs.{})".format(tool_input.id), entryname=input_.actual_value, writable=False - ) + cwl.Dirent(entry="$(inputs.{})".format(tool_input.id), entryname=input_.actual_value, writable=False) ) - environment_variables.append( - cwlgen.EnvVarRequirement.EnvironmentDef(f"{RENKU_ENV_PREFIX}{input_.name}", input_.actual_value) - ) + environment_variables.append(cwl.EnvironmentDef(f"{RENKU_ENV_PREFIX}{input_.name}", input_.actual_value)) tool_object.inputs.append(tool_input) if input_.mapped_to: tool_object.stdin = "$(inputs.{}.path)".format(tool_input.id) jsrequirement = True + for parameter in workflow.parameters: environment_variables.append( - cwlgen.EnvVarRequirement.EnvironmentDef(f"{RENKU_ENV_PREFIX}{parameter.name}", parameter.actual_value) + cwl.EnvironmentDef(f"{RENKU_ENV_PREFIX}{parameter.name}", parameter.actual_value) ) tool_object.inputs.append(CWLExporter._convert_parameter(parameter)) workdir_req.listing.append( - cwlgen.InitialWorkDirRequirement.Dirent( - entry="$(inputs.input_renku_metadata)", entryname=".renku", writable=False - ) + cwl.Dirent(entry="$(inputs.input_renku_metadata)", entryname=".renku", writable=False) ) tool_object.inputs.append( - cwlgen.CommandInputParameter( - "input_renku_metadata", - param_type="Directory", - input_binding=None, + cwl.CommandInputParameter( + id="input_renku_metadata", + type="Directory", + inputBinding=None, default={"location": (basedir / ".renku").resolve().as_uri(), "class": "Directory"}, ) ) @@ -314,15 +307,16 @@ def _convert_step( if workdir_req.listing: tool_object.requirements.append(workdir_req) if jsrequirement: - tool_object.requirements.append(cwlgen.InlineJavascriptRequirement()) + tool_object.requirements.append(cwl.InlineJavascriptRequirement()) if environment_variables: - tool_object.requirements.append(cwlgen.EnvVarRequirement(environment_variables)) + tool_object.requirements.append(cwl.EnvVarRequirement(environment_variables)) + output = tool_object.save() if not filename: filename = "{}.cwl".format(uuid4()) - path = tmpdir / filename - tool_object.export(path.resolve()) - return tool_object, path + path = (tmpdir / filename).resolve() + write_yaml(path, output) + return output, path @staticmethod def _convert_parameter(parameter: CommandParameter): @@ -339,10 +333,12 @@ def _convert_parameter(parameter: CommandParameter): prefix = prefix[:-1] separate = True - return cwlgen.CommandInputParameter( - CWLExporter._sanitize_id(parameter.id), - param_type=type_, - input_binding=cwlgen.CommandLineBinding(position=parameter.position, prefix=prefix, separate=separate), + return cwl.CommandInputParameter( + id=CWLExporter._sanitize_id(parameter.id), + type=type_, + inputBinding=cwl.CommandLineBinding(position=parameter.position, prefix=prefix, separate=separate) + if parameter.position or prefix + else None, default=value, ) @@ -367,10 +363,12 @@ def _convert_input(input: CommandInput, basedir: Path): prefix = prefix[:-1] separate = True - return cwlgen.CommandInputParameter( - sanitized_id, - param_type=type_, - input_binding=cwlgen.CommandLineBinding(position=position, prefix=prefix, separate=separate), + return cwl.CommandInputParameter( + id=sanitized_id, + type=type_, + inputBinding=cwl.CommandLineBinding(position=position, prefix=prefix, separate=separate) + if position or prefix + else None, default={"location": (basedir / input.actual_value).resolve().as_uri(), "class": type_}, ) @@ -379,9 +377,9 @@ def _convert_output(output: CommandInput): """Converts an output to a CWL output.""" if output.mapped_to: return ( - cwlgen.CommandOutputParameter( - "output_{}".format(output.mapped_to.stream_type), - param_type=output.mapped_to.stream_type, + cwl.CommandOutputParameter( + id="output_{}".format(output.mapped_to.stream_type), + type=output.mapped_to.stream_type, streamable=False, ), None, @@ -403,22 +401,22 @@ def _convert_output(output: CommandInput): prefix = prefix[:-1] separate = True - arg = cwlgen.CommandInputParameter( - "{}_arg".format(sanitized_id), - param_type="string", - input_binding=cwlgen.CommandLineBinding(position=output.position, prefix=prefix, separate=separate), + arg = cwl.CommandInputParameter( + id="{}_arg".format(sanitized_id), + type="string", + inputBinding=cwl.CommandLineBinding(position=output.position, prefix=prefix, separate=separate), default=output.actual_value, ) - outp = cwlgen.CommandOutputParameter( - sanitized_id, - param_type=type_, - output_binding=cwlgen.CommandOutputBinding(glob="$(inputs.{})".format(arg.id)), + outp = cwl.CommandOutputParameter( + id=sanitized_id, + type=type_, + outputBinding=cwl.CommandOutputBinding(glob="$(inputs.{})".format(arg.id)), ) return outp, arg return ( - cwlgen.CommandOutputParameter( - sanitized_id, param_type=type_, output_binding=cwlgen.CommandOutputBinding(glob=output.actual_value) + cwl.CommandOutputParameter( + id=sanitized_id, type=type_, outputBinding=cwl.CommandOutputBinding(glob=output.actual_value) ), None, ) diff --git a/renku/core/models/workflow/plan.py b/renku/core/models/workflow/plan.py index f9eb4d43b3..f3b81ec71c 100644 --- a/renku/core/models/workflow/plan.py +++ b/renku/core/models/workflow/plan.py @@ -210,7 +210,10 @@ def resolve_direct_reference(self, reference: str) -> CommandParameterBase: def find_parameter(self, parameter: CommandParameterBase) -> bool: """Find if a parameter exists on this plan.""" - return any(parameter.id == p.id for p in self.inputs + self.outputs + self.parameters) + return any( + parameter.id == p.id and parameter.actual_value == p.actual_value + for p in self.inputs + self.outputs + self.parameters + ) def get_parameter_path(self, parameter: CommandParameterBase): """Get the path to a parameter inside this plan.""" diff --git a/renku/service/.env-example b/renku/service/.env-example index de338bef39..c683af85ab 100644 --- a/renku/service/.env-example +++ b/renku/service/.env-example @@ -4,7 +4,7 @@ REDIS_DATABASE=0 REDIS_PASSWORD= CACHE_HEALTH_CHECK_INTERVAL=60 RENKU_DOMAIN= -WALRUS_NAMESPACE= +REDIS_NAMESPACE= # Server CACHE_DIR=/svc/cache diff --git a/renku/service/cache/base.py b/renku/service/cache/base.py index 15c821739b..50bb9968f9 100644 --- a/renku/service/cache/base.py +++ b/renku/service/cache/base.py @@ -23,7 +23,7 @@ from redis import RedisError from walrus import Database -from renku.service.cache.config import REDIS_DATABASE, REDIS_HOST, REDIS_PASSWORD, REDIS_PORT, WALRUS_NAMESPACE +from renku.service.cache.config import REDIS_DATABASE, REDIS_HOST, REDIS_NAMESPACE, REDIS_PASSWORD, REDIS_PORT class BaseCache: @@ -40,7 +40,7 @@ class BaseCache: cache = redis.Redis(**config_) model_db = Database(**config_) - namespace = WALRUS_NAMESPACE + namespace = REDIS_NAMESPACE def set_record(self, name, key, value): """Insert a record to hash set.""" diff --git a/renku/service/cache/config.py b/renku/service/cache/config.py index 49407f9433..e515a66df5 100644 --- a/renku/service/cache/config.py +++ b/renku/service/cache/config.py @@ -23,4 +23,4 @@ REDIS_DATABASE = int(os.getenv("REDIS_DATABASE", 0)) REDIS_PASSWORD = os.getenv("REDIS_PASSWORD") -WALRUS_NAMESPACE = os.getenv("WALRUS_NAMESPACE") +REDIS_NAMESPACE = os.getenv("REDIS_NAMESPACE") diff --git a/renku/service/controllers/api/mixins.py b/renku/service/controllers/api/mixins.py index 0997a959c6..5426b69ed7 100644 --- a/renku/service/controllers/api/mixins.py +++ b/renku/service/controllers/api/mixins.py @@ -29,6 +29,7 @@ from renku.core.management import RENKU_HOME from renku.core.metadata.repository import Repository from renku.core.utils.contexts import click_context +from renku.service.cache.config import REDIS_NAMESPACE from renku.service.cache.models.job import Job from renku.service.cache.models.project import Project from renku.service.cache.models.user import User @@ -145,7 +146,7 @@ def execute_op(self): job = self.cache.make_job(self.user, job_data={"ctrl_context": {**self.context, **ctrl_cls}}) - with enqueue_retry(f"delayed.ctrl.{ctrl_cls['renku_ctrl']}") as queue: + with enqueue_retry(f"{REDIS_NAMESPACE}.delayed.ctrl.{ctrl_cls['renku_ctrl']}") as queue: queue.enqueue(delayed_ctrl_job, self.context, self.user_data, job.job_id, **ctrl_cls) return job diff --git a/renku/service/jobs/queues.py b/renku/service/jobs/queues.py index fd280db119..61ee5bd578 100644 --- a/renku/service/jobs/queues.py +++ b/renku/service/jobs/queues.py @@ -21,22 +21,23 @@ from rq import Queue from renku.service.cache.base import BaseCache +from renku.service.cache.config import REDIS_NAMESPACE -CLEANUP_QUEUE_FILES = "cache.cleanup.files" -CLEANUP_QUEUE_PROJECTS = "cache.cleanup.projects" +CLEANUP_QUEUE_FILES = f"{REDIS_NAMESPACE}.cache.cleanup.files" +CLEANUP_QUEUE_PROJECTS = f"{REDIS_NAMESPACE}.cache.cleanup.projects" -DATASETS_JOB_QUEUE = "datasets.jobs" -MIGRATIONS_JOB_QUEUE = "project.migrations" -GRAPH_JOB_QUEUE = "graph.jobs" +DATASETS_JOB_QUEUE = f"{REDIS_NAMESPACE}.datasets.jobs" +MIGRATIONS_JOB_QUEUE = f"{REDIS_NAMESPACE}.project.migrations" +GRAPH_JOB_QUEUE = f"{REDIS_NAMESPACE}.graph.jobs" -DELAYED_CTRL_DATASETS_CREATE = "delayed.ctrl.DatasetsCreateCtrl" -DELAYED_CTRL_DATASETS_ADD = "delayed.ctrl.DatasetsAddFileCtrl" -DELAYED_CTRL_DATASETS_REMOVE = "delayed.ctrl.DatasetsRemoveCtrl" -DELAYED_CTRL_DATASETS_IMPORT = "delayed.ctrl.DatasetsImportCtrl" -DELAYED_CTRL_DATASETS_EDIT = "delayed.ctrl.DatasetsEditCtrl" -DELAYED_CTRL_DATASETS_UNLINK = "delayed.ctrl.DatasetsUnlinkCtrl" -DELAYED_CTRL_PROJECT_MIGRATE = "delayed.ctrl.MigrateProjectCtrl" -DELAYED_CTRL_CONFIG_SET = "delayed.ctrl.SetConfigCtrl" +DELAYED_CTRL_DATASETS_CREATE = f"{REDIS_NAMESPACE}.delayed.ctrl.DatasetsCreateCtrl" +DELAYED_CTRL_DATASETS_ADD = f"{REDIS_NAMESPACE}.delayed.ctrl.DatasetsAddFileCtrl" +DELAYED_CTRL_DATASETS_REMOVE = f"{REDIS_NAMESPACE}.delayed.ctrl.DatasetsRemoveCtrl" +DELAYED_CTRL_DATASETS_IMPORT = f"{REDIS_NAMESPACE}.delayed.ctrl.DatasetsImportCtrl" +DELAYED_CTRL_DATASETS_EDIT = f"{REDIS_NAMESPACE}.delayed.ctrl.DatasetsEditCtrl" +DELAYED_CTRL_DATASETS_UNLINK = f"{REDIS_NAMESPACE}.delayed.ctrl.DatasetsUnlinkCtrl" +DELAYED_CTRL_PROJECT_MIGRATE = f"{REDIS_NAMESPACE}.delayed.ctrl.MigrateProjectCtrl" +DELAYED_CTRL_CONFIG_SET = f"{REDIS_NAMESPACE}.delayed.ctrl.SetConfigCtrl" QUEUES = [ diff --git a/tests/cli/test_rollback.py b/tests/cli/test_rollback.py index 4c2fd3b8f1..e5d09e1bfd 100644 --- a/tests/cli/test_rollback.py +++ b/tests/cli/test_rollback.py @@ -90,5 +90,6 @@ def test_rollback(client, runner, project): assert 0 == result.exit_code, format_result_exception(result) assert 2 == len(result.output.splitlines()) result = runner.invoke(cli, ["log"]) + assert 0 == result.exit_code, format_result_exception(result) - assert 2 == len(result.output.splitlines()) + assert 1 == len(result.output.splitlines()) diff --git a/tests/core/commands/test_log.py b/tests/core/commands/test_log.py index bdfad3251a..4f6aec1daf 100644 --- a/tests/core/commands/test_log.py +++ b/tests/core/commands/test_log.py @@ -21,10 +21,9 @@ from datetime import datetime, timedelta from typing import List -import inject - from renku.core.commands.log import _log from renku.core.commands.view_model.log import DatasetLogViewModel, LogType +from renku.core.management.command_builder.command import inject, remove_injector from renku.core.management.interface.dataset_gateway import IDatasetGateway from renku.core.models.dataset import DatasetChangeType from renku.core.models.provenance.activity import Activity, Association @@ -110,7 +109,7 @@ def test_log_dataset_create_simple(mocker): dataset_gateway = mocker.MagicMock() dataset_gateway.get_all_datasets.return_value = [new_dataset] - inject.clear_and_configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway)) + inject.configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway), bind_in_runtime=False) try: result: List[DatasetLogViewModel] = _log( @@ -120,7 +119,7 @@ def test_log_dataset_create_simple(mocker): datasets_only=True, ) finally: - inject.clear() + remove_injector() assert 1 == len(result) @@ -163,7 +162,7 @@ def test_log_dataset_create_complex(mocker): dataset_gateway = mocker.MagicMock() dataset_gateway.get_all_datasets.return_value = [new_dataset] - inject.clear_and_configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway)) + inject.configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway), bind_in_runtime=False) try: result = _log( @@ -173,7 +172,7 @@ def test_log_dataset_create_complex(mocker): datasets_only=True, ) finally: - inject.clear() + remove_injector() assert 1 == len(result) @@ -218,7 +217,7 @@ def test_log_dataset_add_create(mocker): dataset_gateway = mocker.MagicMock() dataset_gateway.get_all_datasets.return_value = [new_dataset] - inject.clear_and_configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway)) + inject.configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway), bind_in_runtime=False) try: result = _log( @@ -228,7 +227,7 @@ def test_log_dataset_add_create(mocker): datasets_only=True, ) finally: - inject.clear() + remove_injector() assert 1 == len(result) @@ -273,7 +272,7 @@ def test_log_dataset_import(mocker): dataset_gateway = mocker.MagicMock() dataset_gateway.get_all_datasets.return_value = [new_dataset] - inject.clear_and_configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway)) + inject.configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway), bind_in_runtime=False) try: result = _log( @@ -283,7 +282,7 @@ def test_log_dataset_import(mocker): datasets_only=True, ) finally: - inject.clear() + remove_injector() assert 1 == len(result) @@ -343,7 +342,7 @@ def _mock_get_by_id(id): dataset_gateway.get_by_id.side_effect = _mock_get_by_id - inject.clear_and_configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway)) + inject.configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway), bind_in_runtime=False) try: result: List[DatasetLogViewModel] = _log( @@ -353,7 +352,7 @@ def _mock_get_by_id(id): datasets_only=True, ) finally: - inject.clear() + remove_injector() assert 2 == len(result) @@ -416,7 +415,7 @@ def _mock_get_by_id(id): dataset_gateway.get_by_id.side_effect = _mock_get_by_id - inject.clear_and_configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway)) + inject.configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway), bind_in_runtime=False) try: result: List[DatasetLogViewModel] = _log( @@ -426,7 +425,7 @@ def _mock_get_by_id(id): datasets_only=True, ) finally: - inject.clear() + remove_injector() assert 2 == len(result) @@ -495,7 +494,7 @@ def _mock_get_by_id(id): dataset_gateway.get_by_id.side_effect = _mock_get_by_id - inject.clear_and_configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway)) + inject.configure(lambda binder: binder.bind(IDatasetGateway, dataset_gateway), bind_in_runtime=False) try: result: List[DatasetLogViewModel] = _log( @@ -505,7 +504,7 @@ def _mock_get_by_id(id): datasets_only=True, ) finally: - inject.clear() + remove_injector() assert 2 == len(result)