From 9f16a0a61b7c2e9a96d34cb8f9a9ba6dabc0e39f Mon Sep 17 00:00:00 2001 From: Anton Agestam Date: Wed, 2 Oct 2024 08:16:22 +0200 Subject: [PATCH 1/2] chore: Bump mypy and related fixes --- pyproject.toml | 2 +- src/phantom/_utils/misc.py | 2 +- src/phantom/_utils/types.py | 30 +++++++++++++++++- src/phantom/datetime.py | 4 +-- src/phantom/ext/phonenumbers.py | 4 +-- src/phantom/interval.py | 43 +++++++++++++------------- src/phantom/iso3166.py | 2 +- src/phantom/negated.py | 4 ++- src/phantom/re.py | 4 +-- src/phantom/sized.py | 12 +++---- tests/predicates/test_utils.py | 6 ++-- typing-requirements.txt | 55 +++++++++++++++++---------------- 12 files changed, 99 insertions(+), 69 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6516ea4..0d68a07 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,7 +70,7 @@ test = [ ] type-check = [ "phantom-types[all]", - "mypy==1.4.1", + "mypy", "pytest", "types-python-dateutil", ] diff --git a/src/phantom/_utils/misc.py b/src/phantom/_utils/misc.py index 5d12e41..3263064 100644 --- a/src/phantom/_utils/misc.py +++ b/src/phantom/_utils/misc.py @@ -124,7 +124,7 @@ def is_not_known_mutable_type(type_: BoundType) -> TypeGuard[NotKnownMutableType return not ( any(is_subtype(type_, mutable_type) for mutable_type in mutable) or ( - is_dataclass(type_) and not type_.__dataclass_params__.frozen # type: ignore[union-attr] + is_dataclass(type_) and not type_.__dataclass_params__.frozen # type: ignore[attr-defined] ) ) diff --git a/src/phantom/_utils/types.py b/src/phantom/_utils/types.py index a79df9d..1829341 100644 --- a/src/phantom/_utils/types.py +++ b/src/phantom/_utils/types.py @@ -59,9 +59,14 @@ class SupportsGe( @runtime_checkable class _SupportsEq(Protocol): def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... -class SupportsEq(Protocol, metaclass=CachingProtocolMeta): ... +class SupportsEq( + _SupportsEq, + Protocol, + metaclass=CachingProtocolMeta, +): ... @runtime_checkable @@ -82,6 +87,29 @@ class Comparable( ): ... +@runtime_checkable +class _SupportsFloat(Protocol): + def __float__(self) -> float: ... + + +class SupportsFloat(_SupportsFloat, Protocol, metaclass=CachingProtocolMeta): ... + + +@runtime_checkable +class _FloatComparable( + SupportsFloat, + Comparable[T_contra], + Protocol[T_contra], +): ... + + +class FloatComparable( + _FloatComparable[T_contra], + Protocol[T_contra], + metaclass=CachingProtocolMeta, +): ... + + @runtime_checkable class _SupportsLeGe(SupportsLe[T_contra], SupportsGe[T_contra], Protocol[T_contra]): ... diff --git a/src/phantom/datetime.py b/src/phantom/datetime.py index a8d39ff..bee3ec7 100644 --- a/src/phantom/datetime.py +++ b/src/phantom/datetime.py @@ -75,7 +75,7 @@ def parse(cls, instance: object) -> TZAware: @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "A date-time with timezone data.", } @@ -102,7 +102,7 @@ def parse(cls, instance: object) -> TZNaive: @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "A date-time without timezone data.", "format": "date-time-naive", } diff --git a/src/phantom/ext/phonenumbers.py b/src/phantom/ext/phonenumbers.py index edb7be4..f12c573 100644 --- a/src/phantom/ext/phonenumbers.py +++ b/src/phantom/ext/phonenumbers.py @@ -80,7 +80,7 @@ class PhoneNumber(str, Phantom, predicate=is_phone_number): @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "A valid E.164 phone number.", "type": "string", "format": "E.164", @@ -100,6 +100,6 @@ def parse(cls, instance: object) -> FormattedPhoneNumber: @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "title": "PhoneNumber", } diff --git a/src/phantom/interval.py b/src/phantom/interval.py index 3ac58e2..9f9624a 100644 --- a/src/phantom/interval.py +++ b/src/phantom/interval.py @@ -33,6 +33,7 @@ def take_portion(portion: Portion, whole: Natural) -> float: from . import _hypothesis from ._utils.misc import resolve_class_attr from ._utils.types import Comparable +from ._utils.types import FloatComparable from ._utils.types import SupportsEq from .predicates import interval from .schema import Schema @@ -93,13 +94,13 @@ def _get_scalar_float_bounds( if low is not None: try: - low = float(low) # type: ignore[arg-type] + low = float(low) except TypeError as excpetion: raise _NonScalarBounds from excpetion if high is not None: try: - high = float(high) # type: ignore[arg-type] + high = float(high) except TypeError as exception: raise _NonScalarBounds from exception @@ -136,14 +137,14 @@ class Interval(Phantom[Comparable], bound=Comparable, abstract=True): """ __check__: IntervalCheck - __low__: Comparable - __high__: Comparable + __low__: FloatComparable + __high__: FloatComparable def __init_subclass__( cls, check: IntervalCheck | None = None, - low: Comparable | None = None, - high: Comparable | None = None, + low: FloatComparable | None = None, + high: FloatComparable | None = None, **kwargs: Any, ) -> None: _resolve_bound(cls, "__low__", low, neg_inf) @@ -177,13 +178,13 @@ class Exclusive(Interval, check=interval.exclusive, abstract=True): @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": ( f"A value in the exclusive range ({_format_limit(cls.__low__)}, " f"{_format_limit(cls.__high__)})." ), - "exclusiveMinimum": cls.__low__ if cls.__low__ != neg_inf else None, - "exclusiveMaximum": cls.__high__ if cls.__high__ != inf else None, + "exclusiveMinimum": float(cls.__low__) if cls.__low__ != neg_inf else None, + "exclusiveMaximum": float(cls.__high__) if cls.__high__ != inf else None, } @classmethod @@ -209,13 +210,13 @@ class Inclusive(Interval, check=interval.inclusive, abstract=True): @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": ( f"A value in the inclusive range [{_format_limit(cls.__low__)}, " f"{_format_limit(cls.__high__)}]." ), - "minimum": cls.__low__ if cls.__low__ != neg_inf else None, - "maximum": cls.__high__ if cls.__high__ != inf else None, + "minimum": float(cls.__low__) if cls.__low__ != neg_inf else None, + "maximum": float(cls.__high__) if cls.__high__ != inf else None, } @classmethod @@ -237,13 +238,13 @@ class ExclusiveInclusive(Interval, check=interval.exclusive_inclusive, abstract= @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": ( f"A value in the half-open range ({_format_limit(cls.__low__)}, " f"{_format_limit(cls.__high__)}]." ), - "exclusiveMinimum": cls.__low__ if cls.__low__ != neg_inf else None, - "maximum": cls.__high__ if cls.__high__ != inf else None, + "exclusiveMinimum": float(cls.__low__) if cls.__low__ != neg_inf else None, + "maximum": float(cls.__high__) if cls.__high__ != inf else None, } @classmethod @@ -265,13 +266,13 @@ class InclusiveExclusive(Interval, check=interval.inclusive_exclusive, abstract= @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": ( f"A value in the half-open range [{_format_limit(cls.__low__)}, " f"{_format_limit(cls.__high__)})." ), - "minimum": cls.__low__ if cls.__low__ != neg_inf else None, - "exclusiveMaximum": cls.__high__ if cls.__high__ != inf else None, + "minimum": float(cls.__low__) if cls.__low__ != neg_inf else None, + "exclusiveMaximum": float(cls.__high__) if cls.__high__ != inf else None, } @classmethod @@ -293,7 +294,7 @@ class Natural(int, InclusiveExclusive, low=0): @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "An integer value in the inclusive range [0, ∞).", } @@ -304,7 +305,7 @@ class NegativeInt(int, ExclusiveInclusive, high=0): @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "An integer value in the inclusive range (-∞, 0].", } @@ -315,6 +316,6 @@ class Portion(float, Inclusive, low=0, high=1): @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "A float value in the inclusive range [0, 1].", } diff --git a/src/phantom/iso3166.py b/src/phantom/iso3166.py index aa344ee..93d44d4 100644 --- a/src/phantom/iso3166.py +++ b/src/phantom/iso3166.py @@ -321,7 +321,7 @@ def parse(cls, instance: object) -> ParsedAlpha2: @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "ISO3166-1 alpha-2 country code", "examples": ["NR", "KZ", "ET", "VC", "AE", "NZ", "SX", "XK", "AX"], "format": "iso3166-1 alpha-2", diff --git a/src/phantom/negated.py b/src/phantom/negated.py index c729cb1..9b636fe 100644 --- a/src/phantom/negated.py +++ b/src/phantom/negated.py @@ -38,7 +38,9 @@ def __register_strategy__(cls) -> _hypothesis.HypothesisStrategy: from hypothesis.strategies import from_type from hypothesis.strategies import tuples - def create_strategy(type_: type[T]) -> _hypothesis.SearchStrategy[T] | None: + def create_strategy( + type_: type[T], + ) -> _hypothesis.SearchStrategy[tuple[T, ...]] | None: (inner_type,) = get_args(type_) return tuples(from_type(inner_type)) diff --git a/src/phantom/re.py b/src/phantom/re.py index c1a2e68..00b95b8 100644 --- a/src/phantom/re.py +++ b/src/phantom/re.py @@ -47,7 +47,7 @@ def __init_subclass__(cls, pattern: Pattern[str] | str, **kwargs: Any) -> None: @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": ( "A string starting with a match of the format regular expression." ), @@ -71,7 +71,7 @@ def __init_subclass__(cls, pattern: Pattern[str] | str, **kwargs: Any) -> None: @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "A string that matches the format regular expression.", "format": str(cls.__pattern__.pattern), } diff --git a/src/phantom/sized.py b/src/phantom/sized.py index c1d4bd3..1b2015f 100644 --- a/src/phantom/sized.py +++ b/src/phantom/sized.py @@ -102,7 +102,7 @@ def __init_subclass__( @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "type": "array", } @@ -188,14 +188,14 @@ def __init_subclass__( def __schema__(cls) -> Schema: return ( { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "type": "string", "minLength": cls.__min__, "maxLength": cls.__max__, } if str in cls.__mro__ else { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "type": "array", "minItems": cls.__min__, "maxItems": cls.__max__, @@ -241,7 +241,7 @@ class NonEmpty(PhantomBound[T], Generic[T], min=1): @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "A non-empty array.", } @@ -252,7 +252,7 @@ class NonEmptyStr(str, NonEmpty[str]): @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "A non-empty string.", } @@ -263,7 +263,7 @@ class Empty(PhantomBound[T], Generic[T], max=0): @classmethod def __schema__(cls) -> Schema: return { - **super().__schema__(), # type: ignore[misc] + **super().__schema__(), "description": "An empty array.", } diff --git a/tests/predicates/test_utils.py b/tests/predicates/test_utils.py index b4af259..1a63d79 100644 --- a/tests/predicates/test_utils.py +++ b/tests/predicates/test_utils.py @@ -13,7 +13,5 @@ class TestFunctionRepr: def test_explodes_partial_arguments(self): predicate = partial(foo, 10, b=5) assert_predicate_name_equals(boolean.negate(predicate), "negate(foo(10, b=5))") - predicate = partial(foo, "hello", c="goddag") - assert_predicate_name_equals( - boolean.negate(predicate), "negate(foo('hello', c='goddag'))" - ) + predicate = partial(foo, 23, c=31) + assert_predicate_name_equals(boolean.negate(predicate), "negate(foo(23, c=31))") diff --git a/typing-requirements.txt b/typing-requirements.txt index f42511a..92f365b 100644 --- a/typing-requirements.txt +++ b/typing-requirements.txt @@ -20,33 +20,34 @@ iniconfig==2.0.0 \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 # via pytest -mypy==1.4.1 \ - --hash=sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042 \ - --hash=sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd \ - --hash=sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2 \ - --hash=sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01 \ - --hash=sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7 \ - --hash=sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3 \ - --hash=sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816 \ - --hash=sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3 \ - --hash=sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc \ - --hash=sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4 \ - --hash=sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b \ - --hash=sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8 \ - --hash=sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c \ - --hash=sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462 \ - --hash=sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7 \ - --hash=sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc \ - --hash=sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258 \ - --hash=sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b \ - --hash=sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9 \ - --hash=sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6 \ - --hash=sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f \ - --hash=sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1 \ - --hash=sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828 \ - --hash=sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878 \ - --hash=sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f \ - --hash=sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b +mypy==1.11.2 \ + --hash=sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36 \ + --hash=sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce \ + --hash=sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6 \ + --hash=sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b \ + --hash=sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca \ + --hash=sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24 \ + --hash=sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383 \ + --hash=sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7 \ + --hash=sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86 \ + --hash=sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d \ + --hash=sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4 \ + --hash=sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8 \ + --hash=sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987 \ + --hash=sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385 \ + --hash=sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79 \ + --hash=sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef \ + --hash=sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6 \ + --hash=sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70 \ + --hash=sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca \ + --hash=sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70 \ + --hash=sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12 \ + --hash=sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104 \ + --hash=sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a \ + --hash=sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318 \ + --hash=sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1 \ + --hash=sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b \ + --hash=sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d # via phantom-types (pyproject.toml) mypy-extensions==1.0.0 \ --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ From 077e93fb2853539be1f1e22dc43d3ec49479f0b6 Mon Sep 17 00:00:00 2001 From: Anton Agestam Date: Wed, 2 Oct 2024 08:17:46 +0200 Subject: [PATCH 2/2] chore: Bump goose dependencies --- .goose/check-manifest/manifest.json | 2 +- .goose/check-manifest/requirements.txt | 6 ++-- .goose/python/manifest.json | 2 +- .goose/python/requirements.txt | 44 +++++++++++++------------- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.goose/check-manifest/manifest.json b/.goose/check-manifest/manifest.json index 1711e0c..71c74d6 100644 --- a/.goose/check-manifest/manifest.json +++ b/.goose/check-manifest/manifest.json @@ -1 +1 @@ -{"source_dependencies":["check-manifest","setuptools-scm==8.1.0","setuptools==74.1.2","wheel==0.44.0"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:b20035ad9215b0fcfab6ed7888d9eba3c135901cc3f3b38258031154db8eec0f"}],"checksum":"sha256:d22cd331fc8a6160e0bafccf35e12ba887664bf07caa3fbee86aea1486b487f6"} \ No newline at end of file +{"source_dependencies":["check-manifest","setuptools-scm==8.1.0","setuptools==74.1.2","wheel==0.44.0"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:1924fe035132f153b19c1a0c2fb86788ef3c8c5e75736cea527c80fe46d4a4a3"}],"checksum":"sha256:47fbe3314bc85b3cb62313bedb71c6bf1c7d5d11e94cf000e02acacb2c6e7ea0"} \ No newline at end of file diff --git a/.goose/check-manifest/requirements.txt b/.goose/check-manifest/requirements.txt index f5f1e34..d0adfff 100644 --- a/.goose/check-manifest/requirements.txt +++ b/.goose/check-manifest/requirements.txt @@ -7,9 +7,9 @@ check-manifest==0.49 \ packaging==24.1 \ --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 -pyproject-hooks==1.1.0 \ - --hash=sha256:4b37730834edbd6bd37f26ece6b44802fb1c1ee2ece0e54ddff8bfc06db86965 \ - --hash=sha256:7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2 +pyproject-hooks==1.2.0 \ + --hash=sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8 \ + --hash=sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913 setuptools==74.1.2 \ --hash=sha256:5f4c08aa4d3ebcb57a50c33b1b07e94315d7fc7230f7115e47fc99776c8ce308 \ --hash=sha256:95b40ed940a1c67eb70fc099094bd6e99c6ee7c23aa2306f4d2697ba7916f9c6 diff --git a/.goose/python/manifest.json b/.goose/python/manifest.json index 8f2b743..f923d3c 100644 --- a/.goose/python/manifest.json +++ b/.goose/python/manifest.json @@ -1 +1 @@ -{"source_dependencies":["blacken-docs","check-jsonschema","editorconfig-checker","pre-commit-hooks","ruff"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:140c1d41bca5c83cae63593d759d20bf957ff8b5fe5b9779a9ae8bd0072aea08"}],"checksum":"sha256:8210de127816e99ea1e0663462de57123730f998f7afe8dfe5b40add21f4b5e3"} \ No newline at end of file +{"source_dependencies":["blacken-docs","check-jsonschema","editorconfig-checker","pre-commit-hooks","ruff"],"lock_files":[{"path":"requirements.txt","checksum":"sha256:b3df3c12640be9532b30433c67d5d5be94ce8a8b8f1a46a0b49bcc3d36bbad3a"}],"checksum":"sha256:1d0b3c94d1ba82cecd3be0a18f75bf57e4471df7df1834bd63d786fa3f34587b"} \ No newline at end of file diff --git a/.goose/python/requirements.txt b/.goose/python/requirements.txt index 474c0d7..838ab33 100644 --- a/.goose/python/requirements.txt +++ b/.goose/python/requirements.txt @@ -121,9 +121,9 @@ charset-normalizer==3.3.2 \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -check-jsonschema==0.29.2 \ - --hash=sha256:6470ff23d848a26b1e77db1141827002f5fff3138295d3345c19b2410d345aa0 \ - --hash=sha256:a633aae257f16e5298853edf18fd30ab94878fd88bd6b91902cd7158151c675d +check-jsonschema==0.29.3 \ + --hash=sha256:3838b6d6da536496516d08a1779e7a11737628f84b444fe95d397b96fc8cc73f \ + --hash=sha256:58d0486e951811744549fa40411e64a6d74bd88c94d9d7fd061e5bf635ff689c click==8.1.7 \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de @@ -421,25 +421,25 @@ ruamel-yaml-clib==0.2.8 \ --hash=sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2 \ --hash=sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875 \ --hash=sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412 -ruff==0.6.7 \ - --hash=sha256:02b083770e4cdb1495ed313f5694c62808e71764ec6ee5db84eedd82fd32d8f5 \ - --hash=sha256:08277b217534bfdcc2e1377f7f933e1c7957453e8a79764d004e44c40db923f2 \ - --hash=sha256:0c05fd37013de36dfa883a3854fae57b3113aaa8abf5dea79202675991d48624 \ - --hash=sha256:17a86aac6f915932d259f7bec79173e356165518859f94649d8c50b81ff087e9 \ - --hash=sha256:2f0b62056246234d59cbf2ea66e84812dc9ec4540518e37553513392c171cb18 \ - --hash=sha256:44e52129d82266fa59b587e2cd74def5637b730a69c4542525dfdecfaae38bd5 \ - --hash=sha256:525201b77f94d2b54868f0cbe5edc018e64c22563da6c5c2e5c107a4e85c1c0d \ - --hash=sha256:533d66b7774ef224e7cf91506a7dafcc9e8ec7c059263ec46629e54e7b1f90ab \ - --hash=sha256:590445eec5653f36248584579c06252ad2e110a5d1f32db5420de35fb0e1c977 \ - --hash=sha256:6b1462fa56c832dc0cea5b4041cfc9c97813505d11cce74ebc6d1aae068de36b \ - --hash=sha256:8854450839f339e1049fdbe15d875384242b8e85d5c6947bb2faad33c651020b \ - --hash=sha256:9ba4efe5c6dbbb58be58dd83feedb83b5e95c00091bf09987b4baf510fee5c99 \ - --hash=sha256:a0e1655868164e114ba43a908fd2d64a271a23660195017c17691fb6355d59bb \ - --hash=sha256:a939ca435b49f6966a7dd64b765c9df16f1faed0ca3b6f16acdf7731969deb35 \ - --hash=sha256:b28f0d5e2f771c1fe3c7a45d3f53916fc74a480698c4b5731f0bea61e52137c8 \ - --hash=sha256:b3f8822defd260ae2460ea3832b24d37d203c3577f48b055590a426a722d50ef \ - --hash=sha256:c6707a32e03b791f4448dc0dce24b636cbcdee4dd5607adc24e5ee73fd86c00a \ - --hash=sha256:f49c9caa28d9bbfac4a637ae10327b3db00f47d038f3fbb2195c4d682e925b14 +ruff==0.6.8 \ + --hash=sha256:007dee844738c3d2e6c24ab5bc7d43c99ba3e1943bd2d95d598582e9c1b27750 \ + --hash=sha256:1085c455d1b3fdb8021ad534379c60353b81ba079712bce7a900e834859182fa \ + --hash=sha256:27b87e1801e786cd6ede4ada3faa5e254ce774de835e6723fd94551464c56b8c \ + --hash=sha256:5fd0d4b7b1457c49e435ee1e437900ced9b35cb8dc5178921dfb7d98d65a08d0 \ + --hash=sha256:677e03c00f37c66cea033274295a983c7c546edea5043d0c798833adf4cf4c6f \ + --hash=sha256:6cfb227b932ba8ef6e56c9f875d987973cd5e35bc5d05f5abf045af78ad8e098 \ + --hash=sha256:6ef0411eccfc3909269fed47c61ffebdcb84a04504bafa6b6df9b85c27e813b0 \ + --hash=sha256:6f5a2f17c7d32991169195d52a04c95b256378bbf0de8cb98478351eb70d526f \ + --hash=sha256:70edf6a93b19481affd287d696d9e311388d808671bc209fb8907b46a8c3af44 \ + --hash=sha256:77944bca110ff0a43b768f05a529fecd0706aac7bcce36d7f1eeb4cbfca5f0f2 \ + --hash=sha256:792213f7be25316f9b46b854df80a77e0da87ec66691e8f012f887b4a671ab5a \ + --hash=sha256:8d3bb2e3fbb9875172119021a13eed38849e762499e3cfde9588e4b4d70968dc \ + --hash=sha256:9f1476236b3eacfacfc0f66aa9e6cd39f2a624cb73ea99189556015f27c0bdeb \ + --hash=sha256:a5bf44b1aa0adaf6d9d20f86162b34f7c593bfedabc51239953e446aefc8ce18 \ + --hash=sha256:cd48f945da2a6334f1793d7f701725a76ba93bf3d73c36f6b21fb04d5338dcf5 \ + --hash=sha256:ce60058d3cdd8490e5e5471ef086b3f1e90ab872b548814e35930e21d848c9ce \ + --hash=sha256:ec0517dc0f37cad14a5319ba7bba6e7e339d03fbf967a6d69b0907d61be7a263 \ + --hash=sha256:f8034b19b993e9601f2ddf2c517451e17a6ab5cdb1c13fdff50c1442a7171d87 urllib3==2.2.3 \ --hash=sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac \ --hash=sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9