From 864ec2480668b9ab3ed82a41f98bf0c0057cc255 Mon Sep 17 00:00:00 2001 From: Jukka Hassinen Date: Mon, 18 Nov 2024 21:03:52 +0000 Subject: [PATCH] ci: basic test, build and release setup --- .devcontainer/devcontainer.json | 3 +- .github/dependabot.yml | 9 + .github/workflows/cicd.yml | 114 ++ .gitignore | 2 +- .importlinter | 41 +- .vscode/extensions.json | 3 +- CITATION.cff | 4 +- CONTRIBUTING.md | 60 ++ Dockerfile | 1 - LICENSE.txt | 2 +- README.md | 4 +- django2pydantic/__init__.py | 7 + {superschema => django2pydantic}/base.py | 14 +- {superschema => django2pydantic}/defaults.py | 6 +- {superschema => django2pydantic}/getter.py | 0 .../handlers/__init__.py | 22 +- .../handlers/auto.py | 2 +- .../handlers/base.py | 0 .../handlers/boolean.py | 2 +- .../handlers/contrib/.gitkeep | 0 .../handlers/file.py | 2 +- .../handlers/handlers.py | 0 .../handlers/json.py | 2 +- .../handlers/network.py | 2 +- .../handlers/numbers.py | 20 +- .../handlers/property.py | 2 +- .../handlers/relational.py | 4 +- .../handlers/text.py | 2 +- .../handlers/time.py | 2 +- {superschema => django2pydantic}/mixin.py | 6 +- {superschema => django2pydantic}/py.typed | 0 {superschema => django2pydantic}/registry.py | 2 +- {superschema => django2pydantic}/schema.py | 10 +- {superschema => django2pydantic}/types.py | 2 +- examples.ipynb | 766 +++++++------- examples.py | 8 +- noxfile.py | 37 +- playground.py | 64 -- pyproject.toml | 138 ++- pytest-with-beartype.py | 2 +- pytest-with-typeguard.py | 2 +- pytest.ini | 2 +- superschema/__init__.py | 6 - tests/test_basics.py | 8 +- tests/test_error_messages.py | 8 +- tests/test_id_fields.py | 12 +- tests/test_property_method_fields.py | 8 +- tests/test_relations_are_supported.py | 44 +- tests/utils.py | 6 +- uv.lock | 982 +++++++++++++----- 50 files changed, 1573 insertions(+), 872 deletions(-) create mode 100644 .github/workflows/cicd.yml create mode 100644 django2pydantic/__init__.py rename {superschema => django2pydantic}/base.py (96%) rename {superschema => django2pydantic}/defaults.py (93%) rename {superschema => django2pydantic}/getter.py (100%) rename {superschema => django2pydantic}/handlers/__init__.py (74%) rename {superschema => django2pydantic}/handlers/auto.py (96%) rename {superschema => django2pydantic}/handlers/base.py (100%) rename {superschema => django2pydantic}/handlers/boolean.py (87%) rename {superschema => django2pydantic}/handlers/contrib/.gitkeep (100%) rename {superschema => django2pydantic}/handlers/file.py (96%) rename {superschema => django2pydantic}/handlers/handlers.py (100%) rename {superschema => django2pydantic}/handlers/json.py (89%) rename {superschema => django2pydantic}/handlers/network.py (89%) rename {superschema => django2pydantic}/handlers/numbers.py (94%) rename {superschema => django2pydantic}/handlers/property.py (93%) rename {superschema => django2pydantic}/handlers/relational.py (97%) rename {superschema => django2pydantic}/handlers/text.py (98%) rename {superschema => django2pydantic}/handlers/time.py (96%) rename {superschema => django2pydantic}/mixin.py (85%) rename {superschema => django2pydantic}/py.typed (100%) rename {superschema => django2pydantic}/registry.py (97%) rename {superschema => django2pydantic}/schema.py (87%) rename {superschema => django2pydantic}/types.py (95%) delete mode 100644 playground.py delete mode 100644 superschema/__init__.py diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5b241ec..59bf9d0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -21,7 +21,8 @@ "ms-azuretools.vscode-docker", "github.vscode-github-actions", "ms-python.isort", - "ms-toolsai.jupyter" + "ms-toolsai.jupyter", + "ms-vscode.makefile-tools" ] } } diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f33a02c..16b42ec 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,3 +10,12 @@ updates: directory: "/" schedule: interval: weekly + - package-ecosystem: "docker" + directory: "/" + schedule: + interval: weekly + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: weekly + - diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml new file mode 100644 index 0000000..28b6487 --- /dev/null +++ b/.github/workflows/cicd.yml @@ -0,0 +1,114 @@ +name: CI/CD pipeline + +on: + push: + branches: + - "*" + +jobs: + tests: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Build Docker image + run: | + docker build -t django2pydantic . + + - name: Run tests + run: | + docker run --volume $(pwd):/app --workdir /app --rm django2pydantic nox -s noop + + build: + name: Build distribution 📦 + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: "3.x" + - name: Install pypa/build + run: >- + python3 -m + pip install + build + --user + - name: Build a binary wheel and a source tarball + run: python3 -m build + - name: Store the distribution packages + uses: actions/upload-artifact@v4 + with: + path: dist/ + name: python-package-distributions + + release: + # If main branch is updated, we want to release the package. + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + needs: + - tests + - build + concurrency: release + runs-on: ubuntu-latest + + permissions: + id-token: write + contents: write + + steps: + # Note: we need to checkout the repository at the workflow sha in case during the workflow + # the branch was updated. To keep PSR working with the configured release branches, + # we force a checkout of the desired release branch but at the workflow sha HEAD. + - name: Setup | Checkout Repository at workflow sha + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.sha }} + + - name: Setup | Force correct release branch on workflow sha + run: | + git checkout -B ${{ github.ref_name }} ${{ github.sha }} + + - name: Action | Semantic Version Release + id: release + # Adjust tag with desired version if applicable. + uses: python-semantic-release/python-semantic-release@v9.14.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + git_committer_name: "github-actions" + git_committer_email: "actions@users.noreply.github.com" + + - name: Publish | Upload to GitHub Release Assets + uses: python-semantic-release/publish-action@v9.14.0 + if: steps.release.outputs.released == 'true' + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ steps.release.outputs.tag }} + + + publish-to-testpypi: + name: Publish Python 🐍 distribution 📦 to TestPyPI + needs: + - release + runs-on: ubuntu-latest + + environment: + name: testpypi + url: https://test.pypi.org/p/django2pydantic + + permissions: + id-token: write # IMPORTANT: mandatory for trusted publishing + + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + - name: Publish distribution 📦 to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ diff --git a/.gitignore b/.gitignore index 1c5fbed..190b5b7 100644 --- a/.gitignore +++ b/.gitignore @@ -446,7 +446,7 @@ $RECYCLE.BIN/ # End of https://www.toptal.com/developers/gitignore/api/macos,linux,windows,visualstudiocode,python,django,pycharm+all -.testmondata +.testmondata* .import_linter_cache lcov.info debug.json diff --git a/.importlinter b/.importlinter index f69c20a..ab7a7d2 100644 --- a/.importlinter +++ b/.importlinter @@ -1,5 +1,5 @@ [importlinter] -root_package = superschema +root_package = django2pydantic include_external_packages = True @@ -8,7 +8,7 @@ name = Lower layers shall not import from higher layers type = layers containers = - superschema + django2pydantic layers = handlers @@ -16,12 +16,7 @@ layers = schema ignore_imports = - superschema.schema -> superschema.registry - - superschema.registry -> superschema.handlers.base - superschema.schema -> superschema.registry - superschema.schema -> superschema.handlers - superschema.registry -> superschema.handlers.base + django2pydantic.registry -> django2pydantic.handlers.base [importlinter:contract:tests-restrictions] @@ -29,7 +24,7 @@ name = Source code shall not import anything from tests type = forbidden source_modules = - superschema + django2pydantic forbidden_modules = tests @@ -39,18 +34,18 @@ forbidden_modules = name = Handlers shall be independent type = independence modules = - superschema.handlers.auto - superschema.handlers.base - superschema.handlers.boolean - superschema.handlers.file - superschema.handlers.json - superschema.handlers.network - superschema.handlers.numbers - superschema.handlers.property - superschema.handlers.relational - superschema.handlers.text - superschema.handlers.time + django2pydantic.handlers.auto + django2pydantic.handlers.base + django2pydantic.handlers.boolean + django2pydantic.handlers.file + django2pydantic.handlers.json + django2pydantic.handlers.network + django2pydantic.handlers.numbers + django2pydantic.handlers.property + django2pydantic.handlers.relational + django2pydantic.handlers.text + django2pydantic.handlers.time ignore_imports = - superschema.handlers.* -> superschema.handlers.base - superschema.handlers.relational -> superschema.registry - superschema.registry -> superschema.handlers.base + django2pydantic.handlers.* -> django2pydantic.handlers.base + django2pydantic.handlers.relational -> django2pydantic.registry + django2pydantic.registry -> django2pydantic.handlers.base diff --git a/.vscode/extensions.json b/.vscode/extensions.json index f29e215..fd466e4 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -10,6 +10,7 @@ "ms-azuretools.vscode-docker", "github.vscode-github-actions", "ms-python.isort", - "ms-toolsai.jupyter" + "ms-toolsai.jupyter", + "ms-vscode.makefile-tools" ] } \ No newline at end of file diff --git a/CITATION.cff b/CITATION.cff index d8600db..9a96af3 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,7 +2,7 @@ # Visit https://bit.ly/cffinit to generate yours today! cff-version: 1.2.0 -title: superschema +title: django2pydantic message: >- If you use this software, please cite it using the metadata from this file. @@ -11,7 +11,7 @@ authors: - given-names: Jukka family-names: Hassinen email: jukka.hassinen@gmail.com -repository-code: 'https://github.com/jhassine/superschema' +repository-code: 'https://github.com/NextGenContributions/django2pydantic' abstract: Convert Django models to Pydantic models/schema keywords: - Django diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e69de29..ec910ac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -0,0 +1,60 @@ +# Contribution guidelines + +Contributions are welcome! Here are some guidelines to help you get started. + +## Support the project + +If you like this project and want to support it, you can: + +- Give it a star on GitHub. +- Share it with others. +- Report issues or request new features. +- Contribute code, documentation, or tests. +- Sponsor the project on GitHub. + + +## Reporting issues + +If you find a bug or have a feature request, please open an issue. Make sure to include a detailed description of the issue or feature request, and include any relevant information that can help us reproduce the issue. + + +## Contributing code + +### Setup development environment + +If you are using Visual Studio Code, you can use the included devcontainer in order to quickly set up a proper development environment. + +### Discuss your changes + +If you are planning to make a significant change, it is a good idea to discuss it first with the project authors. You can open an issue to discuss your changes or discuss it with other contributors the project's discussion channels. + +### Implement your changes + +Make your changes in a new git branch. Make sure to add tests for your changes. + +### Run the tests and checks + +In order for your changes to be accepted, they must pass all the tests and checks. We are using `nox` to run the tests and checks. +The tests and checks are defined in the [noxfile.py](noxfile.py) file. + +You can run `nox` locally to run the tests and checks: + +```shell +nox +``` + +### Add yourself to the contributors list + +If you want to get credit from your contribution, add yourself to the following files: + +- [pyproject.toml](pyproject.toml) +- [CITATION.cff](CITATION.cff) + +### Create a pull request + +Once you are happy with your changes, create a pull request. Make sure to include a description of your changes and why they are needed. + +### Review process + +Your pull request will be reviewed by the project maintainers. They may ask for changes or suggest improvements. Once your pull request is approved, it will be merged into the main branch. + diff --git a/Dockerfile b/Dockerfile index dd4dd63..0a013d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,6 @@ FROM python:3.12-bookworm ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 -ENV POETRY_VIRTUALENVS_CREATE=0 RUN apt-get update && apt-get install -y --no-install-recommends \ watchman \ diff --git a/LICENSE.txt b/LICENSE.txt index 5ef69d1..bc7d761 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Jukka Hassinen +Copyright (c) 2024 See CITATION.cff for the full list of authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 278d9d5..ce7d747 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # What -SuperSchema is a library that allows to define Pydantic schemas based on Django database models. +django2pydantic is a library that allows to define Pydantic schemas based on Django database models. Similar libraries: - [Djantic](https://jordaneremieff.github.io/djantic/) @@ -9,7 +9,7 @@ Similar libraries: # Why -SuperSchema is the most complete Pydantic schemas based on Django models. +django2pydantic is the most complete Pydantic schemas based on Django models. # Key features diff --git a/django2pydantic/__init__.py b/django2pydantic/__init__.py new file mode 100644 index 0000000..c537dad --- /dev/null +++ b/django2pydantic/__init__.py @@ -0,0 +1,7 @@ +"""Super schema packages.""" + +from django2pydantic.schema import django2pydantic +from django2pydantic.types import Infer, InferExcept, MetaFields, ModelFields + +__all__ = ["Infer", "InferExcept", "ModelFields", "MetaFields", "django2pydantic"] +__version__ = "0.0.0" diff --git a/superschema/base.py b/django2pydantic/base.py similarity index 96% rename from superschema/base.py rename to django2pydantic/base.py index c2a4fb9..d1e8fed 100644 --- a/superschema/base.py +++ b/django2pydantic/base.py @@ -14,10 +14,10 @@ from pydantic.fields import FieldInfo from pydantic_core import PydanticUndefined -from superschema.defaults import field_type_registry -from superschema.mixin import BaseMixins -from superschema.registry import FieldTypeRegistry -from superschema.types import Infer, InferExcept, ModelFields +from django2pydantic.defaults import field_type_registry +from django2pydantic.mixin import BaseMixins +from django2pydantic.registry import FieldTypeRegistry +from django2pydantic.types import Infer, InferExcept, ModelFields SupportedParentFields = ( models.Field[Any, Any] @@ -251,7 +251,7 @@ def create_pydantic_model( class SuperSchemaResolver(ModelMetaclass): - """Metaclass for SuperSchema.""" + """Metaclass for django2pydantic.""" @override def __new__( # pylint: disable=W0222,C0204 @@ -261,8 +261,8 @@ def __new__( # pylint: disable=W0222,C0204 namespace: Namespace, **kwargs: Kwargs, ) -> type[BaseModel]: - """Create a new SuperSchema class.""" - if name == "SuperSchema": + """Create a new django2pydantic class.""" + if name == "django2pydantic": return super().__new__(cls, name, bases, namespace, **kwargs) if "Meta" not in namespace: diff --git a/superschema/defaults.py b/django2pydantic/defaults.py similarity index 93% rename from superschema/defaults.py rename to django2pydantic/defaults.py index 4b33892..0b7dacc 100644 --- a/superschema/defaults.py +++ b/django2pydantic/defaults.py @@ -1,7 +1,7 @@ -"""Default field type handlers for superschema.""" +"""Default field type handlers for django2pydantic.""" -from superschema import handlers -from superschema.registry import FieldTypeRegistry +from django2pydantic import handlers +from django2pydantic.registry import FieldTypeRegistry field_type_registry: FieldTypeRegistry = FieldTypeRegistry.instance() field_type_registry.register(handlers.CharFieldHandler) diff --git a/superschema/getter.py b/django2pydantic/getter.py similarity index 100% rename from superschema/getter.py rename to django2pydantic/getter.py diff --git a/superschema/handlers/__init__.py b/django2pydantic/handlers/__init__.py similarity index 74% rename from superschema/handlers/__init__.py rename to django2pydantic/handlers/__init__.py index 8f16f41..448ab89 100644 --- a/superschema/handlers/__init__.py +++ b/django2pydantic/handlers/__init__.py @@ -1,21 +1,21 @@ """All field type handlers.""" -from superschema.handlers.auto import ( +from django2pydantic.handlers.auto import ( AutoFieldHandler, BigAutoFieldHandler, SmallAutoFieldHandler, ) -from superschema.handlers.base import FieldTypeHandler -from superschema.handlers.boolean import BooleanFieldHandler -from superschema.handlers.file import ( +from django2pydantic.handlers.base import FieldTypeHandler +from django2pydantic.handlers.boolean import BooleanFieldHandler +from django2pydantic.handlers.file import ( BinaryFieldHandler, FileFieldHandler, FilePathFieldHandler, ImageFieldHandler, ) -from superschema.handlers.json import JSONFieldHandler -from superschema.handlers.network import GenericIpAddressFieldHandler -from superschema.handlers.numbers import ( +from django2pydantic.handlers.json import JSONFieldHandler +from django2pydantic.handlers.network import GenericIpAddressFieldHandler +from django2pydantic.handlers.numbers import ( BigIntegerFieldHandler, DecimalFieldHandler, FloatFieldHandler, @@ -25,13 +25,13 @@ PositiveSmallIntegerFieldHandler, SmallIntegerFieldHandler, ) -from superschema.handlers.property import PropertyHandler -from superschema.handlers.relational import ( +from django2pydantic.handlers.property import PropertyHandler +from django2pydantic.handlers.relational import ( ForeignKeyHandler, ManyToManyFieldHandler, OneToOneFieldHandler, ) -from superschema.handlers.text import ( +from django2pydantic.handlers.text import ( CharFieldHandler, EmailFieldHandler, SlugFieldHandler, @@ -39,7 +39,7 @@ UrlFieldHandler, UUIDFieldHandler, ) -from superschema.handlers.time import ( +from django2pydantic.handlers.time import ( DateFieldHandler, DateTimeFieldHandler, DurationFieldHandler, diff --git a/superschema/handlers/auto.py b/django2pydantic/handlers/auto.py similarity index 96% rename from superschema/handlers/auto.py rename to django2pydantic/handlers/auto.py index e269593..c7154b0 100644 --- a/superschema/handlers/auto.py +++ b/django2pydantic/handlers/auto.py @@ -4,7 +4,7 @@ from django.db import models -from superschema.handlers.base import DjangoFieldHandler +from django2pydantic.handlers.base import DjangoFieldHandler class SmallAutoFieldHandler(DjangoFieldHandler[models.SmallAutoField]): diff --git a/superschema/handlers/base.py b/django2pydantic/handlers/base.py similarity index 100% rename from superschema/handlers/base.py rename to django2pydantic/handlers/base.py diff --git a/superschema/handlers/boolean.py b/django2pydantic/handlers/boolean.py similarity index 87% rename from superschema/handlers/boolean.py rename to django2pydantic/handlers/boolean.py index 4ccffbb..21de5a3 100644 --- a/superschema/handlers/boolean.py +++ b/django2pydantic/handlers/boolean.py @@ -4,7 +4,7 @@ from django.db import models -from superschema.handlers.base import DjangoFieldHandler +from django2pydantic.handlers.base import DjangoFieldHandler class BooleanFieldHandler(DjangoFieldHandler[models.BooleanField[bool]]): diff --git a/superschema/handlers/contrib/.gitkeep b/django2pydantic/handlers/contrib/.gitkeep similarity index 100% rename from superschema/handlers/contrib/.gitkeep rename to django2pydantic/handlers/contrib/.gitkeep diff --git a/superschema/handlers/file.py b/django2pydantic/handlers/file.py similarity index 96% rename from superschema/handlers/file.py rename to django2pydantic/handlers/file.py index 2ce4091..fd944a2 100644 --- a/superschema/handlers/file.py +++ b/django2pydantic/handlers/file.py @@ -5,7 +5,7 @@ from django.db import models from pydantic import FilePath -from superschema.handlers.base import DjangoFieldHandler +from django2pydantic.handlers.base import DjangoFieldHandler class FileFieldHandler(DjangoFieldHandler[models.FileField]): diff --git a/superschema/handlers/handlers.py b/django2pydantic/handlers/handlers.py similarity index 100% rename from superschema/handlers/handlers.py rename to django2pydantic/handlers/handlers.py diff --git a/superschema/handlers/json.py b/django2pydantic/handlers/json.py similarity index 89% rename from superschema/handlers/json.py rename to django2pydantic/handlers/json.py index 8035075..6ec6aac 100644 --- a/superschema/handlers/json.py +++ b/django2pydantic/handlers/json.py @@ -5,7 +5,7 @@ from django.db import models from pydantic import Json -from superschema.handlers.base import DjangoFieldHandler +from django2pydantic.handlers.base import DjangoFieldHandler JSONValue = str | int | float | bool | None | list["JSONValue"] | dict[str, "JSONValue"] diff --git a/superschema/handlers/network.py b/django2pydantic/handlers/network.py similarity index 89% rename from superschema/handlers/network.py rename to django2pydantic/handlers/network.py index b586361..5d653f4 100644 --- a/superschema/handlers/network.py +++ b/django2pydantic/handlers/network.py @@ -5,7 +5,7 @@ from django.db import models from pydantic import IPvAnyAddress -from superschema.handlers.base import DjangoFieldHandler +from django2pydantic.handlers.base import DjangoFieldHandler class GenericIpAddressFieldHandler( diff --git a/superschema/handlers/numbers.py b/django2pydantic/handlers/numbers.py similarity index 94% rename from superschema/handlers/numbers.py rename to django2pydantic/handlers/numbers.py index d8ff3fc..435a34c 100644 --- a/superschema/handlers/numbers.py +++ b/django2pydantic/handlers/numbers.py @@ -3,7 +3,7 @@ from django.db import connection, models -from superschema.handlers.base import DjangoFieldHandler +from django2pydantic.handlers.base import DjangoFieldHandler class IntegerFieldHandler(DjangoFieldHandler[models.IntegerField[int]]): @@ -41,14 +41,16 @@ def field(cls) -> type[models.SmallIntegerField[int]]: @override def ge(self) -> int | None: return max( - connection.ops.integer_field_range("SmallIntegerField")[0], super().ge + connection.ops.integer_field_range("SmallIntegerField")[0], + super().ge, ) @property @override def le(self) -> int | None: return min( - connection.ops.integer_field_range("SmallIntegerField")[1], super().le + connection.ops.integer_field_range("SmallIntegerField")[1], + super().le, ) @override @@ -102,14 +104,16 @@ def field(cls) -> type[models.PositiveIntegerField[int]]: @override def ge(self) -> int | None: return max( - connection.ops.integer_field_range("PositiveIntegerField")[0], super().ge + connection.ops.integer_field_range("PositiveIntegerField")[0], + super().ge, ) @property @override def le(self) -> int | None: return min( - connection.ops.integer_field_range("PositiveIntegerField")[1], super().le + connection.ops.integer_field_range("PositiveIntegerField")[1], + super().le, ) @override @@ -154,14 +158,16 @@ def field(cls) -> type[models.PositiveBigIntegerField[int]]: @override def ge(self) -> int | None: return min( - connection.ops.integer_field_range("PositiveBigIntegerField")[0], super().ge + connection.ops.integer_field_range("PositiveBigIntegerField")[0], + super().ge, ) @property @override def le(self) -> int | None: return max( - connection.ops.integer_field_range("PositiveBigIntegerField")[1], super().le + connection.ops.integer_field_range("PositiveBigIntegerField")[1], + super().le, ) @override diff --git a/superschema/handlers/property.py b/django2pydantic/handlers/property.py similarity index 93% rename from superschema/handlers/property.py rename to django2pydantic/handlers/property.py index 8b1b0b9..9e02293 100644 --- a/superschema/handlers/property.py +++ b/django2pydantic/handlers/property.py @@ -5,7 +5,7 @@ from pydantic import Field from pydantic.fields import FieldInfo -from superschema.handlers.base import FieldTypeHandler +from django2pydantic.handlers.base import FieldTypeHandler ReturnType = str diff --git a/superschema/handlers/relational.py b/django2pydantic/handlers/relational.py similarity index 97% rename from superschema/handlers/relational.py rename to django2pydantic/handlers/relational.py index c3d9b53..9731c12 100644 --- a/superschema/handlers/relational.py +++ b/django2pydantic/handlers/relational.py @@ -7,8 +7,8 @@ from django.db.models.fields.related import RelatedField from pydantic.fields import FieldInfo -from superschema.handlers.base import DjangoFieldHandler -from superschema.registry import FieldTypeRegistry +from django2pydantic.handlers.base import DjangoFieldHandler +from django2pydantic.registry import FieldTypeRegistry class RelatedFieldHandler(DjangoFieldHandler[RelatedField[Any, Any]]): diff --git a/superschema/handlers/text.py b/django2pydantic/handlers/text.py similarity index 98% rename from superschema/handlers/text.py rename to django2pydantic/handlers/text.py index 0ce008c..dd12dae 100644 --- a/superschema/handlers/text.py +++ b/django2pydantic/handlers/text.py @@ -9,7 +9,7 @@ from django.db import models from pydantic import UUID1, UUID3, UUID4, UUID5, AnyUrl, EmailStr -from superschema.handlers.base import DjangoFieldHandler +from django2pydantic.handlers.base import DjangoFieldHandler class CharFieldHandler(DjangoFieldHandler[models.CharField[str]]): diff --git a/superschema/handlers/time.py b/django2pydantic/handlers/time.py similarity index 96% rename from superschema/handlers/time.py rename to django2pydantic/handlers/time.py index 5bd253d..45816d6 100644 --- a/superschema/handlers/time.py +++ b/django2pydantic/handlers/time.py @@ -5,7 +5,7 @@ from django.db import models -from superschema.handlers.base import DjangoFieldHandler +from django2pydantic.handlers.base import DjangoFieldHandler class TimeFieldHandler(DjangoFieldHandler[models.TimeField[datetime.time]]): diff --git a/superschema/mixin.py b/django2pydantic/mixin.py similarity index 85% rename from superschema/mixin.py rename to django2pydantic/mixin.py index 0f7e917..2ad61e8 100644 --- a/superschema/mixin.py +++ b/django2pydantic/mixin.py @@ -3,12 +3,12 @@ from pydantic import BaseModel, ValidationInfo, model_validator from pydantic.functional_validators import ModelWrapValidatorHandler -from superschema.getter import DjangoGetter +from django2pydantic.getter import DjangoGetter if TYPE_CHECKING: - from superschema import SuperSchema + from django2pydantic import django2pydantic -SVar = TypeVar("SVar", bound="SuperSchema") +SVar = TypeVar("SVar", bound="django2pydantic") class BaseMixins(BaseModel): diff --git a/superschema/py.typed b/django2pydantic/py.typed similarity index 100% rename from superschema/py.typed rename to django2pydantic/py.typed diff --git a/superschema/registry.py b/django2pydantic/registry.py similarity index 97% rename from superschema/registry.py rename to django2pydantic/registry.py index 9516b9a..df7d1d2 100644 --- a/superschema/registry.py +++ b/django2pydantic/registry.py @@ -8,7 +8,7 @@ from django.db import models from pydantic_core import PydanticUndefinedType -from superschema.handlers.base import PydanticConverter +from django2pydantic.handlers.base import PydanticConverter SupportedParentFields = ( models.Field[Any, Any] diff --git a/superschema/schema.py b/django2pydantic/schema.py similarity index 87% rename from superschema/schema.py rename to django2pydantic/schema.py index b7ae3fa..3751118 100644 --- a/superschema/schema.py +++ b/django2pydantic/schema.py @@ -6,17 +6,17 @@ from pydantic import BaseModel, ValidationInfo, model_validator from pydantic.functional_validators import ModelWrapValidatorHandler -from superschema.base import SuperSchemaResolver -from superschema.getter import DjangoGetter -from superschema.types import ModelFields +from django2pydantic.base import SuperSchemaResolver +from django2pydantic.getter import DjangoGetter +from django2pydantic.types import ModelFields S = TypeVar("S", bound=BaseModel) DictStrAny = dict[str, Any] -class SuperSchema(BaseModel, metaclass=SuperSchemaResolver): - """SuperSchema class.""" +class django2pydantic(BaseModel, metaclass=SuperSchemaResolver): + """django2pydantic class.""" # model_config = ConfigDict(from_attributes=True) diff --git a/superschema/types.py b/django2pydantic/types.py similarity index 95% rename from superschema/types.py rename to django2pydantic/types.py index 9c6a471..2180cea 100644 --- a/superschema/types.py +++ b/django2pydantic/types.py @@ -1,4 +1,4 @@ -"""Public types for superschema.""" +"""Public types for django2pydantic.""" from typing import TypedDict, Union, override diff --git a/examples.ipynb b/examples.ipynb index 9491bb9..d81e64a 100644 --- a/examples.ipynb +++ b/examples.ipynb @@ -1,384 +1,384 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lets define some example Django models to work with:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import django\n", - "\n", - "os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tests.settings')\n", - "\n", - "# Setup Django\n", - "django.setup()\n", - "\n", - "from django.contrib.auth.models import User\n", - "from django.db import models\n", - "\n", - "\n", - "class Author(models.Model):\n", - " name = models.CharField(max_length=100)\n", - " birth_date = models.DateField()\n", - "\n", - " class Meta:\n", - " app_label = \"tests\"\n", - "\n", - "class Publisher(models.Model):\n", - " name = models.CharField(max_length=100)\n", - " address = models.TextField(help_text=\"Publisher's official address\")\n", - "\n", - " class Meta:\n", - " app_label = \"tests\"\n", - "\n", - "\n", - "class Book(models.Model):\n", - " title = models.CharField(max_length=200)\n", - " isbn = models.CharField(max_length=13, unique=True)\n", - " publication_date = models.DateField()\n", - " authors = models.ManyToManyField(Author) # Many-to-Many relationship\n", - " publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE) # Foreign Key relationship\n", - "\n", - " class Meta:\n", - " app_label = \"tests\"\n", - " default_related_name = 'books'\n", - "\n", - "\n", - "class Library(models.Model):\n", - " name = models.CharField(max_length=100)\n", - " address = models.TextField()\n", - "\n", - " class Meta:\n", - " app_label = \"tests\"\n", - "\n", - "\n", - "class BookCopy(models.Model):\n", - " book = models.ForeignKey(Book, on_delete=models.CASCADE) # Foreign Key relationship\n", - " library = models.ForeignKey(Library, on_delete=models.CASCADE) # Foreign Key relationship\n", - " inventory_number = models.CharField(max_length=20, unique=True)\n", - "\n", - " class Meta:\n", - " app_label = \"tests\"\n", - " default_related_name = \"book_copies\"\n", - "\n", - "\n", - "class Borrowing(models.Model):\n", - " user = models.ForeignKey(User, on_delete=models.CASCADE) # Foreign Key relationship\n", - " book_copy = models.ForeignKey(BookCopy, on_delete=models.CASCADE) # Foreign Key relationship\n", - " borrow_date = models.DateField()\n", - " return_date = models.DateField(null=True, blank=True)\n", - "\n", - " class Meta:\n", - " app_label = \"tests\"\n", - " default_related_name = 'borrowings'\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now lets do some testing:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
{\n",
-       "  \"$defs\": {\n",
-       "    \"None_authors\": {\n",
-       "      \"properties\": {\n",
-       "        \"name\": {\n",
-       "          \"description\": \"Name\",\n",
-       "          \"maxLength\": 100,\n",
-       "          \"title\": \"Name\",\n",
-       "          \"type\": \"string\"\n",
-       "        }\n",
-       "      },\n",
-       "      \"required\": [\n",
-       "        \"name\"\n",
-       "      ],\n",
-       "      \"title\": \"None_authors\",\n",
-       "      \"type\": \"object\"\n",
-       "    },\n",
-       "    \"None_book_copies\": {\n",
-       "      \"properties\": {\n",
-       "        \"library\": {\n",
-       "          \"description\": \"Library\",\n",
-       "          \"title\": \"Library\",\n",
-       "          \"type\": \"integer\"\n",
-       "        }\n",
-       "      },\n",
-       "      \"required\": [\n",
-       "        \"library\"\n",
-       "      ],\n",
-       "      \"title\": \"None_book_copies\",\n",
-       "      \"type\": \"object\"\n",
-       "    },\n",
-       "    \"None_publisher\": {\n",
-       "      \"properties\": {\n",
-       "        \"name\": {\n",
-       "          \"description\": \"Name\",\n",
-       "          \"maxLength\": 100,\n",
-       "          \"title\": \"Name\",\n",
-       "          \"type\": \"string\"\n",
-       "        }\n",
-       "      },\n",
-       "      \"required\": [\n",
-       "        \"name\"\n",
-       "      ],\n",
-       "      \"title\": \"None_publisher\",\n",
-       "      \"type\": \"object\"\n",
-       "    }\n",
-       "  },\n",
-       "  \"properties\": {\n",
-       "    \"title\": {\n",
-       "      \"description\": \"Title\",\n",
-       "      \"maxLength\": 200,\n",
-       "      \"title\": \"Title\",\n",
-       "      \"type\": \"string\"\n",
-       "    },\n",
-       "    \"isbn\": {\n",
-       "      \"description\": \"Isbn\",\n",
-       "      \"maxLength\": 13,\n",
-       "      \"title\": \"Isbn\",\n",
-       "      \"type\": \"string\"\n",
-       "    },\n",
-       "    \"publication_date\": {\n",
-       "      \"description\": \"Publication Date\",\n",
-       "      \"format\": \"date\",\n",
-       "      \"title\": \"Publication Date\",\n",
-       "      \"type\": \"string\"\n",
-       "    },\n",
-       "    \"authors\": {\n",
-       "      \"anyOf\": [\n",
-       "        {\n",
-       "          \"items\": {\n",
-       "            \"$ref\": \"#/$defs/None_authors\"\n",
-       "          },\n",
-       "          \"type\": \"array\"\n",
-       "        },\n",
-       "        {\n",
-       "          \"type\": \"null\"\n",
-       "        }\n",
-       "      ],\n",
-       "      \"default\": null,\n",
-       "      \"description\": \"authors\",\n",
-       "      \"title\": \"authors\"\n",
-       "    },\n",
-       "    \"publisher\": {\n",
-       "      \"$ref\": \"#/$defs/None_publisher\",\n",
-       "      \"description\": \"publisher\",\n",
-       "      \"title\": \"publisher\"\n",
-       "    },\n",
-       "    \"book_copies\": {\n",
-       "      \"anyOf\": [\n",
-       "        {\n",
-       "          \"items\": {\n",
-       "            \"$ref\": \"#/$defs/None_book_copies\"\n",
-       "          },\n",
-       "          \"type\": \"array\"\n",
-       "        },\n",
-       "        {\n",
-       "          \"type\": \"null\"\n",
-       "        }\n",
-       "      ],\n",
-       "      \"default\": null,\n",
-       "      \"description\": \"book_copies\",\n",
-       "      \"title\": \"book_copies\"\n",
-       "    }\n",
-       "  },\n",
-       "  \"required\": [\n",
-       "    \"title\",\n",
-       "    \"isbn\",\n",
-       "    \"publication_date\",\n",
-       "    \"publisher\"\n",
-       "  ],\n",
-       "  \"title\": \"BookSchema\",\n",
-       "  \"type\": \"object\"\n",
-       "}\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"$defs\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"None_authors\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"properties\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"name\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Name\"\u001b[0m,\n", - " \u001b[1;34m\"maxLength\"\u001b[0m: \u001b[1;36m100\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Name\"\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"string\"\u001b[0m\n", - " \u001b[1m}\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"required\"\u001b[0m: \u001b[1m[\u001b[0m\n", - " \u001b[32m\"name\"\u001b[0m\n", - " \u001b[1m]\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"None_authors\"\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"object\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"None_book_copies\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"properties\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"library\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Library\"\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Library\"\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"integer\"\u001b[0m\n", - " \u001b[1m}\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"required\"\u001b[0m: \u001b[1m[\u001b[0m\n", - " \u001b[32m\"library\"\u001b[0m\n", - " \u001b[1m]\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"None_book_copies\"\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"object\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"None_publisher\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"properties\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"name\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Name\"\u001b[0m,\n", - " \u001b[1;34m\"maxLength\"\u001b[0m: \u001b[1;36m100\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Name\"\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"string\"\u001b[0m\n", - " \u001b[1m}\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"required\"\u001b[0m: \u001b[1m[\u001b[0m\n", - " \u001b[32m\"name\"\u001b[0m\n", - " \u001b[1m]\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"None_publisher\"\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"object\"\u001b[0m\n", - " \u001b[1m}\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"properties\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Title\"\u001b[0m,\n", - " \u001b[1;34m\"maxLength\"\u001b[0m: \u001b[1;36m200\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Title\"\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"string\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"isbn\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Isbn\"\u001b[0m,\n", - " \u001b[1;34m\"maxLength\"\u001b[0m: \u001b[1;36m13\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Isbn\"\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"string\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"publication_date\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Publication Date\"\u001b[0m,\n", - " \u001b[1;34m\"format\"\u001b[0m: \u001b[32m\"date\"\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Publication Date\"\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"string\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"authors\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"anyOf\"\u001b[0m: \u001b[1m[\u001b[0m\n", - " \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"items\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"$ref\"\u001b[0m: \u001b[32m\"#/$defs/None_authors\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"array\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"null\"\u001b[0m\n", - " \u001b[1m}\u001b[0m\n", - " \u001b[1m]\u001b[0m,\n", - " \u001b[1;34m\"default\"\u001b[0m: \u001b[3;35mnull\u001b[0m,\n", - " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"authors\"\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"authors\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"publisher\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"$ref\"\u001b[0m: \u001b[32m\"#/$defs/None_publisher\"\u001b[0m,\n", - " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"publisher\"\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"publisher\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"book_copies\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"anyOf\"\u001b[0m: \u001b[1m[\u001b[0m\n", - " \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"items\"\u001b[0m: \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"$ref\"\u001b[0m: \u001b[32m\"#/$defs/None_book_copies\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"array\"\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1m{\u001b[0m\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"null\"\u001b[0m\n", - " \u001b[1m}\u001b[0m\n", - " \u001b[1m]\u001b[0m,\n", - " \u001b[1;34m\"default\"\u001b[0m: \u001b[3;35mnull\u001b[0m,\n", - " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"book_copies\"\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"book_copies\"\u001b[0m\n", - " \u001b[1m}\u001b[0m\n", - " \u001b[1m}\u001b[0m,\n", - " \u001b[1;34m\"required\"\u001b[0m: \u001b[1m[\u001b[0m\n", - " \u001b[32m\"title\"\u001b[0m,\n", - " \u001b[32m\"isbn\"\u001b[0m,\n", - " \u001b[32m\"publication_date\"\u001b[0m,\n", - " \u001b[32m\"publisher\"\u001b[0m\n", - " \u001b[1m]\u001b[0m,\n", - " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"BookSchema\"\u001b[0m,\n", - " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"object\"\u001b[0m\n", - "\u001b[1m}\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from typing import ClassVar\n", - "\n", - "from superschema.schema import SuperSchema\n", - "from superschema.types import Infer, ModelFields\n", - "from rich import print_json\n", - "\n", - "class BookSchema(SuperSchema):\n", - " \"\"\"Book schema example with nested fields.\"\"\"\n", - "\n", - " class Meta(SuperSchema.Meta):\n", - " \"\"\"Here we define the model and the fields we want to infer.\"\"\"\n", - "\n", - " model = Book\n", - " fields: ClassVar[ModelFields] = {\n", - " \"title\": Infer,\n", - " \"isbn\": Infer,\n", - " \"publication_date\": Infer,\n", - " \"authors\": {\"name\": Infer},\n", - " \"publisher\": {\"name\": Infer},\n", - " \"book_copies\": {\"library\": Infer}, # note: here we use a reverse relation\n", - " }\n", - "\n", - "print_json(data=BookSchema.model_json_schema())\n", - "\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.7" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets define some example Django models to work with:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import django\n", + "\n", + "os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tests.settings')\n", + "\n", + "# Setup Django\n", + "django.setup()\n", + "\n", + "from django.contrib.auth.models import User\n", + "from django.db import models\n", + "\n", + "\n", + "class Author(models.Model):\n", + " name = models.CharField(max_length=100)\n", + " birth_date = models.DateField()\n", + "\n", + " class Meta:\n", + " app_label = \"tests\"\n", + "\n", + "class Publisher(models.Model):\n", + " name = models.CharField(max_length=100)\n", + " address = models.TextField(help_text=\"Publisher's official address\")\n", + "\n", + " class Meta:\n", + " app_label = \"tests\"\n", + "\n", + "\n", + "class Book(models.Model):\n", + " title = models.CharField(max_length=200)\n", + " isbn = models.CharField(max_length=13, unique=True)\n", + " publication_date = models.DateField()\n", + " authors = models.ManyToManyField(Author) # Many-to-Many relationship\n", + " publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE) # Foreign Key relationship\n", + "\n", + " class Meta:\n", + " app_label = \"tests\"\n", + " default_related_name = 'books'\n", + "\n", + "\n", + "class Library(models.Model):\n", + " name = models.CharField(max_length=100)\n", + " address = models.TextField()\n", + "\n", + " class Meta:\n", + " app_label = \"tests\"\n", + "\n", + "\n", + "class BookCopy(models.Model):\n", + " book = models.ForeignKey(Book, on_delete=models.CASCADE) # Foreign Key relationship\n", + " library = models.ForeignKey(Library, on_delete=models.CASCADE) # Foreign Key relationship\n", + " inventory_number = models.CharField(max_length=20, unique=True)\n", + "\n", + " class Meta:\n", + " app_label = \"tests\"\n", + " default_related_name = \"book_copies\"\n", + "\n", + "\n", + "class Borrowing(models.Model):\n", + " user = models.ForeignKey(User, on_delete=models.CASCADE) # Foreign Key relationship\n", + " book_copy = models.ForeignKey(BookCopy, on_delete=models.CASCADE) # Foreign Key relationship\n", + " borrow_date = models.DateField()\n", + " return_date = models.DateField(null=True, blank=True)\n", + "\n", + " class Meta:\n", + " app_label = \"tests\"\n", + " default_related_name = 'borrowings'\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now lets do some testing:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
{\n",
+                            "  \"$defs\": {\n",
+                            "    \"None_authors\": {\n",
+                            "      \"properties\": {\n",
+                            "        \"name\": {\n",
+                            "          \"description\": \"Name\",\n",
+                            "          \"maxLength\": 100,\n",
+                            "          \"title\": \"Name\",\n",
+                            "          \"type\": \"string\"\n",
+                            "        }\n",
+                            "      },\n",
+                            "      \"required\": [\n",
+                            "        \"name\"\n",
+                            "      ],\n",
+                            "      \"title\": \"None_authors\",\n",
+                            "      \"type\": \"object\"\n",
+                            "    },\n",
+                            "    \"None_book_copies\": {\n",
+                            "      \"properties\": {\n",
+                            "        \"library\": {\n",
+                            "          \"description\": \"Library\",\n",
+                            "          \"title\": \"Library\",\n",
+                            "          \"type\": \"integer\"\n",
+                            "        }\n",
+                            "      },\n",
+                            "      \"required\": [\n",
+                            "        \"library\"\n",
+                            "      ],\n",
+                            "      \"title\": \"None_book_copies\",\n",
+                            "      \"type\": \"object\"\n",
+                            "    },\n",
+                            "    \"None_publisher\": {\n",
+                            "      \"properties\": {\n",
+                            "        \"name\": {\n",
+                            "          \"description\": \"Name\",\n",
+                            "          \"maxLength\": 100,\n",
+                            "          \"title\": \"Name\",\n",
+                            "          \"type\": \"string\"\n",
+                            "        }\n",
+                            "      },\n",
+                            "      \"required\": [\n",
+                            "        \"name\"\n",
+                            "      ],\n",
+                            "      \"title\": \"None_publisher\",\n",
+                            "      \"type\": \"object\"\n",
+                            "    }\n",
+                            "  },\n",
+                            "  \"properties\": {\n",
+                            "    \"title\": {\n",
+                            "      \"description\": \"Title\",\n",
+                            "      \"maxLength\": 200,\n",
+                            "      \"title\": \"Title\",\n",
+                            "      \"type\": \"string\"\n",
+                            "    },\n",
+                            "    \"isbn\": {\n",
+                            "      \"description\": \"Isbn\",\n",
+                            "      \"maxLength\": 13,\n",
+                            "      \"title\": \"Isbn\",\n",
+                            "      \"type\": \"string\"\n",
+                            "    },\n",
+                            "    \"publication_date\": {\n",
+                            "      \"description\": \"Publication Date\",\n",
+                            "      \"format\": \"date\",\n",
+                            "      \"title\": \"Publication Date\",\n",
+                            "      \"type\": \"string\"\n",
+                            "    },\n",
+                            "    \"authors\": {\n",
+                            "      \"anyOf\": [\n",
+                            "        {\n",
+                            "          \"items\": {\n",
+                            "            \"$ref\": \"#/$defs/None_authors\"\n",
+                            "          },\n",
+                            "          \"type\": \"array\"\n",
+                            "        },\n",
+                            "        {\n",
+                            "          \"type\": \"null\"\n",
+                            "        }\n",
+                            "      ],\n",
+                            "      \"default\": null,\n",
+                            "      \"description\": \"authors\",\n",
+                            "      \"title\": \"authors\"\n",
+                            "    },\n",
+                            "    \"publisher\": {\n",
+                            "      \"$ref\": \"#/$defs/None_publisher\",\n",
+                            "      \"description\": \"publisher\",\n",
+                            "      \"title\": \"publisher\"\n",
+                            "    },\n",
+                            "    \"book_copies\": {\n",
+                            "      \"anyOf\": [\n",
+                            "        {\n",
+                            "          \"items\": {\n",
+                            "            \"$ref\": \"#/$defs/None_book_copies\"\n",
+                            "          },\n",
+                            "          \"type\": \"array\"\n",
+                            "        },\n",
+                            "        {\n",
+                            "          \"type\": \"null\"\n",
+                            "        }\n",
+                            "      ],\n",
+                            "      \"default\": null,\n",
+                            "      \"description\": \"book_copies\",\n",
+                            "      \"title\": \"book_copies\"\n",
+                            "    }\n",
+                            "  },\n",
+                            "  \"required\": [\n",
+                            "    \"title\",\n",
+                            "    \"isbn\",\n",
+                            "    \"publication_date\",\n",
+                            "    \"publisher\"\n",
+                            "  ],\n",
+                            "  \"title\": \"BookSchema\",\n",
+                            "  \"type\": \"object\"\n",
+                            "}\n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"$defs\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"None_authors\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"properties\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"name\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Name\"\u001b[0m,\n", + " \u001b[1;34m\"maxLength\"\u001b[0m: \u001b[1;36m100\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Name\"\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"string\"\u001b[0m\n", + " \u001b[1m}\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"required\"\u001b[0m: \u001b[1m[\u001b[0m\n", + " \u001b[32m\"name\"\u001b[0m\n", + " \u001b[1m]\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"None_authors\"\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"object\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"None_book_copies\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"properties\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"library\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Library\"\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Library\"\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"integer\"\u001b[0m\n", + " \u001b[1m}\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"required\"\u001b[0m: \u001b[1m[\u001b[0m\n", + " \u001b[32m\"library\"\u001b[0m\n", + " \u001b[1m]\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"None_book_copies\"\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"object\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"None_publisher\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"properties\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"name\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Name\"\u001b[0m,\n", + " \u001b[1;34m\"maxLength\"\u001b[0m: \u001b[1;36m100\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Name\"\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"string\"\u001b[0m\n", + " \u001b[1m}\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"required\"\u001b[0m: \u001b[1m[\u001b[0m\n", + " \u001b[32m\"name\"\u001b[0m\n", + " \u001b[1m]\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"None_publisher\"\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"object\"\u001b[0m\n", + " \u001b[1m}\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"properties\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Title\"\u001b[0m,\n", + " \u001b[1;34m\"maxLength\"\u001b[0m: \u001b[1;36m200\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Title\"\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"string\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"isbn\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Isbn\"\u001b[0m,\n", + " \u001b[1;34m\"maxLength\"\u001b[0m: \u001b[1;36m13\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Isbn\"\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"string\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"publication_date\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"Publication Date\"\u001b[0m,\n", + " \u001b[1;34m\"format\"\u001b[0m: \u001b[32m\"date\"\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"Publication Date\"\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"string\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"authors\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"anyOf\"\u001b[0m: \u001b[1m[\u001b[0m\n", + " \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"items\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"$ref\"\u001b[0m: \u001b[32m\"#/$defs/None_authors\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"array\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"null\"\u001b[0m\n", + " \u001b[1m}\u001b[0m\n", + " \u001b[1m]\u001b[0m,\n", + " \u001b[1;34m\"default\"\u001b[0m: \u001b[3;35mnull\u001b[0m,\n", + " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"authors\"\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"authors\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"publisher\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"$ref\"\u001b[0m: \u001b[32m\"#/$defs/None_publisher\"\u001b[0m,\n", + " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"publisher\"\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"publisher\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"book_copies\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"anyOf\"\u001b[0m: \u001b[1m[\u001b[0m\n", + " \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"items\"\u001b[0m: \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"$ref\"\u001b[0m: \u001b[32m\"#/$defs/None_book_copies\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"array\"\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1m{\u001b[0m\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"null\"\u001b[0m\n", + " \u001b[1m}\u001b[0m\n", + " \u001b[1m]\u001b[0m,\n", + " \u001b[1;34m\"default\"\u001b[0m: \u001b[3;35mnull\u001b[0m,\n", + " \u001b[1;34m\"description\"\u001b[0m: \u001b[32m\"book_copies\"\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"book_copies\"\u001b[0m\n", + " \u001b[1m}\u001b[0m\n", + " \u001b[1m}\u001b[0m,\n", + " \u001b[1;34m\"required\"\u001b[0m: \u001b[1m[\u001b[0m\n", + " \u001b[32m\"title\"\u001b[0m,\n", + " \u001b[32m\"isbn\"\u001b[0m,\n", + " \u001b[32m\"publication_date\"\u001b[0m,\n", + " \u001b[32m\"publisher\"\u001b[0m\n", + " \u001b[1m]\u001b[0m,\n", + " \u001b[1;34m\"title\"\u001b[0m: \u001b[32m\"BookSchema\"\u001b[0m,\n", + " \u001b[1;34m\"type\"\u001b[0m: \u001b[32m\"object\"\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from typing import ClassVar\n", + "\n", + "from django2pydantic.schema import django2pydantic\n", + "from django2pydantic.types import Infer, ModelFields\n", + "from rich import print_json\n", + "\n", + "class BookSchema(django2pydantic):\n", + " \"\"\"Book schema example with nested fields.\"\"\"\n", + "\n", + " class Meta(django2pydantic.Meta):\n", + " \"\"\"Here we define the model and the fields we want to infer.\"\"\"\n", + "\n", + " model = Book\n", + " fields: ClassVar[ModelFields] = {\n", + " \"title\": Infer,\n", + " \"isbn\": Infer,\n", + " \"publication_date\": Infer,\n", + " \"authors\": {\"name\": Infer},\n", + " \"publisher\": {\"name\": Infer},\n", + " \"book_copies\": {\"library\": Infer}, # note: here we use a reverse relation\n", + " }\n", + "\n", + "print_json(data=BookSchema.model_json_schema())\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/examples.py b/examples.py index 4acee10..a3ebe53 100644 --- a/examples.py +++ b/examples.py @@ -123,14 +123,14 @@ class Meta: from rich import print_json -from superschema.schema import SuperSchema -from superschema.types import Infer, ModelFields +from django2pydantic.schema import django2pydantic +from django2pydantic.types import Infer, ModelFields -class BookSchema(SuperSchema): +class BookSchema(django2pydantic): """Book schema example with nested fields.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Here we define the model and the fields we want to infer.""" model = Book diff --git a/noxfile.py b/noxfile.py index 73d392e..0ea8b73 100644 --- a/noxfile.py +++ b/noxfile.py @@ -9,41 +9,74 @@ @nox.session(python=["3.12", "3.13"], reuse_venv=True) def tests(session: nox.Session) -> None: """Run the test suite.""" - session.run("poetry", "install", "--only=test", external=True) session.run("pytest") @nox.session -def lint(session: nox.Session) -> None: +def lint_with_flake8(session: nox.Session) -> None: + """Lint the codebase with flake8.""" session.install("flake8") session.run("flake8") +@nox.session +def lint_with_ruff(session: nox.Session) -> None: + """Lint the codebase with ruff.""" + session.install("ruff") + session.run("ruff") + + +@nox.session +def lint_with_pylint(session: nox.Session) -> None: + """Lint the codebase with pylint.""" + session.install("pylint") + session.run("pylint") + + @nox.session def type_check_with_mypy(session: nox.Session) -> None: + """Type-check the codebase with mypy.""" session.install("mypy") session.run("mypy") @nox.session def type_check_with_pyright(session: nox.Session) -> None: + """Type-check the codebase with pyright.""" session.install("pyright") session.run("pyright") @nox.session def type_check_with_pytype(session: nox.Session) -> None: + """Type-check the codebase with pytype.""" session.install("pytype") session.run("pytype") @nox.session def type_check_with_pyre(session: nox.Session) -> None: + """Type-check the codebase with pyre.""" session.install("pyre-check") session.run("pyre") @nox.session def type_check_with_basedpyright(session: nox.Session) -> None: + """Type-check the codebase with basedpyright.""" session.install("basedpyright") session.run("basedpyright") + + +@nox.session +def lint_imports(session: nox.Session) -> None: + """Lint the codebase with importlinter.""" + session.run("lint-imports") + + +@nox.session +def noop(session: nox.Session) -> None: + """No operation. + + Dummy one just to do nothing. + """ diff --git a/playground.py b/playground.py deleted file mode 100644 index 26069af..0000000 --- a/playground.py +++ /dev/null @@ -1,64 +0,0 @@ -"""Example of using superschema.schema.ApiFields.""" - -from ast import TypeVar -from typing import Any, TypedDict, Union, reveal_type - -from pydantic import BaseModel, Field - -from superschema.types import Infer, InferExcept - -SubClassOfPydanticBaseModel_co = TypeVar( - "SubClassOfPydanticBaseModel_co", - bound=BaseModel, - covariant=True, -) - - -class ApiSchema: - def __new__(cls, *args, **kwargs) -> BaseModel: - """Create a new ApiSchema class.""" - print("args", args) - print("kwargs", kwargs) - - class SomeModel(BaseModel): - id: int - - return SomeModel() - - -FieldType = dict[ - str, - Union[ - InferExcept, - type[Infer], - Any, - list[type[BaseModel]], - type[BaseModel], - "FieldType", - ], -] - -create_fields: FieldType = { - "id": InferExcept(title="some name"), - "name": Infer, - "description": Field(None, title="some name"), - "organization": {"id": Infer, "name": Infer}, - "applications": [BaseModel], - "account": BaseModel, -} - -reveal_type(create_schema) - -In python why does this not work? - -class Model(TypedDict): - attr: str - - -m: Model = {"attr": "value"} - -t: dict[str, Any] = m - -Incompatible types in assignment (expression has type "Model", variable has type "dict[str, Any]") Mypy assignment -Type "Model" is not assignable to declared type "dict[str, Any]" - "Model" is not assignable to "dict[str, Any]" Pylance reportAssignmentType \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index f5f9e58..99d349c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,45 +1,50 @@ [project] -name = "superschema" - -[project.urls] -Homepage = "https://example.com" -Documentation = "https://readthedocs.org" -Repository = "https://github.com/me/spam.git" -Issues = "https://github.com/me/spam/issues" -Changelog = "https://github.com/me/spam/blob/master/CHANGELOG.md" - -[tool.poetry] -name = "superschema" +name = "django2pydantic" version = "0.1.0" description = "Converting Django models to Pydantic models" +readme = "README.md" +requires-python = "==3.12.*" authors = [ - "Jukka Hassinen " + {name = "Jukka Hassinen", email = "jukka.hassinen@gmail.com"} ] license = "MIT" -readme = "README.md" keywords = [ "django", "pydantic", "models", - "schema" + "schema", + "converter", ] -repository = "https://github.com/..." -homepage = "https://..." classifiers = [ - "Development Status :: 4 - Beta", - "Environment :: Console", - "Framework :: Flake8", - "Intended Audience :: Developers", - "Operating System :: OS Independent", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Software Development :: Quality Assurance", - "Typing :: Typed", + "License :: OSI Approved :: MIT License", + "Development Status :: 2 - Pre-Alpha", + "Environment :: Console", + "Programming Language :: Python :: 3.12", + "Framework :: Django :: 5.1", + "Framework :: Pydantic :: 2", + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "Topic :: Software Development :: Libraries :: Python Modules", + "Typing :: Typed", ] + +[project.urls] +Homepage = "https://github.com/NextGenContributions/django2pydantic" +Documentation = "https://github.com/NextGenContributions/django2pydantic/blob/main/README.md" +Repository = "https://github.com/NextGenContributions/django2pydantic.git" +Issues = "https://github.com/NextGenContributions/django2pydantic/issues" +Changelog = "https://github.com/NextGenContributions/django2pydantic/blob/main/CHANGELOG.md" +ReleaseNotes = "https://github.com/NextGenContributions/django2pydantic/releases" +Funding = "https://github.com/NextGenContributions/django2pydantic/blob/main/.github/FUNDING.yml" + [build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.build.targets.sdist] +only-include = ["django2pydantic"] [dependency-groups] dev = [ @@ -73,4 +78,85 @@ dev = [ "typeguard>=4.4.1", "wemake-python-styleguide>=0.19.2", "django-stubs-ext>=5.1.1", + "python-semantic-release>=9.14.0", + "semgrep>=1.85.0", +] + +[tool.semantic_release] +assets = [] +build_command_env = [] +commit_message = "{version}\n\nAutomatically generated by python-semantic-release" +commit_parser = "angular" +logging_use_named_masks = false +major_on_zero = true +allow_zero_version = true +no_git_verify = false +tag_format = "v{version}" +version_toml = [ + "pyproject.toml:project.version", +] +version_variables = [ + "django2pydantic/__init__.py:__version__", ] + +[tool.semantic_release.branches.main] +match = "(main|master)" +prerelease_token = "rc" +prerelease = false + +[tool.semantic_release.changelog] +exclude_commit_patterns = [ + '''chore(?:\([^)]*?\))?: .+''', + '''ci(?:\([^)]*?\))?: .+''', + '''refactor(?:\([^)]*?\))?: .+''', + '''style(?:\([^)]*?\))?: .+''', + '''test(?:\([^)]*?\))?: .+''', + '''build\((?!deps\): .+)''', + '''Merged? .*''', + '''Initial Commit.*''', + # Old semantic-release version commits + '''^\d+\.\d+\.\d+''', +] +mode = "init" +insertion_flag = "" +template_dir = "templates" + +[tool.semantic_release.changelog.default_templates] +changelog_file = "CHANGELOG.md" +output_format = "md" +mask_initial_release = false + +[tool.semantic_release.changelog.environment] +block_start_string = "{%" +block_end_string = "%}" +variable_start_string = "{{" +variable_end_string = "}}" +comment_start_string = "{#" +comment_end_string = "#}" +trim_blocks = false +lstrip_blocks = false +newline_sequence = "\n" +keep_trailing_newline = false +extensions = [] +autoescape = false + +[tool.semantic_release.commit_author] +env = "GIT_COMMIT_AUTHOR" +default = "semantic-release " + +[tool.semantic_release.commit_parser_options] +minor_tags = ["feat"] +patch_tags = ["fix", "perf"] +allowed_tags = ["feat", "fix", "perf", "build", "chore", "ci", "docs", "style", "refactor", "test"] +default_bump_level = 0 + +[tool.semantic_release.remote] +name = "origin" +type = "github" +ignore_token_for_push = false +insecure = false + +[tool.semantic_release.publish] +dist_glob_patterns = ["dist/*"] +upload_to_vcs_release = true + diff --git a/pytest-with-beartype.py b/pytest-with-beartype.py index b7da420..438f5ff 100755 --- a/pytest-with-beartype.py +++ b/pytest-with-beartype.py @@ -25,7 +25,7 @@ from beartype import BeartypeConf from beartype.claw import beartype_package -type_check_instrumented_packages: list[str] = ["superschema", "tests"] +type_check_instrumented_packages: list[str] = ["django2pydantic", "tests"] for package in type_check_instrumented_packages: beartype_package(package_name=package, conf=BeartypeConf()) diff --git a/pytest-with-typeguard.py b/pytest-with-typeguard.py index 34318ec..f2f9bf7 100755 --- a/pytest-with-typeguard.py +++ b/pytest-with-typeguard.py @@ -22,7 +22,7 @@ import pytest from typeguard import install_import_hook -type_check_instrumented_packages: list[str] = ["superschema", "tests"] +type_check_instrumented_packages: list[str] = ["django2pydantic", "tests"] install_import_hook(packages=type_check_instrumented_packages) diff --git a/pytest.ini b/pytest.ini index 0454ae4..6e73715 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,6 +1,6 @@ [pytest] #addopts = -# --cov=superschema +# --cov=django2pydantic # --cov=tests # --cov-report=term-missing testpaths = tests \ No newline at end of file diff --git a/superschema/__init__.py b/superschema/__init__.py deleted file mode 100644 index 44ef5f8..0000000 --- a/superschema/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -"""Super schema packages.""" - -from superschema.schema import SuperSchema -from superschema.types import Infer, InferExcept, MetaFields, ModelFields - -__all__ = ["Infer", "InferExcept", "ModelFields", "MetaFields", "SuperSchema"] diff --git a/tests/test_basics.py b/tests/test_basics.py index 028932a..f486ced 100644 --- a/tests/test_basics.py +++ b/tests/test_basics.py @@ -10,8 +10,8 @@ from hypothesis import given from hypothesis import strategies as st -from superschema.schema import SuperSchema -from superschema.types import Infer, ModelFields +from django2pydantic.schema import django2pydantic +from django2pydantic.types import Infer, ModelFields from tests.utils import debug_json, get_openapi_schema_from_field FieldClass = type[models.Field[Any, Any]] @@ -246,10 +246,10 @@ class ModelA(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=100) - class SchemaA(SuperSchema): + class SchemaA(django2pydantic): """SchemaA class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelA diff --git a/tests/test_error_messages.py b/tests/test_error_messages.py index 5e00b54..ce77a14 100644 --- a/tests/test_error_messages.py +++ b/tests/test_error_messages.py @@ -5,8 +5,8 @@ import pytest from django.db import models -from superschema.schema import SuperSchema -from superschema.types import Infer, ModelFields +from django2pydantic.schema import django2pydantic +from django2pydantic.types import Infer, ModelFields def test_defing_a_non_existing_field_raises_exception() -> None: @@ -16,10 +16,10 @@ def test_defing_a_non_existing_field_raises_exception() -> None: class ModelA(models.Model): # noqa: DJ008 id = models.AutoField(primary_key=True) - class SchemaA(SuperSchema): + class SchemaA(django2pydantic): """SchemaA class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelA diff --git a/tests/test_id_fields.py b/tests/test_id_fields.py index 756187f..02f827f 100644 --- a/tests/test_id_fields.py +++ b/tests/test_id_fields.py @@ -5,8 +5,8 @@ from django.db import models from pydantic.v1.fields import ModelField -from superschema.schema import SuperSchema -from superschema.types import Infer +from django2pydantic.schema import django2pydantic +from django2pydantic.types import Infer from tests.utils import debug_json @@ -16,10 +16,10 @@ def test_implicit_id_fields_works() -> None: class ModelA(models.Model): name = models.CharField(max_length=100) - class SchemaA(SuperSchema): + class SchemaA(django2pydantic): """SchemaA class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelA @@ -41,10 +41,10 @@ class ModelA(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=100) - class SchemaA(SuperSchema): + class SchemaA(django2pydantic): """SchemaA class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelA diff --git a/tests/test_property_method_fields.py b/tests/test_property_method_fields.py index 8c150b8..05ca086 100644 --- a/tests/test_property_method_fields.py +++ b/tests/test_property_method_fields.py @@ -5,8 +5,8 @@ import pytest from django.db import models -from superschema.schema import SuperSchema -from superschema.types import Infer, ModelFields +from django2pydantic.schema import django2pydantic +from django2pydantic.types import Infer, ModelFields from tests.utils import add_property_method, debug_json, get_openapi_equivalent BasicTypes = [ @@ -35,10 +35,10 @@ class ModelA(models.Model): value="test", ) - class SchemaA(SuperSchema): + class SchemaA(django2pydantic): """SchemaA class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelA diff --git a/tests/test_relations_are_supported.py b/tests/test_relations_are_supported.py index df00a78..4849909 100644 --- a/tests/test_relations_are_supported.py +++ b/tests/test_relations_are_supported.py @@ -3,8 +3,8 @@ from django.db import models -from superschema.schema import SuperSchema -from superschema.types import Infer, ModelFields +from django2pydantic.schema import django2pydantic +from django2pydantic.types import Infer, ModelFields from tests.utils import debug_json, django_model_factory, get_openapi_schema_from_field @@ -40,10 +40,10 @@ class ModelB(models.Model): name = models.CharField(max_length=100) rel_a = models.ForeignKey(ModelA, on_delete=models.CASCADE) - class SchemaB(SuperSchema): + class SchemaB(django2pydantic): """SchemaB class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelB @@ -75,10 +75,10 @@ class ModelB(models.Model): name = models.CharField(max_length=100) rel_a = models.ForeignKey(ModelA, on_delete=models.CASCADE, to_field="var") - class SchemaB(SuperSchema): + class SchemaB(django2pydantic): """SchemaB class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelB @@ -110,10 +110,10 @@ class ModelB(models.Model): name = models.CharField(max_length=100) rel_a = models.ManyToManyField(ModelA) - class SchemaB(SuperSchema): + class SchemaB(django2pydantic): """SchemaB class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelB @@ -151,10 +151,10 @@ class ModelB(models.Model): name = models.CharField(max_length=100) rel_a = models.OneToOneField(ModelA, on_delete=models.CASCADE) - class SchemaB(SuperSchema): + class SchemaB(django2pydantic): """SchemaB class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelB @@ -189,10 +189,10 @@ class ModelB(models.Model): class Meta: default_related_name = "rel_b" - class SchemaA(SuperSchema): + class SchemaA(django2pydantic): """SchemaA class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelB @@ -227,10 +227,10 @@ class ModelB(models.Model): class Meta: default_related_name = "rel_b" - class SchemaA(SuperSchema): + class SchemaA(django2pydantic): """SchemaA class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelA @@ -265,10 +265,10 @@ class ModelB(models.Model): class Meta: default_related_name = "rel_b" - class SchemaA(SuperSchema): + class SchemaA(django2pydantic): """SchemaA class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelB @@ -300,10 +300,10 @@ class ModelB(models.Model): name = models.CharField(max_length=100) rel_a = models.ForeignKey(ModelA, on_delete=models.CASCADE) - class SchemaB(SuperSchema): + class SchemaB(django2pydantic): """SchemaB class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelB @@ -327,10 +327,10 @@ class ModelA(models.Model): name = models.CharField(max_length=100) rel_a = models.ManyToManyField("self", symmetrical=True) - class SchemaA(SuperSchema): + class SchemaA(django2pydantic): """SchemaA class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelA @@ -362,10 +362,10 @@ class ModelB(models.Model): name = models.CharField(max_length=100) rel_a = models.ManyToManyField(ModelA) - class SchemaB(SuperSchema): + class SchemaB(django2pydantic): """SchemaB class.""" - class Meta(SuperSchema.Meta): + class Meta(django2pydantic.Meta): """Meta class.""" model = ModelB diff --git a/tests/utils.py b/tests/utils.py index 4fa9a72..8385e2c 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -9,8 +9,8 @@ from django.db import models from rich import print_json -from superschema.schema import SuperSchema -from superschema.types import Infer, MetaFields, ModelFields +from django2pydantic.schema import django2pydantic +from django2pydantic.types import Infer, MetaFields, ModelFields DjangoField = models.Field[Any, Any] @@ -55,7 +55,7 @@ def pydantic_schema_from_field(field: DjangoField) -> type[pydantic.BaseModel]: return type( "Schema", - (SuperSchema,), + (django2pydantic,), { "Meta": meta_class, }, diff --git a/uv.lock b/uv.lock index a11e3d5..0d57b5e 100644 --- a/uv.lock +++ b/uv.lock @@ -1,9 +1,5 @@ version = 1 -requires-python = ">=3.12" -resolution-markers = [ - "python_full_version < '3.13'", - "python_full_version >= '3.13'", -] +requires-python = "==3.12.*" [[package]] name = "annotated-types" @@ -97,14 +93,14 @@ wheels = [ [[package]] name = "basedpyright" -version = "1.21.0" +version = "1.21.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nodejs-wheel-binaries" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/91/d66f9ece468b3daa2f3d357304c816438be4595006928ea5639fb6b5139e/basedpyright-1.21.0.tar.gz", hash = "sha256:e3a9f5b89acc7f23d5a10d95ea6056b2247fcd15b8b248ad44c560c85c39d5e3", size = 20789741 } +sdist = { url = "https://files.pythonhosted.org/packages/7a/57/ea77a6bad60ad7cb7b457957968a93f62730629316301b7d48fc439cb87f/basedpyright-1.21.1.tar.gz", hash = "sha256:c27e5921768db2141360889978678152a685fe1c6ff95652b2157240a5fd575c", size = 20840717 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/f7/97af385e43208d600f892da1b8c94f35d4e9165d5c774013bb202617dd7d/basedpyright-1.21.0-py3-none-any.whl", hash = "sha256:48902c476d6301c556df6eeae9acf1e34b176b14f8702ad5c770f4e6a747018a", size = 11148428 }, + { url = "https://files.pythonhosted.org/packages/f6/94/06f6a4b34167e838b81e46e40d5acdb03cb56dd2c229319aff091f9f43cb/basedpyright-1.21.1-py3-none-any.whl", hash = "sha256:e4c30c84d5fe0f33ba2f7bd5b20019aa6f031ef4c5032705b4960dad52066667", size = 11173914 }, ] [[package]] @@ -116,6 +112,33 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/64/69/f6db6e4cb2fe2f887dead40b76caa91af4844cb647dd2c7223bb010aa416/beartype-0.19.0-py3-none-any.whl", hash = "sha256:33b2694eda0daf052eb2aff623ed9a8a586703bbf0a90bbc475a83bbf427f699", size = 1039760 }, ] +[[package]] +name = "boltons" +version = "21.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ad/1f/6c0608d86e0fc77c982a2923ece80eef85f091f2332fc13cbce41d70d502/boltons-21.0.0.tar.gz", hash = "sha256:65e70a79a731a7fe6e98592ecfb5ccf2115873d01dbc576079874629e5c90f13", size = 180201 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/a7/1a31561d10a089fcb46fe286766dd4e053a12f6e23b4fd1c26478aff2475/boltons-21.0.0-py2.py3-none-any.whl", hash = "sha256:b9bb7b58b2b420bbe11a6025fdef6d3e5edc9f76a42fb467afe7ca212ef9948b", size = 193723 }, +] + +[[package]] +name = "bracex" +version = "2.5.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/6c/57418c4404cd22fe6275b8301ca2b46a8cdaa8157938017a9ae0b3edf363/bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6", size = 26641 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/02/8db98cdc1a58e0abd6716d5e63244658e6e63513c65f469f34b6f1053fd0/bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6", size = 11558 }, +] + +[[package]] +name = "certifi" +version = "2024.8.30" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, +] + [[package]] name = "cffi" version = "1.17.1" @@ -136,17 +159,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/0b/4b7a70987abf9b8196845806198975b6aab4ce016632f817ad758a5aa056/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", size = 194445 }, + { url = "https://files.pythonhosted.org/packages/50/89/354cc56cf4dd2449715bc9a0f54f3aef3dc700d2d62d1fa5bbea53b13426/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", size = 125275 }, + { url = "https://files.pythonhosted.org/packages/fa/44/b730e2a2580110ced837ac083d8ad222343c96bb6b66e9e4e706e4d0b6df/charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", size = 119020 }, + { url = "https://files.pythonhosted.org/packages/9d/e4/9263b8240ed9472a2ae7ddc3e516e71ef46617fe40eaa51221ccd4ad9a27/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", size = 139128 }, + { url = "https://files.pythonhosted.org/packages/6b/e3/9f73e779315a54334240353eaea75854a9a690f3f580e4bd85d977cb2204/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", size = 149277 }, + { url = "https://files.pythonhosted.org/packages/1a/cf/f1f50c2f295312edb8a548d3fa56a5c923b146cd3f24114d5adb7e7be558/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", size = 142174 }, + { url = "https://files.pythonhosted.org/packages/16/92/92a76dc2ff3a12e69ba94e7e05168d37d0345fa08c87e1fe24d0c2a42223/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", size = 143838 }, + { url = "https://files.pythonhosted.org/packages/a4/01/2117ff2b1dfc61695daf2babe4a874bca328489afa85952440b59819e9d7/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", size = 146149 }, + { url = "https://files.pythonhosted.org/packages/f6/9b/93a332b8d25b347f6839ca0a61b7f0287b0930216994e8bf67a75d050255/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", size = 140043 }, + { url = "https://files.pythonhosted.org/packages/ab/f6/7ac4a01adcdecbc7a7587767c776d53d369b8b971382b91211489535acf0/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", size = 148229 }, + { url = "https://files.pythonhosted.org/packages/9d/be/5708ad18161dee7dc6a0f7e6cf3a88ea6279c3e8484844c0590e50e803ef/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", size = 151556 }, + { url = "https://files.pythonhosted.org/packages/5a/bb/3d8bc22bacb9eb89785e83e6723f9888265f3a0de3b9ce724d66bd49884e/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", size = 149772 }, + { url = "https://files.pythonhosted.org/packages/f7/fa/d3fc622de05a86f30beea5fc4e9ac46aead4731e73fd9055496732bcc0a4/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", size = 144800 }, + { url = "https://files.pythonhosted.org/packages/9a/65/bdb9bc496d7d190d725e96816e20e2ae3a6fa42a5cac99c3c3d6ff884118/charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", size = 94836 }, + { url = "https://files.pythonhosted.org/packages/3e/67/7b72b69d25b89c0b3cea583ee372c43aa24df15f0e0f8d3982c57804984b/charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", size = 102187 }, + { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 }, ] [[package]] @@ -161,6 +197,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, ] +[[package]] +name = "click-option-group" +version = "0.5.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/b8/91054601a2e05fd9060cb1baf56be5b24145817b059e078669e1099529c7/click-option-group-0.5.6.tar.gz", hash = "sha256:97d06703873518cc5038509443742b25069a3c7562d1ea72ff08bfadde1ce777", size = 16517 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/75/81ea958bc0f7e410257cb2a42531b93a7695a31930cde87192c010a52c50/click_option_group-0.5.6-py3-none-any.whl", hash = "sha256:38a26d963ee3ad93332ddf782f9259c5bdfe405e73408d943ef5e7d0c3767ec7", size = 12467 }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -196,40 +244,20 @@ wheels = [ [[package]] name = "coverage" -version = "7.6.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/12/3669b6382792783e92046730ad3327f53b2726f0603f4c311c4da4824222/coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73", size = 798716 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/e7/9291de916d084f41adddfd4b82246e68d61d6a75747f075f7e64628998d2/coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2", size = 207013 }, - { url = "https://files.pythonhosted.org/packages/27/03/932c2c5717a7fa80cd43c6a07d3177076d97b79f12f40f882f9916db0063/coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117", size = 207251 }, - { url = "https://files.pythonhosted.org/packages/d5/3f/0af47dcb9327f65a45455fbca846fe96eb57c153af46c4754a3ba678938a/coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613", size = 240268 }, - { url = "https://files.pythonhosted.org/packages/8a/3c/37a9d81bbd4b23bc7d46ca820e16174c613579c66342faa390a271d2e18b/coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27", size = 237298 }, - { url = "https://files.pythonhosted.org/packages/c0/70/6b0627e5bd68204ee580126ed3513140b2298995c1233bd67404b4e44d0e/coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52", size = 239367 }, - { url = "https://files.pythonhosted.org/packages/3c/eb/634d7dfab24ac3b790bebaf9da0f4a5352cbc125ce6a9d5c6cf4c6cae3c7/coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2", size = 238853 }, - { url = "https://files.pythonhosted.org/packages/d9/0d/8e3ed00f1266ef7472a4e33458f42e39492e01a64281084fb3043553d3f1/coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1", size = 237160 }, - { url = "https://files.pythonhosted.org/packages/ce/9c/4337f468ef0ab7a2e0887a9c9da0e58e2eada6fc6cbee637a4acd5dfd8a9/coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5", size = 238824 }, - { url = "https://files.pythonhosted.org/packages/5e/09/3e94912b8dd37251377bb02727a33a67ee96b84bbbe092f132b401ca5dd9/coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17", size = 209639 }, - { url = "https://files.pythonhosted.org/packages/01/69/d4f3a4101171f32bc5b3caec8ff94c2c60f700107a6aaef7244b2c166793/coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08", size = 210428 }, - { url = "https://files.pythonhosted.org/packages/c2/4d/2dede4f7cb5a70fb0bb40a57627fddf1dbdc6b9c1db81f7c4dcdcb19e2f4/coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9", size = 207039 }, - { url = "https://files.pythonhosted.org/packages/3f/f9/d86368ae8c79e28f1fb458ebc76ae9ff3e8bd8069adc24e8f2fed03c58b7/coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba", size = 207298 }, - { url = "https://files.pythonhosted.org/packages/64/c5/b4cc3c3f64622c58fbfd4d8b9a7a8ce9d355f172f91fcabbba1f026852f6/coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c", size = 239813 }, - { url = "https://files.pythonhosted.org/packages/8a/86/14c42e60b70a79b26099e4d289ccdfefbc68624d096f4481163085aa614c/coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06", size = 236959 }, - { url = "https://files.pythonhosted.org/packages/7f/f8/4436a643631a2fbab4b44d54f515028f6099bfb1cd95b13cfbf701e7f2f2/coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f", size = 238950 }, - { url = "https://files.pythonhosted.org/packages/49/50/1571810ddd01f99a0a8be464a4ac8b147f322cd1e8e296a1528984fc560b/coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b", size = 238610 }, - { url = "https://files.pythonhosted.org/packages/f3/8c/6312d241fe7cbd1f0cade34a62fea6f333d1a261255d76b9a87074d8703c/coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21", size = 236697 }, - { url = "https://files.pythonhosted.org/packages/ce/5f/fef33dfd05d87ee9030f614c857deb6df6556b8f6a1c51bbbb41e24ee5ac/coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a", size = 238541 }, - { url = "https://files.pythonhosted.org/packages/a9/64/6a984b6e92e1ea1353b7ffa08e27f707a5e29b044622445859200f541e8c/coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e", size = 209707 }, - { url = "https://files.pythonhosted.org/packages/5c/60/ce5a9e942e9543783b3db5d942e0578b391c25cdd5e7f342d854ea83d6b7/coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963", size = 210439 }, - { url = "https://files.pythonhosted.org/packages/78/53/6719677e92c308207e7f10561a1b16ab8b5c00e9328efc9af7cfd6fb703e/coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f", size = 207784 }, - { url = "https://files.pythonhosted.org/packages/fa/dd/7054928930671fcb39ae6a83bb71d9ab5f0afb733172543ced4b09a115ca/coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806", size = 208058 }, - { url = "https://files.pythonhosted.org/packages/b5/7d/fd656ddc2b38301927b9eb3aae3fe827e7aa82e691923ed43721fd9423c9/coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11", size = 250772 }, - { url = "https://files.pythonhosted.org/packages/90/d0/eb9a3cc2100b83064bb086f18aedde3afffd7de6ead28f69736c00b7f302/coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3", size = 246490 }, - { url = "https://files.pythonhosted.org/packages/45/44/3f64f38f6faab8a0cfd2c6bc6eb4c6daead246b97cf5f8fc23bf3788f841/coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a", size = 248848 }, - { url = "https://files.pythonhosted.org/packages/5d/11/4c465a5f98656821e499f4b4619929bd5a34639c466021740ecdca42aa30/coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc", size = 248340 }, - { url = "https://files.pythonhosted.org/packages/f1/96/ebecda2d016cce9da812f404f720ca5df83c6b29f65dc80d2000d0078741/coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70", size = 246229 }, - { url = "https://files.pythonhosted.org/packages/16/d9/3d820c00066ae55d69e6d0eae11d6149a5ca7546de469ba9d597f01bf2d7/coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef", size = 247510 }, - { url = "https://files.pythonhosted.org/packages/8f/c3/4fa1eb412bb288ff6bfcc163c11700ff06e02c5fad8513817186e460ed43/coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e", size = 210353 }, - { url = "https://files.pythonhosted.org/packages/7e/77/03fc2979d1538884d921c2013075917fc927f41cd8526909852fe4494112/coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1", size = 211502 }, +version = "7.6.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/68/26895f8b068e384b1ec9ab122565b913b735e6b4c618b3d265a280607edc/coverage-7.6.7.tar.gz", hash = "sha256:d79d4826e41441c9a118ff045e4bccb9fdbdcb1d02413e7ea6eb5c87b5439d24", size = 799938 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/30/30e9df650b9038962c62d900b093a17414d5b43b4d07d47b8698d9e7ce26/coverage-7.6.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f07ff574986bc3edb80e2c36391678a271d555f91fd1d332a1e0f4b5ea4b6ea9", size = 207172 }, + { url = "https://files.pythonhosted.org/packages/88/8b/e28f86412317b9514692fd6f9d8ac6faa12494c3f470c3c63f202e10c756/coverage-7.6.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:49ed5ee4109258973630c1f9d099c7e72c5c36605029f3a91fe9982c6076c82b", size = 207406 }, + { url = "https://files.pythonhosted.org/packages/ac/46/da1bd9a3a893f74f5ce85f35e2755fcb00a80ed21e18d300c54f64938b1c/coverage-7.6.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3e8796434a8106b3ac025fd15417315d7a58ee3e600ad4dbcfddc3f4b14342c", size = 240424 }, + { url = "https://files.pythonhosted.org/packages/f6/12/af8e932496de1997bf4a36785d025ddac6427cbaf6954f26c2edaf21a58a/coverage-7.6.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3b925300484a3294d1c70f6b2b810d6526f2929de954e5b6be2bf8caa1f12c1", size = 237456 }, + { url = "https://files.pythonhosted.org/packages/60/a2/23eb11eb60f825a84397cb94701d6f41d2e8e88ad7d0ba2b4339f38435fb/coverage-7.6.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c42ec2c522e3ddd683dec5cdce8e62817afb648caedad9da725001fa530d354", size = 239527 }, + { url = "https://files.pythonhosted.org/packages/47/9e/63b318bc469308a32b0fbd6c80e2ea05dd7a2b7e840a46b3974843083a8c/coverage-7.6.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0266b62cbea568bd5e93a4da364d05de422110cbed5056d69339bd5af5685433", size = 239011 }, + { url = "https://files.pythonhosted.org/packages/99/47/1e84b067df3f021dfbc9cba09ec9acd4cb64938648a234e5bdf3006fd08b/coverage-7.6.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e5f2a0f161d126ccc7038f1f3029184dbdf8f018230af17ef6fd6a707a5b881f", size = 237316 }, + { url = "https://files.pythonhosted.org/packages/12/9d/96baaafc948d4a0ef2248a611d41051eea0917ef881d744879dd20be7c4a/coverage-7.6.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c132b5a22821f9b143f87446805e13580b67c670a548b96da945a8f6b4f2efbb", size = 238980 }, + { url = "https://files.pythonhosted.org/packages/87/d9/97af1886ca3f612d0cea2999d33e90d2f5b8fdf9bedc2d3bc75883efec4c/coverage-7.6.7-cp312-cp312-win32.whl", hash = "sha256:7c07de0d2a110f02af30883cd7dddbe704887617d5c27cf373362667445a4c76", size = 209801 }, + { url = "https://files.pythonhosted.org/packages/f8/4d/1e31c2018b1b3738154639f94188b1f54098fbf0f80c7ec104928576d0bb/coverage-7.6.7-cp312-cp312-win_amd64.whl", hash = "sha256:fd49c01e5057a451c30c9b892948976f5d38f2cbd04dc556a82743ba8e27ed8c", size = 210587 }, ] [[package]] @@ -265,10 +293,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a5/6b/c336d1eba1aedc9f654aefcdfe47ec41657d149f28ca1477c5f9009681c6/debugpy-1.8.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64674e95916e53c2e9540a056e5f489e0ad4872645399d778f7c598eacb7b7f9", size = 4229617 }, { url = "https://files.pythonhosted.org/packages/63/9c/d9276c41e9e14164b31bcba789c87a355c091d0fc2d4e4e36a4881c9aa54/debugpy-1.8.8-cp312-cp312-win32.whl", hash = "sha256:5c6e885dbf12015aed73770f29dec7023cb310d0dc2ba8bfbeb5c8e43f80edc9", size = 5167033 }, { url = "https://files.pythonhosted.org/packages/6d/1c/fd4bc22196b2d0defaa9f644ea4d676d0cb53b6434091b5fa2d4e49c85f2/debugpy-1.8.8-cp312-cp312-win_amd64.whl", hash = "sha256:19ffbd84e757a6ca0113574d1bf5a2298b3947320a3e9d7d8dc3377f02d9f864", size = 5209968 }, - { url = "https://files.pythonhosted.org/packages/90/45/6745f342bbf41bde7eb5dbf5567b794a4a5498a7a729146cb3101b875b30/debugpy-1.8.8-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:705cd123a773d184860ed8dae99becd879dfec361098edbefb5fc0d3683eb804", size = 2499523 }, - { url = "https://files.pythonhosted.org/packages/5c/39/0374610062a384648db9b7b315d0c906facf23613bfd19527135a7c0a420/debugpy-1.8.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890fd16803f50aa9cb1a9b9b25b5ec321656dd6b78157c74283de241993d086f", size = 4218219 }, - { url = "https://files.pythonhosted.org/packages/cc/19/5b8a68eb9bbafd6bfd27ba0ed93d411f3fd50935ecdd2df242de2110a7c9/debugpy-1.8.8-cp313-cp313-win32.whl", hash = "sha256:90244598214bbe704aa47556ec591d2f9869ff9e042e301a2859c57106649add", size = 5171845 }, - { url = "https://files.pythonhosted.org/packages/cd/04/7381dab68e40ca877d5beffc25ad1a0d3d2557cf7465405435fac9e27ef5/debugpy-1.8.8-cp313-cp313-win_amd64.whl", hash = "sha256:4b93e4832fd4a759a0c465c967214ed0c8a6e8914bced63a28ddb0dd8c5f078b", size = 5206890 }, { url = "https://files.pythonhosted.org/packages/03/99/ec2190d03df5dbd610418919bd1c3d8e6f61d0a97894e11ade6d3260cfb8/debugpy-1.8.8-py2.py3-none-any.whl", hash = "sha256:ec684553aba5b4066d4de510859922419febc710df7bba04fe9e7ef3de15d34f", size = 5157124 }, ] @@ -281,6 +305,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d5/50/83c593b07763e1161326b3b8c6686f0f4b0f24d5526546bee538c89837d6/decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186", size = 9073 }, ] +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, +] + +[[package]] +name = "deprecated" +version = "1.2.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/a3/53e7d78a6850ffdd394d7048a31a6f14e44900adedf190f9a165f6b69439/deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d", size = 2977612 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/8f/c7f227eb42cfeaddce3eb0c96c60cbca37797fa7b34f8e1aeadf6c5c0983/Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320", size = 9941 }, +] + [[package]] name = "dill" version = "0.3.9" @@ -360,6 +405,85 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6a/ed/f79ae5ad993bdf900d61892d2a9fc0145441a507a7579890fb8e21e4a7bc/django_stubs_ext-5.1.1-py3-none-any.whl", hash = "sha256:3907f99e178c93323e2ce908aef8352adb8c047605161f8d9e5e7b4efb5a6a9c", size = 8965 }, ] +[[package]] +name = "django2pydantic" +version = "0.1.0" +source = { editable = "." } + +[package.dev-dependencies] +dev = [ + { name = "basedpyright" }, + { name = "beartype" }, + { name = "debugpy" }, + { name = "django" }, + { name = "django-ninja" }, + { name = "django-stubs", extra = ["compatible-mypy"] }, + { name = "django-stubs-ext" }, + { name = "email-validator" }, + { name = "hypothesis" }, + { name = "import-linter" }, + { name = "ipykernel" }, + { name = "isort" }, + { name = "mypy" }, + { name = "ninja-schema" }, + { name = "nox" }, + { name = "pydantic" }, + { name = "pylint-django" }, + { name = "pyre-check" }, + { name = "pyright" }, + { name = "pytest" }, + { name = "pytest-cov" }, + { name = "pytest-django" }, + { name = "pytest-instafail" }, + { name = "pytest-testmon" }, + { name = "pytest-watch" }, + { name = "python-semantic-release" }, + { name = "pytype" }, + { name = "rich" }, + { name = "ruff" }, + { name = "semgrep" }, + { name = "typeguard" }, + { name = "wemake-python-styleguide" }, +] + +[package.metadata] + +[package.metadata.requires-dev] +dev = [ + { name = "basedpyright", specifier = ">=1.21.0" }, + { name = "beartype", specifier = ">=0.19.0" }, + { name = "debugpy", specifier = ">=1.8.8" }, + { name = "django", specifier = ">=5.1.3" }, + { name = "django-ninja", specifier = ">=1.3.0" }, + { name = "django-stubs", extras = ["compatible-mypy"], specifier = ">=5.1.1" }, + { name = "django-stubs-ext", specifier = ">=5.1.1" }, + { name = "email-validator", specifier = ">=2.2.0" }, + { name = "hypothesis", specifier = ">=6.118.0" }, + { name = "import-linter", specifier = ">=2.1" }, + { name = "ipykernel", specifier = ">=6.29.5" }, + { name = "isort", specifier = ">=5.13.2" }, + { name = "mypy", specifier = ">=1.13.0" }, + { name = "ninja-schema", specifier = ">=0.13.6" }, + { name = "nox", specifier = ">=2024.10.9" }, + { name = "pydantic", specifier = ">=2.9.2" }, + { name = "pylint-django", specifier = ">=2.6.1" }, + { name = "pyre-check", specifier = ">=0.9.23" }, + { name = "pyright", specifier = ">=1.1.388" }, + { name = "pytest", specifier = ">=8.3.3" }, + { name = "pytest-cov", specifier = ">=6.0.0" }, + { name = "pytest-django", specifier = ">=4.9.0" }, + { name = "pytest-instafail", specifier = ">=0.5.0" }, + { name = "pytest-testmon", specifier = ">=2.1.1" }, + { name = "pytest-watch", specifier = ">=4.2.0" }, + { name = "python-semantic-release", specifier = ">=9.14.0" }, + { name = "pytype", specifier = ">=2024.10.11" }, + { name = "rich", specifier = ">=13.9.4" }, + { name = "ruff", specifier = ">=0.7.3" }, + { name = "semgrep", specifier = ">=1.85.0" }, + { name = "typeguard", specifier = ">=4.4.1" }, + { name = "wemake-python-styleguide", specifier = ">=0.19.2" }, +] + [[package]] name = "dnspython" version = "2.7.0" @@ -384,6 +508,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408 }, ] +[[package]] +name = "dotty-dict" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/ab/88d67f02024700b48cd8232579ad1316aa9df2272c63049c27cc094229d6/dotty_dict-1.3.1.tar.gz", hash = "sha256:4b016e03b8ae265539757a53eba24b9bfda506fb94fbce0bee843c6f05541a15", size = 7699 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/91/e0d457ee03ec33d79ee2cd8d212debb1bc21dfb99728ae35efdb5832dc22/dotty_dict-1.3.1-py3-none-any.whl", hash = "sha256:5022d234d9922f13aa711b4950372a06a6d64cb6d6db9ba43d0ba133ebfce31f", size = 7014 }, +] + [[package]] name = "email-validator" version = "2.2.0" @@ -406,6 +539,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/90/c2/533e1338429aeba1f089566a2314d69d3e78ab57a73006f16a923bf2b24c/eradicate-2.3.0-py3-none-any.whl", hash = "sha256:2b29b3dd27171f209e4ddd8204b70c02f0682ae95eecb353f10e8d72b149c63e", size = 6113 }, ] +[[package]] +name = "exceptiongroup" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, +] + [[package]] name = "executing" version = "2.1.0" @@ -415,6 +557,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/fd/afcd0496feca3276f509df3dbd5dae726fcc756f1a08d9e25abe1733f962/executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf", size = 25805 }, ] +[[package]] +name = "face" +version = "24.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "boltons" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/79/2484075a8549cd64beae697a8f664dee69a5ccf3a7439ee40c8f93c1978a/face-24.0.0.tar.gz", hash = "sha256:611e29a01ac5970f0077f9c577e746d48c082588b411b33a0dd55c4d872949f6", size = 62732 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/47/21867c2e5fd006c8d36a560df9e32cb4f1f566b20c5dd41f5f8a2124f7de/face-24.0.0-py3-none-any.whl", hash = "sha256:0e2c17b426fa4639a4e77d1de9580f74a98f4869ba4c7c8c175b810611622cd3", size = 54742 }, +] + [[package]] name = "filelock" version = "3.16.1" @@ -589,6 +743,56 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e8/22/e5f4ccc41dda8db61cf3bb7a93549f9ae8e1dd10547b3d71cc8483a0b437/flake8_string_format-0.3.0-py2.py3-none-any.whl", hash = "sha256:812ff431f10576a74c89be4e85b8e075a705be39bc40c4b4278b5b13e2afa9af", size = 7266 }, ] +[[package]] +name = "gitdb" +version = "4.0.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "smmap" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/0d/bbb5b5ee188dec84647a4664f3e11b06ade2bde568dbd489d9d64adef8ed/gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b", size = 394469 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/5b/8f0c4a5bb9fd491c277c21eff7ccae71b47d43c4446c9d0c6cff2fe8c2c4/gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4", size = 62721 }, +] + +[[package]] +name = "gitpython" +version = "3.1.43" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gitdb" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/a1/106fd9fa2dd989b6fb36e5893961f82992cf676381707253e0bf93eb1662/GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c", size = 214149 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/bd/cc3a402a6439c15c3d4294333e13042b915bbeab54edc457c723931fed3f/GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff", size = 207337 }, +] + +[[package]] +name = "glom" +version = "22.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "boltons" }, + { name = "face" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3f/d1/69432deefa6f5283ec75b246d0540097ae26f618b915519ee3824c4c5dd6/glom-22.1.0.tar.gz", hash = "sha256:1510c6587a8f9c64a246641b70033cbc5ebde99f02ad245693678038e821aeb5", size = 189738 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/e8/68e274b2a30e1fdfd25bdc27194382be3f233929c8f727c0440d58ac074f/glom-22.1.0-py2.py3-none-any.whl", hash = "sha256:5339da206bf3532e01a83a35aca202960ea885156986d190574b779598e9e772", size = 100687 }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.66.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/a7/8e9cccdb1c49870de6faea2a2764fa23f627dd290633103540209f03524c/googleapis_common_protos-1.66.0.tar.gz", hash = "sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c", size = 114376 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/0f/c0713fb2b3d28af4b2fded3291df1c4d4f79a00d15c2374a9e010870016c/googleapis_common_protos-1.66.0-py2.py3-none-any.whl", hash = "sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed", size = 221682 }, +] + [[package]] name = "grimp" version = "3.5" @@ -612,33 +816,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/73/a2/03ffdf03f2ab642bfe296eff94f51a6a8e3b04d4b5c7567a7b3c9261313c/grimp-3.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3f83b85aad278dfcaf2bf27b9cfa6dd6533dd96ecc510ba3bc0141344686857f", size = 560996 }, { url = "https://files.pythonhosted.org/packages/13/52/fb9ad8e26710d7eb0afccf083087810d8cbd0f4eb3863f0641c8b251c046/grimp-3.5-cp312-none-win32.whl", hash = "sha256:f88307f0e50883ab73cc59164a5a9396e8e1c8b68b8e2edef68d478b91d81000", size = 222988 }, { url = "https://files.pythonhosted.org/packages/2e/85/4058a766fc2b53b4b1318944c46bc9405fc7dea7ebb2eca377896f3fbfd5/grimp-3.5-cp312-none-win_amd64.whl", hash = "sha256:6fa422c150597f8e6ad51c4fe2b271747057abe638acca5eebb2162e536065ed", size = 236195 }, - { url = "https://files.pythonhosted.org/packages/31/02/33f4b4bc6d22b5ff7672ce5c67464f4dcee6e86cf3a072cdc9b1d46e5178/grimp-3.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:448dba63f938d0e13e6121559749816e3b2644202c912cc308e7608c6034737a", size = 351545 }, - { url = "https://files.pythonhosted.org/packages/78/e0/44bd64767763160ea0862ad756b88dfd375060b5636aaeb79c10861f09ae/grimp-3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:17113aba41269d0ee91512c96eeb850c7c668440c6a8e0bfc94d17762184b293", size = 342780 }, - { url = "https://files.pythonhosted.org/packages/55/e6/b0fc52ab1ee04c80f1709eaa2e99468a8981d0a23dcbc7c2c6e781da22cc/grimp-3.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6a55614945c319d1dc692c3e43f3a02b80c116a1298e593f5f887b97e6c983a", size = 399300 }, - { url = "https://files.pythonhosted.org/packages/dc/b9/aa6365859c96881d02f6ad6ab8aa38eaced5887f3cc431165ed9ee7b35ea/grimp-3.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aba7ce7839b72efb4c6d06404d2b2a3026e28dd89816f4e546b3cd6626cbeeb1", size = 405288 }, - { url = "https://files.pythonhosted.org/packages/7d/f8/32446714ed0f23a1b8067f9f627c55f7c186d3477baa5c6e6312c95060ab/grimp-3.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eaedfba320a70d87b14acb25a685c8629586b943129c71ffd02b47d9531c11ce", size = 416565 }, - { url = "https://files.pythonhosted.org/packages/93/3c/185a0292111350823fdd7d61481157295d90260e248888ab274a00f84456/grimp-3.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60a9afd3dd00ad1d301a07f97e26bc9ecdc3d2db39ab6ac46c315a7dea0a96cb", size = 437249 }, - { url = "https://files.pythonhosted.org/packages/1a/21/55ede2511dc111e9ca90d23e479e263e0845dc7e389515587f9575c5b139/grimp-3.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:11c66039c0475e5c9fc6a086264f11870181ae79f603caa5dffa1411ddad636b", size = 443560 }, - { url = "https://files.pythonhosted.org/packages/12/e1/79f6a4212d46ae6db6281c5b179990d2dd53c72eed7587592c0968f0d3f0/grimp-3.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bff39a0061790f074f86a7841cd8e6064aa7b2208cb1ee5c3f2e685dead2b66e", size = 393185 }, - { url = "https://files.pythonhosted.org/packages/46/62/1a7f8b54d73f3ef6595dd8bfa10686321c04b562fbb997e9d46f95fe7b96/grimp-3.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cf7f5367c4a87b8e9f08c09e7401d2d73f21cb65d6142445819f9df0d6ab3f6b", size = 573292 }, - { url = "https://files.pythonhosted.org/packages/24/1d/b90853a0b7eb7aa08073dafd896551d26a416e922a68eb1cab35319593c7/grimp-3.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:edee4b087f007dab8b65461caf6a1b67b2f9480cceb5f6aceea87008d8f283c4", size = 664226 }, - { url = "https://files.pythonhosted.org/packages/6b/7b/ce6cf6ba2da6305725692ea2a7a4080da60ac075d23353fc07cae7adb5b7/grimp-3.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6af125013ad2a56c18f2f53a3fcabbfbe96c70374abecd6f14b82dc444726ebe", size = 589077 }, - { url = "https://files.pythonhosted.org/packages/ad/29/03156310a1bf278e8dd46e2e02311bad1d1551b1555d245e28008c318086/grimp-3.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:24aabae0183ca5fd5a710257ff37120b55d8e6d6d4cbb2c08481552832e5c901", size = 560463 }, - { url = "https://files.pythonhosted.org/packages/1e/29/300daf9b6a7f3f979a379cda69e04374912031fd85f3b6f0e03d9b637263/grimp-3.5-cp313-none-win32.whl", hash = "sha256:506091bfd600dd7ad427586998ef5e54a2098485148a1499bd9af5943d2fb0b7", size = 222673 }, - { url = "https://files.pythonhosted.org/packages/e5/8c/15834d919407c1ab11590367e03ac9d1c162d518a0f54f2970e315e0d623/grimp-3.5-cp313-none-win_amd64.whl", hash = "sha256:099388df82d922ddc589f362f1a523ab053c8dee5d29a6b622b2cddf481c6a2f", size = 236037 }, ] [[package]] name = "hypothesis" -version = "6.118.7" +version = "6.119.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "sortedcontainers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/16/31/7cbfc717e2f529472695ab97d508a9b995f8e463a9b8a699762cdaa48ee3/hypothesis-6.118.7.tar.gz", hash = "sha256:604328f5d766a056182f54b4826f9b2d5f664f42bff68fd81b4d9d6c44b2398b", size = 410787 } +sdist = { url = "https://files.pythonhosted.org/packages/a5/6f/98262d753772030d140d8cd04eadebac545ba4945702f4471decc37b8cb5/hypothesis-6.119.3.tar.gz", hash = "sha256:1403676d95bc9f118a30ce2c97fcbdd28dd99f3a1ffe3456970d98a56b370f36", size = 412497 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/4c/b87dc5c9ca9a4cc0c6828a90c2d1de6089f844e0c5badcdeac14fdb386c3/hypothesis-6.118.7-py3-none-any.whl", hash = "sha256:5fe1d80f46d81c6160ef762e4e11a61bb4eb6838a8fb7bd3c5a2542fb107bc38", size = 471912 }, + { url = "https://files.pythonhosted.org/packages/67/9d/32e2277a2dbc48b687f4acedbc6421c33a5f03177c8cb0d262d5ffc2ccf3/hypothesis-6.119.3-py3-none-any.whl", hash = "sha256:dff13689c4ceb0d84d92e0309fca3ccc1b547ac30552037c712a9080eb75cd05", size = 473632 }, ] [[package]] @@ -652,11 +842,11 @@ wheels = [ [[package]] name = "immutabledict" -version = "4.2.0" +version = "4.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/55/f4/710c84db4d77767176342913ac6b25f43aaed6d0a0bdb9168a8d2936d9c7/immutabledict-4.2.0.tar.gz", hash = "sha256:e003fd81aad2377a5a758bf7e1086cf3b70b63e9a5cc2f46bce8d0a2b4727c5f", size = 6165 } +sdist = { url = "https://files.pythonhosted.org/packages/e0/c5/4240186fbabc58fba41bbe17c5f0cd37ffd4c0b85a5029ab104f946df175/immutabledict-4.2.1.tar.gz", hash = "sha256:d91017248981c72eb66c8ff9834e99c2f53562346f23e7f51e7a5ebcf66a3bcc", size = 6228 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/13/3cf4ac5b3403f3456e645c4533883ef67b1bb0c72e56b79c707715f57a74/immutabledict-4.2.0-py3-none-any.whl", hash = "sha256:d728b2c2410d698d95e6200237feb50a695584d20289ad3379a439aa3d90baba", size = 4702 }, + { url = "https://files.pythonhosted.org/packages/59/56/25ca7b848164b7d93dbd5fc97dd7751700c93e324fe854afbeb562ee2f98/immutabledict-4.2.1-py3-none-any.whl", hash = "sha256:c56a26ced38c236f79e74af3ccce53772827cef5c3bce7cab33ff2060f756373", size = 4700 }, ] [[package]] @@ -685,6 +875,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/da/1e/cc7360b4259f283b1a2de153335ce15ac9e710d66145aa471cffefe4b394/importlab-0.8.1-py2.py3-none-any.whl", hash = "sha256:124cfa00e8a34fefe8aac1a5e94f56c781b178c9eb61a1d3f60f7e03b77338d3", size = 21671 }, ] +[[package]] +name = "importlib-metadata" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a0/fc/c4e6078d21fc4fa56300a241b87eae76766aa380a23fc450fc85bb7bf547/importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2", size = 52120 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570", size = 24409 }, +] + +[[package]] +name = "importlib-resources" +version = "6.4.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/be/f3e8c6081b684f176b761e6a2fef02a0be939740ed6f54109a2951d806f3/importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065", size = 43372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717", size = 36115 }, +] + [[package]] name = "iniconfig" version = "2.0.0" @@ -771,6 +982,33 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, ] +[[package]] +name = "jsonschema" +version = "4.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2024.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/db/58f950c996c793472e336ff3655b13fbcf1e3b359dcf52dcf3ed3b52c352/jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", size = 15561 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459 }, +] + [[package]] name = "jupyter-client" version = "8.6.3" @@ -816,12 +1054,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/63/c4/e056f3f34642f294421bd4a4d4b40aeccaf153a456bcb4d7e54f4337143f/libcst-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dba93cca0a5c6d771ed444c44d21ce8ea9b277af7036cea3743677aba9fbbb8", size = 2251411 }, { url = "https://files.pythonhosted.org/packages/e8/d6/574fc6c8b0ca81586ee05f284ef6987730b841b31ce246ef9d3c45f17ec4/libcst-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b5c4d87721a7bab265c202575809b810815ab81d5e2e7a5d4417a087975840", size = 2323144 }, { url = "https://files.pythonhosted.org/packages/b1/92/5cb62834eec397f4b3218c03acc28b6b8470f87c8dad9e9b0fd738c3948c/libcst-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:b48bf71d52c1e891a0948465a94d9817b5fc1ec1a09603566af90585f3b11948", size = 2029603 }, - { url = "https://files.pythonhosted.org/packages/60/5e/dd156f628fed03a273d995008f1669e1964727df6a8818bbedaac51f9ae5/libcst-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:88520b6dea59eaea0cae80f77c0a632604a82c5b2d23dedb4b5b34035cbf1615", size = 2108562 }, - { url = "https://files.pythonhosted.org/packages/2c/54/f63bf0bd2d70179e0557c9474a0511e33e646d398945b5a01de36237ce60/libcst-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:208ea92d80b2eeed8cbc879d5f39f241582a5d56b916b1b65ed2be2f878a2425", size = 2024057 }, - { url = "https://files.pythonhosted.org/packages/dc/37/ce62947fd7305fb501589e4b8f6e82e3cf61fca2d62392e281c17a2112f5/libcst-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4592872aaf5b7fa5c2727a7d73c0985261f1b3fe7eff51f4fd5b8174f30b4e2", size = 2199474 }, - { url = "https://files.pythonhosted.org/packages/c9/95/b878c95af17f3e341ac5dc18e3160d45d86b2c05a0cafd866ceb0b766bbd/libcst-1.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2788b2b5838b78fe15df8e9fa6b6903195ea49b2d2ba43e8f423f6c90e4b69f", size = 2251410 }, - { url = "https://files.pythonhosted.org/packages/e1/26/697b54aa839c4dc6ea2787d5e977ed4be0636149f85df1a0cba7a29bd188/libcst-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5b5bcd3a9ba92840f27ad34eaa038acbee195ec337da39536c0a2efbbf28efd", size = 2323144 }, - { url = "https://files.pythonhosted.org/packages/a0/9f/5b5481d716670ed5fbd8d06dfa94b7108272b645da2f2406eb909cb6a450/libcst-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:4d6acb0bdee1e55b44c6215c59755ec4693ac01e74bb1fde04c37358b378835d", size = 2029600 }, ] [[package]] @@ -852,26 +1084,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, ] [[package]] @@ -958,11 +1170,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ba/07/37d67048786ae84e6612575e173d713c9a05d0ae495dde1e68d972207d98/mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2", size = 12589275 }, { url = "https://files.pythonhosted.org/packages/1f/17/b1018c6bb3e9f1ce3956722b3bf91bff86c1cefccca71cec05eae49d6d41/mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0", size = 13037783 }, { url = "https://files.pythonhosted.org/packages/cb/32/cd540755579e54a88099aee0287086d996f5a24281a673f78a0e14dba150/mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2", size = 9726197 }, - { url = "https://files.pythonhosted.org/packages/11/bb/ab4cfdc562cad80418f077d8be9b4491ee4fb257440da951b85cbb0a639e/mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7", size = 11069721 }, - { url = "https://files.pythonhosted.org/packages/59/3b/a393b1607cb749ea2c621def5ba8c58308ff05e30d9dbdc7c15028bca111/mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62", size = 10063996 }, - { url = "https://files.pythonhosted.org/packages/d1/1f/6b76be289a5a521bb1caedc1f08e76ff17ab59061007f201a8a18cc514d1/mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8", size = 12584043 }, - { url = "https://files.pythonhosted.org/packages/a6/83/5a85c9a5976c6f96e3a5a7591aa28b4a6ca3a07e9e5ba0cec090c8b596d6/mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7", size = 13036996 }, - { url = "https://files.pythonhosted.org/packages/b4/59/c39a6f752f1f893fccbcf1bdd2aca67c79c842402b5283563d006a67cf76/mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc", size = 9737709 }, { url = "https://files.pythonhosted.org/packages/3b/86/72ce7f57431d87a7ff17d442f521146a6585019eb8f4f31b7c02801f78ad/mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a", size = 2647043 }, ] @@ -1066,6 +1273,125 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/66/00/981f0dcaddf111b6caf6e03d7f7f01b07fd4af117316a7eb1c22039d9e37/nox-2024.10.9-py3-none-any.whl", hash = "sha256:1d36f309a0a2a853e9bccb76bbef6bb118ba92fa92674d15604ca99adeb29eab", size = 61210 }, ] +[[package]] +name = "opentelemetry-api" +version = "1.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "importlib-metadata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/0d/10357006dc10fc65f7c7b46c18232e466e355f9e606ac461cfc7193b4cbe/opentelemetry_api-1.25.0.tar.gz", hash = "sha256:77c4985f62f2614e42ce77ee4c9da5fa5f0bc1e1821085e9a47533a9323ae869", size = 60383 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/b2/4bc5e52c9a23df0ac17dbb23923e609a8269cd67000a712b4f5bcfae1490/opentelemetry_api-1.25.0-py3-none-any.whl", hash = "sha256:757fa1aa020a0f8fa139f8959e53dec2051cc26b832e76fa839a6d76ecefd737", size = 59910 }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-common" +version = "1.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-proto" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/37/a7/85ffaaacd712e4634fa1c56cbf79a02cf90b8a178fe1eee2cabfb0b7f44d/opentelemetry_exporter_otlp_proto_common-1.25.0.tar.gz", hash = "sha256:c93f4e30da4eee02bacd1e004eb82ce4da143a2f8e15b987a9f603e0a85407d3", size = 17152 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/02/74ac6619eec78c82a923324f916d3eccd2f2254cf4270b669e96b76bf717/opentelemetry_exporter_otlp_proto_common-1.25.0-py3-none-any.whl", hash = "sha256:15637b7d580c2675f70246563363775b4e6de947871e01d0f4e3881d1848d693", size = 17762 }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-http" +version = "1.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "googleapis-common-protos" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-common" }, + { name = "opentelemetry-proto" }, + { name = "opentelemetry-sdk" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/d9/1c3c518853c27d323a46813d3e99d601959ca2c6963d5217fe2110f0d579/opentelemetry_exporter_otlp_proto_http-1.25.0.tar.gz", hash = "sha256:9f8723859e37c75183ea7afa73a3542f01d0fd274a5b97487ea24cb683d7d684", size = 14048 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/b9/a47734f7c5a45619d8c64c227f119092b4679b2c49d37116fda7c0fc4573/opentelemetry_exporter_otlp_proto_http-1.25.0-py3-none-any.whl", hash = "sha256:2eca686ee11b27acd28198b3ea5e5863a53d1266b91cda47c839d95d5e0541a6", size = 16790 }, +] + +[[package]] +name = "opentelemetry-instrumentation" +version = "0.46b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "setuptools" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/20/0a5d980843e048e9516443a91c63a559b40e5d50a730e73e72a5bde727fd/opentelemetry_instrumentation-0.46b0.tar.gz", hash = "sha256:974e0888fb2a1e01c38fbacc9483d024bb1132aad92d6d24e2e5543887a7adda", size = 24048 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/e5/d6fff0a6f6fbddf03c7fb48ab47925581c4f1a8268f9ad98e5ea4a8b90a5/opentelemetry_instrumentation-0.46b0-py3-none-any.whl", hash = "sha256:89cd721b9c18c014ca848ccd11181e6b3fd3f6c7669e35d59c48dc527408c18b", size = 29108 }, +] + +[[package]] +name = "opentelemetry-instrumentation-requests" +version = "0.46b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-instrumentation" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "opentelemetry-util-http" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/28/5b5e9fb74639e47f026a3fd6550bba965ca18b316a8178907540e711855c/opentelemetry_instrumentation_requests-0.46b0.tar.gz", hash = "sha256:ef0ad63bfd0d52631daaf7d687e763dbd89b465f5cb052f12a4e67e5e3d181e4", size = 13709 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/42/5eee8720eccd4b94dd3d4908364785db8b22c9ae512ee47caff29064ca4c/opentelemetry_instrumentation_requests-0.46b0-py3-none-any.whl", hash = "sha256:a8c2472800d8686f3f286cd524b8746b386154092e85a791ba14110d1acc9b81", size = 12170 }, +] + +[[package]] +name = "opentelemetry-proto" +version = "1.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/3c/28c9ce40eb8ab287471af81659089ca98ef4f7ce289669e23b19c29f24a8/opentelemetry_proto-1.25.0.tar.gz", hash = "sha256:35b6ef9dc4a9f7853ecc5006738ad40443701e52c26099e197895cbda8b815a3", size = 35062 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/ae/d6b5f11ecbffafe8b6d54130fed0cc78aad3711e00074d63a7359d6dcf3b/opentelemetry_proto-1.25.0-py3-none-any.whl", hash = "sha256:f07e3341c78d835d9b86665903b199893befa5e98866f63d22b00d0b7ca4972f", size = 52450 }, +] + +[[package]] +name = "opentelemetry-sdk" +version = "1.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/3c/77076b77f1d73141adc119f62370ec9456ef314ba0b4e7072e3775c36ef7/opentelemetry_sdk-1.25.0.tar.gz", hash = "sha256:ce7fc319c57707ef5bf8b74fb9f8ebdb8bfafbe11898410e0d2a761d08a98ec7", size = 141042 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/b2/729a959a8aa032bce246c791f977161099ab60fb0188408ccec1bf283b00/opentelemetry_sdk-1.25.0-py3-none-any.whl", hash = "sha256:d97ff7ec4b351692e9d5a15af570c693b8715ad78b8aafbec5c7100fe966b4c9", size = 107028 }, +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.46b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4e/ea/a4a5277247b3d2ed2e23a58b0d509c2eafa4ebb56038ba5b23c0f9ea6242/opentelemetry_semantic_conventions-0.46b0.tar.gz", hash = "sha256:fbc982ecbb6a6e90869b15c1673be90bd18c8a56ff1cffc0864e38e2edffaefa", size = 80198 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/41/28dae1ec1fe0151373f06bd06d9170ca14b52d5b3a6c2dc55f85bc219619/opentelemetry_semantic_conventions-0.46b0-py3-none-any.whl", hash = "sha256:6daef4ef9fa51d51855d9f8e0ccd3a1bd59e0e545abe99ac6203804e36ab3e07", size = 130549 }, +] + +[[package]] +name = "opentelemetry-util-http" +version = "0.46b0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/91/45bf243850463b2c83000ca129442255eaef7c446bd0f59a2ab54b15abff/opentelemetry_util_http-0.46b0.tar.gz", hash = "sha256:03b6e222642f9c7eae58d9132343e045b50aca9761fcb53709bd2b663571fdf6", size = 7387 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/7f/26d3d8880ea79adde8bb7bc306b25ca5134d6f6c3006ba464716405b4729/opentelemetry_util_http-0.46b0-py3-none-any.whl", hash = "sha256:8dc1949ce63caef08db84ae977fdc1848fe6dc38e6bbaad0ae3e6ecd0d451629", size = 6920 }, +] + [[package]] name = "packaging" version = "24.2" @@ -1093,6 +1419,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1d/44/6a65ecd630393d47ad3e7d5354768cb7f9a10b3a0eb2cd8c6f52b28211ee/pbr-6.1.0-py2.py3-none-any.whl", hash = "sha256:a776ae228892d8013649c0aeccbb3d5f99ee15e005a4cbb7e61d55a067b28a2a", size = 108529 }, ] +[[package]] +name = "peewee" +version = "3.17.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/dc/832bcf4ea5ee2ebc4ea42ef36e44a451de5d80f8b9858bf2066e30738c67/peewee-3.17.8.tar.gz", hash = "sha256:ce1d05db3438830b989a1b9d0d0aa4e7f6134d5f6fd57686eeaa26a3e6485a8c", size = 948249 } + [[package]] name = "pep8-naming" version = "0.13.3" @@ -1147,6 +1479,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a9/6a/fd08d94654f7e67c52ca30523a178b3f8ccc4237fce4be90d39c938a831a/prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e", size = 386595 }, ] +[[package]] +name = "protobuf" +version = "4.25.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/67/dd/48d5fdb68ec74d70fabcc252e434492e56f70944d9f17b6a15e3746d2295/protobuf-4.25.5.tar.gz", hash = "sha256:7f8249476b4a9473645db7f8ab42b02fe1488cbe5fb72fddd445e0665afd8584", size = 380315 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/35/1b3c5a5e6107859c4ca902f4fbb762e48599b78129a05d20684fef4a4d04/protobuf-4.25.5-cp310-abi3-win32.whl", hash = "sha256:5e61fd921603f58d2f5acb2806a929b4675f8874ff5f330b7d6f7e2e784bbcd8", size = 392457 }, + { url = "https://files.pythonhosted.org/packages/a7/ad/bf3f358e90b7e70bf7fb520702cb15307ef268262292d3bdb16ad8ebc815/protobuf-4.25.5-cp310-abi3-win_amd64.whl", hash = "sha256:4be0571adcbe712b282a330c6e89eae24281344429ae95c6d85e79e84780f5ea", size = 413449 }, + { url = "https://files.pythonhosted.org/packages/51/49/d110f0a43beb365758a252203c43eaaad169fe7749da918869a8c991f726/protobuf-4.25.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:b2fde3d805354df675ea4c7c6338c1aecd254dfc9925e88c6d31a2bcb97eb173", size = 394248 }, + { url = "https://files.pythonhosted.org/packages/c6/ab/0f384ca0bc6054b1a7b6009000ab75d28a5506e4459378b81280ae7fd358/protobuf-4.25.5-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:919ad92d9b0310070f8356c24b855c98df2b8bd207ebc1c0c6fcc9ab1e007f3d", size = 293717 }, + { url = "https://files.pythonhosted.org/packages/05/a6/094a2640be576d760baa34c902dcb8199d89bce9ed7dd7a6af74dcbbd62d/protobuf-4.25.5-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fe14e16c22be926d3abfcb500e60cab068baf10b542b8c858fa27e098123e331", size = 294635 }, + { url = "https://files.pythonhosted.org/packages/33/90/f198a61df8381fb43ae0fe81b3d2718e8dcc51ae8502c7657ab9381fbc4f/protobuf-4.25.5-py3-none-any.whl", hash = "sha256:0aebecb809cae990f8129ada5ca273d9d670b76d9bfc9b1809f0a9c02b7dbf41", size = 156467 }, +] + [[package]] name = "psutil" version = "6.1.0" @@ -1247,18 +1593,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e3/b9/41f7efe80f6ce2ed3ee3c2dcfe10ab7adc1172f778cc9659509a79518c43/pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24", size = 2116872 }, { url = "https://files.pythonhosted.org/packages/63/08/b59b7a92e03dd25554b0436554bf23e7c29abae7cce4b1c459cd92746811/pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84", size = 1738535 }, { url = "https://files.pythonhosted.org/packages/88/8d/479293e4d39ab409747926eec4329de5b7129beaedc3786eca070605d07f/pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9", size = 1917992 }, - { url = "https://files.pythonhosted.org/packages/ad/ef/16ee2df472bf0e419b6bc68c05bf0145c49247a1095e85cee1463c6a44a1/pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc", size = 1856143 }, - { url = "https://files.pythonhosted.org/packages/da/fa/bc3dbb83605669a34a93308e297ab22be82dfb9dcf88c6cf4b4f264e0a42/pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd", size = 1770063 }, - { url = "https://files.pythonhosted.org/packages/4e/48/e813f3bbd257a712303ebdf55c8dc46f9589ec74b384c9f652597df3288d/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05", size = 1790013 }, - { url = "https://files.pythonhosted.org/packages/b4/e0/56eda3a37929a1d297fcab1966db8c339023bcca0b64c5a84896db3fcc5c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d", size = 1801077 }, - { url = "https://files.pythonhosted.org/packages/04/be/5e49376769bfbf82486da6c5c1683b891809365c20d7c7e52792ce4c71f3/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510", size = 1996782 }, - { url = "https://files.pythonhosted.org/packages/bc/24/e3ee6c04f1d58cc15f37bcc62f32c7478ff55142b7b3e6d42ea374ea427c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6", size = 2661375 }, - { url = "https://files.pythonhosted.org/packages/c1/f8/11a9006de4e89d016b8de74ebb1db727dc100608bb1e6bbe9d56a3cbbcce/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b", size = 2071635 }, - { url = "https://files.pythonhosted.org/packages/7c/45/bdce5779b59f468bdf262a5bc9eecbae87f271c51aef628d8c073b4b4b4c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327", size = 1916994 }, - { url = "https://files.pythonhosted.org/packages/d8/fa/c648308fe711ee1f88192cad6026ab4f925396d1293e8356de7e55be89b5/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6", size = 1968877 }, - { url = "https://files.pythonhosted.org/packages/16/16/b805c74b35607d24d37103007f899abc4880923b04929547ae68d478b7f4/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f", size = 2116814 }, - { url = "https://files.pythonhosted.org/packages/d1/58/5305e723d9fcdf1c5a655e6a4cc2a07128bf644ff4b1d98daf7a9dbf57da/pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769", size = 1738360 }, - { url = "https://files.pythonhosted.org/packages/a5/ae/e14b0ff8b3f48e02394d8acd911376b7b66e164535687ef7dc24ea03072f/pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5", size = 1919411 }, ] [[package]] @@ -1391,15 +1725,15 @@ wheels = [ [[package]] name = "pyright" -version = "1.1.388" +version = "1.1.389" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nodeenv" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/83/e9867538a794638d2d20ac3ab3106a31aca1d9cfea530c9b2921809dae03/pyright-1.1.388.tar.gz", hash = "sha256:0166d19b716b77fd2d9055de29f71d844874dbc6b9d3472ccd22df91db3dfa34", size = 21939 } +sdist = { url = "https://files.pythonhosted.org/packages/72/4e/9a5ab8745e7606b88c2c7ca223449ac9d82a71fd5e31df47b453f2cb39a1/pyright-1.1.389.tar.gz", hash = "sha256:716bf8cc174ab8b4dcf6828c3298cac05c5ed775dda9910106a5dcfe4c7fe220", size = 21940 } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/57/7fb00363b7f267a398c5bdf4f55f3e64f7c2076b2e7d2901b3373d52b6ff/pyright-1.1.388-py3-none-any.whl", hash = "sha256:c7068e9f2c23539c6ac35fc9efac6c6c1b9aa5a0ce97a9a8a6cf0090d7cbf84c", size = 18579 }, + { url = "https://files.pythonhosted.org/packages/1b/26/c288cabf8cfc5a27e1aa9e5029b7682c0f920b8074f45d22bf844314d66a/pyright-1.1.389-py3-none-any.whl", hash = "sha256:41e9620bba9254406dc1f621a88ceab5a88af4c826feb4f614d95691ed243a60", size = 18581 }, ] [[package]] @@ -1491,6 +1825,42 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] +[[package]] +name = "python-gitlab" +version = "4.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, + { name = "requests-toolbelt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/ea/e2cde926d63526935c1df259177371a195089b631d67a577fe5c39fbc7e1/python_gitlab-4.13.0.tar.gz", hash = "sha256:576bfb0901faca0c6b2d1ff2592e02944a6ec3e086c3129fb43c2a0df56a1c67", size = 484996 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/5e/5fb4dcae9f5af5463c16952823d446ca449cce920efe8669871f600f0ab9/python_gitlab-4.13.0-py3-none-any.whl", hash = "sha256:8299a054fb571da16e1a8c1868fff01f34ac41ea1410c713a4647b3bbb2aa279", size = 145254 }, +] + +[[package]] +name = "python-semantic-release" +version = "9.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "click-option-group" }, + { name = "dotty-dict" }, + { name = "gitpython" }, + { name = "importlib-resources" }, + { name = "jinja2" }, + { name = "pydantic" }, + { name = "python-gitlab" }, + { name = "requests" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "tomlkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/19/72d0fb90df1b20b4623a99ddd9a454bfba02b832e85a3e27ab57ec38f715/python_semantic_release-9.14.0.tar.gz", hash = "sha256:5b69a626458bfb50686d27d9713160eb2bf9897b0c17985f1c68d7316b8e07b6", size = 233999 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/8f/86c618d7df34d8a45b37b867bb7cdd0447ee142e902093f742546b97f1f0/python_semantic_release-9.14.0-py3-none-any.whl", hash = "sha256:f089a6ad976e909d5f87015e9f541f9fd503d3db41653efaf0157d874902e519", size = 107682 }, +] + [[package]] name = "pytype" version = "2024.10.11" @@ -1525,9 +1895,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/7c/d00d6bdd96de4344e06c4afbf218bc86b54436a94c01c71a8701f613aa56/pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897", size = 5939729 }, { url = "https://files.pythonhosted.org/packages/21/27/0c8811fbc3ca188f93b5354e7c286eb91f80a53afa4e11007ef661afa746/pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47", size = 6543015 }, { url = "https://files.pythonhosted.org/packages/9d/0f/d40f8373608caed2255781a3ad9a51d03a594a1248cd632d6a298daca693/pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091", size = 7976033 }, - { url = "https://files.pythonhosted.org/packages/a9/a4/aa562d8935e3df5e49c161b427a3a2efad2ed4e9cf81c3de636f1fdddfd0/pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed", size = 5938579 }, - { url = "https://files.pythonhosted.org/packages/c7/50/b0efb8bb66210da67a53ab95fd7a98826a97ee21f1d22949863e6d588b22/pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4", size = 6542056 }, - { url = "https://files.pythonhosted.org/packages/26/df/2b63e3e4f2df0224f8aaf6d131f54fe4e8c96400eb9df563e2aae2e1a1f9/pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd", size = 7974986 }, ] [[package]] @@ -1545,15 +1912,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, ] [[package]] @@ -1577,27 +1935,46 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/07/18/907134c85c7152f679ed744e73e645b365f3ad571f38bdb62e36f347699a/pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7", size = 575533 }, { url = "https://files.pythonhosted.org/packages/ce/2c/a6f4a20202a4d3c582ad93f95ee78d79bbdc26803495aec2912b17dbbb6c/pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a", size = 637768 }, { url = "https://files.pythonhosted.org/packages/5f/0e/eb16ff731632d30554bf5af4dbba3ffcd04518219d82028aea4ae1b02ca5/pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b", size = 540675 }, - { url = "https://files.pythonhosted.org/packages/04/a7/0f7e2f6c126fe6e62dbae0bc93b1bd3f1099cf7fea47a5468defebe3f39d/pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726", size = 1006564 }, - { url = "https://files.pythonhosted.org/packages/31/b6/a187165c852c5d49f826a690857684333a6a4a065af0a6015572d2284f6a/pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3", size = 1340447 }, - { url = "https://files.pythonhosted.org/packages/68/ba/f4280c58ff71f321602a6e24fd19879b7e79793fb8ab14027027c0fb58ef/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50", size = 665485 }, - { url = "https://files.pythonhosted.org/packages/77/b5/c987a5c53c7d8704216f29fc3d810b32f156bcea488a940e330e1bcbb88d/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb", size = 903484 }, - { url = "https://files.pythonhosted.org/packages/29/c9/07da157d2db18c72a7eccef8e684cefc155b712a88e3d479d930aa9eceba/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187", size = 859981 }, - { url = "https://files.pythonhosted.org/packages/43/09/e12501bd0b8394b7d02c41efd35c537a1988da67fc9c745cae9c6c776d31/pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b", size = 860334 }, - { url = "https://files.pythonhosted.org/packages/eb/ff/f5ec1d455f8f7385cc0a8b2acd8c807d7fade875c14c44b85c1bddabae21/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18", size = 1196179 }, - { url = "https://files.pythonhosted.org/packages/ec/8a/bb2ac43295b1950fe436a81fc5b298be0b96ac76fb029b514d3ed58f7b27/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115", size = 1507668 }, - { url = "https://files.pythonhosted.org/packages/a9/49/dbc284ebcfd2dca23f6349227ff1616a7ee2c4a35fe0a5d6c3deff2b4fed/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e", size = 1406539 }, - { url = "https://files.pythonhosted.org/packages/00/68/093cdce3fe31e30a341d8e52a1ad86392e13c57970d722c1f62a1d1a54b6/pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5", size = 575567 }, - { url = "https://files.pythonhosted.org/packages/92/ae/6cc4657148143412b5819b05e362ae7dd09fb9fe76e2a539dcff3d0386bc/pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad", size = 637551 }, - { url = "https://files.pythonhosted.org/packages/6c/67/fbff102e201688f97c8092e4c3445d1c1068c2f27bbd45a578df97ed5f94/pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797", size = 540378 }, - { url = "https://files.pythonhosted.org/packages/3f/fe/2d998380b6e0122c6c4bdf9b6caf490831e5f5e2d08a203b5adff060c226/pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a", size = 1007378 }, - { url = "https://files.pythonhosted.org/packages/4a/f4/30d6e7157f12b3a0390bde94d6a8567cdb88846ed068a6e17238a4ccf600/pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc", size = 1329532 }, - { url = "https://files.pythonhosted.org/packages/82/86/3fe917870e15ee1c3ad48229a2a64458e36036e64b4afa9659045d82bfa8/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5", size = 653242 }, - { url = "https://files.pythonhosted.org/packages/50/2d/242e7e6ef6c8c19e6cb52d095834508cd581ffb925699fd3c640cdc758f1/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672", size = 888404 }, - { url = "https://files.pythonhosted.org/packages/ac/11/7270566e1f31e4ea73c81ec821a4b1688fd551009a3d2bab11ec66cb1e8f/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797", size = 845858 }, - { url = "https://files.pythonhosted.org/packages/91/d5/72b38fbc69867795c8711bdd735312f9fef1e3d9204e2f63ab57085434b9/pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386", size = 847375 }, - { url = "https://files.pythonhosted.org/packages/dd/9a/10ed3c7f72b4c24e719c59359fbadd1a27556a28b36cdf1cd9e4fb7845d5/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306", size = 1183489 }, - { url = "https://files.pythonhosted.org/packages/72/2d/8660892543fabf1fe41861efa222455811adac9f3c0818d6c3170a1153e3/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6", size = 1492932 }, - { url = "https://files.pythonhosted.org/packages/7b/d6/32fd69744afb53995619bc5effa2a405ae0d343cd3e747d0fbc43fe894ee/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0", size = 1392485 }, +] + +[[package]] +name = "referencing" +version = "0.35.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/73ca1f8e72fff6fa52119dbd185f73a907b1989428917b24cff660129b6d/referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c", size = 62991 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de", size = 26684 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481 }, ] [[package]] @@ -1622,38 +1999,132 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, ] +[[package]] +name = "rpds-py" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/23/80/afdf96daf9b27d61483ef05b38f282121db0e38f5fd4e89f40f5c86c2a4f/rpds_py-0.21.0.tar.gz", hash = "sha256:ed6378c9d66d0de903763e7706383d60c33829581f0adff47b6535f1802fa6db", size = 26335 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/5a/3aa6f5d8bacbe4f55ebf9a3c9628dad40cdb57f845124cf13c78895ea156/rpds_py-0.21.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:30b912c965b2aa76ba5168fd610087bad7fcde47f0a8367ee8f1876086ee6d1d", size = 329516 }, + { url = "https://files.pythonhosted.org/packages/df/c0/67c8c8ac850c6e3681e356a59d46315bf73bc77cb50c9a32db8ae44325b7/rpds_py-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca9989d5d9b1b300bc18e1801c67b9f6d2c66b8fd9621b36072ed1df2c977f72", size = 321245 }, + { url = "https://files.pythonhosted.org/packages/64/83/bf31341f21fa594035891ff04a497dc86b210cc1a903a9cc01b097cc614f/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f54e7106f0001244a5f4cf810ba8d3f9c542e2730821b16e969d6887b664266", size = 363951 }, + { url = "https://files.pythonhosted.org/packages/a2/e1/8218bba36737621262df316fbb729639af25ff611cc07bfeaadc1bfa6292/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fed5dfefdf384d6fe975cc026886aece4f292feaf69d0eeb716cfd3c5a4dd8be", size = 373113 }, + { url = "https://files.pythonhosted.org/packages/39/8d/4afcd688e3ad33ec273900f42e6a41e9bd9f43cfc509b6d498683d2d0338/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:590ef88db231c9c1eece44dcfefd7515d8bf0d986d64d0caf06a81998a9e8cab", size = 405944 }, + { url = "https://files.pythonhosted.org/packages/fa/65/3326efa721b6ecd70262aab69a26c9bc19398cdb0a2a416ef30b58326460/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f983e4c2f603c95dde63df633eec42955508eefd8d0f0e6d236d31a044c882d7", size = 422874 }, + { url = "https://files.pythonhosted.org/packages/31/fb/48a647d0afab74289dd21a4128002d58684c22600a22c4bfb76cb9e3bfb0/rpds_py-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b229ce052ddf1a01c67d68166c19cb004fb3612424921b81c46e7ea7ccf7c3bf", size = 364227 }, + { url = "https://files.pythonhosted.org/packages/f1/b0/1cdd179d7382dd52d65b1fd19c54d090b6bd0688dfbe259bb5ab7548c359/rpds_py-0.21.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ebf64e281a06c904a7636781d2e973d1f0926a5b8b480ac658dc0f556e7779f4", size = 386447 }, + { url = "https://files.pythonhosted.org/packages/dc/41/84ace07f31aac3a96b73a374d89106cf252f7d3274e7cae85d17a27c602d/rpds_py-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:998a8080c4495e4f72132f3d66ff91f5997d799e86cec6ee05342f8f3cda7dca", size = 549386 }, + { url = "https://files.pythonhosted.org/packages/33/ce/bf51bc5a3aa539171ea8c7737ab5ac06cef54c79b6b2a0511afc41533c89/rpds_py-0.21.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:98486337f7b4f3c324ab402e83453e25bb844f44418c066623db88e4c56b7c7b", size = 554777 }, + { url = "https://files.pythonhosted.org/packages/76/b1/950568e55a94c2979c2b61ec24e76e648a525fbc7551ccfc1f2841e39d44/rpds_py-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a78d8b634c9df7f8d175451cfeac3810a702ccb85f98ec95797fa98b942cea11", size = 530918 }, + { url = "https://files.pythonhosted.org/packages/78/84/93f00e3613426c8a7a9ca16782d2828f2ac55296dd5c6b599379d9f59ee2/rpds_py-0.21.0-cp312-none-win32.whl", hash = "sha256:a58ce66847711c4aa2ecfcfaff04cb0327f907fead8945ffc47d9407f41ff952", size = 203112 }, + { url = "https://files.pythonhosted.org/packages/e6/08/7a186847dd78881a781d2be9b42c8e49c3261c0f4a6d0289ba9a1e4cde71/rpds_py-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:e860f065cc4ea6f256d6f411aba4b1251255366e48e972f8a347cf88077b24fd", size = 220735 }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.17.40" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ruamel-yaml-clib", marker = "platform_python_implementation == 'CPython'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/d6/eb2833ccba5ea36f8f4de4bcfa0d1a91eb618f832d430b70e3086821f251/ruamel.yaml-0.17.40.tar.gz", hash = "sha256:6024b986f06765d482b5b07e086cc4b4cd05dd22ddcbc758fa23d54873cf313d", size = 137672 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/79/5e2cffa1c77432f11cd93a5351f30732c997a239d3a3090856a72d6d8ba7/ruamel.yaml-0.17.40-py3-none-any.whl", hash = "sha256:b16b6c3816dff0a93dca12acf5e70afd089fa5acb80604afd1ffa8b465b7722c", size = 113666 }, +] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433 }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362 }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118 }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497 }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042 }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831 }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777 }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523 }, +] + [[package]] name = "ruff" -version = "0.7.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4b/06/09d1276df977eece383d0ed66052fc24ec4550a61f8fbc0a11200e690496/ruff-0.7.3.tar.gz", hash = "sha256:e1d1ba2e40b6e71a61b063354d04be669ab0d39c352461f3d789cac68b54a313", size = 3243664 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/56/933d433c2489e4642487b835f53dd9ff015fb3d8fa459b09bb2ce42d7c4b/ruff-0.7.3-py3-none-linux_armv6l.whl", hash = "sha256:34f2339dc22687ec7e7002792d1f50712bf84a13d5152e75712ac08be565d344", size = 10372090 }, - { url = "https://files.pythonhosted.org/packages/20/ea/1f0a22a6bcdd3fc26c73f63a025d05bd565901b729d56bcb093c722a6c4c/ruff-0.7.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:fb397332a1879b9764a3455a0bb1087bda876c2db8aca3a3cbb67b3dbce8cda0", size = 10190037 }, - { url = "https://files.pythonhosted.org/packages/16/74/aca75666e0d481fe394e76a8647c44ea919087748024924baa1a17371e3e/ruff-0.7.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:37d0b619546103274e7f62643d14e1adcbccb242efda4e4bdb9544d7764782e9", size = 9811998 }, - { url = "https://files.pythonhosted.org/packages/20/a1/cf446a0d7f78ea1f0bd2b9171c11dfe746585c0c4a734b25966121eb4f5d/ruff-0.7.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d59f0c3ee4d1a6787614e7135b72e21024875266101142a09a61439cb6e38a5", size = 10620626 }, - { url = "https://files.pythonhosted.org/packages/cd/c1/82b27d09286ae855f5d03b1ad37cf243f21eb0081732d4d7b0d658d439cb/ruff-0.7.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:44eb93c2499a169d49fafd07bc62ac89b1bc800b197e50ff4633aed212569299", size = 10177598 }, - { url = "https://files.pythonhosted.org/packages/b9/42/c0acac22753bf74013d035a5ef6c5c4c40ad4d6686bfb3fda7c6f37d9b37/ruff-0.7.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d0242ce53f3a576c35ee32d907475a8d569944c0407f91d207c8af5be5dae4e", size = 11171963 }, - { url = "https://files.pythonhosted.org/packages/43/18/bb0befb7fb9121dd9009e6a72eb98e24f1bacb07c6f3ecb55f032ba98aed/ruff-0.7.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:6b6224af8b5e09772c2ecb8dc9f3f344c1aa48201c7f07e7315367f6dd90ac29", size = 11856157 }, - { url = "https://files.pythonhosted.org/packages/5e/91/04e98d7d6e32eca9d1372be595f9abc7b7f048795e32eb2edbd8794d50bd/ruff-0.7.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c50f95a82b94421c964fae4c27c0242890a20fe67d203d127e84fbb8013855f5", size = 11440331 }, - { url = "https://files.pythonhosted.org/packages/f5/dc/3fe99f2ce10b76d389041a1b9f99e7066332e479435d4bebcceea16caff5/ruff-0.7.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f3eff9961b5d2644bcf1616c606e93baa2d6b349e8aa8b035f654df252c8c67", size = 12725354 }, - { url = "https://files.pythonhosted.org/packages/43/7b/1daa712de1c5bc6cbbf9fa60e9c41cc48cda962dc6d2c4f2a224d2c3007e/ruff-0.7.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8963cab06d130c4df2fd52c84e9f10d297826d2e8169ae0c798b6221be1d1d2", size = 11010091 }, - { url = "https://files.pythonhosted.org/packages/b6/db/1227a903587432eb569e57a95b15a4f191a71fe315cde4c0312df7bc85da/ruff-0.7.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:61b46049d6edc0e4317fb14b33bd693245281a3007288b68a3f5b74a22a0746d", size = 10610687 }, - { url = "https://files.pythonhosted.org/packages/db/e2/dc41ee90c3085aadad4da614d310d834f641aaafddf3dfbba08210c616ce/ruff-0.7.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:10ebce7696afe4644e8c1a23b3cf8c0f2193a310c18387c06e583ae9ef284de2", size = 10254843 }, - { url = "https://files.pythonhosted.org/packages/6f/09/5f6cac1c91542bc5bd33d40b4c13b637bf64d7bb29e091dadb01b62527fe/ruff-0.7.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3f36d56326b3aef8eeee150b700e519880d1aab92f471eefdef656fd57492aa2", size = 10730962 }, - { url = "https://files.pythonhosted.org/packages/d3/42/89a4b9a24ef7d00269e24086c417a006f9a3ffeac2c80f2629eb5ce140ee/ruff-0.7.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5d024301109a0007b78d57ab0ba190087b43dce852e552734ebf0b0b85e4fb16", size = 11101907 }, - { url = "https://files.pythonhosted.org/packages/b0/5c/efdb4777686683a8edce94ffd812783bddcd3d2454d38c5ac193fef7c500/ruff-0.7.3-py3-none-win32.whl", hash = "sha256:4ba81a5f0c5478aa61674c5a2194de8b02652f17addf8dfc40c8937e6e7d79fc", size = 8611095 }, - { url = "https://files.pythonhosted.org/packages/bb/b8/28fbc6a4efa50178f973972d1c84b2d0a33cdc731588522ab751ac3da2f5/ruff-0.7.3-py3-none-win_amd64.whl", hash = "sha256:588a9ff2fecf01025ed065fe28809cd5a53b43505f48b69a1ac7707b1b7e4088", size = 9418283 }, - { url = "https://files.pythonhosted.org/packages/3f/77/b587cba6febd5e2003374f37eb89633f79f161e71084f94057c8653b7fb3/ruff-0.7.3-py3-none-win_arm64.whl", hash = "sha256:1713e2c5545863cdbfe2cbce21f69ffaf37b813bfd1fb3b90dc9a6f1963f5a8c", size = 8725228 }, +version = "0.7.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/8b/bc4e0dfa1245b07cf14300e10319b98e958a53ff074c1dd86b35253a8c2a/ruff-0.7.4.tar.gz", hash = "sha256:cd12e35031f5af6b9b93715d8c4f40360070b2041f81273d0527683d5708fce2", size = 3275547 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/4b/f5094719e254829766b807dadb766841124daba75a37da83e292ae5ad12f/ruff-0.7.4-py3-none-linux_armv6l.whl", hash = "sha256:a4919925e7684a3f18e18243cd6bea7cfb8e968a6eaa8437971f681b7ec51478", size = 10447512 }, + { url = "https://files.pythonhosted.org/packages/9e/1d/3d2d2c9f601cf6044799c5349ff5267467224cefed9b35edf5f1f36486e9/ruff-0.7.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:cfb365c135b830778dda8c04fb7d4280ed0b984e1aec27f574445231e20d6c63", size = 10235436 }, + { url = "https://files.pythonhosted.org/packages/62/83/42a6ec6216ded30b354b13e0e9327ef75a3c147751aaf10443756cb690e9/ruff-0.7.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:63a569b36bc66fbadec5beaa539dd81e0527cb258b94e29e0531ce41bacc1f20", size = 9888936 }, + { url = "https://files.pythonhosted.org/packages/4d/26/e1e54893b13046a6ad05ee9b89ee6f71542ba250f72b4c7a7d17c3dbf73d/ruff-0.7.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d06218747d361d06fd2fdac734e7fa92df36df93035db3dc2ad7aa9852cb109", size = 10697353 }, + { url = "https://files.pythonhosted.org/packages/21/24/98d2e109c4efc02bfef144ec6ea2c3e1217e7ce0cfddda8361d268dfd499/ruff-0.7.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0cea28d0944f74ebc33e9f934238f15c758841f9f5edd180b5315c203293452", size = 10228078 }, + { url = "https://files.pythonhosted.org/packages/ad/b7/964c75be9bc2945fc3172241b371197bb6d948cc69e28bc4518448c368f3/ruff-0.7.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80094ecd4793c68b2571b128f91754d60f692d64bc0d7272ec9197fdd09bf9ea", size = 11264823 }, + { url = "https://files.pythonhosted.org/packages/12/8d/20abdbf705969914ce40988fe71a554a918deaab62c38ec07483e77866f6/ruff-0.7.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:997512325c6620d1c4c2b15db49ef59543ef9cd0f4aa8065ec2ae5103cedc7e7", size = 11951855 }, + { url = "https://files.pythonhosted.org/packages/b8/fc/6519ce58c57b4edafcdf40920b7273dfbba64fc6ebcaae7b88e4dc1bf0a8/ruff-0.7.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00b4cf3a6b5fad6d1a66e7574d78956bbd09abfd6c8a997798f01f5da3d46a05", size = 11516580 }, + { url = "https://files.pythonhosted.org/packages/37/1a/5ec1844e993e376a86eb2456496831ed91b4398c434d8244f89094758940/ruff-0.7.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7dbdc7d8274e1422722933d1edddfdc65b4336abf0b16dfcb9dedd6e6a517d06", size = 12692057 }, + { url = "https://files.pythonhosted.org/packages/50/90/76867152b0d3c05df29a74bb028413e90f704f0f6701c4801174ba47f959/ruff-0.7.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e92dfb5f00eaedb1501b2f906ccabfd67b2355bdf117fea9719fc99ac2145bc", size = 11085137 }, + { url = "https://files.pythonhosted.org/packages/c8/eb/0a7cb6059ac3555243bd026bb21785bbc812f7bbfa95a36c101bd72b47ae/ruff-0.7.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3bd726099f277d735dc38900b6a8d6cf070f80828877941983a57bca1cd92172", size = 10681243 }, + { url = "https://files.pythonhosted.org/packages/5e/76/2270719dbee0fd35780b05c08a07b7a726c3da9f67d9ae89ef21fc18e2e5/ruff-0.7.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2e32829c429dd081ee5ba39aef436603e5b22335c3d3fff013cd585806a6486a", size = 10319187 }, + { url = "https://files.pythonhosted.org/packages/9f/e5/39100f72f8ba70bec1bd329efc880dea8b6c1765ea1cb9d0c1c5f18b8d7f/ruff-0.7.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:662a63b4971807623f6f90c1fb664613f67cc182dc4d991471c23c541fee62dd", size = 10803715 }, + { url = "https://files.pythonhosted.org/packages/a5/89/40e904784f305fb56850063f70a998a64ebba68796d823dde67e89a24691/ruff-0.7.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:876f5e09eaae3eb76814c1d3b68879891d6fde4824c015d48e7a7da4cf066a3a", size = 11162912 }, + { url = "https://files.pythonhosted.org/packages/8d/1b/dd77503b3875c51e3dbc053fd8367b845ab8b01c9ca6d0c237082732856c/ruff-0.7.4-py3-none-win32.whl", hash = "sha256:75c53f54904be42dd52a548728a5b572344b50d9b2873d13a3f8c5e3b91f5cac", size = 8702767 }, + { url = "https://files.pythonhosted.org/packages/63/76/253ddc3e89e70165bba952ecca424b980b8d3c2598ceb4fc47904f424953/ruff-0.7.4-py3-none-win_amd64.whl", hash = "sha256:745775c7b39f914238ed1f1b0bebed0b9155a17cd8bc0b08d3c87e4703b990d6", size = 9497534 }, + { url = "https://files.pythonhosted.org/packages/aa/70/f8724f31abc0b329ca98b33d73c14020168babcf71b0cba3cded5d9d0e66/ruff-0.7.4-py3-none-win_arm64.whl", hash = "sha256:11bff065102c3ae9d3ea4dc9ecdfe5a5171349cdd0787c1fc64761212fc9cf1f", size = 8851590 }, +] + +[[package]] +name = "semgrep" +version = "1.85.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "boltons" }, + { name = "click" }, + { name = "click-option-group" }, + { name = "colorama" }, + { name = "defusedxml" }, + { name = "exceptiongroup" }, + { name = "glom" }, + { name = "jsonschema" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-http" }, + { name = "opentelemetry-instrumentation-requests" }, + { name = "opentelemetry-sdk" }, + { name = "packaging" }, + { name = "peewee" }, + { name = "requests" }, + { name = "rich" }, + { name = "ruamel-yaml" }, + { name = "tomli" }, + { name = "typing-extensions" }, + { name = "urllib3" }, + { name = "wcmatch" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/41/3e42c952458400baf0cf3f89e79dfc1d93ea636eedeb6ebaae33280e4383/semgrep-1.85.0.tar.gz", hash = "sha256:1a321cca4c5da84eb466ca1a4ceda10223e806225e371c4fef710cfe4b4b1df7", size = 27204522 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/04/53e7df61e90f66f45e0f7d60b52d3787bdaae550c5c5a0940c40dce28036/semgrep-1.85.0-cp38.cp39.cp310.cp311.py37.py38.py39.py310.py311-none-any.whl", hash = "sha256:91fab3a0aa7f987a6605e01617179a363338350cca51174905d6ad0080a8d08e", size = 27619862 }, + { url = "https://files.pythonhosted.org/packages/e0/6a/0762eded629759b3b876dcd81a33a736a3ecae08a4896f21abcc4c800b3d/semgrep-1.85.0-cp38.cp39.cp310.cp311.py37.py38.py39.py310.py311-none-macosx_10_14_x86_64.whl", hash = "sha256:a63055b392da70c46947780f43fecf54064fb60d8de11a16902e0cc149350a3e", size = 27833827 }, + { url = "https://files.pythonhosted.org/packages/97/fc/d34edce42fc2785645f64345d91b3ebd7d705c129306e0b420bd4ae0d31a/semgrep-1.85.0-cp38.cp39.cp310.cp311.py37.py38.py39.py310.py311-none-macosx_11_0_arm64.whl", hash = "sha256:157b7724c35a8bda972921abfaaf252bdb754bbda004b2a82aaa38ac8099e176", size = 33557689 }, + { url = "https://files.pythonhosted.org/packages/23/0e/679e6fe0b6f3e1496f01ad28a79829b832df69f19815a3891f0e9a144b35/semgrep-1.85.0-cp38.cp39.cp310.cp311.py37.py38.py39.py310.py311-none-musllinux_1_0_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6b5d509576bbe0d68245d9ee2973ccecb485ca5907e85a7a8793552bf622cb", size = 32246576 }, ] [[package]] name = "setuptools" -version = "75.3.0" +version = "75.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ed/22/a438e0caa4576f8c383fa4d35f1cc01655a46c75be358960d815bfbb12bd/setuptools-75.3.0.tar.gz", hash = "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686", size = 1351577 } +sdist = { url = "https://files.pythonhosted.org/packages/c8/db/722a42ffdc226e950c4757b3da7b56ff5c090bb265dccd707f7b8a3c6fee/setuptools-75.5.0.tar.gz", hash = "sha256:5c4ccb41111392671f02bb5f8436dfc5a9a7185e80500531b133f5775c4163ef", size = 1336032 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/12/282ee9bce8b58130cb762fbc9beabd531549952cac11fc56add11dcb7ea0/setuptools-75.3.0-py3-none-any.whl", hash = "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd", size = 1251070 }, + { url = "https://files.pythonhosted.org/packages/fe/df/88ccbee85aefbca071db004fdc8f8d2507d55d5a9dc27ebb93c92edb1bd8/setuptools-75.5.0-py3-none-any.whl", hash = "sha256:87cb777c3b96d638ca02031192d40390e0ad97737e27b6b4fa831bea86f2f829", size = 1222710 }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, ] [[package]] @@ -1665,6 +2136,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, ] +[[package]] +name = "smmap" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/04/b5bf6d21dc4041000ccba7eb17dd3055feb237e7ffc2c20d3fae3af62baa/smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62", size = 22291 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/a5/10f97f73544edcdef54409f1d839f6049a0d79df68adbc1ceb24d1aaca42/smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da", size = 24282 }, +] + [[package]] name = "snowballstemmer" version = "2.2.0" @@ -1685,11 +2165,11 @@ wheels = [ [[package]] name = "sqlparse" -version = "0.5.1" +version = "0.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/73/82/dfa23ec2cbed08a801deab02fe7c904bfb00765256b155941d789a338c68/sqlparse-0.5.1.tar.gz", hash = "sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e", size = 84502 } +sdist = { url = "https://files.pythonhosted.org/packages/57/61/5bc3aff85dc5bf98291b37cf469dab74b3d0aef2dd88eade9070a200af05/sqlparse-0.5.2.tar.gz", hash = "sha256:9e37b35e16d1cc652a2545f0997c1deb23ea28fa1f3eefe609eee3063c3b105f", size = 84951 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/a5/b2860373aa8de1e626b2bdfdd6df4355f0565b47e51f7d0c54fe70faf8fe/sqlparse-0.5.1-py3-none-any.whl", hash = "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4", size = 44156 }, + { url = "https://files.pythonhosted.org/packages/7a/13/5f6654c9d915077fae255686ca6fa42095b62b7337e3e1aa9e82caa6f43a/sqlparse-0.5.2-py3-none-any.whl", hash = "sha256:e99bc85c78160918c3e1d9230834ab8d80fc06c59d03f8db2618f65f65dda55e", size = 44407 }, ] [[package]] @@ -1718,81 +2198,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/50/70762bdb23f6c2b746b90661f461d33c4913a22a46bb5265b10947e85ffb/stevedore-5.3.0-py3-none-any.whl", hash = "sha256:1efd34ca08f474dad08d9b19e934a22c68bb6fe416926479ba29e5013bcc8f78", size = 49661 }, ] -[[package]] -name = "superschema" -version = "0.1.0" -source = { editable = "." } - -[package.dev-dependencies] -dev = [ - { name = "basedpyright" }, - { name = "beartype" }, - { name = "debugpy" }, - { name = "django" }, - { name = "django-ninja" }, - { name = "django-stubs", extra = ["compatible-mypy"] }, - { name = "django-stubs-ext" }, - { name = "email-validator" }, - { name = "hypothesis" }, - { name = "import-linter" }, - { name = "ipykernel" }, - { name = "isort" }, - { name = "mypy" }, - { name = "ninja-schema" }, - { name = "nox" }, - { name = "pydantic" }, - { name = "pylint-django" }, - { name = "pyre-check" }, - { name = "pyright" }, - { name = "pytest" }, - { name = "pytest-cov" }, - { name = "pytest-django" }, - { name = "pytest-instafail" }, - { name = "pytest-testmon" }, - { name = "pytest-watch" }, - { name = "pytype" }, - { name = "rich" }, - { name = "ruff" }, - { name = "typeguard" }, - { name = "wemake-python-styleguide" }, -] - -[package.metadata] - -[package.metadata.requires-dev] -dev = [ - { name = "basedpyright", specifier = ">=1.21.0" }, - { name = "beartype", specifier = ">=0.19.0" }, - { name = "debugpy", specifier = ">=1.8.8" }, - { name = "django", specifier = ">=5.1.3" }, - { name = "django-ninja", specifier = ">=1.3.0" }, - { name = "django-stubs", extras = ["compatible-mypy"], specifier = ">=5.1.1" }, - { name = "django-stubs-ext", specifier = ">=5.1.1" }, - { name = "email-validator", specifier = ">=2.2.0" }, - { name = "hypothesis", specifier = ">=6.118.0" }, - { name = "import-linter", specifier = ">=2.1" }, - { name = "ipykernel", specifier = ">=6.29.5" }, - { name = "isort", specifier = ">=5.13.2" }, - { name = "mypy", specifier = ">=1.13.0" }, - { name = "ninja-schema", specifier = ">=0.13.6" }, - { name = "nox", specifier = ">=2024.10.9" }, - { name = "pydantic", specifier = ">=2.9.2" }, - { name = "pylint-django", specifier = ">=2.6.1" }, - { name = "pyre-check", specifier = ">=0.9.23" }, - { name = "pyright", specifier = ">=1.1.388" }, - { name = "pytest", specifier = ">=8.3.3" }, - { name = "pytest-cov", specifier = ">=6.0.0" }, - { name = "pytest-django", specifier = ">=4.9.0" }, - { name = "pytest-instafail", specifier = ">=0.5.0" }, - { name = "pytest-testmon", specifier = ">=2.1.1" }, - { name = "pytest-watch", specifier = ">=4.2.0" }, - { name = "pytype", specifier = ">=2024.10.11" }, - { name = "rich", specifier = ">=13.9.4" }, - { name = "ruff", specifier = ">=0.7.3" }, - { name = "typeguard", specifier = ">=4.4.1" }, - { name = "wemake-python-styleguide", specifier = ">=0.19.2" }, -] - [[package]] name = "tabulate" version = "0.9.0" @@ -1822,6 +2227,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588 }, ] +[[package]] +name = "tomli" +version = "2.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/b9/de2a5c0144d7d75a57ff355c0c24054f965b2dc3036456ae03a51ea6264b/tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed", size = 16096 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/db/ce8eda256fa131af12e0a76d481711abe4681b6923c27efb9a255c9e4594/tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38", size = 13237 }, +] + [[package]] name = "tomlkit" version = "0.13.2" @@ -1910,6 +2324,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd", size = 346586 }, ] +[[package]] +name = "urllib3" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, +] + [[package]] name = "virtualenv" version = "20.27.1" @@ -1933,9 +2356,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, - { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, - { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, @@ -1948,6 +2368,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, ] +[[package]] +name = "wcmatch" +version = "8.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bracex" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/c4/55e0d36da61d7b8b2a49fd273e6b296fd5e8471c72ebbe438635d1af3968/wcmatch-8.5.2.tar.gz", hash = "sha256:a70222b86dea82fb382dd87b73278c10756c138bd6f8f714e2183128887b9eb2", size = 114983 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/78/533ef890536e5ba0fd4f7df37482b5800ecaaceae9afc30978a1a7f88ff1/wcmatch-8.5.2-py3-none-any.whl", hash = "sha256:17d3ad3758f9d0b5b4dedc770b65420d4dac62e680229c287bf24c9db856a478", size = 39397 }, +] + [[package]] name = "wcwidth" version = "0.2.13" @@ -1987,3 +2419,31 @@ sdist = { url = "https://files.pythonhosted.org/packages/c2/f4/2a76c59661fae8534 wheels = [ { url = "https://files.pythonhosted.org/packages/fd/c4/0e36d00c88e995f2a0e5de8c61bb130a4acdc1b458b6bf8c7a474b127890/wemake_python_styleguide-0.19.2-py3-none-any.whl", hash = "sha256:d53205dbb629755026d853d15fb3ca03ebb2717c97de4198b5676b9bdc0663bd", size = 224081 }, ] + +[[package]] +name = "wrapt" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/4c/063a912e20bcef7124e0df97282a8af3ff3e4b603ce84c481d6d7346be0a/wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d", size = 53972 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/17/224132494c1e23521868cdd57cd1e903f3b6a7ba6996b7b8f077ff8ac7fe/wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b", size = 37614 }, + { url = "https://files.pythonhosted.org/packages/6a/d7/cfcd73e8f4858079ac59d9db1ec5a1349bc486ae8e9ba55698cc1f4a1dff/wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36", size = 38316 }, + { url = "https://files.pythonhosted.org/packages/7e/79/5ff0a5c54bda5aec75b36453d06be4f83d5cd4932cc84b7cb2b52cee23e2/wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73", size = 86322 }, + { url = "https://files.pythonhosted.org/packages/c4/81/e799bf5d419f422d8712108837c1d9bf6ebe3cb2a81ad94413449543a923/wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809", size = 79055 }, + { url = "https://files.pythonhosted.org/packages/62/62/30ca2405de6a20448ee557ab2cd61ab9c5900be7cbd18a2639db595f0b98/wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b", size = 87291 }, + { url = "https://files.pythonhosted.org/packages/49/4e/5d2f6d7b57fc9956bf06e944eb00463551f7d52fc73ca35cfc4c2cdb7aed/wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81", size = 90374 }, + { url = "https://files.pythonhosted.org/packages/a6/9b/c2c21b44ff5b9bf14a83252a8b973fb84923764ff63db3e6dfc3895cf2e0/wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9", size = 83896 }, + { url = "https://files.pythonhosted.org/packages/14/26/93a9fa02c6f257df54d7570dfe8011995138118d11939a4ecd82cb849613/wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c", size = 91738 }, + { url = "https://files.pythonhosted.org/packages/a2/5b/4660897233eb2c8c4de3dc7cefed114c61bacb3c28327e64150dc44ee2f6/wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc", size = 35568 }, + { url = "https://files.pythonhosted.org/packages/5c/cc/8297f9658506b224aa4bd71906447dea6bb0ba629861a758c28f67428b91/wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8", size = 37653 }, + { url = "https://files.pythonhosted.org/packages/ff/21/abdedb4cdf6ff41ebf01a74087740a709e2edb146490e4d9beea054b0b7a/wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1", size = 23362 }, +] + +[[package]] +name = "zipp" +version = "3.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, +]