diff --git a/pyproject.toml b/pyproject.toml index e0a65ba..54fc267 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,16 +53,16 @@ dev = [ # All dependencies required for CI and development, including running baseline tests. dev-required = [ - "buf-bin==1.71.0", + "buf-bin==1.72.0", "fix-protobuf-imports==0.1.7", "google-re2-stubs==0.1.1", "license-header==0.0.1", "poethepoet==0.48.0", "pytest==9.1.1", "pytest-benchmark==5.2.3", - "ruff==0.15.21", - "tombi==1.2.0", - "ty==0.0.59", + "ruff==0.16.0", + "tombi==1.2.4", + "ty==0.0.63", "types-protobuf==6.32.1.20260221", ] @@ -139,6 +139,7 @@ ignore = [ "PLR0914", # Too many local variables "PLR0915", # Too many statements "PLR0916", # Too many boolean expressions + "PLR0917", # Too many positional arguments "PLR1702", # Too many nested blocks # TODO rules diff --git a/test/proto/bench/v1/bench.proto b/test/proto/bench/v1/bench.proto index 83d473b..c2c1d23 100644 --- a/test/proto/bench/v1/bench.proto +++ b/test/proto/bench/v1/bench.proto @@ -75,7 +75,9 @@ message BenchComplexSchema { map map_str_str = 23 [(buf.validate.field).map.min_pairs = 1]; map map_i32_i64 = 24 [(buf.validate.field).map.max_pairs = 10]; map map_u64_bool = 25; - map map_str_bytes = 26 [(buf.validate.field).map.keys = {string: {min_len: 1}}]; + map map_str_bytes = 26 [(buf.validate.field).map.keys = { + string: {min_len: 1} + }]; map map_str_msg = 27 [(buf.validate.field).map.values = {required: true}]; map map_i64_msg = 28; diff --git a/test/proto/buf/validate/conformance/cases/enums.proto b/test/proto/buf/validate/conformance/cases/enums.proto index f8343d7..58bc5d0 100644 --- a/test/proto/buf/validate/conformance/cases/enums.proto +++ b/test/proto/buf/validate/conformance/cases/enums.proto @@ -75,10 +75,14 @@ message EnumAliasIn { } message EnumNotIn { - TestEnum val = 1 [(buf.validate.field).enum = {not_in: [1]}]; + TestEnum val = 1 [(buf.validate.field).enum = { + not_in: [1] + }]; } message EnumAliasNotIn { - TestEnumAlias val = 1 [(buf.validate.field).enum = {not_in: [1]}]; + TestEnumAlias val = 1 [(buf.validate.field).enum = { + not_in: [1] + }]; } message EnumExternal { diff --git a/test/proto/buf/validate/conformance/cases/kitchen_sink.proto b/test/proto/buf/validate/conformance/cases/kitchen_sink.proto index 8e0d24a..d6effab 100644 --- a/test/proto/buf/validate/conformance/cases/kitchen_sink.proto +++ b/test/proto/buf/validate/conformance/cases/kitchen_sink.proto @@ -48,8 +48,16 @@ message ComplexTestMsg { ] }]; ComplexTestEnum enum_const = 11 [(buf.validate.field).enum.const = 2]; - google.protobuf.Any any_val = 12 [(buf.validate.field).any = {in: ["type.googleapis.com/google.protobuf.Duration"]}]; - repeated google.protobuf.Timestamp rep_ts_val = 13 [(buf.validate.field).repeated = {items: {timestamp: {gte: {nanos: 1000000}}}}]; + google.protobuf.Any any_val = 12 [(buf.validate.field).any = { + in: ["type.googleapis.com/google.protobuf.Duration"] + }]; + repeated google.protobuf.Timestamp rep_ts_val = 13 [(buf.validate.field).repeated = { + items: { + timestamp: { + gte: {nanos: 1000000} + } + } + }]; map map_val = 14 [(buf.validate.field).map.keys.sint32.lt = 0]; bytes bytes_val = 15 [(buf.validate.field).bytes.const = "\x00\x99"]; oneof o { diff --git a/test/proto/buf/validate/conformance/cases/messages.proto b/test/proto/buf/validate/conformance/cases/messages.proto index a023bbe..b3e91da 100644 --- a/test/proto/buf/validate/conformance/cases/messages.proto +++ b/test/proto/buf/validate/conformance/cases/messages.proto @@ -55,7 +55,9 @@ message MessageRequiredOneof { message MessageWith3dInside {} message MessageOneofSingleField { - option (buf.validate.message).oneof = {fields: ["str_field"]}; + option (buf.validate.message).oneof = { + fields: ["str_field"] + }; string str_field = 1; bool bool_field = 2; } @@ -113,7 +115,9 @@ message MessageOneofMultipleSharedFields { } message MessageOneofUnknownFieldName { - option (buf.validate.message).oneof = {fields: ["xxx"]}; + option (buf.validate.message).oneof = { + fields: ["xxx"] + }; string str_field = 1; } @@ -130,7 +134,9 @@ message MessageOneofDuplicateField { } message MessageOneofZeroFields { - option (buf.validate.message).oneof = {fields: []}; + option (buf.validate.message).oneof = { + fields: [] + }; string str_field = 1; bool bool_field = 2; } diff --git a/test/proto/buf/validate/conformance/cases/numbers.proto b/test/proto/buf/validate/conformance/cases/numbers.proto index 4a598aa..c3fc4f0 100644 --- a/test/proto/buf/validate/conformance/cases/numbers.proto +++ b/test/proto/buf/validate/conformance/cases/numbers.proto @@ -33,7 +33,9 @@ message FloatIn { }]; } message FloatNotIn { - float val = 1 [(buf.validate.field).float = {not_in: [0]}]; + float val = 1 [(buf.validate.field).float = { + not_in: [0] + }]; } message FloatLT { float val = 1 [(buf.validate.field).float.lt = 0]; @@ -110,7 +112,9 @@ message DoubleIn { }]; } message DoubleNotIn { - double val = 1 [(buf.validate.field).double = {not_in: [0]}]; + double val = 1 [(buf.validate.field).double = { + not_in: [0] + }]; } message DoubleLT { double val = 1 [(buf.validate.field).double.lt = 0]; @@ -187,7 +191,9 @@ message Int32In { }]; } message Int32NotIn { - int32 val = 1 [(buf.validate.field).int32 = {not_in: [0]}]; + int32 val = 1 [(buf.validate.field).int32 = { + not_in: [0] + }]; } message Int32LT { int32 val = 1 [(buf.validate.field).int32.lt = 0]; @@ -258,7 +264,9 @@ message Int64In { }]; } message Int64NotIn { - int64 val = 1 [(buf.validate.field).int64 = {not_in: [0]}]; + int64 val = 1 [(buf.validate.field).int64 = { + not_in: [0] + }]; } message Int64LT { int64 val = 1 [(buf.validate.field).int64.lt = 0]; @@ -354,7 +362,9 @@ message UInt32In { }]; } message UInt32NotIn { - uint32 val = 1 [(buf.validate.field).uint32 = {not_in: [0]}]; + uint32 val = 1 [(buf.validate.field).uint32 = { + not_in: [0] + }]; } message UInt32LT { uint32 val = 1 [(buf.validate.field).uint32.lt = 5]; @@ -425,7 +435,9 @@ message UInt64In { }]; } message UInt64NotIn { - uint64 val = 1 [(buf.validate.field).uint64 = {not_in: [0]}]; + uint64 val = 1 [(buf.validate.field).uint64 = { + not_in: [0] + }]; } message UInt64LT { uint64 val = 1 [(buf.validate.field).uint64.lt = 5]; @@ -496,7 +508,9 @@ message SInt32In { }]; } message SInt32NotIn { - sint32 val = 1 [(buf.validate.field).sint32 = {not_in: [0]}]; + sint32 val = 1 [(buf.validate.field).sint32 = { + not_in: [0] + }]; } message SInt32LT { sint32 val = 1 [(buf.validate.field).sint32.lt = 0]; @@ -567,7 +581,9 @@ message SInt64In { }]; } message SInt64NotIn { - sint64 val = 1 [(buf.validate.field).sint64 = {not_in: [0]}]; + sint64 val = 1 [(buf.validate.field).sint64 = { + not_in: [0] + }]; } message SInt64LT { sint64 val = 1 [(buf.validate.field).sint64.lt = 0]; @@ -637,7 +653,9 @@ message Fixed32In { }]; } message Fixed32NotIn { - fixed32 val = 1 [(buf.validate.field).fixed32 = {not_in: [0]}]; + fixed32 val = 1 [(buf.validate.field).fixed32 = { + not_in: [0] + }]; } message Fixed32LT { fixed32 val = 1 [(buf.validate.field).fixed32.lt = 5]; @@ -708,7 +726,9 @@ message Fixed64In { }]; } message Fixed64NotIn { - fixed64 val = 1 [(buf.validate.field).fixed64 = {not_in: [0]}]; + fixed64 val = 1 [(buf.validate.field).fixed64 = { + not_in: [0] + }]; } message Fixed64LT { fixed64 val = 1 [(buf.validate.field).fixed64.lt = 5]; @@ -779,7 +799,9 @@ message SFixed32In { }]; } message SFixed32NotIn { - sfixed32 val = 1 [(buf.validate.field).sfixed32 = {not_in: [0]}]; + sfixed32 val = 1 [(buf.validate.field).sfixed32 = { + not_in: [0] + }]; } message SFixed32LT { sfixed32 val = 1 [(buf.validate.field).sfixed32.lt = 0]; @@ -850,7 +872,9 @@ message SFixed64In { }]; } message SFixed64NotIn { - sfixed64 val = 1 [(buf.validate.field).sfixed64 = {not_in: [0]}]; + sfixed64 val = 1 [(buf.validate.field).sfixed64 = { + not_in: [0] + }]; } message SFixed64LT { sfixed64 val = 1 [(buf.validate.field).sfixed64.lt = 0]; diff --git a/test/proto/buf/validate/conformance/cases/repeated.proto b/test/proto/buf/validate/conformance/cases/repeated.proto index 6386be8..594a16c 100644 --- a/test/proto/buf/validate/conformance/cases/repeated.proto +++ b/test/proto/buf/validate/conformance/cases/repeated.proto @@ -93,13 +93,19 @@ message RepeatedItemNotIn { }]; } message RepeatedEnumIn { - repeated AnEnum val = 1 [(buf.validate.field).repeated.items.enum = {in: [0]}]; + repeated AnEnum val = 1 [(buf.validate.field).repeated.items.enum = { + in: [0] + }]; } message RepeatedEnumNotIn { - repeated AnEnum val = 1 [(buf.validate.field).repeated.items.enum = {not_in: [0]}]; + repeated AnEnum val = 1 [(buf.validate.field).repeated.items.enum = { + not_in: [0] + }]; } message RepeatedEmbeddedEnumIn { - repeated AnotherInEnum val = 1 [(buf.validate.field).repeated.items.enum = {in: [0]}]; + repeated AnotherInEnum val = 1 [(buf.validate.field).repeated.items.enum = { + in: [0] + }]; enum AnotherInEnum { ANOTHER_IN_ENUM_UNSPECIFIED = 0; ANOTHER_IN_ENUM_A = 1; @@ -107,7 +113,9 @@ message RepeatedEmbeddedEnumIn { } } message RepeatedEmbeddedEnumNotIn { - repeated AnotherNotInEnum val = 1 [(buf.validate.field).repeated.items.enum = {not_in: [0]}]; + repeated AnotherNotInEnum val = 1 [(buf.validate.field).repeated.items.enum = { + not_in: [0] + }]; enum AnotherNotInEnum { ANOTHER_NOT_IN_ENUM_UNSPECIFIED = 0; ANOTHER_NOT_IN_ENUM_A = 1; @@ -115,14 +123,20 @@ message RepeatedEmbeddedEnumNotIn { } } message RepeatedAnyIn { - repeated google.protobuf.Any val = 1 [(buf.validate.field).repeated.items.any = {in: ["type.googleapis.com/google.protobuf.Duration"]}]; + repeated google.protobuf.Any val = 1 [(buf.validate.field).repeated.items.any = { + in: ["type.googleapis.com/google.protobuf.Duration"] + }]; } message RepeatedAnyNotIn { - repeated google.protobuf.Any val = 1 [(buf.validate.field).repeated.items.any = {not_in: ["type.googleapis.com/google.protobuf.Timestamp"]}]; + repeated google.protobuf.Any val = 1 [(buf.validate.field).repeated.items.any = { + not_in: ["type.googleapis.com/google.protobuf.Timestamp"] + }]; } message RepeatedMinAndItemLen { repeated string val = 1 [(buf.validate.field).repeated = { - items: {string: {len: 3}} + items: { + string: {len: 3} + } min_items: 1 }]; } @@ -133,7 +147,13 @@ message RepeatedMinAndMaxItemLen { ]; } message RepeatedDuration { - repeated google.protobuf.Duration val = 1 [(buf.validate.field).repeated = {items: {duration: {gte: {nanos: 1000000}}}}]; + repeated google.protobuf.Duration val = 1 [(buf.validate.field).repeated = { + items: { + duration: { + gte: {nanos: 1000000} + } + } + }]; } message RepeatedExactIgnore { repeated uint32 val = 1 [ diff --git a/test/proto/buf/validate/conformance/cases/wkt_any.proto b/test/proto/buf/validate/conformance/cases/wkt_any.proto index 77f29ea..e10668c 100644 --- a/test/proto/buf/validate/conformance/cases/wkt_any.proto +++ b/test/proto/buf/validate/conformance/cases/wkt_any.proto @@ -28,26 +28,38 @@ message AnyRequired { google.protobuf.Any val = 1 [(buf.validate.field).required = true]; } message AnyIn { - google.protobuf.Any val = 1 [(buf.validate.field).any = {in: ["type.googleapis.com/google.protobuf.Duration"]}]; + google.protobuf.Any val = 1 [(buf.validate.field).any = { + in: ["type.googleapis.com/google.protobuf.Duration"] + }]; } message AnyNotIn { - google.protobuf.Any val = 1 [(buf.validate.field).any = {not_in: ["type.googleapis.com/google.protobuf.Timestamp"]}]; + google.protobuf.Any val = 1 [(buf.validate.field).any = { + not_in: ["type.googleapis.com/google.protobuf.Timestamp"] + }]; } // The below messages should throw compilation errors due to incorrect types. message AnyWrongTypeScalar { - string val = 1 [(buf.validate.field).any = {not_in: ["type.googleapis.com/google.protobuf.Timestamp"]}]; + string val = 1 [(buf.validate.field).any = { + not_in: ["type.googleapis.com/google.protobuf.Timestamp"] + }]; } message AnyWrongTypeMessage { message WrongType { int32 val = 1; } - WrongType val = 1 [(buf.validate.field).any = {not_in: ["type.googleapis.com/google.protobuf.Timestamp"]}]; + WrongType val = 1 [(buf.validate.field).any = { + not_in: ["type.googleapis.com/google.protobuf.Timestamp"] + }]; } message AnyWrongTypeWrapper { - google.protobuf.Int32Value val = 1 [(buf.validate.field).any = {not_in: ["type.googleapis.com/google.protobuf.Timestamp"]}]; + google.protobuf.Int32Value val = 1 [(buf.validate.field).any = { + not_in: ["type.googleapis.com/google.protobuf.Timestamp"] + }]; } message AnyWrongTypeWKT { - google.protobuf.Timestamp val = 1 [(buf.validate.field).any = {not_in: ["type.googleapis.com/google.protobuf.Timestamp"]}]; + google.protobuf.Timestamp val = 1 [(buf.validate.field).any = { + not_in: ["type.googleapis.com/google.protobuf.Timestamp"] + }]; } diff --git a/test/proto/buf/validate/conformance/cases/wkt_duration.proto b/test/proto/buf/validate/conformance/cases/wkt_duration.proto index f836639..afebb93 100644 --- a/test/proto/buf/validate/conformance/cases/wkt_duration.proto +++ b/test/proto/buf/validate/conformance/cases/wkt_duration.proto @@ -42,7 +42,11 @@ message DurationIn { }]; } message DurationNotIn { - google.protobuf.Duration val = 1 [(buf.validate.field).duration = {not_in: [{}]}]; + google.protobuf.Duration val = 1 [(buf.validate.field).duration = { + not_in: [ + {} + ] + }]; } message DurationLT { diff --git a/test/proto/buf/validate/conformance/cases/wkt_field_mask.proto b/test/proto/buf/validate/conformance/cases/wkt_field_mask.proto index 64859d7..4982ea6 100644 --- a/test/proto/buf/validate/conformance/cases/wkt_field_mask.proto +++ b/test/proto/buf/validate/conformance/cases/wkt_field_mask.proto @@ -27,7 +27,9 @@ message FieldMaskRequired { } message FieldMaskConst { - google.protobuf.FieldMask val = 1 [(buf.validate.field).field_mask.const = {paths: ["a"]}]; + google.protobuf.FieldMask val = 1 [(buf.validate.field).field_mask.const = { + paths: ["a"] + }]; } message FieldMaskIn { @@ -48,5 +50,7 @@ message FieldMaskNotIn { } message FieldMaskExample { - google.protobuf.FieldMask val = 1 [(buf.validate.field).field_mask.example = {paths: ["a"]}]; + google.protobuf.FieldMask val = 1 [(buf.validate.field).field_mask.example = { + paths: ["a"] + }]; } diff --git a/uv.lock b/uv.lock index af032c2..2249526 100644 --- a/uv.lock +++ b/uv.lock @@ -11,19 +11,19 @@ resolution-markers = [ [[package]] name = "buf-bin" -version = "1.71.0" +version = "1.72.0" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/29/a5437ab4f63c0fea0ff02f4c8a876f282740dcbcc51e4c641e1519b8c302/buf_bin-1.71.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b12c5400f23c0279f14be83a226dad4db369cabab15b3a8172c935f7601966be", size = 15345129, upload-time = "2026-06-16T18:24:53.768Z" }, - { url = "https://files.pythonhosted.org/packages/a2/a1/5365d82d3e43b39a1a0fc5b82a1266733cf4dd8c0347c863df724e7b283c/buf_bin-1.71.0-py3-none-macosx_11_0_x86_64.whl", hash = "sha256:3da45766828c277deb8f7b299890c92c83c15c05edc59e109b015f55865b2685", size = 16507450, upload-time = "2026-06-16T18:24:56.535Z" }, - { url = "https://files.pythonhosted.org/packages/f8/ae/caea3914db4c7e9e19e5bc87f4ad1d5d5d6dead6ee51f6abb33699b1042c/buf_bin-1.71.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:cd03ef27d6874407baf27fd83359223941c514a5c7c6c8f0116c47d8030c2ae3", size = 14530240, upload-time = "2026-06-16T18:24:58.994Z" }, - { url = "https://files.pythonhosted.org/packages/40/7f/7d85a957fabcba1533287d7c7c264c7d641fac9a6d274c749789ac300de0/buf_bin-1.71.0-py3-none-manylinux2014_armv7l.manylinux_2_17_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:ddd89de0a29910a0d1d0049ec9cf6085b3c41a21f54fe11842932f90c0b652c3", size = 14720952, upload-time = "2026-06-16T18:25:01.174Z" }, - { url = "https://files.pythonhosted.org/packages/ee/06/5fca974b1ca94219a1b494774fa36996f6b05fc58f2cf995b61622176a4c/buf_bin-1.71.0-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.musllinux_1_1_ppc64le.whl", hash = "sha256:ec8f577bc27cbe430c1553afec966d62a004c75a94806eb5f69b5e71f32dd65c", size = 14229251, upload-time = "2026-06-16T18:25:03.786Z" }, - { url = "https://files.pythonhosted.org/packages/12/3a/edaac8bfccec34dd701edf5c9246d7d9bbbae70ce335f365bf04b8509ea1/buf_bin-1.71.0-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.musllinux_1_1_s390x.whl", hash = "sha256:187a766486877932e3bbeafe1e027d8dca1cca13463b62c4e4cdd3e971ed7354", size = 15483868, upload-time = "2026-06-16T18:25:06.315Z" }, - { url = "https://files.pythonhosted.org/packages/89/69/8ec0f2341c663a20fa9a84a88830952812e7b3362a447e21f38e51bf0eee/buf_bin-1.71.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.musllinux_1_1_x86_64.whl", hash = "sha256:7f584ebfea1b3e2d3dfa20487255bbce8af1b624fc4aa881652429acd9b72329", size = 16106360, upload-time = "2026-06-16T18:25:08.762Z" }, - { url = "https://files.pythonhosted.org/packages/55/f7/e3af059c0840ea70bdcd04237403fe12d5ba1c56166cdee21e03bc227844/buf_bin-1.71.0-py3-none-manylinux_2_17_riscv64.musllinux_1_2_riscv64.whl", hash = "sha256:0ab282c3f0c7e4b02130ad54fa0be6896a1b44210bca181d6e6cc8006e2825c3", size = 14730629, upload-time = "2026-06-16T18:25:11.273Z" }, - { url = "https://files.pythonhosted.org/packages/97/a4/c071c15b1419960e3f7f2c06628d092c0b1166b97a3ac335c4f8e50cfe55/buf_bin-1.71.0-py3-none-win_amd64.whl", hash = "sha256:bb815768b2b86a17bcf6897995d06fb33f465cc67e7e1fd4298365617e91e50c", size = 16446079, upload-time = "2026-06-16T18:25:13.631Z" }, - { url = "https://files.pythonhosted.org/packages/01/01/77553cba45fe4a769fb6fa44ee25961580b87a95fb47c95f2638bd8cf145/buf_bin-1.71.0-py3-none-win_arm64.whl", hash = "sha256:5172e2068819c2954fe5626fa02aaeeb1b631f0e154ef24dadfeff14f12f547a", size = 14617019, upload-time = "2026-06-16T18:25:15.78Z" }, + { url = "https://files.pythonhosted.org/packages/d9/4d/4b305995cc79c08abfff452b97df4f78c0bf22e54b55d30c9e3ff3e3e6a8/buf_bin-1.72.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:80b91a34c1bde6103909522423692fd174add77be14f9549c90d0331ac22f041", size = 15371262, upload-time = "2026-07-17T20:39:53.022Z" }, + { url = "https://files.pythonhosted.org/packages/a8/e0/3dc0dd9c98ab862236171fd2799bec0eb955b076eeb5c1345a474ff317d3/buf_bin-1.72.0-py3-none-macosx_11_0_x86_64.whl", hash = "sha256:c3cb5720e8905290b0d08ad49b4f57f73b8e1f19c85cad7f7746ecfc2fb3fd06", size = 16538315, upload-time = "2026-07-17T20:39:56.13Z" }, + { url = "https://files.pythonhosted.org/packages/0d/7d/f98609c72149f8f47408d887f265a30c4bfa030af97b2d160fabc401b61a/buf_bin-1.72.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:79e9e0622e7b61a11b7267e33ac5e3bc9862eb45fe73098b74f961d1d398c467", size = 14560062, upload-time = "2026-07-17T20:39:59.104Z" }, + { url = "https://files.pythonhosted.org/packages/4a/92/ece9420f79ea0bc3803e659c7633f3c5795e850f32721c88bc8d937bcf8f/buf_bin-1.72.0-py3-none-manylinux2014_armv7l.manylinux_2_17_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:faf906ca80efea5e16024d816f3edb4dbc0006bc5ac77dbe9b0cc2987d58cee7", size = 14746573, upload-time = "2026-07-17T20:40:01.841Z" }, + { url = "https://files.pythonhosted.org/packages/81/69/7a8a68c9b1155b5611415ca745b27c2b00332a970b14fd881d681e93b948/buf_bin-1.72.0-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.musllinux_1_1_ppc64le.whl", hash = "sha256:1563276ff0c35addd796c674e8a84f95f88a3fa567f3329ecdd7ffec35efea93", size = 14256237, upload-time = "2026-07-17T20:40:04.578Z" }, + { url = "https://files.pythonhosted.org/packages/36/ec/3bff6981672c1a5a2b4ceb51e82a252d3521c83c95a3426a4de25a3c3dad/buf_bin-1.72.0-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.musllinux_1_1_s390x.whl", hash = "sha256:f8f077ffc21b8eb47b63e001988fdb3f638cb62431ec3d6b9d40ba826ec5761c", size = 15508730, upload-time = "2026-07-17T20:40:08.364Z" }, + { url = "https://files.pythonhosted.org/packages/d4/d1/d54430879c503643e3b5ca8b9ed6072b006ad263babd95fc9bfdf0e1a2bf/buf_bin-1.72.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.musllinux_1_1_x86_64.whl", hash = "sha256:01573bdff85d11b905f431dc707e954e4ecc408bb65983d1b6f77098b112151f", size = 16134094, upload-time = "2026-07-17T20:40:11.334Z" }, + { url = "https://files.pythonhosted.org/packages/1e/b9/01d8d60211a0b27e2199d0c50bc265d750c55237708df1f3fb0d4929f1a1/buf_bin-1.72.0-py3-none-manylinux_2_17_riscv64.musllinux_1_2_riscv64.whl", hash = "sha256:879e29b073d976fc21ea3e2464fceca904f92cb5ce4b7bbaf2b56e8ab5a090b1", size = 14759134, upload-time = "2026-07-17T20:40:14.265Z" }, + { url = "https://files.pythonhosted.org/packages/87/2a/4d0d8b4289e11f48867c913d419ca0ddccec9a0ac48e483a549b948daebd/buf_bin-1.72.0-py3-none-win_amd64.whl", hash = "sha256:21939478a4db814d4465fc09123f6a44e62e546a3f18c025c5744741238e7021", size = 16476768, upload-time = "2026-07-17T20:40:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/e7/b4/f7c85432667929de32fb340f2793267f3d242450586ac155b65237d67722/buf_bin-1.72.0-py3-none-win_arm64.whl", hash = "sha256:a92484e502e11ebd90b528eef5c09e21eeb1d83fffeb29edef284a3f76e04025", size = 14649036, upload-time = "2026-07-17T20:40:20.217Z" }, ] [[package]] @@ -465,7 +465,7 @@ provides-extras = ["cel-expr"] [package.metadata.requires-dev] dev = [ - { name = "buf-bin", specifier = "==1.71.0" }, + { name = "buf-bin", specifier = "==1.72.0" }, { name = "cel-expr-python", marker = "python_full_version >= '3.11'", specifier = ">=0.1.3" }, { name = "fix-protobuf-imports", specifier = "==0.1.7" }, { name = "google-re2-stubs", specifier = "==0.1.1" }, @@ -474,9 +474,9 @@ dev = [ { name = "protobuf", specifier = ">=6.31.0" }, { name = "pytest", specifier = "==9.1.1" }, { name = "pytest-benchmark", specifier = "==5.2.3" }, - { name = "ruff", specifier = "==0.15.21" }, - { name = "tombi", specifier = "==1.2.0" }, - { name = "ty", specifier = "==0.0.59" }, + { name = "ruff", specifier = "==0.16.0" }, + { name = "tombi", specifier = "==1.2.4" }, + { name = "ty", specifier = "==0.0.63" }, { name = "types-protobuf", specifier = "==6.32.1.20260221" }, ] dev-optional = [ @@ -484,16 +484,16 @@ dev-optional = [ { name = "protobuf", specifier = ">=6.31.0" }, ] dev-required = [ - { name = "buf-bin", specifier = "==1.71.0" }, + { name = "buf-bin", specifier = "==1.72.0" }, { name = "fix-protobuf-imports", specifier = "==0.1.7" }, { name = "google-re2-stubs", specifier = "==0.1.1" }, { name = "license-header", specifier = "==0.0.1" }, { name = "poethepoet", specifier = "==0.48.0" }, { name = "pytest", specifier = "==9.1.1" }, { name = "pytest-benchmark", specifier = "==5.2.3" }, - { name = "ruff", specifier = "==0.15.21" }, - { name = "tombi", specifier = "==1.2.0" }, - { name = "ty", specifier = "==0.0.59" }, + { name = "ruff", specifier = "==0.16.0" }, + { name = "tombi", specifier = "==1.2.4" }, + { name = "ty", specifier = "==0.0.63" }, { name = "types-protobuf", specifier = "==6.32.1.20260221" }, ] @@ -624,27 +624,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.15.21" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/36/6f65aa9989acdec45d417192d8f4e7921931d8a6cf87ac74bce3eed98a8e/ruff-0.15.21.tar.gz", hash = "sha256:d0cfc841c572283c36548f82664a54ce6565567f1b0d5b4cf2caac693d8b7500", size = 4769401, upload-time = "2026-07-09T20:01:34.005Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/c6/ede15cac6839f3dbce52565c8f5164a8210e669c7bc4decb03e5bdf47d0d/ruff-0.15.21-py3-none-linux_armv6l.whl", hash = "sha256:63ea0e965e5d73c90e95b2434beeafc70820536717f561b32ab6e777cb9bdf5d", size = 10854342, upload-time = "2026-07-09T20:00:53.998Z" }, - { url = "https://files.pythonhosted.org/packages/28/9d/d825b07ee7ea9e2d61df92a860033c94e06e7300d50a1c2653aac27d24fe/ruff-0.15.21-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:0f212c5d7d54c01bbfe6dcab02b724a39300f3e34ed7acbe995ccb320a2c58bd", size = 11139539, upload-time = "2026-07-09T20:00:57.809Z" }, - { url = "https://files.pythonhosted.org/packages/f5/de/3b107712e642f063c7a9e0887c427b22cb44097de5aab36c05f2e280670c/ruff-0.15.21-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e6312e41bc96791299614995ea3a977c5857c3b5662b1ecef6755b02b87cb646", size = 10595437, upload-time = "2026-07-09T20:01:00.006Z" }, - { url = "https://files.pythonhosted.org/packages/9a/6f/b4523cc90ba239ede441447a19d0c968846a3012e5a0b0c5b62831a3d5e3/ruff-0.15.21-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01d65b4831c6b2a4ba8ee6faa84049d44d982b7a706e622c4094c509e51673be", size = 10990053, upload-time = "2026-07-09T20:01:02.187Z" }, - { url = "https://files.pythonhosted.org/packages/92/cc/c6a9872a5375f0628875481cf2f66b13d7d865bf3ca2e57f91c7e762d976/ruff-0.15.21-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2c5a913a589120ce67933d5d05fd6ddbcc2481c6a054980ee767f7414c72b4fd", size = 10666096, upload-time = "2026-07-09T20:01:04.299Z" }, - { url = "https://files.pythonhosted.org/packages/ab/97/c621f7a17e097f1790fa3af6374138823b330b2d03fc38337945daca212c/ruff-0.15.21-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef04b681d02ad4dc9620f00f83ac5c22f652d0e9a9cfe431d219b16ad5ccc41", size = 11537011, upload-time = "2026-07-09T20:01:06.771Z" }, - { url = "https://files.pythonhosted.org/packages/ea/51/d928727e476e25ccc57c6f449ffd80241a651a973ad949d39cfb2a771d28/ruff-0.15.21-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16d090c0740916594157e75b80d666eab8e78083b39b3b0e1d698f4670a17b86", size = 12347101, upload-time = "2026-07-09T20:01:08.859Z" }, - { url = "https://files.pythonhosted.org/packages/1e/88/8cd62026802b16018ad06931d87997cf795ba2a6239ab659606c87d96bf0/ruff-0.15.21-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3a10e74757dd65004d779b73e2f3c5210156d9980b41224d50d2ebcf1db51e67", size = 11572001, upload-time = "2026-07-09T20:01:11.092Z" }, - { url = "https://files.pythonhosted.org/packages/b2/97/f63084cf55444fc110e8cb985ebfcc592af47f597d44453d778cb81bc156/ruff-0.15.21-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bab0905d2f29e0d9fbc3c373ed23db0095edaa3f71f1f4f519ec15134d9e85c8", size = 11549239, upload-time = "2026-07-09T20:01:13.27Z" }, - { url = "https://files.pythonhosted.org/packages/9d/77/f107da4a2874b7715914b03f09ba9c54424de3ff8a1cc5d015d3ee2ce0ac/ruff-0.15.21-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:00eca240af5789fec6fe7df74c088cc1f9644ed83027113468efba7c92b94075", size = 11535340, upload-time = "2026-07-09T20:01:15.206Z" }, - { url = "https://files.pythonhosted.org/packages/d5/e9/601deb322d3303a7bf212b0100ead6f2ee3f6a044d89c30f2f92bf83c731/ruff-0.15.21-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:262ab31557a75141325e32d3357f3597645a7f084e732b6b054dde428ecd9341", size = 10964048, upload-time = "2026-07-09T20:01:17.723Z" }, - { url = "https://files.pythonhosted.org/packages/ea/2e/0f2176d1e99c15192caea19c8c3a0a955246b4cb4de795042eeb616345cd/ruff-0.15.21-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:659c4e7a4212f83306045ec7c5e5a356d16d9a6ef4ae0c7a4d872914fc655d9d", size = 10667055, upload-time = "2026-07-09T20:01:19.73Z" }, - { url = "https://files.pythonhosted.org/packages/48/60/abd74a02e0c4214f12a68becfd30af7165cfdcb0e661ecdc60bbb949c09a/ruff-0.15.21-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9e866eab611a5f959d36df2d10e446973a3610bc42b0c15b31dc27977d59c233", size = 11242043, upload-time = "2026-07-09T20:01:21.947Z" }, - { url = "https://files.pythonhosted.org/packages/b2/c6/583075d8ccabb4b229345edcaf1545eb3d8d6be90f686a479d7e94088bbf/ruff-0.15.21-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e89bc93c0d3803ba870b55c29671bad9dc6d94bb1eb181b056b52eb05b52854f", size = 11648064, upload-time = "2026-07-09T20:01:24.023Z" }, - { url = "https://files.pythonhosted.org/packages/3a/3c/37d0ecb729a7cc2d393ea7dce316fc585680f35d93b8d62139d7d0a3700c/ruff-0.15.21-py3-none-win32.whl", hash = "sha256:01f8d5be84823c172b389e123174f781f9daf86d6c58719d603f941932195cdd", size = 10896555, upload-time = "2026-07-09T20:01:26.941Z" }, - { url = "https://files.pythonhosted.org/packages/c0/b8/e43466b2a6067ce91e669068f6e28d6c719a920f014b070d5c8731725de3/ruff-0.15.21-py3-none-win_amd64.whl", hash = "sha256:d4b8d9a2f0f12b816b50447f6eccb9f4bb01a6b82c86b50fb3b5354b458dc6d3", size = 12038772, upload-time = "2026-07-09T20:01:29.497Z" }, - { url = "https://files.pythonhosted.org/packages/dd/75/e90ab9aeece218a9fc5a5bc3ec97d0ee6bb3c4ff95869463c1de58e29a1c/ruff-0.15.21-py3-none-win_arm64.whl", hash = "sha256:6e83115d4b9377c1cbc13abf0e051f069fab0ef815ea0504a8a008cee24dd0a8", size = 11375265, upload-time = "2026-07-09T20:01:31.772Z" }, +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4d/94/1e5e4967626faf12fa56999cd6222dff6992ceb086ad7945756baf70c7a7/ruff-0.16.0.tar.gz", hash = "sha256:e460aafd5495ec89efaa6ced2e4a9a581116451e1c88b9d37ef497e0f8e93982", size = 4790557, upload-time = "2026-07-23T19:11:30.981Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/81/1c8818fee7ce1a04cd7d1b3172e0a8f8e4f1dc4feb7fc390e16daa8af323/ruff-0.16.0-py3-none-linux_armv6l.whl", hash = "sha256:e5115729eb08c585e5121978ba5d5b60caeae394ce21b9fb5e6cd33a1c6c9b1e", size = 10754633, upload-time = "2026-07-23T19:10:46.415Z" }, + { url = "https://files.pythonhosted.org/packages/23/df/beaf59c09d68db84304d555f188b276a77132a5d5b0b67a5c762aa143628/ruff-0.16.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3c954b1d580bfa035b41654f7858cc7e71d5fc3ac5b723dd62bd9133830ed522", size = 10969164, upload-time = "2026-07-23T19:10:50.271Z" }, + { url = "https://files.pythonhosted.org/packages/42/ce/741cd197496a1abbf51352710fd15ed995d2a2be87189c1da26a450d6e83/ruff-0.16.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e01c21d10eb1b29f47b7454e1f4056db9a3f0260c646aa88457c610291db9f81", size = 10488846, upload-time = "2026-07-23T19:10:52.639Z" }, + { url = "https://files.pythonhosted.org/packages/52/2a/a2db8e88cade358f5cdcb05674a917751074109315d014eb6352d9a893f7/ruff-0.16.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e364e5ed22ed8dc05082fd78e35308618260907ac2d3c1d637b2e682415b6c9", size = 10889729, upload-time = "2026-07-23T19:10:54.89Z" }, + { url = "https://files.pythonhosted.org/packages/42/65/62a771694ebd63029dc953e27dbad40e1588bd4860ff9fe881018fddaa49/ruff-0.16.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d327b8fc113a1d4421a04f3839d3752057c8dd1ee320223a6f3f52d04ada462a", size = 10568275, upload-time = "2026-07-23T19:10:56.993Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e2/ced249fe8af5f086c5c58cc21cc3356d50f32f7401c5df87050c999620a7/ruff-0.16.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9b50c55e263103586b3dcf5f73d479eb8cb5fdb6098fec59a62891dab653717", size = 11385112, upload-time = "2026-07-23T19:10:59.615Z" }, + { url = "https://files.pythonhosted.org/packages/87/0b/05154977a8fd69eeb6c103271f55403bfd8711f5c0f8ed07489d95a504e7/ruff-0.16.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0ff4a79ce3ec0172f3241943835de1c4cb4e2dcd07f0f8c2d02603dbbbee4b17", size = 12207008, upload-time = "2026-07-23T19:11:02.154Z" }, + { url = "https://files.pythonhosted.org/packages/fb/29/98225831a3a1eab0e02f4acc6ca6559a98611dcc68b6965ff4b7234627c1/ruff-0.16.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e95c448fca1fb2a18372a9440926c5a6ee789639bb975c72e7ae6d0b04218ab4", size = 11650842, upload-time = "2026-07-23T19:11:04.557Z" }, + { url = "https://files.pythonhosted.org/packages/91/66/6bd3cf90500653d55dc0ffc8507aa8300bd49d0214b2e8cb4d3fef2943ba/ruff-0.16.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f11a8d11010301d0a398a2fdef67691feca7294da6aef55e2150e8fa2cd520b", size = 11400718, upload-time = "2026-07-23T19:11:09.233Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a2/a54eb4eae05d66364050a5d3b8a9c5ef88196531b3cbe7109d873f87f819/ruff-0.16.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:48044c678e9cb8698246c99b14aaccfa6601dea7379eb48a6f8f73f7a6d86cd0", size = 11426177, upload-time = "2026-07-23T19:11:11.994Z" }, + { url = "https://files.pythonhosted.org/packages/1a/be/16e3eea4b2a478a496919f5e36f17c4559e54620bd3bbac5d6affa068006/ruff-0.16.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:7aa0959bad8eb8bef50340154fc9b58678dae31fa4293afa38b44b6e552c0213", size = 10856126, upload-time = "2026-07-23T19:11:14.221Z" }, + { url = "https://files.pythonhosted.org/packages/a2/84/252eb8b868a16eec7257c14f504f77537e734b2d69c762e639e588e304a3/ruff-0.16.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:28ea2b7df8ebf7f9da6b7d47b230ab48f387c0a29be3b474c4d0740e197bb9af", size = 10571208, upload-time = "2026-07-23T19:11:16.378Z" }, + { url = "https://files.pythonhosted.org/packages/21/09/817a482f542f7570cbb4554b26e896610c7114f539b1d9e2d2145bf6bef6/ruff-0.16.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:33a3dfac8c35f81498dea9181bccc2f4c4bc8f1521a1dd9406e77643e0f0fb09", size = 11063329, upload-time = "2026-07-23T19:11:19.173Z" }, + { url = "https://files.pythonhosted.org/packages/2e/23/9403c180ca1cb9b1f7335f5c3e5305c09d49ea5b345196682a36028bde4a/ruff-0.16.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a5237a0bda500d30d81b8e07a6973a5cbc772864cbf746ae2f4e8a2e01c9f4ed", size = 11489751, upload-time = "2026-07-23T19:11:21.74Z" }, + { url = "https://files.pythonhosted.org/packages/b2/1d/1b2ef7bcde851c78d7f17f1cca13fd6dc695fc4b3d6197941e72cae5b132/ruff-0.16.0-py3-none-win32.whl", hash = "sha256:7fab76fa065c873f41ff744347c6e77bcc3dfec4bcc754dc26b63d23c0f7f5fb", size = 10785885, upload-time = "2026-07-23T19:11:23.947Z" }, + { url = "https://files.pythonhosted.org/packages/b2/a3/d5e4ef7a56be3f928ffb90b94c25ba7d3cb9c7fe0736aeaaedf361770712/ruff-0.16.0-py3-none-win_amd64.whl", hash = "sha256:429c117f022bf481fabd9d551e7a3952b24c65e6ef44337ea09d90bebef14472", size = 11923141, upload-time = "2026-07-23T19:11:26.409Z" }, + { url = "https://files.pythonhosted.org/packages/cb/9a/8415f2657cbe200f41a4531ccededf135505a92d4a012229121f885b26f9/ruff-0.16.0-py3-none-win_arm64.whl", hash = "sha256:14296fedcd2705c77ab8235439278bbb38f285cf7da5528b00b3e330c3d4872d", size = 11273407, upload-time = "2026-07-23T19:11:28.705Z" }, ] [[package]] @@ -658,24 +658,24 @@ wheels = [ [[package]] name = "tombi" -version = "1.2.0" +version = "1.2.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/66/4ff636dd04e92149807bf64348d3979f90b0281064f536003f48371d6440/tombi-1.2.0.tar.gz", hash = "sha256:b3bd31edb95cec973521b1fea6434727e64fc7b97fa7b0c79d79fd09fdd0eeb0", size = 700090, upload-time = "2026-07-05T13:44:41.354Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/e9/c38bd38f536ef83c0d682239c97acca7b21ddc2ca8e42976dd884c244641/tombi-1.2.4.tar.gz", hash = "sha256:a015b7fa9958b1f6fdc939295a5cbbe9f3c27af6e6e33da6ea132cd7db32fdb0", size = 701730, upload-time = "2026-07-19T11:11:55.852Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/01/f2f278ac8c89d5fa5deb04deb1ab9dfddd918c7d1ec48d9fe4021bd26839/tombi-1.2.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ec024d2248a756142ff9652934b246853b9593ba8989650f99185e7074e3bb31", size = 8942567, upload-time = "2026-07-05T13:44:09.468Z" }, - { url = "https://files.pythonhosted.org/packages/1c/80/7cb3a1cdf5fbb3be775be90b5d55a585088845f5813b37cd98b5c305936e/tombi-1.2.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:aa96601b70e72a9fa830535d8d73e3ea2c3bcda1166143e9636467b5cee9d8dd", size = 8440947, upload-time = "2026-07-05T13:44:11.884Z" }, - { url = "https://files.pythonhosted.org/packages/62/1b/71762ca9322ef0ec8ae8aff03dacb8bbf76b3749672c30f3c67d87de5760/tombi-1.2.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eefe5185e7eaceee5a22d80b8fad61dd39ceeb164f05a9f259e17c841530b8f5", size = 8931260, upload-time = "2026-07-05T13:44:14.055Z" }, - { url = "https://files.pythonhosted.org/packages/7e/6a/8f9bbb4bf554d6b429a998567347e896ceae55ef51f63448972642f9a88d/tombi-1.2.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f6a79e7301e3d8e4342a32beff178fec47d8ba81afa5e6dae773e6db0fc387b", size = 9318262, upload-time = "2026-07-05T13:44:16.185Z" }, - { url = "https://files.pythonhosted.org/packages/d4/2d/291f76b42d8e2ceb1b5133f8a67234bbffe7ae667a861ebfa4931d0cfb67/tombi-1.2.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef52fae6a37495e6b4cbabcb449eb3576f2a1c3350651fa3d7c0bc6eed1791d7", size = 9635145, upload-time = "2026-07-05T13:44:18.454Z" }, - { url = "https://files.pythonhosted.org/packages/05/0d/c39bde7803721aa2497940258a32001d16f05cea557b39df84dbf353ff59/tombi-1.2.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e431fa7697a352466c3cf179e967d4e13ddb79e2e388b380f6d12a0030888d6", size = 9495976, upload-time = "2026-07-05T13:44:20.525Z" }, - { url = "https://files.pythonhosted.org/packages/18/22/8aae7b19735703156c4c1275cd5f2d79470fbcf3ab2d9de21ac343f7cdf2/tombi-1.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0db54ce13096556fbdf0f958c69ee713a450f37858be9e217ca8228430237521", size = 9291227, upload-time = "2026-07-05T13:44:23.288Z" }, - { url = "https://files.pythonhosted.org/packages/ad/1b/9f147491c60e51cb58a08a7509b6385f648fbba12bbe4b5d723fc7fe9e0a/tombi-1.2.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:6b4d63c3660e1cd44f77f20272f1566d02a4ecd277e58c2e8129c848a7e5d2e9", size = 8689685, upload-time = "2026-07-05T13:44:25.629Z" }, - { url = "https://files.pythonhosted.org/packages/22/0e/c3bcda8f2e134d415b6fae625ce865d4130d8555f6e445c80d7f330e04b9/tombi-1.2.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:438db3ddd17a051e02f7009153e33c9c33d4e4d214df2a60a03bd3aa4e7f19c2", size = 8717809, upload-time = "2026-07-05T13:44:27.898Z" }, - { url = "https://files.pythonhosted.org/packages/1a/fe/8a420f3216874c3df71e9811c159059441c84f4799fbb1630cae616c8496/tombi-1.2.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:c219d0ae49134797e27470ca0b2f60462d03b868ae2d9d203e5e6ba85be72bd2", size = 8950991, upload-time = "2026-07-05T13:44:30.002Z" }, - { url = "https://files.pythonhosted.org/packages/8e/3c/5a059c30ec5d78ff6f9b47ede87949a9f35d119d1776c384f3e234051e56/tombi-1.2.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:8eb577d18b9e15ba3d978a3795a92828aec73f32038ee4adf3c6a8db74dae02d", size = 9141935, upload-time = "2026-07-05T13:44:32.553Z" }, - { url = "https://files.pythonhosted.org/packages/e6/b2/bd54fa3c9f59d63dddbf5b3bb228e32edd7c0f9e0d629519eaaab4744936/tombi-1.2.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:dd495b2888d103c90b0d34d0698a81e10bb0453017ef5c605dd0730197c497a3", size = 9379720, upload-time = "2026-07-05T13:44:34.848Z" }, - { url = "https://files.pythonhosted.org/packages/3e/92/c65928155b85cb5dd7c248cea1dd75d2c81aeee819c9613338cb603a6213/tombi-1.2.0-py3-none-win32.whl", hash = "sha256:c1feec7196fe06bd8fc54be0bdd92b9a3d8d5c275ba41f9bc0a0fad260f32f8d", size = 8964876, upload-time = "2026-07-05T13:44:36.741Z" }, - { url = "https://files.pythonhosted.org/packages/5f/08/f2ea1416fb7baeb32721bb55916c5e9513eb71a8b9e600bcb8f3a4f308a5/tombi-1.2.0-py3-none-win_amd64.whl", hash = "sha256:bfe7332f89ef9f6a6ac88f468d5dc8319cdf7c7353b193d80ed7f1041df90fe1", size = 10353673, upload-time = "2026-07-05T13:44:38.95Z" }, + { url = "https://files.pythonhosted.org/packages/96/8b/73de3405693d225758e9f53cd79d8854c6cfffabb3430f4759ce962cf317/tombi-1.2.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6d15e379ff60e9c116c57e97635df3f119fd7ca83768ef0abc97cde6b52fb708", size = 8948250, upload-time = "2026-07-19T11:11:28.349Z" }, + { url = "https://files.pythonhosted.org/packages/cf/15/6a75f658de6a20e61c32714ecd4f6fece135d4b50f6277e95fc7cbba7125/tombi-1.2.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e453aca87eb19033e22c1f45b8f89d8c24190c3ecb7bb4eac7e12a8b7f2eb2aa", size = 8482376, upload-time = "2026-07-19T11:11:30.512Z" }, + { url = "https://files.pythonhosted.org/packages/da/51/571e3e0454a03a83d4fa7fe3069c7bdcf951f3937f5056c8021ded39cdc7/tombi-1.2.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b74a9318d9b8c1ca87267eee764e4501474fe5d708174066f8138a89743b5513", size = 8966710, upload-time = "2026-07-19T11:11:32.272Z" }, + { url = "https://files.pythonhosted.org/packages/15/11/4dacb1d6be51cae0f5f8a3a962418a41baf74592b60e3f647755f36ec603/tombi-1.2.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db24b0554d9af3d71f77333bafa996e91f7064dbfb648d3f7017f86f83881b02", size = 9346516, upload-time = "2026-07-19T11:11:34.161Z" }, + { url = "https://files.pythonhosted.org/packages/c0/47/f26c42fefa363c6837e929f47ebc119a695cb9c96ad92480183465644c19/tombi-1.2.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:030c4d04a9cdb966be106b890cd096affb7d485225aaa4a72d4bf76ea4ba9435", size = 9607323, upload-time = "2026-07-19T11:11:35.982Z" }, + { url = "https://files.pythonhosted.org/packages/11/d0/fbf4608c6014e023611a49d82e850b786cfe3ef47138ea2597b946f9bed1/tombi-1.2.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d7e741934bd7ad7a85d7436c2e72e0d8f714a425345e04e76ebb709b37399e6", size = 9496941, upload-time = "2026-07-19T11:11:37.793Z" }, + { url = "https://files.pythonhosted.org/packages/e6/4c/16c5331b20970eb14d2051cba5712765932bcabde281007280b28e8a8a63/tombi-1.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c325468f9b3a2e30b92a20bd4d34ef8122d207de24db17f6b25c24be18d7abc4", size = 9246516, upload-time = "2026-07-19T11:11:39.676Z" }, + { url = "https://files.pythonhosted.org/packages/20/78/e78f6010c068427d0e87b00085e169e7410f1a7594783ec08371a5e38188/tombi-1.2.4-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:f4d6d286bfd854060e315fdfad2ebed348cdcc6bf838fab69e3dff50558c4311", size = 8670316, upload-time = "2026-07-19T11:11:41.96Z" }, + { url = "https://files.pythonhosted.org/packages/2d/f9/3c39bbebf0be11b54ffe7ae5c1a7e42fd9911cc9651c93533e0d54454469/tombi-1.2.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8e86e366fd63702b2db422bb78c06b6550d995ebe22347b4796158fa653c79e3", size = 8697669, upload-time = "2026-07-19T11:11:43.928Z" }, + { url = "https://files.pythonhosted.org/packages/d9/6b/cd393581d9a8fc4e377afd680b9e562385e42fd37210994ce9f32b877cca/tombi-1.2.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:cad2405a16c47a912698d81282b85dafcddaa009f1c4480dbebaeadbc5e06e66", size = 8982691, upload-time = "2026-07-19T11:11:45.779Z" }, + { url = "https://files.pythonhosted.org/packages/4d/f6/3ed583bd3c8c56d24f3971efc5228b7b0fef438d77b518b7431cf7c83c4a/tombi-1.2.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:490999cc2f9d2874ce3128032c9a5b71b371ab605165b929ee70a9b1f4d69c43", size = 9163387, upload-time = "2026-07-19T11:11:47.76Z" }, + { url = "https://files.pythonhosted.org/packages/e8/d3/f2caf15bf32e426f4fb0e7fb6f7a0e135e22ebdcd969e28293ce7358696e/tombi-1.2.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:98aa3229a83e90c503ea6e70d28afb54de35895bdbc820e57a8783f21a8adef9", size = 9335342, upload-time = "2026-07-19T11:11:49.812Z" }, + { url = "https://files.pythonhosted.org/packages/f7/e1/daff9eca5a2d2b7d5eb4e7df523a85a0c44b9937ffd71a81a2f1e83675f8/tombi-1.2.4-py3-none-win32.whl", hash = "sha256:c89a1a451363f0d29d2d6993282d50df21181a1c283ea001618ea38fb700e814", size = 8974400, upload-time = "2026-07-19T11:11:51.761Z" }, + { url = "https://files.pythonhosted.org/packages/14/b2/34063aeac0a77685e5f951d038cf557994ed7c78dcea4a6bc62e64dae250/tombi-1.2.4-py3-none-win_amd64.whl", hash = "sha256:a60d363fe07b38f1695cad65572ba9d0b10dd2ad4a34a67299f8ccb384e1e9ab", size = 10353507, upload-time = "2026-07-19T11:11:53.991Z" }, ] [[package]] @@ -734,27 +734,27 @@ wheels = [ [[package]] name = "ty" -version = "0.0.59" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/b0/84ae7b3bf6e3e9f57eb9635eeff5a80b36e57aa089f40be0fb5c384fa176/ty-0.0.59.tar.gz", hash = "sha256:53e53ffeed78ad59cd237fa8ea1316d2b94e13efdea9a945698acab549e005aa", size = 6145435, upload-time = "2026-07-12T20:22:02.781Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/57/e8/650b42fbef4d48e6ca682b0b6e9b68fa8fcf55cbb0a6892ab89990018b6f/ty-0.0.59-py3-none-linux_armv6l.whl", hash = "sha256:f8fb08a767ef8f11ea3c537b9d77860726cc2bc39e6f77ad13c02d5b289f20a7", size = 11700328, upload-time = "2026-07-12T20:21:26.046Z" }, - { url = "https://files.pythonhosted.org/packages/22/ac/0ca3a89d5f59ae5f308e5e83428cac5f9143200767743e052fba90b4b81e/ty-0.0.59-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c7f4d5630836c8a0ba13dd4ac7bdae080a7d6ebe965b817ff642dc961bcf2a53", size = 11494310, upload-time = "2026-07-12T20:21:28.491Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f8/5076de6001cefbccd8e6dc8472262697e43308ff66b0e87c72abba136357/ty-0.0.59-py3-none-macosx_11_0_arm64.whl", hash = "sha256:872f6fb02c6db5553c4d5fb283b3d50f0985fb9a29a910e4fda4793a775c1926", size = 11026797, upload-time = "2026-07-12T20:21:30.879Z" }, - { url = "https://files.pythonhosted.org/packages/2e/0f/fca28481b6a138e2b798ad9fdc98a095475f9104948ba242fce4b477782b/ty-0.0.59-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2af8eefbfe806337770eec12c0c819c5f1b8f5b85f8369cb1cc9fa25234a2208", size = 11475304, upload-time = "2026-07-12T20:21:33.041Z" }, - { url = "https://files.pythonhosted.org/packages/08/4b/1fed8b81b389ef4bbc0400f19e05fc16496b162577779dc0e5fc65ac216c/ty-0.0.59-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0acf8b76a1c9a7ddef460b42475f6c76193164426ab080783af1c3175b4b999b", size = 11533131, upload-time = "2026-07-12T20:21:35.189Z" }, - { url = "https://files.pythonhosted.org/packages/5f/fc/04eec35e05a10e0fea1c6503a290ccc3935efda9c845aff64e83282c1af7/ty-0.0.59-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:043c2e00eb1d7475f928af7dedd71f69b64e69bfca55e36f4c968479e1373fc4", size = 12205932, upload-time = "2026-07-12T20:21:37.324Z" }, - { url = "https://files.pythonhosted.org/packages/a9/dd/a61de859659fa11b55917ad38340a8f2c61f5ae17d1874929f29084c6990/ty-0.0.59-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f0d688d857441df57f48fca66c029d85cf737c510e7be1d01144cdad1e58d968", size = 12758406, upload-time = "2026-07-12T20:21:39.525Z" }, - { url = "https://files.pythonhosted.org/packages/c6/e8/fa66f05997eab8ca75fc4f17320140e25467849e0cc75597f898cc22099c/ty-0.0.59-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a96c9f88394a3b42c737e2125b2330543f0d90a43b49761f377d96f8c3ee0d62", size = 12288176, upload-time = "2026-07-12T20:21:41.784Z" }, - { url = "https://files.pythonhosted.org/packages/15/68/0fca59963bd5123f42d5f7da50667e7a52e8e9615e3a16d8c2c0d3b2d143/ty-0.0.59-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f08dbcb268edcafcb152e59475b5b495ce28d0b340a395c09943557678f4d5a6", size = 12028471, upload-time = "2026-07-12T20:21:43.82Z" }, - { url = "https://files.pythonhosted.org/packages/e1/5b/cd7dabbbab392578f11179919da5c25d8c3322e5388a688f539ea0539603/ty-0.0.59-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:8812764b9a40fdc98df1272826e73a298ef56b06681135e643bcf90aad1896f7", size = 12297646, upload-time = "2026-07-12T20:21:45.76Z" }, - { url = "https://files.pythonhosted.org/packages/1d/37/2e9c94f0b383d8cbe1a35517ab470b7810bc9d7501603ab532bcd5be5e90/ty-0.0.59-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:fd53b8581641d8dad7bfac6d5ea589e91a883d6837e0b9a286fdae30722b7c69", size = 11432519, upload-time = "2026-07-12T20:21:47.694Z" }, - { url = "https://files.pythonhosted.org/packages/9d/0a/af93e9785200f11ac416cc20235fc2464c9bd978e791190684ea0e458795/ty-0.0.59-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:86da5872124a41877d95058bc17d33ddcff034b587eb5f1e2917ab88ba227dac", size = 11554993, upload-time = "2026-07-12T20:21:49.671Z" }, - { url = "https://files.pythonhosted.org/packages/4b/dd/651bf87e20d00376c81b19124756491cffaf20eb8bec05a8794e5a8cf641/ty-0.0.59-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6a233eef5f2fd4d894881e4a0aec83c9f172bfae1d787d6596ee1939fcc7723e", size = 11818230, upload-time = "2026-07-12T20:21:51.659Z" }, - { url = "https://files.pythonhosted.org/packages/16/50/c947c4155fea751d135b19affdf734bbce72a94e446b866cf0c62f8bed69/ty-0.0.59-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7ff678c18b5f1e3128b75a35e50dee7908dea55155baa31cd790619d5014cbf5", size = 12135194, upload-time = "2026-07-12T20:21:53.796Z" }, - { url = "https://files.pythonhosted.org/packages/b1/13/e5feb138888de1e95037c843571bbbd4ac21bf0a190507468098599a321f/ty-0.0.59-py3-none-win32.whl", hash = "sha256:cf8abb4b8095c5fe39102b8127f5886db308c8d4600909ddbc905512ce9c8163", size = 11179249, upload-time = "2026-07-12T20:21:55.752Z" }, - { url = "https://files.pythonhosted.org/packages/76/dd/52914dcbeeba92c207de40ef7109a58dcb5527aeb21c8f8feb7402aa9e29/ty-0.0.59-py3-none-win_amd64.whl", hash = "sha256:1dde20a82243d24407869e5a608c2f15efddd5cefc662aef461a5af84bfb3f8b", size = 12251079, upload-time = "2026-07-12T20:21:58.1Z" }, - { url = "https://files.pythonhosted.org/packages/d4/8f/ac36fde77e223297454c1e0aeb8888c169eaacf3163bb609e3af942c88cb/ty-0.0.59-py3-none-win_arm64.whl", hash = "sha256:987043ee9e021f49493d9135891ac69c1affeee0d4ad4480c5fa4d9c975fc91b", size = 11650921, upload-time = "2026-07-12T20:22:00.348Z" }, +version = "0.0.63" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/ce/cbeaa5c7576fec643609dfbf200d59493523b1cc0481d4e7a5effcbf0630/ty-0.0.63.tar.gz", hash = "sha256:c2f66439393b3acac69306c117d4ae44638ce5fffa4a20c21046e85bd473359f", size = 6280695, upload-time = "2026-07-23T11:41:39.845Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/e4/d17a8e113ab15c692fe6fb9c422112d4bee7e829d80ced35826b45d98d98/ty-0.0.63-py3-none-linux_armv6l.whl", hash = "sha256:9a4ef7782e3af314fb63d006bec5ac3025bd70fee774b4dcfb5e44e8564f1994", size = 12056302, upload-time = "2026-07-23T11:41:03.5Z" }, + { url = "https://files.pythonhosted.org/packages/be/0b/357234c815dc4bfcc88c3f860aa0983fe4228c8aa2a5bb16c35ee08a94af/ty-0.0.63-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:01eab0ab70d51ad10298aa2d4b058b387a1fe93e5ee52d2a1ee23e9c69ba8354", size = 11737674, upload-time = "2026-07-23T11:41:05.862Z" }, + { url = "https://files.pythonhosted.org/packages/1c/13/193d9aeeb6774690351cff9fafabd3ae9b54cc225d125e07fa004ce23bdc/ty-0.0.63-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a671b61eaad16178389e05b9c108c9cb75ae8d84968fe55906484f55d6268338", size = 11264191, upload-time = "2026-07-23T11:41:07.963Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/c5843e16759a2b25fc8a7197473474038e585ac9fdaa6fa16aeb6384bf6a/ty-0.0.63-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b255cc83d95c51bb9ee4931303fdbece8cb1d6d7c655eb77a3f2c8f349fb64d6", size = 11818890, upload-time = "2026-07-23T11:41:09.885Z" }, + { url = "https://files.pythonhosted.org/packages/06/20/adf83ae1fc570d9bb449605e1eeeaa523ad2329ca838a636698b5c135d11/ty-0.0.63-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0da1e8183aa4f893421a173904478021498f542ee41273660538da6649a9631c", size = 11853141, upload-time = "2026-07-23T11:41:12.151Z" }, + { url = "https://files.pythonhosted.org/packages/ea/90/f8effd846e3ee13486ea08257c13094d58b9f188c5641bf609d6a7d5c09f/ty-0.0.63-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:128f38eb5a67199e3811426386f7ec96f41251ddf45e04ddc0bcbb29d4853245", size = 12545184, upload-time = "2026-07-23T11:41:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/b8/76/aac3a30d40431eb1d329acea016b248f5b6255e30ef3d28e19447e344be2/ty-0.0.63-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bedf34aff8b0557f2a7119b314a68a9c9e58c1d21554d0e2748f2c5fe6a1f638", size = 13062375, upload-time = "2026-07-23T11:41:16.441Z" }, + { url = "https://files.pythonhosted.org/packages/62/3d/0158733932893e17f6008dadd74c8d7aed422fefc66e47fe77888014fe8c/ty-0.0.63-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7328d63c34587606dce02935a25404f54cd0161bfe413b8f7fc21d174aead612", size = 12619461, upload-time = "2026-07-23T11:41:18.538Z" }, + { url = "https://files.pythonhosted.org/packages/f5/be/e280ad095b050778f16f493d49a073fa5f6d8f301d3e2e59be6a672ba05c/ty-0.0.63-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504c4457f3a62afe836c1f26a2c9a12549299095f9cc4146778558df51a7515c", size = 12376402, upload-time = "2026-07-23T11:41:20.482Z" }, + { url = "https://files.pythonhosted.org/packages/57/57/619788bf335cb86b090470b557ae1eed33613dc24e12142505d32b462e58/ty-0.0.63-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:7394ed39424b027c89d5f0c818871c791e33958b88f5bb13e14bd4a12a3ca631", size = 12671377, upload-time = "2026-07-23T11:41:22.489Z" }, + { url = "https://files.pythonhosted.org/packages/07/a2/0aff2cdd3c98e2c4729337542b8da0ce1980790e1600e0c4a717a1f46293/ty-0.0.63-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:94c3f155230490f8fb505911655e940c630c25cc0c35a76690cb413254fb4437", size = 11768090, upload-time = "2026-07-23T11:41:24.558Z" }, + { url = "https://files.pythonhosted.org/packages/43/4a/cdb5f1d26154144dfee08e1bd671daf827238170f7cee9dad43990bb2016/ty-0.0.63-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:c16e1d8b4f0ae99106d5f13a894034a202baf6cdab61e2bb1a239de82904f839", size = 11867747, upload-time = "2026-07-23T11:41:26.794Z" }, + { url = "https://files.pythonhosted.org/packages/7e/26/ecc09ecb70bc9fbfdf42fa57ff29568f173e8200df575a0d72dc2b8486f9/ty-0.0.63-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b66293dad89eaed4b9fbf3b661614dbeb85b59ba037178a3f9a0adedf264da5c", size = 12120000, upload-time = "2026-07-23T11:41:28.731Z" }, + { url = "https://files.pythonhosted.org/packages/14/07/862822f9c2c397785b69b25cf79b4dfc3c0d55684b9adf11ac194450f8e1/ty-0.0.63-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8b29cc832e2ec73502c97dd7325d6ae0e085b34a33529a0f785192317d9862fc", size = 12477862, upload-time = "2026-07-23T11:41:30.847Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c2/50b08b641578d6f48e8aa28a91d0de32c91aa24dd926ed199e8afd2d37ea/ty-0.0.63-py3-none-win32.whl", hash = "sha256:f0a8fbfd1f990c0c5d85cce018d438969ac79e49247e2192c9745394bb7d17ab", size = 11433155, upload-time = "2026-07-23T11:41:33.28Z" }, + { url = "https://files.pythonhosted.org/packages/92/2d/d422a5568f0d1f317186be22241288dc6e08b71dc24aca223f22038ac2d2/ty-0.0.63-py3-none-win_amd64.whl", hash = "sha256:2aa2370bdd6f42e9f37518c812379bef70b9162f9e5aad511495229b0b71cb93", size = 12450036, upload-time = "2026-07-23T11:41:35.559Z" }, + { url = "https://files.pythonhosted.org/packages/35/97/2c9748e28ead0650c7ad3e5f74f178832ceabd7cb5c272a882f29eb32ee4/ty-0.0.63-py3-none-win_arm64.whl", hash = "sha256:95ac1a62162c3c7ac204731e95ebf766d62a46a7bfa238a6acbe923fcb772cb1", size = 11826243, upload-time = "2026-07-23T11:41:37.749Z" }, ] [[package]]