diff --git a/.pylintrc b/.pylintrc index 0a89910..277bfc3 100644 --- a/.pylintrc +++ b/.pylintrc @@ -101,7 +101,7 @@ source-roots= # When enabled, pylint would attempt to guess common misconfiguration and emit # user-friendly hints instead of false-positive error messages. -suggestion-mode=yes +# suggestion-mode=yes # Deprecated option, removed # Allow loading of arbitrary C extensions. Extensions are imported into the # active Python interpreter and may run arbitrary code. diff --git a/examples/b_end_2_end/requirements-dev.in b/examples/b_end_2_end/requirements-dev.in index 2e52564..05b6977 100644 --- a/examples/b_end_2_end/requirements-dev.in +++ b/examples/b_end_2_end/requirements-dev.in @@ -1,3 +1,3 @@ -r requirements.txt python-dotenv -servey[server,serverless,web_page]~=2.6 \ No newline at end of file +servey[server,serverless,web_page] \ No newline at end of file diff --git a/examples/b_end_2_end/requirements.in b/examples/b_end_2_end/requirements.in index 525f4a1..a20dc8d 100644 --- a/examples/b_end_2_end/requirements.in +++ b/examples/b_end_2_end/requirements.in @@ -1 +1 @@ -servey~=2.6 \ No newline at end of file +servey \ No newline at end of file diff --git a/examples/b_end_2_end/requirements.txt b/examples/b_end_2_end/requirements.txt index 234ea79..7e60f82 100644 --- a/examples/b_end_2_end/requirements.txt +++ b/examples/b_end_2_end/requirements.txt @@ -1,8 +1,8 @@ # -# This file is autogenerated by pip-compile with Python 3.9 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --generate-hashes --no-emit-index-url --no-reuse-hashes requirements.in +# pip-compile --generate-hashes --no-emit-index-url requirements.in # attrs==22.2.0 \ --hash=sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836 \ diff --git a/injecty_config_servey/__init__.py b/injecty_config_servey/__init__.py index 22508b9..d8d620c 100644 --- a/injecty_config_servey/__init__.py +++ b/injecty_config_servey/__init__.py @@ -18,6 +18,7 @@ def configure(context: InjectyContext): ) context.register_impl(MarshallerABC, ToSecondDatetimeMarshaller) + configure_schemey(context) configure_finders(context) configure_asyncio_invoker(context) configure_auth(context) @@ -30,6 +31,98 @@ def configure(context: InjectyContext): configure_jinja2(context) +def configure_schemey(context: InjectyContext): + """Configure schemey schema factories for dependency injection.""" + _configure_schema_factories(context) + _configure_schema_validators(context) + + +def _configure_schema_factories(context: InjectyContext): + """Configure schema factory implementations.""" + from schemey.factory.schema_factory_abc import SchemaFactoryABC + from schemey.factory.simple_type_factory import SimpleTypeFactory + + # Get all factory classes + simple_type_factories = _create_simple_type_factories(SimpleTypeFactory) + imported_factories = _import_schema_factories() + factory_classes = simple_type_factories + imported_factories + + for factory_class in factory_classes: + context.register_impl(SchemaFactoryABC, factory_class) + + +def _import_schema_factories(): + """Import and return all schema factory classes.""" + from schemey.factory.dataclass_schema_factory import DataclassSchemaFactory + from schemey.factory.enum_schema_factory import EnumSchemaFactory + from schemey.factory.array_schema_factory import ArraySchemaFactory + from schemey.factory.tuple_schema_factory import TupleSchemaFactory + from schemey.factory.datetime_factory import DatetimeFactory + from schemey.factory.uuid_factory import UuidFactory + from schemey.factory.external_type_factory import ExternalTypeFactory + from schemey.factory.any_of_schema_factory import AnyOfSchemaFactory + from schemey.factory.ref_schema_factory import RefSchemaFactory + from schemey.factory.impl_schema_factory import ImplSchemaFactory + from schemey.factory.factory_schema_factory import FactorySchemaFactory + + return [ + ExternalTypeFactory, + ArraySchemaFactory, + TupleSchemaFactory, + DataclassSchemaFactory, + EnumSchemaFactory, + DatetimeFactory, + UuidFactory, + AnyOfSchemaFactory, + RefSchemaFactory, + ImplSchemaFactory, + FactorySchemaFactory, + ] + + +def _create_simple_type_factories(SimpleTypeFactory): + """Create custom factory classes for simple types.""" + + class StrSchemaFactory(SimpleTypeFactory): + def __init__(self): + super().__init__(str, "string") + + class IntSchemaFactory(SimpleTypeFactory): + def __init__(self): + super().__init__(int, "integer") + + class FloatSchemaFactory(SimpleTypeFactory): + def __init__(self): + super().__init__(float, "number") + + class BoolSchemaFactory(SimpleTypeFactory): + def __init__(self): + super().__init__(bool, "boolean") + + class NoneSchemaFactory(SimpleTypeFactory): + def __init__(self): + super().__init__(type(None), "null") + + return [ + StrSchemaFactory, + IntSchemaFactory, + FloatSchemaFactory, + BoolSchemaFactory, + NoneSchemaFactory, + ] + + +def _configure_schema_validators(context: InjectyContext): + """Configure schema validator implementations.""" + from schemey.json_schema.schema_validator_abc import SchemaValidatorABC + from schemey.json_schema.ranges_validator import RangesValidator + from schemey.json_schema.timestamp_validator import TimestampValidator + + validator_classes = [RangesValidator, TimestampValidator] + for validator_class in validator_classes: + context.register_impl(SchemaValidatorABC, validator_class) + + def configure_finders(context: InjectyContext): from servey.finder.action_finder_abc import ActionFinderABC from servey.finder.module_action_finder import ModuleActionFinder diff --git a/pyproject.toml b/pyproject.toml index 1fb3c98..7945650 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,13 +14,13 @@ classifiers = [ "Operating System :: OS Independent", ] dependencies = [ - "cryptography~=37.0", + "cryptography~=46.0", "injecty~=0.0", "json-urley~=1.0", - "marshy~=5.0", - "pyjwt~=2.4", - "python-dateutil~=2.8", - "schemey~=7.0", + "marshy~=6.0", + "pyjwt~=2.10", + "python-dateutil~=2.9", + "schemey~=8.0", ] [project.urls] @@ -28,49 +28,48 @@ Repository = "https://github.com/tofarr/servey" [project.optional-dependencies] dev = [ - "black~=23.3", - "boto3~=1.26", - "pytest~=7.2", - "pytest-cov~=4.0", - "pytest-xdist~=3.2", - "pylint~=3.0", + "black~=25.11", + "boto3~=1.42", + "pytest~=9.0", + "pytest-cov~=7.0", + "pytest-xdist~=3.8", + "pylint~=4.0", ] server = [ - "starlette~=0.19", - "strawberry-graphql~=0.151", - "uvicorn[standard]~=0.18", - "pygments~=2.13", - "requests~=2.28", + "starlette~=0.50", + "strawberry-graphql~=0.287", + "uvicorn[standard]~=0.38", + "pygments~=2.19", + "requests~=2.32", "python-multipart~=0.0", ] scheduler = [ - "celery~=5.2", + "celery~=5.6", ] serverless = [ "pyyaml~=6.0", - "ruamel.yaml~=0.17", - "strawberry-graphql~=0.177", + "ruamel.yaml~=0.18", + "strawberry-graphql~=0.287", ] web_page = [ "Jinja2~=3.1", ] all = [ - "black~=23.3", - "boto3~=1.26", - "pytest~=7.2", - "pytest-cov~=4.0", - "pytest-xdist~=3.2", - "pylint~=3.0", - "starlette~=0.19", - "strawberry-graphql~=0.151", - "uvicorn[standard]~=0.18", - "pygments~=2.13", - "requests~=2.28", + "black~=25.11", + "boto3~=1.42", + "pytest~=9.0", + "pytest-cov~=7.0", + "pytest-xdist~=3.8", + "pylint~=4.0", + "starlette~=0.50", + "strawberry-graphql~=0.287", + "uvicorn[standard]~=0.38", + "pygments~=2.19", + "requests~=2.32", "python-multipart~=0.0", - "celery~=5.2", + "celery~=5.6", "pyyaml~=6.0", - "ruamel.yaml~=0.17", - "strawberry-graphql~=0.177", + "ruamel.yaml~=0.18", "Jinja2~=3.1", ] @@ -95,6 +94,7 @@ extend-exclude = "_version.py" [dependency-groups] dev = [ + "black>=25.11.0", "hatch-vcs>=0.5.0", "hatchling>=1.28.0", -] \ No newline at end of file +] diff --git a/schemey-8.0.0-py3-none-any.whl b/schemey-8.0.0-py3-none-any.whl new file mode 100644 index 0000000..985589c Binary files /dev/null and b/schemey-8.0.0-py3-none-any.whl differ diff --git a/servey/servey_strawberry/entity_factory/enum_factory.py b/servey/servey_strawberry/entity_factory/enum_factory.py index b36d752..acf033c 100644 --- a/servey/servey_strawberry/entity_factory/enum_factory.py +++ b/servey/servey_strawberry/entity_factory/enum_factory.py @@ -22,9 +22,9 @@ def create_type( strawberry_enum = schema_factory.enums.get(annotation.__name__) if not strawberry_enum: # noinspection PyTypeChecker - strawberry_enum = schema_factory.enums[ - annotation.__name__ - ] = strawberry.enum(annotation) + strawberry_enum = schema_factory.enums[annotation.__name__] = ( + strawberry.enum(annotation) + ) return strawberry_enum def create_input( diff --git a/servey/servey_strawberry/handler_filter/authorization_handler_filter.py b/servey/servey_strawberry/handler_filter/authorization_handler_filter.py index 66c30b0..baadee1 100644 --- a/servey/servey_strawberry/handler_filter/authorization_handler_filter.py +++ b/servey/servey_strawberry/handler_filter/authorization_handler_filter.py @@ -23,7 +23,9 @@ class AuthorizationHandlerFilter(HandlerFilterABC): priority: int = 120 authorizer: AuthorizerABC = field(default_factory=get_default_authorizer) # What to name the authorization parameter if none exists. - info_kwarg_name: str = "info" # NOTE: It seems that strawberry reserves the name: Info for this parameter + info_kwarg_name: str = ( + "info" # NOTE: It seems that strawberry reserves the name: Info for this parameter + ) def filter( self, diff --git a/servey/servey_test/test_servey_actions.py b/servey/servey_test/test_servey_actions.py index c94e51b..ee31944 100644 --- a/servey/servey_test/test_servey_actions.py +++ b/servey/servey_test/test_servey_actions.py @@ -30,8 +30,8 @@ def define_test_class(): for action in find_actions(): for example in action.examples or []: if example.include_in_tests: - test_methods[ - "test_" + action.name + "__" + example.name - ] = _define_action_example_test(action, example) + test_methods["test_" + action.name + "__" + example.name] = ( + _define_action_example_test(action, example) + ) test_class = type("TestServeyActions", (TestCase,), test_methods) return test_class diff --git a/servey/util/singleton_abc.py b/servey/util/singleton_abc.py index 6d789c1..644b046 100644 --- a/servey/util/singleton_abc.py +++ b/servey/util/singleton_abc.py @@ -29,8 +29,8 @@ def __marshaller_factory__(cls, marshaller_context): class SingletonMarshaller(MarshallerABC[T]): marshalled_type: T - def load(self, item: ExternalType) -> T: + def load(self, _item: ExternalType) -> T: return self.marshalled_type() - def dump(self, item: T) -> ExternalType: + def dump(self, _item: T) -> ExternalType: return self.marshalled_type.__name__ diff --git a/servey_main/actions.py b/servey_main/actions.py index 9f95816..4096f15 100644 --- a/servey_main/actions.py +++ b/servey_main/actions.py @@ -29,7 +29,7 @@ def current_time() -> datetime: @action( triggers=(WEB_GET,), examples=( - Example(name="usage", result=dict(scope=["root"]), include_in_tests=False), + Example(name="usage", result={"scope": ["root"]}, include_in_tests=False), ), ) def current_user_info( @@ -55,7 +55,7 @@ def auth_token(username: str, password: str) -> Optional[str]: @action( triggers=(WEB_GET,), - examples=(Example(name="world", params=dict(name="World"), result="Hello World!"),), + examples=(Example(name="world", params={"name": "World"}, result="Hello World!"),), ) def say_hello(name: str) -> str: """ @@ -149,7 +149,7 @@ def get_node_by_name(name: str = "") -> Optional[Node]: # noinspection PyUnusedLocal @action(triggers=(WEB_POST,)) def put_root(node: Node) -> bool: - global _ROOT + global _ROOT # pylint: disable=global-statement _ROOT = node return True diff --git a/servey_main/event_channels.py b/servey_main/event_channels.py index 94d2f1b..eb9e918 100644 --- a/servey_main/event_channels.py +++ b/servey_main/event_channels.py @@ -6,8 +6,36 @@ from servey.event_channel.websocket.websocket_event_channel import ( websocket_event_channel, ) -from servey_main.actions import print_consumer + +# pylint: disable=cyclic-import messenger = websocket_event_channel("messenger", str) -printer = background_action_channel(get_action(print_consumer)) +# Lazy initialization to avoid cyclic import +_printer = None + + +def get_printer(): + """Get the printer event channel, initializing it if needed.""" + global _printer # pylint: disable=global-statement + if _printer is None: + from servey_main.actions import ( + print_consumer, + ) # pylint: disable=import-outside-toplevel + + _printer = background_action_channel(get_action(print_consumer)) + return _printer + + +# For backward compatibility +class PrinterProxy: + """Proxy object that delegates to the lazily-initialized printer.""" + + def publish(self, event): + return get_printer().publish(event) + + def __getattr__(self, name): + return getattr(get_printer(), name) + + +printer = PrinterProxy() diff --git a/tests/servey_aws/test_lambda_router.py b/tests/servey_aws/test_lambda_router.py index 8782cf6..a86631c 100644 --- a/tests/servey_aws/test_lambda_router.py +++ b/tests/servey_aws/test_lambda_router.py @@ -29,10 +29,13 @@ def test_router_no_handler(self): def echo_get(val: str) -> str: """Dummy""" - with patch( - "servey.servey_aws.router.router.find_actions", - return_value=[get_action(echo_get)], - ), self.assertRaises(StopIteration): + with ( + patch( + "servey.servey_aws.router.router.find_actions", + return_value=[get_action(echo_get)], + ), + self.assertRaises(StopIteration), + ): event = dict(action_name="not_existing") invoke(event, None) @@ -41,10 +44,13 @@ def test_router_no_action(self): def echo_get(val: str) -> str: """Dummy""" - with patch( - "servey.servey_aws.router.router.find_actions", - return_value=[get_action(echo_get)], - ), self.assertRaises(ServeyError): + with ( + patch( + "servey.servey_aws.router.router.find_actions", + return_value=[get_action(echo_get)], + ), + self.assertRaises(ServeyError), + ): invoke({}, None) def test_router_api_gateway(self): @@ -52,12 +58,15 @@ def test_router_api_gateway(self): def echo_get(val: str) -> str: return val - with patch( - "servey.servey_aws.router.router.find_actions", - return_value=[get_action(echo_get)], - ), patch( - "servey.finder.action_finder_abc.find_actions", - return_value=[get_action(echo_get)], + with ( + patch( + "servey.servey_aws.router.router.find_actions", + return_value=[get_action(echo_get)], + ), + patch( + "servey.finder.action_finder_abc.find_actions", + return_value=[get_action(echo_get)], + ), ): event = dict(path="/actions/echo-get", params=dict(val="foo")) result = invoke(event, None) @@ -69,12 +78,15 @@ def test_router_appsync(self): def echo_get(val: str) -> str: return val - with patch( - "servey.servey_aws.router.router.find_actions", - return_value=[get_action(echo_get)], - ), patch( - "servey.finder.action_finder_abc.find_actions", - return_value=[get_action(echo_get)], + with ( + patch( + "servey.servey_aws.router.router.find_actions", + return_value=[get_action(echo_get)], + ), + patch( + "servey.finder.action_finder_abc.find_actions", + return_value=[get_action(echo_get)], + ), ): event = dict(path="/actions/echo-get", params=dict(val="foo")) result = invoke(event, None) diff --git a/uv.lock b/uv.lock index 71605cf..b05ecc5 100644 --- a/uv.lock +++ b/uv.lock @@ -35,14 +35,14 @@ wheels = [ [[package]] name = "astroid" -version = "3.3.11" +version = "4.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/18/74/dfb75f9ccd592bbedb175d4a32fc643cf569d7c218508bfbd6ea7ef9c091/astroid-3.3.11.tar.gz", hash = "sha256:1e5a5011af2920c7c67a53f65d536d65bfa7116feeaf2354d8b94f29573bb0ce", size = 400439, upload-time = "2025-07-13T18:04:23.177Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/22/97df040e15d964e592d3a180598ace67e91b7c559d8298bdb3c949dc6e42/astroid-4.0.2.tar.gz", hash = "sha256:ac8fb7ca1c08eb9afec91ccc23edbd8ac73bb22cbdd7da1d488d9fb8d6579070", size = 405714, upload-time = "2025-11-09T21:21:18.373Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/0f/3b8fdc946b4d9cc8cc1e8af42c4e409468c84441b933d037e101b3d72d86/astroid-3.3.11-py3-none-any.whl", hash = "sha256:54c760ae8322ece1abd213057c4b5bba7c49818853fc901ef09719a60dbf9dec", size = 275612, upload-time = "2025-07-13T18:04:21.07Z" }, + { url = "https://files.pythonhosted.org/packages/93/ac/a85b4bfb4cf53221513e27f33cc37ad158fce02ac291d18bee6b49ab477d/astroid-4.0.2-py3-none-any.whl", hash = "sha256:d7546c00a12efc32650b19a2bb66a153883185d3179ab0d4868086f807338b9b", size = 276354, upload-time = "2025-11-09T21:21:16.54Z" }, ] [[package]] @@ -65,7 +65,7 @@ wheels = [ [[package]] name = "black" -version = "23.12.1" +version = "25.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -73,24 +73,33 @@ dependencies = [ { name = "packaging" }, { name = "pathspec" }, { name = "platformdirs" }, + { name = "pytokens" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fd/f4/a57cde4b60da0e249073009f4a9087e9e0a955deae78d3c2a493208d0c5c/black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5", size = 620809, upload-time = "2023-12-22T23:06:17.382Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/58/677da52d845b59505a8a787ff22eff9cfd9046b5789aa2bd387b236db5c5/black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2", size = 1560531, upload-time = "2023-12-22T23:18:20.555Z" }, - { url = "https://files.pythonhosted.org/packages/11/92/522a4f1e4b2b8da62e4ec0cb8acf2d257e6d39b31f4214f0fd94d2eeb5bd/black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba", size = 1404644, upload-time = "2023-12-22T23:17:46.425Z" }, - { url = "https://files.pythonhosted.org/packages/a4/dc/af67d8281e9a24f73d24b060f3f03f6d9ad6be259b3c6acef2845e17d09c/black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0", size = 1711153, upload-time = "2023-12-22T23:08:34.4Z" }, - { url = "https://files.pythonhosted.org/packages/7e/0f/94d7c36b421ea187359c413be7b9fc66dc105620c3a30b1c94310265830a/black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3", size = 1332918, upload-time = "2023-12-22T23:10:28.188Z" }, - { url = "https://files.pythonhosted.org/packages/ed/2c/d9b1a77101e6e5f294f6553d76c39322122bfea2a438aeea4eb6d4b22749/black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba", size = 1541926, upload-time = "2023-12-22T23:23:17.72Z" }, - { url = "https://files.pythonhosted.org/packages/72/e2/d981a3ff05ba9abe3cfa33e70c986facb0614fd57c4f802ef435f4dd1697/black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b", size = 1388465, upload-time = "2023-12-22T23:19:00.611Z" }, - { url = "https://files.pythonhosted.org/packages/eb/59/1f5c8eb7bba8a8b1bb5c87f097d16410c93a48a6655be3773db5d2783deb/black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59", size = 1691993, upload-time = "2023-12-22T23:08:32.018Z" }, - { url = "https://files.pythonhosted.org/packages/37/bf/a80abc6fcdb00f0d4d3d74184b172adbf2197f6b002913fa0fb6af4dc6db/black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50", size = 1340929, upload-time = "2023-12-22T23:09:37.088Z" }, - { url = "https://files.pythonhosted.org/packages/66/16/8726cedc83be841dfa854bbeef1288ee82272282a71048d7935292182b0b/black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e", size = 1569989, upload-time = "2023-12-22T23:20:22.158Z" }, - { url = "https://files.pythonhosted.org/packages/d2/1e/30f5eafcc41b8378890ba39b693fa111f7dca8a2620ba5162075d95ffe46/black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec", size = 1398647, upload-time = "2023-12-22T23:19:57.225Z" }, - { url = "https://files.pythonhosted.org/packages/99/de/ddb45cc044256431d96d846ce03164d149d81ca606b5172224d1872e0b58/black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e", size = 1720450, upload-time = "2023-12-22T23:08:52.675Z" }, - { url = "https://files.pythonhosted.org/packages/98/2b/54e5dbe9be5a10cbea2259517206ff7b6a452bb34e07508c7e1395950833/black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9", size = 1351070, upload-time = "2023-12-22T23:09:32.762Z" }, - { url = "https://files.pythonhosted.org/packages/7b/14/4da7b12a9abc43a601c215cb5a3d176734578da109f0dbf0a832ed78be09/black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e", size = 194363, upload-time = "2023-12-22T23:06:14.278Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/8c/ad/33adf4708633d047950ff2dfdea2e215d84ac50ef95aff14a614e4b6e9b2/black-25.11.0.tar.gz", hash = "sha256:9a323ac32f5dc75ce7470501b887250be5005a01602e931a15e45593f70f6e08", size = 655669, upload-time = "2025-11-10T01:53:50.558Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/d2/6caccbc96f9311e8ec3378c296d4f4809429c43a6cd2394e3c390e86816d/black-25.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ec311e22458eec32a807f029b2646f661e6859c3f61bc6d9ffb67958779f392e", size = 1743501, upload-time = "2025-11-10T01:59:06.202Z" }, + { url = "https://files.pythonhosted.org/packages/69/35/b986d57828b3f3dccbf922e2864223197ba32e74c5004264b1c62bc9f04d/black-25.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1032639c90208c15711334d681de2e24821af0575573db2810b0763bcd62e0f0", size = 1597308, upload-time = "2025-11-10T01:57:58.633Z" }, + { url = "https://files.pythonhosted.org/packages/39/8e/8b58ef4b37073f52b64a7b2dd8c9a96c84f45d6f47d878d0aa557e9a2d35/black-25.11.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0c0f7c461df55cf32929b002335883946a4893d759f2df343389c4396f3b6b37", size = 1656194, upload-time = "2025-11-10T01:57:10.909Z" }, + { url = "https://files.pythonhosted.org/packages/8d/30/9c2267a7955ecc545306534ab88923769a979ac20a27cf618d370091e5dd/black-25.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:f9786c24d8e9bd5f20dc7a7f0cdd742644656987f6ea6947629306f937726c03", size = 1347996, upload-time = "2025-11-10T01:57:22.391Z" }, + { url = "https://files.pythonhosted.org/packages/c4/62/d304786b75ab0c530b833a89ce7d997924579fb7484ecd9266394903e394/black-25.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:895571922a35434a9d8ca67ef926da6bc9ad464522a5fe0db99b394ef1c0675a", size = 1727891, upload-time = "2025-11-10T02:01:40.507Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/ffe8a006aa522c9e3f430e7b93568a7b2163f4b3f16e8feb6d8c3552761a/black-25.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cb4f4b65d717062191bdec8e4a442539a8ea065e6af1c4f4d36f0cdb5f71e170", size = 1581875, upload-time = "2025-11-10T01:57:51.192Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c8/7c8bda3108d0bb57387ac41b4abb5c08782b26da9f9c4421ef6694dac01a/black-25.11.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d81a44cbc7e4f73a9d6ae449ec2317ad81512d1e7dce7d57f6333fd6259737bc", size = 1642716, upload-time = "2025-11-10T01:56:51.589Z" }, + { url = "https://files.pythonhosted.org/packages/34/b9/f17dea34eecb7cc2609a89627d480fb6caea7b86190708eaa7eb15ed25e7/black-25.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:7eebd4744dfe92ef1ee349dc532defbf012a88b087bb7ddd688ff59a447b080e", size = 1352904, upload-time = "2025-11-10T01:59:26.252Z" }, + { url = "https://files.pythonhosted.org/packages/7f/12/5c35e600b515f35ffd737da7febdb2ab66bb8c24d88560d5e3ef3d28c3fd/black-25.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:80e7486ad3535636657aa180ad32a7d67d7c273a80e12f1b4bfa0823d54e8fac", size = 1772831, upload-time = "2025-11-10T02:03:47Z" }, + { url = "https://files.pythonhosted.org/packages/1a/75/b3896bec5a2bb9ed2f989a970ea40e7062f8936f95425879bbe162746fe5/black-25.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6cced12b747c4c76bc09b4db057c319d8545307266f41aaee665540bc0e04e96", size = 1608520, upload-time = "2025-11-10T01:58:46.895Z" }, + { url = "https://files.pythonhosted.org/packages/f3/b5/2bfc18330eddbcfb5aab8d2d720663cd410f51b2ed01375f5be3751595b0/black-25.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6cb2d54a39e0ef021d6c5eef442e10fd71fcb491be6413d083a320ee768329dd", size = 1682719, upload-time = "2025-11-10T01:56:55.24Z" }, + { url = "https://files.pythonhosted.org/packages/96/fb/f7dc2793a22cdf74a72114b5ed77fe3349a2e09ef34565857a2f917abdf2/black-25.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae263af2f496940438e5be1a0c1020e13b09154f3af4df0835ea7f9fe7bfa409", size = 1362684, upload-time = "2025-11-10T01:57:07.639Z" }, + { url = "https://files.pythonhosted.org/packages/ad/47/3378d6a2ddefe18553d1115e36aea98f4a90de53b6a3017ed861ba1bd3bc/black-25.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0a1d40348b6621cc20d3d7530a5b8d67e9714906dfd7346338249ad9c6cedf2b", size = 1772446, upload-time = "2025-11-10T02:02:16.181Z" }, + { url = "https://files.pythonhosted.org/packages/ba/4b/0f00bfb3d1f7e05e25bfc7c363f54dc523bb6ba502f98f4ad3acf01ab2e4/black-25.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:51c65d7d60bb25429ea2bf0731c32b2a2442eb4bd3b2afcb47830f0b13e58bfd", size = 1607983, upload-time = "2025-11-10T02:02:52.502Z" }, + { url = "https://files.pythonhosted.org/packages/99/fe/49b0768f8c9ae57eb74cc10a1f87b4c70453551d8ad498959721cc345cb7/black-25.11.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:936c4dd07669269f40b497440159a221ee435e3fddcf668e0c05244a9be71993", size = 1682481, upload-time = "2025-11-10T01:57:12.35Z" }, + { url = "https://files.pythonhosted.org/packages/55/17/7e10ff1267bfa950cc16f0a411d457cdff79678fbb77a6c73b73a5317904/black-25.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:f42c0ea7f59994490f4dccd64e6b2dd49ac57c7c84f38b8faab50f8759db245c", size = 1363869, upload-time = "2025-11-10T01:58:24.608Z" }, + { url = "https://files.pythonhosted.org/packages/67/c0/cc865ce594d09e4cd4dfca5e11994ebb51604328489f3ca3ae7bb38a7db5/black-25.11.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:35690a383f22dd3e468c85dc4b915217f87667ad9cce781d7b42678ce63c4170", size = 1771358, upload-time = "2025-11-10T02:03:33.331Z" }, + { url = "https://files.pythonhosted.org/packages/37/77/4297114d9e2fd2fc8ab0ab87192643cd49409eb059e2940391e7d2340e57/black-25.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:dae49ef7369c6caa1a1833fd5efb7c3024bb7e4499bf64833f65ad27791b1545", size = 1612902, upload-time = "2025-11-10T01:59:33.382Z" }, + { url = "https://files.pythonhosted.org/packages/de/63/d45ef97ada84111e330b2b2d45e1dd163e90bd116f00ac55927fb6bf8adb/black-25.11.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bd4a22a0b37401c8e492e994bce79e614f91b14d9ea911f44f36e262195fdda", size = 1680571, upload-time = "2025-11-10T01:57:04.239Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4b/5604710d61cdff613584028b4cb4607e56e148801ed9b38ee7970799dab6/black-25.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:aa211411e94fdf86519996b7f5f05e71ba34835d8f0c0f03c00a26271da02664", size = 1382599, upload-time = "2025-11-10T01:57:57.427Z" }, + { url = "https://files.pythonhosted.org/packages/00/5d/aed32636ed30a6e7f9efd6ad14e2a0b0d687ae7c8c7ec4e4a557174b895c/black-25.11.0-py3-none-any.whl", hash = "sha256:e3f562da087791e96cefcd9dda058380a442ab322a02e222add53736451f604b", size = 204918, upload-time = "2025-11-10T01:53:48.917Z" }, ] [[package]] @@ -486,24 +495,67 @@ toml = [ [[package]] name = "cryptography" -version = "37.0.4" +version = "46.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cffi" }, + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/89/d9/5fcd312d5cce0b4d7ee8b551a0ea99e4ea9db0fdbf6dd455a19042e3370b/cryptography-37.0.4.tar.gz", hash = "sha256:63f9c17c0e2474ccbebc9302ce2f07b55b3b3fcb211ded18a42d5764f5c10a82", size = 585913, upload-time = "2022-07-05T13:33:04.789Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/f0/8bc2246a422eb5cd1fe7cfc2ed522e4e3e0fd6f1c828193c0860c7030ca6/cryptography-37.0.4-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:549153378611c0cca1042f20fd9c5030d37a72f634c9326e225c9f666d472884", size = 5389724, upload-time = "2022-07-05T13:33:24.754Z" }, - { url = "https://files.pythonhosted.org/packages/c5/93/23f1cc4a39cee6ca0dc75550dc204e5af71e8bf3012d23feb1bd5b06edea/cryptography-37.0.4-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:a958c52505c8adf0d3822703078580d2c0456dd1d27fabfb6f76fe63d2971cd6", size = 2847016, upload-time = "2022-07-05T13:33:31.369Z" }, - { url = "https://files.pythonhosted.org/packages/ca/44/2384260ffa2fa974894ec5f70896b328cd55a19dc367cf5c7ef32d5b3ba8/cryptography-37.0.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f721d1885ecae9078c3f6bbe8a88bc0786b6e749bf32ccec1ef2b18929a05046", size = 4079427, upload-time = "2022-07-05T13:34:10.373Z" }, - { url = "https://files.pythonhosted.org/packages/55/68/17d21988cec2dec825ce7fb965cc44d5f64e9f48f414084510f5836c5cb3/cryptography-37.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3d41b965b3380f10e4611dbae366f6dc3cefc7c9ac4e8842a806b9672ae9add5", size = 3686786, upload-time = "2022-07-05T13:35:11.684Z" }, - { url = "https://files.pythonhosted.org/packages/fd/5a/f47456f062b0c5bd828198992fca1f78bcc7aeadd216d9ce6c3348188b92/cryptography-37.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80f49023dd13ba35f7c34072fa17f604d2f19bf0989f292cedf7ab5770b87a0b", size = 4011894, upload-time = "2022-07-05T13:35:18.582Z" }, - { url = "https://files.pythonhosted.org/packages/20/8b/66600f5851ec7893ace9b74445d7eaf3499571b347e339d18c76c876b0f9/cryptography-37.0.4-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2dcb0b3b63afb6df7fd94ec6fbddac81b5492513f7b0436210d390c14d46ee8", size = 4151466, upload-time = "2022-07-05T13:34:16.445Z" }, - { url = "https://files.pythonhosted.org/packages/86/82/5e81dbf8a94c011e5240595149626d92e78a110f01311face1ab08431566/cryptography-37.0.4-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:b7f8dd0d4c1f21759695c05a5ec8536c12f31611541f8904083f3dc582604280", size = 4052936, upload-time = "2022-07-05T13:33:47.347Z" }, - { url = "https://files.pythonhosted.org/packages/d4/d7/fa8688ca6ba6dbe44a8ecab9b34cbba0a5ab42c5a3609371968ba3e7f44a/cryptography-37.0.4-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:30788e070800fec9bbcf9faa71ea6d8068f5136f60029759fd8c3efec3c9dcb3", size = 4109191, upload-time = "2022-07-05T13:35:24.831Z" }, - { url = "https://files.pythonhosted.org/packages/6b/c0/4cfdc2fa58f86ccb5dcd017c9aa2125a5132e9b52868ccc5d46d0542d29c/cryptography-37.0.4-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:190f82f3e87033821828f60787cfa42bff98404483577b591429ed99bed39d59", size = 4234788, upload-time = "2022-07-05T13:34:38.672Z" }, - { url = "https://files.pythonhosted.org/packages/1d/07/9c6779f9aac823c760465e59dd6a2ff3fffdd8c8174ef2fbe05f1b77650e/cryptography-37.0.4-cp36-abi3-win32.whl", hash = "sha256:b62439d7cd1222f3da897e9a9fe53bbf5c104fff4d60893ad1355d4c14a24157", size = 2054314, upload-time = "2022-07-05T13:34:42.512Z" }, - { url = "https://files.pythonhosted.org/packages/e5/4b/45759a0238628b48113ce899ef499d39433d3ac384a132796cd9fb4977a1/cryptography-37.0.4-cp36-abi3-win_amd64.whl", hash = "sha256:f7a6de3e98771e183645181b3627e2563dcde3ce94a9e42a3f427d2255190327", size = 2422362, upload-time = "2022-07-05T13:34:46.363Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/9f/33/c00162f49c0e2fe8064a62cb92b93e50c74a72bc370ab92f86112b33ff62/cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", size = 749258, upload-time = "2025-10-15T23:18:31.74Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/42/9c391dd801d6cf0d561b5890549d4b27bafcc53b39c31a817e69d87c625b/cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", size = 7225004, upload-time = "2025-10-15T23:16:52.239Z" }, + { url = "https://files.pythonhosted.org/packages/1c/67/38769ca6b65f07461eb200e85fc1639b438bdc667be02cf7f2cd6a64601c/cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", size = 4296667, upload-time = "2025-10-15T23:16:54.369Z" }, + { url = "https://files.pythonhosted.org/packages/5c/49/498c86566a1d80e978b42f0d702795f69887005548c041636df6ae1ca64c/cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", size = 4450807, upload-time = "2025-10-15T23:16:56.414Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0a/863a3604112174c8624a2ac3c038662d9e59970c7f926acdcfaed8d61142/cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", size = 4299615, upload-time = "2025-10-15T23:16:58.442Z" }, + { url = "https://files.pythonhosted.org/packages/64/02/b73a533f6b64a69f3cd3872acb6ebc12aef924d8d103133bb3ea750dc703/cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", size = 4016800, upload-time = "2025-10-15T23:17:00.378Z" }, + { url = "https://files.pythonhosted.org/packages/25/d5/16e41afbfa450cde85a3b7ec599bebefaef16b5c6ba4ec49a3532336ed72/cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", size = 4984707, upload-time = "2025-10-15T23:17:01.98Z" }, + { url = "https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", size = 4482541, upload-time = "2025-10-15T23:17:04.078Z" }, + { url = "https://files.pythonhosted.org/packages/78/f6/50736d40d97e8483172f1bb6e698895b92a223dba513b0ca6f06b2365339/cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", size = 4299464, upload-time = "2025-10-15T23:17:05.483Z" }, + { url = "https://files.pythonhosted.org/packages/00/de/d8e26b1a855f19d9994a19c702fa2e93b0456beccbcfe437eda00e0701f2/cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", size = 4950838, upload-time = "2025-10-15T23:17:07.425Z" }, + { url = "https://files.pythonhosted.org/packages/8f/29/798fc4ec461a1c9e9f735f2fc58741b0daae30688f41b2497dcbc9ed1355/cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", size = 4481596, upload-time = "2025-10-15T23:17:09.343Z" }, + { url = "https://files.pythonhosted.org/packages/15/8d/03cd48b20a573adfff7652b76271078e3045b9f49387920e7f1f631d125e/cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", size = 4426782, upload-time = "2025-10-15T23:17:11.22Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b1/ebacbfe53317d55cf33165bda24c86523497a6881f339f9aae5c2e13e57b/cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", size = 4698381, upload-time = "2025-10-15T23:17:12.829Z" }, + { url = "https://files.pythonhosted.org/packages/96/92/8a6a9525893325fc057a01f654d7efc2c64b9de90413adcf605a85744ff4/cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018", size = 3055988, upload-time = "2025-10-15T23:17:14.65Z" }, + { url = "https://files.pythonhosted.org/packages/7e/bf/80fbf45253ea585a1e492a6a17efcb93467701fa79e71550a430c5e60df0/cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", size = 3514451, upload-time = "2025-10-15T23:17:16.142Z" }, + { url = "https://files.pythonhosted.org/packages/2e/af/9b302da4c87b0beb9db4e756386a7c6c5b8003cd0e742277888d352ae91d/cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", size = 2928007, upload-time = "2025-10-15T23:17:18.04Z" }, + { url = "https://files.pythonhosted.org/packages/f5/e2/a510aa736755bffa9d2f75029c229111a1d02f8ecd5de03078f4c18d91a3/cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", size = 7158012, upload-time = "2025-10-15T23:17:19.982Z" }, + { url = "https://files.pythonhosted.org/packages/73/dc/9aa866fbdbb95b02e7f9d086f1fccfeebf8953509b87e3f28fff927ff8a0/cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", size = 4288728, upload-time = "2025-10-15T23:17:21.527Z" }, + { url = "https://files.pythonhosted.org/packages/c5/fd/bc1daf8230eaa075184cbbf5f8cd00ba9db4fd32d63fb83da4671b72ed8a/cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", size = 4435078, upload-time = "2025-10-15T23:17:23.042Z" }, + { url = "https://files.pythonhosted.org/packages/82/98/d3bd5407ce4c60017f8ff9e63ffee4200ab3e23fe05b765cab805a7db008/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", size = 4293460, upload-time = "2025-10-15T23:17:24.885Z" }, + { url = "https://files.pythonhosted.org/packages/26/e9/e23e7900983c2b8af7a08098db406cf989d7f09caea7897e347598d4cd5b/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", size = 3995237, upload-time = "2025-10-15T23:17:26.449Z" }, + { url = "https://files.pythonhosted.org/packages/91/15/af68c509d4a138cfe299d0d7ddb14afba15233223ebd933b4bbdbc7155d3/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", size = 4967344, upload-time = "2025-10-15T23:17:28.06Z" }, + { url = "https://files.pythonhosted.org/packages/ca/e3/8643d077c53868b681af077edf6b3cb58288b5423610f21c62aadcbe99f4/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", size = 4466564, upload-time = "2025-10-15T23:17:29.665Z" }, + { url = "https://files.pythonhosted.org/packages/0e/43/c1e8726fa59c236ff477ff2b5dc071e54b21e5a1e51aa2cee1676f1c986f/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", size = 4292415, upload-time = "2025-10-15T23:17:31.686Z" }, + { url = "https://files.pythonhosted.org/packages/42/f9/2f8fefdb1aee8a8e3256a0568cffc4e6d517b256a2fe97a029b3f1b9fe7e/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", size = 4931457, upload-time = "2025-10-15T23:17:33.478Z" }, + { url = "https://files.pythonhosted.org/packages/79/30/9b54127a9a778ccd6d27c3da7563e9f2d341826075ceab89ae3b41bf5be2/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", size = 4466074, upload-time = "2025-10-15T23:17:35.158Z" }, + { url = "https://files.pythonhosted.org/packages/ac/68/b4f4a10928e26c941b1b6a179143af9f4d27d88fe84a6a3c53592d2e76bf/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", size = 4420569, upload-time = "2025-10-15T23:17:37.188Z" }, + { url = "https://files.pythonhosted.org/packages/a3/49/3746dab4c0d1979888f125226357d3262a6dd40e114ac29e3d2abdf1ec55/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", size = 4681941, upload-time = "2025-10-15T23:17:39.236Z" }, + { url = "https://files.pythonhosted.org/packages/fd/30/27654c1dbaf7e4a3531fa1fc77986d04aefa4d6d78259a62c9dc13d7ad36/cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", size = 3022339, upload-time = "2025-10-15T23:17:40.888Z" }, + { url = "https://files.pythonhosted.org/packages/f6/30/640f34ccd4d2a1bc88367b54b926b781b5a018d65f404d409aba76a84b1c/cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", size = 3494315, upload-time = "2025-10-15T23:17:42.769Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8b/88cc7e3bd0a8e7b861f26981f7b820e1f46aa9d26cc482d0feba0ecb4919/cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", size = 2919331, upload-time = "2025-10-15T23:17:44.468Z" }, + { url = "https://files.pythonhosted.org/packages/fd/23/45fe7f376a7df8daf6da3556603b36f53475a99ce4faacb6ba2cf3d82021/cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", size = 7218248, upload-time = "2025-10-15T23:17:46.294Z" }, + { url = "https://files.pythonhosted.org/packages/27/32/b68d27471372737054cbd34c84981f9edbc24fe67ca225d389799614e27f/cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", size = 4294089, upload-time = "2025-10-15T23:17:48.269Z" }, + { url = "https://files.pythonhosted.org/packages/26/42/fa8389d4478368743e24e61eea78846a0006caffaf72ea24a15159215a14/cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", size = 4440029, upload-time = "2025-10-15T23:17:49.837Z" }, + { url = "https://files.pythonhosted.org/packages/5f/eb/f483db0ec5ac040824f269e93dd2bd8a21ecd1027e77ad7bdf6914f2fd80/cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", size = 4297222, upload-time = "2025-10-15T23:17:51.357Z" }, + { url = "https://files.pythonhosted.org/packages/fd/cf/da9502c4e1912cb1da3807ea3618a6829bee8207456fbbeebc361ec38ba3/cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", size = 4012280, upload-time = "2025-10-15T23:17:52.964Z" }, + { url = "https://files.pythonhosted.org/packages/6b/8f/9adb86b93330e0df8b3dcf03eae67c33ba89958fc2e03862ef1ac2b42465/cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", size = 4978958, upload-time = "2025-10-15T23:17:54.965Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a0/5fa77988289c34bdb9f913f5606ecc9ada1adb5ae870bd0d1054a7021cc4/cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", size = 4473714, upload-time = "2025-10-15T23:17:56.754Z" }, + { url = "https://files.pythonhosted.org/packages/14/e5/fc82d72a58d41c393697aa18c9abe5ae1214ff6f2a5c18ac470f92777895/cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", size = 4296970, upload-time = "2025-10-15T23:17:58.588Z" }, + { url = "https://files.pythonhosted.org/packages/78/06/5663ed35438d0b09056973994f1aec467492b33bd31da36e468b01ec1097/cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", size = 4940236, upload-time = "2025-10-15T23:18:00.897Z" }, + { url = "https://files.pythonhosted.org/packages/fc/59/873633f3f2dcd8a053b8dd1d38f783043b5fce589c0f6988bf55ef57e43e/cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", size = 4472642, upload-time = "2025-10-15T23:18:02.749Z" }, + { url = "https://files.pythonhosted.org/packages/3d/39/8e71f3930e40f6877737d6f69248cf74d4e34b886a3967d32f919cc50d3b/cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", size = 4423126, upload-time = "2025-10-15T23:18:04.85Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c7/f65027c2810e14c3e7268353b1681932b87e5a48e65505d8cc17c99e36ae/cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", size = 4686573, upload-time = "2025-10-15T23:18:06.908Z" }, + { url = "https://files.pythonhosted.org/packages/0a/6e/1c8331ddf91ca4730ab3086a0f1be19c65510a33b5a441cb334e7a2d2560/cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", size = 3036695, upload-time = "2025-10-15T23:18:08.672Z" }, + { url = "https://files.pythonhosted.org/packages/90/45/b0d691df20633eff80955a0fc7695ff9051ffce8b69741444bd9ed7bd0db/cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", size = 3501720, upload-time = "2025-10-15T23:18:10.632Z" }, + { url = "https://files.pythonhosted.org/packages/e8/cb/2da4cc83f5edb9c3257d09e1e7ab7b23f049c7962cae8d842bbef0a9cec9/cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", size = 2918740, upload-time = "2025-10-15T23:18:12.277Z" }, + { url = "https://files.pythonhosted.org/packages/d9/cd/1a8633802d766a0fa46f382a77e096d7e209e0817892929655fe0586ae32/cryptography-46.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a23582810fedb8c0bc47524558fb6c56aac3fc252cb306072fd2815da2a47c32", size = 3689163, upload-time = "2025-10-15T23:18:13.821Z" }, + { url = "https://files.pythonhosted.org/packages/4c/59/6b26512964ace6480c3e54681a9859c974172fb141c38df11eadd8416947/cryptography-46.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e7aec276d68421f9574040c26e2a7c3771060bc0cff408bae1dcb19d3ab1e63c", size = 3429474, upload-time = "2025-10-15T23:18:15.477Z" }, + { url = "https://files.pythonhosted.org/packages/06/8a/e60e46adab4362a682cf142c7dcb5bf79b782ab2199b0dcb81f55970807f/cryptography-46.0.3-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7ce938a99998ed3c8aa7e7272dca1a610401ede816d36d0693907d863b10d9ea", size = 3698132, upload-time = "2025-10-15T23:18:17.056Z" }, + { url = "https://files.pythonhosted.org/packages/da/38/f59940ec4ee91e93d3311f7532671a5cef5570eb04a144bf203b58552d11/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:191bb60a7be5e6f54e30ba16fdfae78ad3a342a0599eb4193ba88e3f3d6e185b", size = 4243992, upload-time = "2025-10-15T23:18:18.695Z" }, + { url = "https://files.pythonhosted.org/packages/b0/0c/35b3d92ddebfdfda76bb485738306545817253d0a3ded0bfe80ef8e67aa5/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c70cc23f12726be8f8bc72e41d5065d77e4515efae3690326764ea1b07845cfb", size = 4409944, upload-time = "2025-10-15T23:18:20.597Z" }, + { url = "https://files.pythonhosted.org/packages/99/55/181022996c4063fc0e7666a47049a1ca705abb9c8a13830f074edb347495/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:9394673a9f4de09e28b5356e7fff97d778f8abad85c9d5ac4a4b7e25a0de7717", size = 4242957, upload-time = "2025-10-15T23:18:22.18Z" }, + { url = "https://files.pythonhosted.org/packages/ba/af/72cd6ef29f9c5f731251acadaeb821559fe25f10852f44a63374c9ca08c1/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:94cd0549accc38d1494e1f8de71eca837d0509d0d44bf11d158524b0e12cebf9", size = 4409447, upload-time = "2025-10-15T23:18:24.209Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c3/e90f4a4feae6410f914f8ebac129b9ae7a8c92eb60a638012dde42030a9d/cryptography-46.0.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6b5063083824e5509fdba180721d55909ffacccc8adbec85268b48439423d78c", size = 3438528, upload-time = "2025-10-15T23:18:26.227Z" }, ] [[package]] @@ -655,11 +707,11 @@ wheels = [ [[package]] name = "isort" -version = "6.1.0" +version = "7.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1e/82/fa43935523efdfcce6abbae9da7f372b627b27142c3419fcf13bf5b0c397/isort-6.1.0.tar.gz", hash = "sha256:9b8f96a14cfee0677e78e941ff62f03769a06d412aabb9e2a90487b3b7e8d481", size = 824325, upload-time = "2025-10-01T16:26:45.027Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/53/4f3c058e3bace40282876f9b553343376ee687f3c35a525dc79dbd450f88/isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187", size = 805049, upload-time = "2025-10-11T13:30:59.107Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/cc/9b681a170efab4868a032631dea1e8446d8ec718a7f657b94d49d1a12643/isort-6.1.0-py3-none-any.whl", hash = "sha256:58d8927ecce74e5087aef019f778d4081a3b6c98f15a80ba35782ca8a2097784", size = 94329, upload-time = "2025-10-01T16:26:43.291Z" }, + { url = "https://files.pythonhosted.org/packages/7f/ed/e3705d6d02b4f7aea715a353c8ce193efd0b5db13e204df895d38734c244/isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1", size = 94672, upload-time = "2025-10-11T13:30:57.665Z" }, ] [[package]] @@ -833,15 +885,15 @@ wheels = [ [[package]] name = "marshy" -version = "5.0.3" +version = "6.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "injecty" }, { name = "typing-inspect" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/51/253cbfb1080de266316a644bcf2e08057275f277c513fea1c87c50a9774a/marshy-5.0.3.tar.gz", hash = "sha256:df7031d464a63ece07def8b75e6affa38082f18566c6ad34b1df90a702145bc9", size = 16353, upload-time = "2024-02-25T14:03:03.068Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/98/1be2dbe5c39a6fc926d0cf992426d1503414cbd23249e4c49478f3f07ac1/marshy-6.0.0.tar.gz", hash = "sha256:f441d43e8ec3d52082a81a4ae6bddaa4014c687fe1191054e326ae843e28d517", size = 104679, upload-time = "2025-12-07T22:28:15.206Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/7d/f6c08172d24e3819fb0c788bf58a119ae3f6d10dd3d17b85b4181ef806c0/marshy-5.0.3-py3-none-any.whl", hash = "sha256:ff4a6ea240749d25bd24beb606c6c9bbb3508e33f5b74d335db020ffd554943f", size = 23514, upload-time = "2024-02-25T14:03:01.211Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d4/3df40b5b3e91cb92c2ef0b56fe14ab9e83837fad7cfd054a81271d94dd59/marshy-6.0.0-py3-none-any.whl", hash = "sha256:1f445ed15d9f8a5db49814a80e741e32a4d36c2205a54f5bc65fa4a90bec44c1", size = 23339, upload-time = "2025-12-07T22:28:14.173Z" }, ] [[package]] @@ -939,7 +991,7 @@ wheels = [ [[package]] name = "pylint" -version = "3.3.9" +version = "4.0.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "astroid" }, @@ -951,14 +1003,14 @@ dependencies = [ { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "tomlkit" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/04/9d/81c84a312d1fa8133b0db0c76148542a98349298a01747ab122f9314b04e/pylint-3.3.9.tar.gz", hash = "sha256:d312737d7b25ccf6b01cc4ac629b5dcd14a0fcf3ec392735ac70f137a9d5f83a", size = 1525946, upload-time = "2025-10-05T18:41:43.786Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/d2/b081da1a8930d00e3fc06352a1d449aaf815d4982319fab5d8cdb2e9ab35/pylint-4.0.4.tar.gz", hash = "sha256:d9b71674e19b1c36d79265b5887bf8e55278cbe236c9e95d22dc82cf044fdbd2", size = 1571735, upload-time = "2025-11-30T13:29:04.315Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/a7/69460c4a6af7575449e615144aa2205b89408dc2969b87bc3df2f262ad0b/pylint-3.3.9-py3-none-any.whl", hash = "sha256:01f9b0462c7730f94786c283f3e52a1fbdf0494bbe0971a78d7277ef46a751e7", size = 523465, upload-time = "2025-10-05T18:41:41.766Z" }, + { url = "https://files.pythonhosted.org/packages/a6/92/d40f5d937517cc489ad848fc4414ecccc7592e4686b9071e09e64f5e378e/pylint-4.0.4-py3-none-any.whl", hash = "sha256:63e06a37d5922555ee2c20963eb42559918c20bd2b21244e4ef426e7c43b92e0", size = 536425, upload-time = "2025-11-30T13:29:02.53Z" }, ] [[package]] name = "pytest" -version = "7.4.4" +version = "9.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -966,24 +1018,26 @@ dependencies = [ { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", size = 1357116, upload-time = "2023-12-31T12:00:18.035Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8", size = 325287, upload-time = "2023-12-31T12:00:13.963Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, ] [[package]] name = "pytest-cov" -version = "4.1.0" +version = "7.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coverage", extra = ["toml"] }, + { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/15/da3df99fd551507694a9b01f512a2f6cf1254f33601605843c3775f39460/pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6", size = 63245, upload-time = "2023-05-24T18:44:56.845Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload-time = "2025-09-09T10:57:02.113Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/4b/8b78d126e275efa2379b1c2e09dc52cf70df16fc3b90613ef82531499d73/pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a", size = 21949, upload-time = "2023-05-24T18:44:54.079Z" }, + { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload-time = "2025-09-09T10:57:00.695Z" }, ] [[package]] @@ -1029,6 +1083,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" }, ] +[[package]] +name = "pytokens" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/8d/a762be14dae1c3bf280202ba3172020b2b0b4c537f94427435f19c413b72/pytokens-0.3.0.tar.gz", hash = "sha256:2f932b14ed08de5fcf0b391ace2642f858f1394c0857202959000b68ed7a458a", size = 17644, upload-time = "2025-11-05T13:36:35.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/25/d9db8be44e205a124f6c98bc0324b2bb149b7431c53877fc6d1038dddaf5/pytokens-0.3.0-py3-none-any.whl", hash = "sha256:95b2b5eaf832e469d141a378872480ede3f251a5a5041b8ec6e581d3ac71bbf3", size = 12195, upload-time = "2025-11-05T13:36:33.183Z" }, +] + [[package]] name = "pyyaml" version = "6.0.3" @@ -1328,16 +1391,16 @@ wheels = [ [[package]] name = "schemey" -version = "7.0.2" +version = "8.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "injecty" }, { name = "jsonschema" }, { name = "marshy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/22/79/799d8fa486083906bc2f85a2da1031c2caac22c598dffb23049d3609ce6b/schemey-7.0.2.tar.gz", hash = "sha256:41bb897f7113adb54d11d4e081bd5ca517dcce5d06c6884fab15f2f86f32b273", size = 13739, upload-time = "2024-02-25T17:14:59.785Z" } +sdist = { url = "https://files.pythonhosted.org/packages/89/85/9e456345c28db0d58e9525f9bd958f0c370e2d0f35fb860770c2e2a27951/schemey-8.0.1.tar.gz", hash = "sha256:73596e35cc6057a079ecf9f406cebcdea0d326692018e5f3516e71924a9a9cde", size = 55049, upload-time = "2025-12-09T00:43:02.355Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/5e/3be3dfd31df3738a2164b2ce3249d64e1746f949f57cc65d72d5c1fa275b/schemey-7.0.2-py3-none-any.whl", hash = "sha256:dbd6fbdc3bc8c9a075032d51199f2c4b98e9440e4f3d0843244efa8b9f7304ca", size = 21171, upload-time = "2024-02-25T17:14:57.932Z" }, + { url = "https://files.pythonhosted.org/packages/72/75/ef721337f5802085277d382383a1a2434053639c33be1d6c3f274a49e0ea/schemey-8.0.1-py3-none-any.whl", hash = "sha256:31e4b9d28cee51257863da35b382e23db019ceebc6661c40ee2aebb4c9c47e1a", size = 20273, upload-time = "2025-12-09T00:43:01.143Z" }, ] [[package]] @@ -1403,58 +1466,59 @@ web-page = [ [package.dev-dependencies] dev = [ + { name = "black" }, { name = "hatch-vcs" }, { name = "hatchling" }, ] [package.metadata] requires-dist = [ - { name = "black", marker = "extra == 'all'", specifier = "~=23.3" }, - { name = "black", marker = "extra == 'dev'", specifier = "~=23.3" }, - { name = "boto3", marker = "extra == 'all'", specifier = "~=1.26" }, - { name = "boto3", marker = "extra == 'dev'", specifier = "~=1.26" }, - { name = "celery", marker = "extra == 'all'", specifier = "~=5.2" }, - { name = "celery", marker = "extra == 'scheduler'", specifier = "~=5.2" }, - { name = "cryptography", specifier = "~=37.0" }, + { name = "black", marker = "extra == 'all'", specifier = "~=25.11" }, + { name = "black", marker = "extra == 'dev'", specifier = "~=25.11" }, + { name = "boto3", marker = "extra == 'all'", specifier = "~=1.42" }, + { name = "boto3", marker = "extra == 'dev'", specifier = "~=1.42" }, + { name = "celery", marker = "extra == 'all'", specifier = "~=5.6" }, + { name = "celery", marker = "extra == 'scheduler'", specifier = "~=5.6" }, + { name = "cryptography", specifier = "~=46.0" }, { name = "injecty", specifier = "~=0.0" }, { name = "jinja2", marker = "extra == 'all'", specifier = "~=3.1" }, { name = "jinja2", marker = "extra == 'web-page'", specifier = "~=3.1" }, { name = "json-urley", specifier = "~=1.0" }, - { name = "marshy", specifier = "~=5.0" }, - { name = "pygments", marker = "extra == 'all'", specifier = "~=2.13" }, - { name = "pygments", marker = "extra == 'server'", specifier = "~=2.13" }, - { name = "pyjwt", specifier = "~=2.4" }, - { name = "pylint", marker = "extra == 'all'", specifier = "~=3.0" }, - { name = "pylint", marker = "extra == 'dev'", specifier = "~=3.0" }, - { name = "pytest", marker = "extra == 'all'", specifier = "~=7.2" }, - { name = "pytest", marker = "extra == 'dev'", specifier = "~=7.2" }, - { name = "pytest-cov", marker = "extra == 'all'", specifier = "~=4.0" }, - { name = "pytest-cov", marker = "extra == 'dev'", specifier = "~=4.0" }, - { name = "pytest-xdist", marker = "extra == 'all'", specifier = "~=3.2" }, - { name = "pytest-xdist", marker = "extra == 'dev'", specifier = "~=3.2" }, - { name = "python-dateutil", specifier = "~=2.8" }, + { name = "marshy", specifier = "~=6.0" }, + { name = "pygments", marker = "extra == 'all'", specifier = "~=2.19" }, + { name = "pygments", marker = "extra == 'server'", specifier = "~=2.19" }, + { name = "pyjwt", specifier = "~=2.10" }, + { name = "pylint", marker = "extra == 'all'", specifier = "~=4.0" }, + { name = "pylint", marker = "extra == 'dev'", specifier = "~=4.0" }, + { name = "pytest", marker = "extra == 'all'", specifier = "~=9.0" }, + { name = "pytest", marker = "extra == 'dev'", specifier = "~=9.0" }, + { name = "pytest-cov", marker = "extra == 'all'", specifier = "~=7.0" }, + { name = "pytest-cov", marker = "extra == 'dev'", specifier = "~=7.0" }, + { name = "pytest-xdist", marker = "extra == 'all'", specifier = "~=3.8" }, + { name = "pytest-xdist", marker = "extra == 'dev'", specifier = "~=3.8" }, + { name = "python-dateutil", specifier = "~=2.9" }, { name = "python-multipart", marker = "extra == 'all'", specifier = "~=0.0" }, { name = "python-multipart", marker = "extra == 'server'", specifier = "~=0.0" }, { name = "pyyaml", marker = "extra == 'all'", specifier = "~=6.0" }, { name = "pyyaml", marker = "extra == 'serverless'", specifier = "~=6.0" }, - { name = "requests", marker = "extra == 'all'", specifier = "~=2.28" }, - { name = "requests", marker = "extra == 'server'", specifier = "~=2.28" }, - { name = "ruamel-yaml", marker = "extra == 'all'", specifier = "~=0.17" }, - { name = "ruamel-yaml", marker = "extra == 'serverless'", specifier = "~=0.17" }, - { name = "schemey", specifier = "~=7.0" }, - { name = "starlette", marker = "extra == 'all'", specifier = "~=0.19" }, - { name = "starlette", marker = "extra == 'server'", specifier = "~=0.19" }, - { name = "strawberry-graphql", marker = "extra == 'all'", specifier = "~=0.151" }, - { name = "strawberry-graphql", marker = "extra == 'all'", specifier = "~=0.177" }, - { name = "strawberry-graphql", marker = "extra == 'server'", specifier = "~=0.151" }, - { name = "strawberry-graphql", marker = "extra == 'serverless'", specifier = "~=0.177" }, - { name = "uvicorn", extras = ["standard"], marker = "extra == 'all'", specifier = "~=0.18" }, - { name = "uvicorn", extras = ["standard"], marker = "extra == 'server'", specifier = "~=0.18" }, + { name = "requests", marker = "extra == 'all'", specifier = "~=2.32" }, + { name = "requests", marker = "extra == 'server'", specifier = "~=2.32" }, + { name = "ruamel-yaml", marker = "extra == 'all'", specifier = "~=0.18" }, + { name = "ruamel-yaml", marker = "extra == 'serverless'", specifier = "~=0.18" }, + { name = "schemey", specifier = "~=8.0" }, + { name = "starlette", marker = "extra == 'all'", specifier = "~=0.50" }, + { name = "starlette", marker = "extra == 'server'", specifier = "~=0.50" }, + { name = "strawberry-graphql", marker = "extra == 'all'", specifier = "~=0.287" }, + { name = "strawberry-graphql", marker = "extra == 'server'", specifier = "~=0.287" }, + { name = "strawberry-graphql", marker = "extra == 'serverless'", specifier = "~=0.287" }, + { name = "uvicorn", extras = ["standard"], marker = "extra == 'all'", specifier = "~=0.38" }, + { name = "uvicorn", extras = ["standard"], marker = "extra == 'server'", specifier = "~=0.38" }, ] provides-extras = ["dev", "server", "scheduler", "serverless", "web-page", "all"] [package.metadata.requires-dev] dev = [ + { name = "black", specifier = ">=25.11.0" }, { name = "hatch-vcs", specifier = ">=0.5.0" }, { name = "hatchling", specifier = ">=1.28.0" }, ]