From 088ce1543bc093ec462193e07f2d1d06e4a7cb68 Mon Sep 17 00:00:00 2001 From: "M. Alisafaee" Date: Mon, 5 Feb 2024 13:34:51 +0100 Subject: [PATCH 1/8] feat(cli): allow ignoring template rendering errors (#3697) --- renku/core/errors.py | 4 ++-- renku/core/init.py | 4 +++- renku/domain_model/template.py | 35 ++++++++++++++++++++++++++-------- renku/ui/cli/init.py | 7 +++++++ 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/renku/core/errors.py b/renku/core/errors.py index 46976d5852..a3872e94c1 100644 --- a/renku/core/errors.py +++ b/renku/core/errors.py @@ -485,11 +485,11 @@ class TemplateError(RenkuException): class InvalidTemplateError(TemplateError): - """Raised when using a non-valid template.""" + """Raised when using an invalid template.""" class TemplateMissingReferenceError(TemplateError): - """Raised when using a non-valid template.""" + """Raised when a reference cannot be found in the template's repository.""" class TemplateUpdateError(TemplateError): diff --git a/renku/core/init.py b/renku/core/init.py index 166978d22f..8146291d5f 100644 --- a/renku/core/init.py +++ b/renku/core/init.py @@ -110,6 +110,7 @@ def init_project( input_parameters: Dict[str, str], custom_metadata: Optional[Dict[str, Any]], force: bool, + ignore_template_errors: bool, data_dir: Optional[Path], initial_branch: Optional[str], install_mergetool: bool, @@ -129,6 +130,7 @@ def init_project( input_parameters: Template parameters. custom_metadata: Custom JSON-LD metadata for project. force: Whether to overwrite existing files and delete existing metadata. + ignore_template_errors: Create project anyway even if template rendering fails. data_dir: Where to store dataset data. initial_branch: Default git branch. install_mergetool(bool): Whether to set up the renku metadata mergetool in the created project. @@ -181,7 +183,7 @@ def init_project( # TODO: Validate input_parameters to make sure they don't contain __\w+__ keys set_template_parameters(template=template, template_metadata=template_metadata, input_parameters=input_parameters) - rendered_template = template.render(metadata=template_metadata) + rendered_template = template.render(metadata=template_metadata, ignore_template_errors=ignore_template_errors) actions = get_file_actions( rendered_template=rendered_template, template_action=TemplateAction.INITIALIZE, interactive=False ) diff --git a/renku/domain_model/template.py b/renku/domain_model/template.py index 3cf8e9a057..6d7a6273e5 100644 --- a/renku/domain_model/template.py +++ b/renku/domain_model/template.py @@ -28,6 +28,7 @@ from renku.core import errors from renku.core.constant import RENKU_HOME +from renku.core.util import communication from renku.core.util.os import get_safe_relative_path, hash_file, hash_string from renku.core.util.util import to_string @@ -343,7 +344,7 @@ def get_files(self) -> Generator[str, None, None]: if subpath.is_file(): yield str(subpath.relative_to(self.path)) - def render(self, metadata: "TemplateMetadata") -> "RenderedTemplate": + def render(self, metadata: "TemplateMetadata", ignore_template_errors: bool = False) -> "RenderedTemplate": """Render template files in a new directory.""" if self.path is None: raise ValueError("Template path not set") @@ -351,8 +352,15 @@ def render(self, metadata: "TemplateMetadata") -> "RenderedTemplate": render_base = Path(tempfile.mkdtemp()) for relative_path in self.get_files(): - # NOTE: The path could contain template variables, we need to template it - rendered_relative_path = jinja2.Template(relative_path).render(metadata.metadata) + try: + # NOTE: The path could contain template variables, we need to template it + rendered_relative_path = jinja2.Template(relative_path).render(metadata.metadata) + except jinja2.TemplateError as e: + if ignore_template_errors: + rendered_relative_path = relative_path + communication.warn(f"Ignoring template error when rendering path '{relative_path}'") + else: + raise errors.InvalidTemplateError(f"Cannot render template file path '{relative_path}': {e}") destination = render_base / rendered_relative_path destination.parent.mkdir(parents=True, exist_ok=True) @@ -365,9 +373,20 @@ def render(self, metadata: "TemplateMetadata") -> "RenderedTemplate": content_bytes = source.read_bytes() destination.write_bytes(content_bytes) else: - template = jinja2.Template(content, keep_trailing_newline=True) - rendered_content = template.render(metadata.metadata) - destination.write_text(rendered_content) + try: + rendered_content = jinja2.Template(content, keep_trailing_newline=True).render(metadata.metadata) + except jinja2.TemplateError as e: + if ignore_template_errors: + destination.write_text(content) + communication.warn( + f"Ignoring template rendering error when creating '{rendered_relative_path}'" + ) + else: + raise errors.InvalidTemplateError( + f"Cannot render template file '{rendered_relative_path}': {e}" + ) + else: + destination.write_text(rendered_content) return RenderedTemplate(path=render_base, template=self, metadata=metadata.metadata) @@ -432,8 +451,8 @@ def from_dict(cls, name: str, value: Dict[str, Any]): @property def has_default(self) -> bool: """Return True if a default value is set.""" - # NOTE: ``None`` cannot be used as the default value but it's ok since no variable type accepts it and it's not - # a valid value anyways + # NOTE: ``None`` cannot be used as the default value, but it's ok since no variable type accepts it, and it's + # not a valid value anyway return self.default is not None def validate(self, raise_errors: bool = True) -> List[str]: diff --git a/renku/ui/cli/init.py b/renku/ui/cli/init.py index dd2f06ecee..e41821ded7 100644 --- a/renku/ui/cli/init.py +++ b/renku/ui/cli/init.py @@ -53,6 +53,10 @@ source ``--template-source`` (both local path and remote url are supported) and the reference ``--template-ref`` (branch, tag or commit). +If the template contains an error that prevents it from being rendered, you can +ignore this error by passing ``--ignore-template-errors`` to the ``init`` +command. + You can take inspiration from the `official Renku template repository `_ @@ -259,6 +263,7 @@ def resolve_data_directory(data_dir, path): @click.option("-l", "--list-templates", is_flag=True, help="List templates available in the template-source.") @click.option("-d", "--describe", is_flag=True, help="Show description for templates and parameters") @click.option("--force", is_flag=True, help="Override target path.") +@click.option("--ignore-template-errors", is_flag=True, help="Ignore template rendering errors.") @click.option("--initial-branch", help="Initial git branch to create.") @option_external_storage_requested @click.pass_context @@ -277,6 +282,7 @@ def init( metadata, list_templates, force, + ignore_template_errors, describe, datadir, initial_branch, @@ -319,6 +325,7 @@ def init( input_parameters=parameters, custom_metadata=custom_metadata, force=force, + ignore_template_errors=ignore_template_errors, data_dir=datadir, initial_branch=initial_branch, install_mergetool=True, From 50e20e1d2f4d077ae3528351964d5f15b3d35d9b Mon Sep 17 00:00:00 2001 From: Ralf Grubenmann Date: Mon, 5 Feb 2024 15:01:43 +0100 Subject: [PATCH 2/8] fix(service): properly return cli_version in api version (#3699) * fix(service): properly return cli_version in api version --- renku/ui/service/serializers/version.py | 1 + tests/service/views/test_version_views.py | 50 ++++++++++++++++------- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/renku/ui/service/serializers/version.py b/renku/ui/service/serializers/version.py index 49bcd97423..d05c55d97a 100644 --- a/renku/ui/service/serializers/version.py +++ b/renku/ui/service/serializers/version.py @@ -21,6 +21,7 @@ class VersionResponse(Schema): """Version response schema.""" latest_version = fields.String() + cli_version = fields.String() supported_project_version = fields.Integer() minimum_api_version = fields.String() maximum_api_version = fields.String() diff --git a/tests/service/views/test_version_views.py b/tests/service/views/test_version_views.py index 5d8b0c9769..b6ce35b0c6 100644 --- a/tests/service/views/test_version_views.py +++ b/tests/service/views/test_version_views.py @@ -26,9 +26,13 @@ def test_version(svc_client): assert "result" in response.json data = response.json["result"] - assert {"latest_version", "supported_project_version", "minimum_api_version", "maximum_api_version"} == set( - data.keys() - ) + assert { + "latest_version", + "cli_version", + "supported_project_version", + "minimum_api_version", + "maximum_api_version", + } == set(data.keys()) assert __version__ == data["latest_version"] assert SUPPORTED_PROJECT_VERSION == data["supported_project_version"] assert MINIMUM_VERSION.name == data["minimum_api_version"] @@ -38,9 +42,13 @@ def test_version(svc_client): assert "result" in response.json data = response.json["result"] - assert {"latest_version", "supported_project_version", "minimum_api_version", "maximum_api_version"} == set( - data.keys() - ) + assert { + "latest_version", + "cli_version", + "supported_project_version", + "minimum_api_version", + "maximum_api_version", + } == set(data.keys()) assert __version__ == data["latest_version"] assert SUPPORTED_PROJECT_VERSION == data["supported_project_version"] assert MINIMUM_VERSION.name == data["minimum_api_version"] @@ -50,9 +58,13 @@ def test_version(svc_client): assert "result" in response.json data = response.json["result"] - assert {"latest_version", "supported_project_version", "minimum_api_version", "maximum_api_version"} == set( - data.keys() - ) + assert { + "latest_version", + "cli_version", + "supported_project_version", + "minimum_api_version", + "maximum_api_version", + } == set(data.keys()) assert __version__ == data["latest_version"] assert SUPPORTED_PROJECT_VERSION == data["supported_project_version"] assert MINIMUM_VERSION.name == data["minimum_api_version"] @@ -62,9 +74,13 @@ def test_version(svc_client): assert "result" in response.json data = response.json["result"] - assert {"latest_version", "supported_project_version", "minimum_api_version", "maximum_api_version"} == set( - data.keys() - ) + assert { + "latest_version", + "cli_version", + "supported_project_version", + "minimum_api_version", + "maximum_api_version", + } == set(data.keys()) assert __version__ == data["latest_version"] assert SUPPORTED_PROJECT_VERSION == data["supported_project_version"] assert MINIMUM_VERSION.name == data["minimum_api_version"] @@ -74,9 +90,13 @@ def test_version(svc_client): assert "result" in response.json data = response.json["result"] - assert {"latest_version", "supported_project_version", "minimum_api_version", "maximum_api_version"} == set( - data.keys() - ) + assert { + "latest_version", + "cli_version", + "supported_project_version", + "minimum_api_version", + "maximum_api_version", + } == set(data.keys()) assert __version__ == data["latest_version"] assert SUPPORTED_PROJECT_VERSION == data["supported_project_version"] assert MINIMUM_VERSION.name == data["minimum_api_version"] From 33a29aa3ff1257ec41e35a36674bf53c8050cdea Mon Sep 17 00:00:00 2001 From: Ralf Grubenmann Date: Mon, 5 Feb 2024 17:13:08 +0100 Subject: [PATCH 3/8] fix(cli): don't fail on workflows without inputs/outputs and print approriate warnings (#3694) --- renku/core/workflow/model/concrete_execution_graph.py | 4 ++++ renku/domain_model/workflow/plan.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/renku/core/workflow/model/concrete_execution_graph.py b/renku/core/workflow/model/concrete_execution_graph.py index 6eb513c282..aac2fca0de 100644 --- a/renku/core/workflow/model/concrete_execution_graph.py +++ b/renku/core/workflow/model/concrete_execution_graph.py @@ -23,6 +23,7 @@ from networkx.algorithms.cycles import simple_cycles from renku.core.errors import ParameterError +from renku.core.util import communication from renku.core.util.os import are_paths_related from renku.domain_model.workflow import composite_plan, parameter, plan @@ -65,6 +66,9 @@ def calculate_concrete_execution_graph(self, virtual_links: bool = False): else: if not virtual_links: continue + if not workflow.inputs and not workflow.outputs: + communication.warn(f"Workflow {workflow.name} has no inputs and outputs.") + self.graph.add_node(workflow) for input in workflow.inputs: inputs[input.actual_value].append(input) diff --git a/renku/domain_model/workflow/plan.py b/renku/domain_model/workflow/plan.py index 95b179f200..6c2e85f54f 100644 --- a/renku/domain_model/workflow/plan.py +++ b/renku/domain_model/workflow/plan.py @@ -27,6 +27,7 @@ from werkzeug.utils import secure_filename from renku.core import errors +from renku.core.util import communication from renku.core.util.datetime8601 import local_now from renku.domain_model.provenance.agent import Person from renku.domain_model.provenance.annotation import Annotation @@ -195,6 +196,11 @@ def __init__( ): self.annotations: List[Annotation] = annotations or [] self.command: str = command + cmd = self.command.split(" ", 1)[0] + if cmd == "renku" or cmd.endswith("/renku"): + communication.error( + f"Calling the 'renku' executable in workflows is not supported. Occurred in workflow {name}." + ) self.hidden_inputs: List[HiddenInput] = hidden_inputs or [] self.inputs: List[CommandInput] = inputs or [] self.outputs: List[CommandOutput] = outputs or [] From e98f112284a7d9cecf5c16d03ac7db0cc5e88077 Mon Sep 17 00:00:00 2001 From: Ralf Grubenmann Date: Mon, 5 Feb 2024 21:29:50 +0100 Subject: [PATCH 4/8] fix(core): migrate Dockerfile after metadata (#3690) * fix(core): migrate Dockerfile after metadata --- renku/core/migration/migrate.py | 66 ++++++++++-------- renku/ui/cli/migrate.py | 7 +- .../controllers/cache_migrate_project.py | 4 +- tests/cli/test_migrate.py | 21 ++++++ ...9-migration-docker-mult-changes.git.tar.gz | Bin 0 -> 30887 bytes ...migration-docker-version-change.git.tar.gz | Bin 0 -> 31051 bytes tests/service/fixtures/service_integration.py | 53 +++++++++++++- tests/service/views/test_cache_views.py | 19 +++++ 8 files changed, 136 insertions(+), 34 deletions(-) create mode 100644 tests/data/v9-migration-docker-mult-changes.git.tar.gz create mode 100644 tests/data/v9-migration-docker-version-change.git.tar.gz diff --git a/renku/core/migration/migrate.py b/renku/core/migration/migrate.py index 233cf71304..661a5f375d 100644 --- a/renku/core/migration/migrate.py +++ b/renku/core/migration/migrate.py @@ -123,6 +123,42 @@ def migrate_project( if not is_renku_project(): return False, template_updated, docker_updated + n_migrations_executed = 0 + + if not skip_migrations: + project_version = project_version or get_project_version() + + migration_context = MigrationContext( + strict=strict, type=migration_type, preserve_identifiers=preserve_identifiers + ) + + version = 1 + for version, path in get_migrations(): + if max_version and version > max_version: + break + if version > project_version: + module = importlib.import_module(path) + module_name = module.__name__.split(".")[-1] + communication.echo(f"Applying migration {module_name}...") + try: + module.migrate(migration_context) + except (Exception, BaseException) as e: + raise MigrationError("Couldn't execute migration") from e + n_migrations_executed += 1 + + if not is_using_temporary_datasets_path(): + if n_migrations_executed > 0: + project_context.project.version = str(version) + project_gateway.update_project(project_context.project) + + communication.echo(f"Successfully applied {n_migrations_executed} migrations.") + + _remove_untracked_renku_files(metadata_path=project_context.metadata_path) + + # we might not have been able to tell if a docker update is possible due to outstanding migrations. + # so we need to check again here. + skip_docker_update |= not is_docker_update_possible() + try: project = project_context.project except ValueError: @@ -155,36 +191,6 @@ def migrate_project( except Exception as e: raise DockerfileUpdateError("Couldn't update renku version in Dockerfile.") from e - if skip_migrations: - return False, template_updated, docker_updated - - project_version = project_version or get_project_version() - n_migrations_executed = 0 - - migration_context = MigrationContext(strict=strict, type=migration_type, preserve_identifiers=preserve_identifiers) - - version = 1 - for version, path in get_migrations(): - if max_version and version > max_version: - break - if version > project_version: - module = importlib.import_module(path) - module_name = module.__name__.split(".")[-1] - communication.echo(f"Applying migration {module_name}...") - try: - module.migrate(migration_context) - except (Exception, BaseException) as e: - raise MigrationError("Couldn't execute migration") from e - n_migrations_executed += 1 - if not is_using_temporary_datasets_path(): - if n_migrations_executed > 0: - project_context.project.version = str(version) - project_gateway.update_project(project_context.project) - - communication.echo(f"Successfully applied {n_migrations_executed} migrations.") - - _remove_untracked_renku_files(metadata_path=project_context.metadata_path) - return n_migrations_executed != 0, template_updated, docker_updated diff --git a/renku/ui/cli/migrate.py b/renku/ui/cli/migrate.py index f94a2f4cbe..d4fa18333e 100644 --- a/renku/ui/cli/migrate.py +++ b/renku/ui/cli/migrate.py @@ -98,6 +98,7 @@ def migrate(check, skip_template_update, skip_docker_update, strict, preserve_id template_update_possible = status & TEMPLATE_UPDATE_POSSIBLE and status & AUTOMATED_TEMPLATE_UPDATE_SUPPORTED docker_update_possible = status & DOCKERFILE_UPDATE_POSSIBLE + migration_required = status & MIGRATION_REQUIRED if check: if template_update_possible: @@ -113,7 +114,7 @@ def migrate(check, skip_template_update, skip_docker_update, strict, preserve_id + "using 'renku migrate'." ) - if status & MIGRATION_REQUIRED: + if migration_required: raise MigrationRequired if status & UNSUPPORTED_PROJECT: @@ -125,7 +126,9 @@ def migrate(check, skip_template_update, skip_docker_update, strict, preserve_id if check: return - skip_docker_update = skip_docker_update or not docker_update_possible + # In case where a migration is required, we can't tell if a dockerupdate is possible, as the metadata for deciding + # might not be there yet. We'll check this again after the migration + skip_docker_update = skip_docker_update or (not migration_required and not docker_update_possible) skip_template_update = skip_template_update or not template_update_possible communicator = ClickCallback() diff --git a/renku/ui/service/controllers/cache_migrate_project.py b/renku/ui/service/controllers/cache_migrate_project.py index 50e168301f..b8ec000162 100644 --- a/renku/ui/service/controllers/cache_migrate_project.py +++ b/renku/ui/service/controllers/cache_migrate_project.py @@ -33,6 +33,7 @@ def execute_migration( from renku.command.migrate import ( AUTOMATED_TEMPLATE_UPDATE_SUPPORTED, DOCKERFILE_UPDATE_POSSIBLE, + MIGRATION_REQUIRED, TEMPLATE_UPDATE_POSSIBLE, check_project, migrate_project_command, @@ -47,8 +48,9 @@ def execute_migration( template_update_possible = status & TEMPLATE_UPDATE_POSSIBLE and status & AUTOMATED_TEMPLATE_UPDATE_SUPPORTED docker_update_possible = status & DOCKERFILE_UPDATE_POSSIBLE + migration_required = status & MIGRATION_REQUIRED - skip_docker_update = skip_docker_update or not docker_update_possible + skip_docker_update = skip_docker_update or (not migration_required and not docker_update_possible) skip_template_update = skip_template_update or not template_update_possible result = ( diff --git a/tests/cli/test_migrate.py b/tests/cli/test_migrate.py index 4defed20a5..7c65d1b1be 100644 --- a/tests/cli/test_migrate.py +++ b/tests/cli/test_migrate.py @@ -53,6 +53,27 @@ def test_migrate_project(isolated_runner, old_project, with_injection): assert project_context.project.name +@pytest.mark.migration +@pytest.mark.parametrize( + "old_project", + [ + "v9-migration-docker-version-change.git", + "v9-migration-docker-mult-changes.git", + ], + indirect=["old_project"], +) +def test_migrate_old_project_with_docker_change(isolated_runner, old_project, with_injection): + """Test migrating projects with changes to the Dockerfile.""" + result = isolated_runner.invoke(cli, ["migrate", "--strict"]) + assert 0 == result.exit_code, format_result_exception(result) + assert not old_project.repository.is_dirty() + assert "Updated dockerfile" in result.output + + with project_context.with_path(old_project.path), with_injection(): + assert project_context.project + assert project_context.project.name + + @pytest.mark.migration @pytest.mark.serial def test_migration_check(isolated_runner, project): diff --git a/tests/data/v9-migration-docker-mult-changes.git.tar.gz b/tests/data/v9-migration-docker-mult-changes.git.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..5a7048975615474de0e0082ebb94cca554730480 GIT binary patch literal 30887 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 literal 0 HcmV?d00001 diff --git a/tests/data/v9-migration-docker-version-change.git.tar.gz b/tests/data/v9-migration-docker-version-change.git.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..5ee43c4f97de9323e98c433f077e3fc479b9dbd9 GIT binary patch literal 31051 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 wY#@>t%6$-90rYz#zJ?QoSpcwuhDf~Le2j Date: Tue, 6 Feb 2024 08:17:18 +0000 Subject: [PATCH 5/8] chore: combined dependency update (#3700) * chore(deps): bump amannn/action-semantic-pull-request * chore(deps): bump supercharge/redis-github-action from 1.6.0 to 1.8.0 * chore(deps): bump actions/setup-python from 4 to 5 * chore(deps): bump actions/labeler from 4.3.0 to 5.0.0 * build(deps): (deps-dev): bump sphinx-click from 4.4.0 to 5.1.0 * build(deps): (deps): bump pyjwt from 2.4.0 to 2.8.0 * build(deps): (deps): bump importlib-resources from 5.12.0 to 6.1.1 * build(deps): (deps): bump flask from 2.3.3 to 3.0.1 * chore(deps): bump SwissDataScienceCenter/renku-actions * update lock file --- .github/workflows/acceptance-tests.yml | 8 +- .../workflows/combine-dependabot-updates.yml | 2 +- .github/workflows/labeler.yml | 2 +- .github/workflows/pypi-release.yml | 2 +- .github/workflows/semantic_pr.yml | 2 +- .github/workflows/test_deploy.yml | 8 +- poetry.lock | 549 ++++++++++-------- pyproject.toml | 8 +- 8 files changed, 320 insertions(+), 261 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index ec78faab96..b593dfb425 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -32,7 +32,7 @@ jobs: persist: ${{ steps.deploy-comment.outputs.persist}} steps: - id: deploy-comment - uses: SwissDataScienceCenter/renku-actions/check-pr-description@v1.7.0 + uses: SwissDataScienceCenter/renku-actions/check-pr-description@v1.9.1 with: string: /deploy pr_ref: ${{ github.event.number }} @@ -44,7 +44,7 @@ jobs: name: renku-ci-rp-${{ github.event.number }} steps: - name: deploy-pr - uses: SwissDataScienceCenter/renku-actions/deploy-renku@v1.7.0 + uses: SwissDataScienceCenter/renku-actions/deploy-renku@v1.9.1 env: DOCKER_PASSWORD: ${{ secrets.RENKU_DOCKER_PASSWORD }} DOCKER_USERNAME: ${{ secrets.RENKU_DOCKER_USERNAME }} @@ -90,7 +90,7 @@ jobs: 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: SwissDataScienceCenter/renku-actions/test-renku@v1.7.0 + - uses: SwissDataScienceCenter/renku-actions/test-renku@v1.9.1 with: kubeconfig: ${{ secrets.RENKUBOT_DEV_KUBECONFIG }} renku-release: renku-ci-rp-${{ github.event.number }} @@ -105,7 +105,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: renku teardown - uses: SwissDataScienceCenter/renku-actions/cleanup-renku-ci-deployments@v1.7.0 + uses: SwissDataScienceCenter/renku-actions/cleanup-renku-ci-deployments@v1.9.1 env: HELM_RELEASE_REGEX: "^renku-ci-rp-${{ github.event.number }}$" GITLAB_TOKEN: ${{ secrets.DEV_GITLAB_TOKEN }} diff --git a/.github/workflows/combine-dependabot-updates.yml b/.github/workflows/combine-dependabot-updates.yml index 8897b35a56..821bb5eaef 100644 --- a/.github/workflows/combine-dependabot-updates.yml +++ b/.github/workflows/combine-dependabot-updates.yml @@ -29,7 +29,7 @@ jobs: git config merge.ours.driver true git merge --no-edit "origin/${{ inputs.target_branch }}" - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.11 - name: Install dependencies diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index ebfa9e4f87..8a95fd022b 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -7,6 +7,6 @@ jobs: triage: runs-on: ubuntu-latest steps: - - uses: actions/labeler@v4.3.0 + - uses: actions/labeler@v5.0.0 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/pypi-release.yml b/.github/workflows/pypi-release.yml index eb2ddd1ff2..672ecc69af 100644 --- a/.github/workflows/pypi-release.yml +++ b/.github/workflows/pypi-release.yml @@ -18,7 +18,7 @@ jobs: ref: 'refs/tags/v${{ github.event.inputs.version }}' - run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* - name: Set up Python 3.9 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.9" - name: Install dependencies diff --git a/.github/workflows/semantic_pr.yml b/.github/workflows/semantic_pr.yml index a62a4a3503..1a7ef865e9 100644 --- a/.github/workflows/semantic_pr.yml +++ b/.github/workflows/semantic_pr.yml @@ -10,6 +10,6 @@ jobs: main: runs-on: ubuntu-latest steps: - - uses: amannn/action-semantic-pull-request@v5.2.0 + - uses: amannn/action-semantic-pull-request@v5.4.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test_deploy.yml b/.github/workflows/test_deploy.yml index b5abaaccdc..17823502f3 100644 --- a/.github/workflows/test_deploy.yml +++ b/.github/workflows/test_deploy.yml @@ -263,7 +263,7 @@ jobs: CLOUD_STORAGE_S3_SECRET_ACCESS_KEY: ${{ secrets.CLOUD_STORAGE_S3_SECRET_ACCESS_KEY }} run: pytest -m "integration and not shaky and not service and not serial" -v --timeout=600 -n auto - name: Start Redis - uses: supercharge/redis-github-action@1.6.0 + uses: supercharge/redis-github-action@1.8.0 - name: Test with pytest (serial) env: POETRY_VIRTUALENVS_CREATE: false @@ -314,7 +314,7 @@ jobs: CLOUD_STORAGE_S3_SECRET_ACCESS_KEY: ${{ secrets.CLOUD_STORAGE_S3_SECRET_ACCESS_KEY }} run: pytest -m "integration and shaky and not service and not serial" -v --timeout=600 -n auto - name: Start Redis - uses: supercharge/redis-github-action@1.6.0 + uses: supercharge/redis-github-action@1.8.0 - name: Test with pytest (serial) env: POETRY_VIRTUALENVS_CREATE: false @@ -588,13 +588,13 @@ jobs: echo "GIT_USER=Renku Bot" >> $GITHUB_ENV echo "GIT_EMAIL=renku@datascience.ch" >> $GITHUB_ENV - name: Build and push images - uses: SwissDataScienceCenter/renku-actions/publish-chartpress-images@v1.9.0 + uses: SwissDataScienceCenter/renku-actions/publish-chartpress-images@v1.9.1 env: GITHUB_TOKEN: ${{ secrets.RENKUBOT_GITHUB_TOKEN }} DOCKER_USERNAME: ${{ secrets.RENKU_DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.RENKU_DOCKER_PASSWORD }} - name: Update component version - uses: SwissDataScienceCenter/renku-actions/update-component-version@v1.9.0 + uses: SwissDataScienceCenter/renku-actions/update-component-version@v1.9.1 env: COMPONENT_NAME: renku-core GITHUB_TOKEN: ${{ secrets.RENKUBOT_GITHUB_TOKEN }} diff --git a/poetry.lock b/poetry.lock index b7dc8a955a..898aa57860 100644 --- a/poetry.lock +++ b/poetry.lock @@ -108,13 +108,13 @@ tests = ["Flask (==1.1.1)", "bottle (==0.12.17)", "mock", "pytest", "tornado"] [[package]] name = "argcomplete" -version = "3.2.1" +version = "3.2.2" description = "Bash tab completion for argparse" optional = false python-versions = ">=3.8" files = [ - {file = "argcomplete-3.2.1-py3-none-any.whl", hash = "sha256:30891d87f3c1abe091f2142613c9d33cac84a5e15404489f033b20399b691fec"}, - {file = "argcomplete-3.2.1.tar.gz", hash = "sha256:437f67fb9b058da5a090df505ef9be0297c4883993f3f56cb186ff087778cfb4"}, + {file = "argcomplete-3.2.2-py3-none-any.whl", hash = "sha256:e44f4e7985883ab3e73a103ef0acd27299dbfe2dfed00142c35d4ddd3005901d"}, + {file = "argcomplete-3.2.2.tar.gz", hash = "sha256:f3e49e8ea59b4026ee29548e24488af46e30c9de57d48638e24f54a1ea1000a2"}, ] [package.extras] @@ -361,13 +361,13 @@ docs = ["Jinja2 (>=3.0.0,<3.1.0)", "sphinx (>=3.0.3,<4.0.0)", "sphinx-rtd-theme [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -878,17 +878,18 @@ files = [ [[package]] name = "dill" -version = "0.3.7" +version = "0.3.8" description = "serialize all of Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, - {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, + {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, + {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, ] [package.extras] graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "distlib" @@ -1083,13 +1084,13 @@ files = [ [[package]] name = "flask" -version = "2.3.3" +version = "3.0.2" description = "A simple framework for building complex web applications." optional = false python-versions = ">=3.8" files = [ - {file = "flask-2.3.3-py3-none-any.whl", hash = "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"}, - {file = "flask-2.3.3.tar.gz", hash = "sha256:09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"}, + {file = "flask-3.0.2-py3-none-any.whl", hash = "sha256:3232e0e9c850d781933cf0207523d1ece087eb8d87b23777ae38456e2fbe7c6e"}, + {file = "flask-3.0.2.tar.gz", hash = "sha256:822c03f4b799204250a7ee84b1eddc40665395333973dfb9deebfe425fefcb7d"}, ] [package.dependencies] @@ -1098,7 +1099,7 @@ click = ">=8.1.3" importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} itsdangerous = ">=2.1.2" Jinja2 = ">=3.1.2" -Werkzeug = ">=2.3.7" +Werkzeug = ">=3.0.0" [package.extras] async = ["asgiref (>=3.2)"] @@ -1333,21 +1334,21 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs [[package]] name = "importlib-resources" -version = "5.12.0" +version = "6.1.1" description = "Read resources from Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, - {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, + {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, + {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] [[package]] name = "iniconfig" @@ -1706,61 +1707,71 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] @@ -1785,22 +1796,21 @@ tests = ["pytest", "pytz", "simplejson"] [[package]] name = "marshmallow-oneofschema" -version = "3.0.1" +version = "3.1.0" description = "marshmallow multiplexing schema" optional = true -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "marshmallow-oneofschema-3.0.1.tar.gz", hash = "sha256:62cd2099b29188c92493c2940ee79d1bf2f2619a71721664e5a98ec2faa58237"}, - {file = "marshmallow_oneofschema-3.0.1-py2.py3-none-any.whl", hash = "sha256:bd29410a9f2f7457a2b428286e2a80ef76b8ddc3701527dc1f935a88914b02f2"}, + {file = "marshmallow_oneofschema-3.1.0-py3-none-any.whl", hash = "sha256:5039ee02d74e3766578d4dac8f25c0218ef60ec2d4b4a422843d23c6c9b645b2"}, + {file = "marshmallow_oneofschema-3.1.0.tar.gz", hash = "sha256:755bf89c326ba02ce7b0058165e34dfd72d00472e68d40ecb9470db9472bd79a"}, ] [package.dependencies] marshmallow = ">=3.0.0,<4.0.0" [package.extras] -dev = ["flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "mock", "pre-commit (>=2.7,<3.0)", "pytest", "tox"] -lint = ["flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "pre-commit (>=2.7,<3.0)"] -tests = ["mock", "pytest"] +dev = ["marshmallow-oneofschema[tests]", "pre-commit (>=3.5,<4.0)", "tox"] +tests = ["pytest"] [[package]] name = "mccabe" @@ -1902,85 +1912,101 @@ files = [ [[package]] name = "multidict" -version = "6.0.4" +version = "6.0.5" description = "multidict implementation" optional = false python-versions = ">=3.7" files = [ - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, - {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, - {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, - {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, - {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, - {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, - {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, - {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, - {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, - {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, - {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, - {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, - {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, + {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, + {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, + {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, + {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, + {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, + {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, + {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, + {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, + {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, + {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, + {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, + {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, + {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, + {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, + {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, ] [[package]] @@ -2089,61 +2115,61 @@ dev = ["black", "mypy", "pytest"] [[package]] name = "orjson" -version = "3.9.10" +version = "3.9.13" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.9.10-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c18a4da2f50050a03d1da5317388ef84a16013302a5281d6f64e4a3f406aabc4"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5148bab4d71f58948c7c39d12b14a9005b6ab35a0bdf317a8ade9a9e4d9d0bd5"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cf7837c3b11a2dfb589f8530b3cff2bd0307ace4c301e8997e95c7468c1378e"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c62b6fa2961a1dcc51ebe88771be5319a93fd89bd247c9ddf732bc250507bc2b"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deeb3922a7a804755bbe6b5be9b312e746137a03600f488290318936c1a2d4dc"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1234dc92d011d3554d929b6cf058ac4a24d188d97be5e04355f1b9223e98bbe9"}, - {file = "orjson-3.9.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:06ad5543217e0e46fd7ab7ea45d506c76f878b87b1b4e369006bdb01acc05a83"}, - {file = "orjson-3.9.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4fd72fab7bddce46c6826994ce1e7de145ae1e9e106ebb8eb9ce1393ca01444d"}, - {file = "orjson-3.9.10-cp310-none-win32.whl", hash = "sha256:b5b7d4a44cc0e6ff98da5d56cde794385bdd212a86563ac321ca64d7f80c80d1"}, - {file = "orjson-3.9.10-cp310-none-win_amd64.whl", hash = "sha256:61804231099214e2f84998316f3238c4c2c4aaec302df12b21a64d72e2a135c7"}, - {file = "orjson-3.9.10-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:cff7570d492bcf4b64cc862a6e2fb77edd5e5748ad715f487628f102815165e9"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8bc367f725dfc5cabeed1ae079d00369900231fbb5a5280cf0736c30e2adf7"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c812312847867b6335cfb264772f2a7e85b3b502d3a6b0586aa35e1858528ab1"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9edd2856611e5050004f4722922b7b1cd6268da34102667bd49d2a2b18bafb81"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:674eb520f02422546c40401f4efaf8207b5e29e420c17051cddf6c02783ff5ca"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d0dc4310da8b5f6415949bd5ef937e60aeb0eb6b16f95041b5e43e6200821fb"}, - {file = "orjson-3.9.10-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e99c625b8c95d7741fe057585176b1b8783d46ed4b8932cf98ee145c4facf499"}, - {file = "orjson-3.9.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec6f18f96b47299c11203edfbdc34e1b69085070d9a3d1f302810cc23ad36bf3"}, - {file = "orjson-3.9.10-cp311-none-win32.whl", hash = "sha256:ce0a29c28dfb8eccd0f16219360530bc3cfdf6bf70ca384dacd36e6c650ef8e8"}, - {file = "orjson-3.9.10-cp311-none-win_amd64.whl", hash = "sha256:cf80b550092cc480a0cbd0750e8189247ff45457e5a023305f7ef1bcec811616"}, - {file = "orjson-3.9.10-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:602a8001bdf60e1a7d544be29c82560a7b49319a0b31d62586548835bbe2c862"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f295efcd47b6124b01255d1491f9e46f17ef40d3d7eabf7364099e463fb45f0f"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92af0d00091e744587221e79f68d617b432425a7e59328ca4c496f774a356071"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5a02360e73e7208a872bf65a7554c9f15df5fe063dc047f79738998b0506a14"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:858379cbb08d84fe7583231077d9a36a1a20eb72f8c9076a45df8b083724ad1d"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666c6fdcaac1f13eb982b649e1c311c08d7097cbda24f32612dae43648d8db8d"}, - {file = "orjson-3.9.10-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3fb205ab52a2e30354640780ce4587157a9563a68c9beaf52153e1cea9aa0921"}, - {file = "orjson-3.9.10-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7ec960b1b942ee3c69323b8721df2a3ce28ff40e7ca47873ae35bfafeb4555ca"}, - {file = "orjson-3.9.10-cp312-none-win_amd64.whl", hash = "sha256:3e892621434392199efb54e69edfff9f699f6cc36dd9553c5bf796058b14b20d"}, - {file = "orjson-3.9.10-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8b9ba0ccd5a7f4219e67fbbe25e6b4a46ceef783c42af7dbc1da548eb28b6531"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e2ecd1d349e62e3960695214f40939bbfdcaeaaa62ccc638f8e651cf0970e5f"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f433be3b3f4c66016d5a20e5b4444ef833a1f802ced13a2d852c637f69729c1"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4689270c35d4bb3102e103ac43c3f0b76b169760aff8bcf2d401a3e0e58cdb7f"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd176f528a8151a6efc5359b853ba3cc0e82d4cd1fab9c1300c5d957dc8f48c"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a2ce5ea4f71681623f04e2b7dadede3c7435dfb5e5e2d1d0ec25b35530e277b"}, - {file = "orjson-3.9.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:49f8ad582da6e8d2cf663c4ba5bf9f83cc052570a3a767487fec6af839b0e777"}, - {file = "orjson-3.9.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2a11b4b1a8415f105d989876a19b173f6cdc89ca13855ccc67c18efbd7cbd1f8"}, - {file = "orjson-3.9.10-cp38-none-win32.whl", hash = "sha256:a353bf1f565ed27ba71a419b2cd3db9d6151da426b61b289b6ba1422a702e643"}, - {file = "orjson-3.9.10-cp38-none-win_amd64.whl", hash = "sha256:e28a50b5be854e18d54f75ef1bb13e1abf4bc650ab9d635e4258c58e71eb6ad5"}, - {file = "orjson-3.9.10-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ee5926746232f627a3be1cc175b2cfad24d0170d520361f4ce3fa2fd83f09e1d"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a73160e823151f33cdc05fe2cea557c5ef12fdf276ce29bb4f1c571c8368a60"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c338ed69ad0b8f8f8920c13f529889fe0771abbb46550013e3c3d01e5174deef"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5869e8e130e99687d9e4be835116c4ebd83ca92e52e55810962446d841aba8de"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2c1e559d96a7f94a4f581e2a32d6d610df5840881a8cba8f25e446f4d792df3"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a3a3a72c9811b56adf8bcc829b010163bb2fc308877e50e9910c9357e78521"}, - {file = "orjson-3.9.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7f8fb7f5ecf4f6355683ac6881fd64b5bb2b8a60e3ccde6ff799e48791d8f864"}, - {file = "orjson-3.9.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c943b35ecdf7123b2d81d225397efddf0bce2e81db2f3ae633ead38e85cd5ade"}, - {file = "orjson-3.9.10-cp39-none-win32.whl", hash = "sha256:fb0b361d73f6b8eeceba47cd37070b5e6c9de5beaeaa63a1cb35c7e1a73ef088"}, - {file = "orjson-3.9.10-cp39-none-win_amd64.whl", hash = "sha256:b90f340cb6397ec7a854157fac03f0c82b744abdd1c0941a024c3c29d1340aff"}, - {file = "orjson-3.9.10.tar.gz", hash = "sha256:9ebbdbd6a046c304b1845e96fbcc5559cd296b4dfd3ad2509e33c4d9ce07d6a1"}, + {file = "orjson-3.9.13-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:fa6b67f8bef277c2a4aadd548d58796854e7d760964126c3209b19bccc6a74f1"}, + {file = "orjson-3.9.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b812417199eeb169c25f67815cfb66fd8de7ff098bf57d065e8c1943a7ba5c8f"}, + {file = "orjson-3.9.13-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7ccd5bd222e5041069ad9d9868ab59e6dbc53ecde8d8c82b919954fbba43b46b"}, + {file = "orjson-3.9.13-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaaf80957c38e9d3f796f355a80fad945e72cd745e6b64c210e635b7043b673e"}, + {file = "orjson-3.9.13-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:60da7316131185d0110a1848e9ad15311e6c8938ee0b5be8cbd7261e1d80ee8f"}, + {file = "orjson-3.9.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b98cd948372f0eb219bc309dee4633db1278687161e3280d9e693b6076951d2"}, + {file = "orjson-3.9.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3869d65561f10071d3e7f35ae58fd377056f67d7aaed5222f318390c3ad30339"}, + {file = "orjson-3.9.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:43fd6036b16bb6742d03dae62f7bdf8214d06dea47e4353cde7e2bd1358d186f"}, + {file = "orjson-3.9.13-cp310-none-win32.whl", hash = "sha256:0d3ba9d88e20765335260d7b25547d7c571eee2b698200f97afa7d8c7cd668fc"}, + {file = "orjson-3.9.13-cp310-none-win_amd64.whl", hash = "sha256:6e47153db080f5e87e8ba638f1a8b18995eede6b0abb93964d58cf11bcea362f"}, + {file = "orjson-3.9.13-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4584e8eb727bc431baaf1bf97e35a1d8a0109c924ec847395673dfd5f4ef6d6f"}, + {file = "orjson-3.9.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f37f0cdd026ef777a4336e599d8194c8357fc14760c2a5ddcfdf1965d45504b"}, + {file = "orjson-3.9.13-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d714595d81efab11b42bccd119977d94b25d12d3a806851ff6bfd286a4bce960"}, + {file = "orjson-3.9.13-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9171e8e1a1f221953e38e84ae0abffe8759002fd8968106ee379febbb5358b33"}, + {file = "orjson-3.9.13-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ab9dbdec3f13f3ea6f937564ce21651844cfbf2725099f2f490426acf683c23"}, + {file = "orjson-3.9.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:811ac076855e33e931549340288e0761873baf29276ad00f221709933c644330"}, + {file = "orjson-3.9.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:860d0f5b42d0c0afd73fa4177709f6e1b966ba691fcd72175affa902052a81d6"}, + {file = "orjson-3.9.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:838b898e8c1f26eb6b8d81b180981273f6f5110c76c22c384979aca854194f1b"}, + {file = "orjson-3.9.13-cp311-none-win32.whl", hash = "sha256:d3222db9df629ef3c3673124f2e05fb72bc4a320c117e953fec0d69dde82e36d"}, + {file = "orjson-3.9.13-cp311-none-win_amd64.whl", hash = "sha256:978117122ca4cc59b28af5322253017f6c5fc03dbdda78c7f4b94ae984c8dd43"}, + {file = "orjson-3.9.13-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:031df1026c7ea8303332d78711f180231e3ae8b564271fb748a03926587c5546"}, + {file = "orjson-3.9.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fd9a2101d04e85086ea6198786a3f016e45475f800712e6833e14bf9ce2832f"}, + {file = "orjson-3.9.13-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:446d9ad04204e79229ae19502daeea56479e55cbc32634655d886f5a39e91b44"}, + {file = "orjson-3.9.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b57c0954a9fdd2b05b9cec0f5a12a0bdce5bf021a5b3b09323041613972481ab"}, + {file = "orjson-3.9.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:266e55c83f81248f63cc93d11c5e3a53df49a5d2598fa9e9db5f99837a802d5d"}, + {file = "orjson-3.9.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31372ba3a9fe8ad118e7d22fba46bbc18e89039e3bfa89db7bc8c18ee722dca8"}, + {file = "orjson-3.9.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e3b0c4da61f39899561e08e571f54472a09fa71717d9797928af558175ae5243"}, + {file = "orjson-3.9.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cc03a35bfc71c8ebf96ce49b82c2a7be6af4b3cd3ac34166fdb42ac510bbfff"}, + {file = "orjson-3.9.13-cp312-none-win_amd64.whl", hash = "sha256:49b7e3fe861cb246361825d1a238f2584ed8ea21e714bf6bb17cebb86772e61c"}, + {file = "orjson-3.9.13-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:62e9a99879c4d5a04926ac2518a992134bfa00d546ea5a4cae4b9be454d35a22"}, + {file = "orjson-3.9.13-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d92a3e835a5100f1d5b566fff79217eab92223ca31900dba733902a182a35ab0"}, + {file = "orjson-3.9.13-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:23f21faf072ed3b60b5954686f98157e073f6a8068eaa58dbde83e87212eda84"}, + {file = "orjson-3.9.13-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:828c502bb261588f7de897e06cb23c4b122997cb039d2014cb78e7dabe92ef0c"}, + {file = "orjson-3.9.13-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16946d095212a3dec552572c5d9bca7afa40f3116ad49695a397be07d529f1fa"}, + {file = "orjson-3.9.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3deadd8dc0e9ff844b5b656fa30a48dbee1c3b332d8278302dd9637f6b09f627"}, + {file = "orjson-3.9.13-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9b1b5adc5adf596c59dca57156b71ad301d73956f5bab4039b0e34dbf50b9fa0"}, + {file = "orjson-3.9.13-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ddc089315d030c54f0f03fb38286e2667c05009a78d659f108a8efcfbdf2e585"}, + {file = "orjson-3.9.13-cp38-none-win32.whl", hash = "sha256:ae77275a28667d9c82d4522b681504642055efa0368d73108511647c6499b31c"}, + {file = "orjson-3.9.13-cp38-none-win_amd64.whl", hash = "sha256:730385fdb99a21fce9bb84bb7fcbda72c88626facd74956bda712834b480729d"}, + {file = "orjson-3.9.13-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7e8e4a571d958910272af8d53a9cbe6599f9f5fd496a1bc51211183bb2072cbd"}, + {file = "orjson-3.9.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfad553a36548262e7da0f3a7464270e13900b898800fb571a5d4b298c3f8356"}, + {file = "orjson-3.9.13-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0d691c44604941945b00e0a13b19a7d9c1a19511abadf0080f373e98fdeb6b31"}, + {file = "orjson-3.9.13-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8c83718346de08d68b3cb1105c5d91e5fc39885d8610fdda16613d4e3941459"}, + {file = "orjson-3.9.13-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63ef57a53bfc2091a7cd50a640d9ae866bd7d92a5225a1bab6baa60ef62583f2"}, + {file = "orjson-3.9.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9156b96afa38db71344522f5517077eaedf62fcd2c9148392ff93d801128809c"}, + {file = "orjson-3.9.13-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31fb66b41fb2c4c817d9610f0bc7d31345728d7b5295ac78b63603407432a2b2"}, + {file = "orjson-3.9.13-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8a730bf07feacb0863974e67b206b7c503a62199de1cece2eb0d4c233ec29c11"}, + {file = "orjson-3.9.13-cp39-none-win32.whl", hash = "sha256:5ef58869f3399acbbe013518d8b374ee9558659eef14bca0984f67cb1fbd3c37"}, + {file = "orjson-3.9.13-cp39-none-win_amd64.whl", hash = "sha256:9bcf56efdb83244cde070e82a69c0f03c47c235f0a5cb6c81d9da23af7fbaae4"}, + {file = "orjson-3.9.13.tar.gz", hash = "sha256:fc6bc65b0cf524ee042e0bc2912b9206ef242edfba7426cf95763e4af01f527a"}, ] [[package]] @@ -2374,18 +2400,18 @@ six = "*" [[package]] name = "platformdirs" -version = "4.1.0" +version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, - {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] [[package]] name = "pluggy" @@ -2552,27 +2578,27 @@ dot = ["pydot (>=1.2.0)"] [[package]] name = "psutil" -version = "5.9.7" +version = "5.9.8" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "psutil-5.9.7-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:0bd41bf2d1463dfa535942b2a8f0e958acf6607ac0be52265ab31f7923bcd5e6"}, - {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:5794944462509e49d4d458f4dbfb92c47539e7d8d15c796f141f474010084056"}, - {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:fe361f743cb3389b8efda21980d93eb55c1f1e3898269bc9a2a1d0bb7b1f6508"}, - {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e469990e28f1ad738f65a42dcfc17adaed9d0f325d55047593cb9033a0ab63df"}, - {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3c4747a3e2ead1589e647e64aad601981f01b68f9398ddf94d01e3dc0d1e57c7"}, - {file = "psutil-5.9.7-cp27-none-win32.whl", hash = "sha256:1d4bc4a0148fdd7fd8f38e0498639ae128e64538faa507df25a20f8f7fb2341c"}, - {file = "psutil-5.9.7-cp27-none-win_amd64.whl", hash = "sha256:4c03362e280d06bbbfcd52f29acd79c733e0af33d707c54255d21029b8b32ba6"}, - {file = "psutil-5.9.7-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ea36cc62e69a13ec52b2f625c27527f6e4479bca2b340b7a452af55b34fcbe2e"}, - {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1132704b876e58d277168cd729d64750633d5ff0183acf5b3c986b8466cd0284"}, - {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe8b7f07948f1304497ce4f4684881250cd859b16d06a1dc4d7941eeb6233bfe"}, - {file = "psutil-5.9.7-cp36-cp36m-win32.whl", hash = "sha256:b27f8fdb190c8c03914f908a4555159327d7481dac2f01008d483137ef3311a9"}, - {file = "psutil-5.9.7-cp36-cp36m-win_amd64.whl", hash = "sha256:44969859757f4d8f2a9bd5b76eba8c3099a2c8cf3992ff62144061e39ba8568e"}, - {file = "psutil-5.9.7-cp37-abi3-win32.whl", hash = "sha256:c727ca5a9b2dd5193b8644b9f0c883d54f1248310023b5ad3e92036c5e2ada68"}, - {file = "psutil-5.9.7-cp37-abi3-win_amd64.whl", hash = "sha256:f37f87e4d73b79e6c5e749440c3113b81d1ee7d26f21c19c47371ddea834f414"}, - {file = "psutil-5.9.7-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:032f4f2c909818c86cea4fe2cc407f1c0f0cde8e6c6d702b28b8ce0c0d143340"}, - {file = "psutil-5.9.7.tar.gz", hash = "sha256:3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c"}, + {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, + {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, + {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, + {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, + {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, + {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, + {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, + {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, + {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, + {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, ] [package.extras] @@ -2840,19 +2866,19 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyjwt" -version = "2.4.0" +version = "2.8.0" description = "JSON Web Token implementation in Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "PyJWT-2.4.0-py3-none-any.whl", hash = "sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf"}, - {file = "PyJWT-2.4.0.tar.gz", hash = "sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba"}, + {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, + {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, ] [package.extras] -crypto = ["cryptography (>=3.3.1)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.3.1)", "mypy", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] +crypto = ["cryptography (>=3.4.0)"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] @@ -3183,13 +3209,13 @@ yaml = ["PyYaml (>=6.0.1)"] [[package]] name = "pytz" -version = "2023.3.post1" +version = "2024.1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, - {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] [[package]] @@ -3225,6 +3251,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -3232,8 +3259,16 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -3250,6 +3285,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -3257,6 +3293,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -3542,30 +3579,50 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, @@ -3777,13 +3834,13 @@ test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] [[package]] name = "sphinx-click" -version = "4.4.0" +version = "5.1.0" description = "Sphinx extension that automatically documents click applications" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "sphinx-click-4.4.0.tar.gz", hash = "sha256:cc67692bd28f482c7f01531c61b64e9d2f069bfcf3d24cbbb51d4a84a749fa48"}, - {file = "sphinx_click-4.4.0-py3-none-any.whl", hash = "sha256:2821c10a68fc9ee6ce7c92fad26540d8d8c8f45e6d7258f0e4fb7529ae8fab49"}, + {file = "sphinx-click-5.1.0.tar.gz", hash = "sha256:6812c2db62d3fae71a4addbe5a8a0a16c97eb491f3cd63fe34b4ed7e07236f33"}, + {file = "sphinx_click-5.1.0-py3-none-any.whl", hash = "sha256:ae97557a4e9ec646045089326c3b90e026c58a45e083b8f35f17d5d6558d08a0"}, ] [package.dependencies] @@ -4205,21 +4262,23 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "vcrpy" -version = "5.1.0" +version = "6.0.1" description = "Automatically mock your HTTP interactions to simplify and speed up testing" optional = false python-versions = ">=3.8" files = [ - {file = "vcrpy-5.1.0-py2.py3-none-any.whl", hash = "sha256:605e7b7a63dcd940db1df3ab2697ca7faf0e835c0852882142bafb19649d599e"}, - {file = "vcrpy-5.1.0.tar.gz", hash = "sha256:bbf1532f2618a04f11bce2a99af3a9647a32c880957293ff91e0a5f187b6b3d2"}, + {file = "vcrpy-6.0.1.tar.gz", hash = "sha256:9e023fee7f892baa0bbda2f7da7c8ac51165c1c6e38ff8688683a12a4bde9278"}, ] [package.dependencies] PyYAML = "*" -urllib3 = {version = "<2", markers = "python_version < \"3.10\""} +urllib3 = {version = "<2", markers = "platform_python_implementation == \"PyPy\" or python_version < \"3.10\""} wrapt = "*" yarl = "*" +[package.extras] +tests = ["Werkzeug (==2.0.3)", "aiohttp", "boto3", "httplib2", "httpx", "pytest", "pytest-aiohttp", "pytest-asyncio", "pytest-cov", "pytest-httpbin", "requests (>=2.22.0)", "tornado", "urllib3"] + [[package]] name = "virtualenv" version = "20.25.0" @@ -4799,4 +4858,4 @@ service = ["apispec", "apispec-oneofschema", "apispec-webframeworks", "circus", [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<3.12" -content-hash = "a359e5b508d3f330aa9933a308c48bdf68fd3f3e606c2141ec81d17441c0d20f" +content-hash = "c8cd7eb1d747525bbb7f2b7365988030f9971630776214a9b8c04705f54b130d" diff --git a/pyproject.toml b/pyproject.toml index 817f3b60b8..5fa6d67dcd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,7 +67,7 @@ docker = "^5.0.3" gitpython = "~3.1.41" grandalf = "^0.8" humanize = "~4.9.0" -importlib-resources = "~5.12.0" +importlib-resources = ">=5.12,<6.2" inject = "~4.3.1" jinja2 = "~3.1.2" networkx = "~3.1" @@ -79,7 +79,7 @@ portalocker = "~2.7.0" poetry-dynamic-versioning = "^1.2.0" psutil = "~5.9.6" pydantic = "~2.5.2" -pyjwt = "~2.4.0" +pyjwt = ">=2.4,<2.9" pyld = "~2.0.3" pyshacl = "^0.25" python-dateutil = "~2.8.2" @@ -104,7 +104,7 @@ apispec = { version = "~6.3.0", optional = true } apispec-oneofschema = { version = "^3.0.0", optional = true} apispec-webframeworks = { version = "^0.5", optional = true } circus = { version = "^0.18", optional = true } -flask = { version = "^2.3.3", optional = true } +flask = { version = ">=2.3.3,<4.0.0", optional = true } gunicorn = { version = "*", optional = true } marshmallow = { version = "~3.19.0", optional = true } marshmallow-oneofschema = { version = "^3.0.1", optional = true } @@ -161,7 +161,7 @@ optional = true [tool.poetry.group.docs.dependencies] plantweb = ">=1.2.1,<1.3.0" renku-sphinx-theme = "^0.4" -sphinx-click = "^4.3.0" +sphinx-click = ">=4.3,<6.0" sphinx-rtd-theme = "~1.3" sphinx-tabs = "==3.4.4" sphinxcontrib-spelling = ">=7,<9" From 3da4a63d0492676f8e46892c1d8532507f088dfb Mon Sep 17 00:00:00 2001 From: Renku Bot Date: Tue, 6 Feb 2024 09:03:32 +0000 Subject: [PATCH 6/8] chore: release v2.9.2 --- CHANGES.rst | 24 ++++++++++++++++++++++++ helm-chart/renku-core/Chart.yaml | 2 +- helm-chart/renku-core/values.yaml | 2 +- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index ca3bb6165f..e864bf2661 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -18,6 +18,30 @@ Changes ======= +`2.9.2 `__ (2024-02-06) +------------------------------------------------------------------------------------------------------- + +Bug Fixes +~~~~~~~~~ + +- **cli:** don’t fail on workflows without inputs/outputs and print + approriate warnings + (`#3694 `__) + (`33a29aa `__) +- **core:** migrate Dockerfile after metadata + (`#3690 `__) + (`e98f112 `__) +- **service:** properly return cli_version in api version + (`#3699 `__) + (`50e20e1 `__) + +Features +~~~~~~~~ + +- **cli:** allow ignoring template rendering errors + (`#3697 `__) + (`088ce15 `__) + `2.9.1 `__ (2024-01-18) ------------------------------------------------------------------------------------------------------- diff --git a/helm-chart/renku-core/Chart.yaml b/helm-chart/renku-core/Chart.yaml index 5e08dc8299..88bad48ac5 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: 2.9.1 +version: 2.9.2 diff --git a/helm-chart/renku-core/values.yaml b/helm-chart/renku-core/values.yaml index 9c8bc7658d..b7bd938ee7 100644 --- a/helm-chart/renku-core/values.yaml +++ b/helm-chart/renku-core/values.yaml @@ -8,4 +8,4 @@ global: versions: latest: image: - tag: v2.9.1 + tag: v2.9.2 From 065096261fd412d611074be50d3ec431b8234451 Mon Sep 17 00:00:00 2001 From: Ralf Grubenmann Date: Tue, 6 Feb 2024 10:36:22 +0100 Subject: [PATCH 7/8] fix spelling --- CHANGES.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index e864bf2661..0f0570b5ae 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -25,7 +25,7 @@ Bug Fixes ~~~~~~~~~ - **cli:** don’t fail on workflows without inputs/outputs and print - approriate warnings + appropriate warnings (`#3694 `__) (`33a29aa `__) - **core:** migrate Dockerfile after metadata From b91125d1fb8672aae42dcbd6047c711c3fd27eda Mon Sep 17 00:00:00 2001 From: Mohammad Alisafaee Date: Tue, 6 Feb 2024 11:36:10 +0100 Subject: [PATCH 8/8] fix changelog wording --- CHANGES.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 0f0570b5ae..4363f883c9 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -24,11 +24,10 @@ Changes Bug Fixes ~~~~~~~~~ -- **cli:** don’t fail on workflows without inputs/outputs and print - appropriate warnings +- **cli:** don’t fail on workflows without inputs/outputs and print appropriate warnings (`#3694 `__) (`33a29aa `__) -- **core:** migrate Dockerfile after metadata +- **core:** fix Dockerfile migration (`#3690 `__) (`e98f112 `__) - **service:** properly return cli_version in api version