From f5bc4cfedd7746e7657d873841617564d678a1fd Mon Sep 17 00:00:00 2001 From: Giuseppe Lillo Date: Wed, 31 Jan 2024 13:59:22 +0100 Subject: [PATCH] Handle null arrays --- codegen/generate_schema.py | 19 ++++++++++++++----- .../consumer_group_heartbeat/v0/request.py | 4 ++-- .../schema/create_partitions/v0/request.py | 2 +- .../schema/create_partitions/v1/request.py | 2 +- .../schema/create_partitions/v2/request.py | 2 +- .../schema/create_partitions/v3/request.py | 2 +- src/kio/schema/create_topics/v5/response.py | 2 +- src/kio/schema/create_topics/v6/response.py | 2 +- src/kio/schema/create_topics/v7/response.py | 2 +- .../describe_client_quotas/v0/response.py | 2 +- .../describe_client_quotas/v1/response.py | 2 +- .../describe_delegation_token/v0/request.py | 2 +- .../describe_delegation_token/v1/request.py | 2 +- .../describe_delegation_token/v2/request.py | 2 +- .../describe_delegation_token/v3/request.py | 2 +- .../schema/describe_log_dirs/v0/request.py | 2 +- .../schema/describe_log_dirs/v1/request.py | 2 +- .../schema/describe_log_dirs/v2/request.py | 2 +- .../schema/describe_log_dirs/v3/request.py | 2 +- .../schema/describe_log_dirs/v4/request.py | 2 +- .../v0/request.py | 2 +- src/kio/schema/elect_leaders/v0/request.py | 2 +- src/kio/schema/elect_leaders/v1/request.py | 2 +- src/kio/schema/elect_leaders/v2/request.py | 2 +- src/kio/schema/fetch/v10/response.py | 2 +- src/kio/schema/fetch/v11/response.py | 2 +- src/kio/schema/fetch/v12/response.py | 2 +- src/kio/schema/fetch/v13/response.py | 2 +- src/kio/schema/fetch/v14/response.py | 2 +- src/kio/schema/fetch/v15/response.py | 2 +- src/kio/schema/fetch/v4/response.py | 2 +- src/kio/schema/fetch/v5/response.py | 2 +- src/kio/schema/fetch/v6/response.py | 2 +- src/kio/schema/fetch/v7/response.py | 2 +- src/kio/schema/fetch/v8/response.py | 2 +- src/kio/schema/fetch/v9/response.py | 2 +- .../v0/request.py | 2 +- src/kio/schema/metadata/v1/request.py | 2 +- src/kio/schema/metadata/v10/request.py | 2 +- src/kio/schema/metadata/v11/request.py | 2 +- src/kio/schema/metadata/v12/request.py | 2 +- src/kio/schema/metadata/v2/request.py | 2 +- src/kio/schema/metadata/v3/request.py | 2 +- src/kio/schema/metadata/v4/request.py | 2 +- src/kio/schema/metadata/v5/request.py | 2 +- src/kio/schema/metadata/v6/request.py | 2 +- src/kio/schema/metadata/v7/request.py | 2 +- src/kio/schema/metadata/v8/request.py | 2 +- src/kio/schema/metadata/v9/request.py | 2 +- src/kio/schema/offset_fetch/v2/request.py | 2 +- src/kio/schema/offset_fetch/v3/request.py | 2 +- src/kio/schema/offset_fetch/v4/request.py | 2 +- src/kio/schema/offset_fetch/v5/request.py | 2 +- src/kio/schema/offset_fetch/v6/request.py | 2 +- src/kio/schema/offset_fetch/v7/request.py | 2 +- src/kio/schema/offset_fetch/v8/request.py | 2 +- 56 files changed, 70 insertions(+), 61 deletions(-) diff --git a/codegen/generate_schema.py b/codegen/generate_schema.py index 1ca22de9..95866622 100644 --- a/codegen/generate_schema.py +++ b/codegen/generate_schema.py @@ -363,8 +363,14 @@ def generate_entity_array_field( field: EntityArrayField, version: int, ) -> str: + optional = ( + field.nullableVersions.matches(version) if field.nullableVersions else False + ) field_call = format_array_field_call(field, version) - return f" {to_snake_case(field.name)}: tuple[{field.type}, ...]{field_call}\n" + opt = " | None" if optional else "" + return ( + f" {to_snake_case(field.name)}: tuple[{field.type}, ...]{opt}{field_call}\n" + ) def entity_annotation(field: EntityField | CommonStructField, optional: bool) -> str: @@ -412,11 +418,14 @@ def generate_common_struct_array_field( field: CommonStructArrayField, version: int, ) -> str: - field_call = format_array_field_call(field, version) - return ( - f" {to_snake_case(field.name)}: tuple[{field.type.struct.name}, ...]" - f"{field_call}\n" + optional = ( + field.nullableVersions.matches(version) if field.nullableVersions else False ) + field_call = format_array_field_call(field, version) + s = f" {to_snake_case(field.name)}: tuple[{field.type.struct.name}, ...]" + if optional: + s = f"{s} | None" + return f"{s}{field_call}\n" def generate_common_struct_field( diff --git a/src/kio/schema/consumer_group_heartbeat/v0/request.py b/src/kio/schema/consumer_group_heartbeat/v0/request.py index 4dcc9551..d0217076 100644 --- a/src/kio/schema/consumer_group_heartbeat/v0/request.py +++ b/src/kio/schema/consumer_group_heartbeat/v0/request.py @@ -86,7 +86,7 @@ class ConsumerGroupHeartbeatRequest: """null if it didn't change since the last heartbeat; the subscribed topic regex otherwise""" server_assignor: str | None = field(metadata={"kafka_type": "string"}, default=None) """null if not used or if it didn't change since the last heartbeat; the server side assignor to use otherwise.""" - client_assignors: tuple[Assignor, ...] + client_assignors: tuple[Assignor, ...] | None """null if not used or if it didn't change since the last heartbeat; the list of client-side assignors otherwise.""" - topic_partitions: tuple[TopicPartitions, ...] + topic_partitions: tuple[TopicPartitions, ...] | None """null if it didn't change since the last heartbeat; the partitions owned by the member.""" diff --git a/src/kio/schema/create_partitions/v0/request.py b/src/kio/schema/create_partitions/v0/request.py index f3c49085..3f7e4f68 100644 --- a/src/kio/schema/create_partitions/v0/request.py +++ b/src/kio/schema/create_partitions/v0/request.py @@ -41,7 +41,7 @@ class CreatePartitionsTopic: """The topic name.""" count: i32 = field(metadata={"kafka_type": "int32"}) """The new partition count.""" - assignments: tuple[CreatePartitionsAssignment, ...] + assignments: tuple[CreatePartitionsAssignment, ...] | None """The new partition assignments.""" diff --git a/src/kio/schema/create_partitions/v1/request.py b/src/kio/schema/create_partitions/v1/request.py index 162cb73a..190b8cd2 100644 --- a/src/kio/schema/create_partitions/v1/request.py +++ b/src/kio/schema/create_partitions/v1/request.py @@ -41,7 +41,7 @@ class CreatePartitionsTopic: """The topic name.""" count: i32 = field(metadata={"kafka_type": "int32"}) """The new partition count.""" - assignments: tuple[CreatePartitionsAssignment, ...] + assignments: tuple[CreatePartitionsAssignment, ...] | None """The new partition assignments.""" diff --git a/src/kio/schema/create_partitions/v2/request.py b/src/kio/schema/create_partitions/v2/request.py index 5e25855e..07d89a25 100644 --- a/src/kio/schema/create_partitions/v2/request.py +++ b/src/kio/schema/create_partitions/v2/request.py @@ -41,7 +41,7 @@ class CreatePartitionsTopic: """The topic name.""" count: i32 = field(metadata={"kafka_type": "int32"}) """The new partition count.""" - assignments: tuple[CreatePartitionsAssignment, ...] + assignments: tuple[CreatePartitionsAssignment, ...] | None """The new partition assignments.""" diff --git a/src/kio/schema/create_partitions/v3/request.py b/src/kio/schema/create_partitions/v3/request.py index c7b42d7e..2e0507be 100644 --- a/src/kio/schema/create_partitions/v3/request.py +++ b/src/kio/schema/create_partitions/v3/request.py @@ -41,7 +41,7 @@ class CreatePartitionsTopic: """The topic name.""" count: i32 = field(metadata={"kafka_type": "int32"}) """The new partition count.""" - assignments: tuple[CreatePartitionsAssignment, ...] + assignments: tuple[CreatePartitionsAssignment, ...] | None """The new partition assignments.""" diff --git a/src/kio/schema/create_topics/v5/response.py b/src/kio/schema/create_topics/v5/response.py index 7ef302f3..a4753859 100644 --- a/src/kio/schema/create_topics/v5/response.py +++ b/src/kio/schema/create_topics/v5/response.py @@ -58,7 +58,7 @@ class CreatableTopicResult: """Number of partitions of the topic.""" replication_factor: i16 = field(metadata={"kafka_type": "int16"}, default=i16(-1)) """Replication factor of the topic.""" - configs: tuple[CreatableTopicConfigs, ...] + configs: tuple[CreatableTopicConfigs, ...] | None """Configuration of the topic.""" diff --git a/src/kio/schema/create_topics/v6/response.py b/src/kio/schema/create_topics/v6/response.py index c80e80e0..3eafe447 100644 --- a/src/kio/schema/create_topics/v6/response.py +++ b/src/kio/schema/create_topics/v6/response.py @@ -58,7 +58,7 @@ class CreatableTopicResult: """Number of partitions of the topic.""" replication_factor: i16 = field(metadata={"kafka_type": "int16"}, default=i16(-1)) """Replication factor of the topic.""" - configs: tuple[CreatableTopicConfigs, ...] + configs: tuple[CreatableTopicConfigs, ...] | None """Configuration of the topic.""" diff --git a/src/kio/schema/create_topics/v7/response.py b/src/kio/schema/create_topics/v7/response.py index 928b6d5b..f99400d4 100644 --- a/src/kio/schema/create_topics/v7/response.py +++ b/src/kio/schema/create_topics/v7/response.py @@ -61,7 +61,7 @@ class CreatableTopicResult: """Number of partitions of the topic.""" replication_factor: i16 = field(metadata={"kafka_type": "int16"}, default=i16(-1)) """Replication factor of the topic.""" - configs: tuple[CreatableTopicConfigs, ...] + configs: tuple[CreatableTopicConfigs, ...] | None """Configuration of the topic.""" diff --git a/src/kio/schema/describe_client_quotas/v0/response.py b/src/kio/schema/describe_client_quotas/v0/response.py index a992f91d..1a3eca19 100644 --- a/src/kio/schema/describe_client_quotas/v0/response.py +++ b/src/kio/schema/describe_client_quotas/v0/response.py @@ -68,5 +68,5 @@ class DescribeClientQuotasResponse: """The error code, or `0` if the quota description succeeded.""" error_message: str | None = field(metadata={"kafka_type": "string"}) """The error message, or `null` if the quota description succeeded.""" - entries: tuple[EntryData, ...] + entries: tuple[EntryData, ...] | None """A result entry.""" diff --git a/src/kio/schema/describe_client_quotas/v1/response.py b/src/kio/schema/describe_client_quotas/v1/response.py index 45bb55c1..0c6eb96e 100644 --- a/src/kio/schema/describe_client_quotas/v1/response.py +++ b/src/kio/schema/describe_client_quotas/v1/response.py @@ -68,5 +68,5 @@ class DescribeClientQuotasResponse: """The error code, or `0` if the quota description succeeded.""" error_message: str | None = field(metadata={"kafka_type": "string"}) """The error message, or `null` if the quota description succeeded.""" - entries: tuple[EntryData, ...] + entries: tuple[EntryData, ...] | None """A result entry.""" diff --git a/src/kio/schema/describe_delegation_token/v0/request.py b/src/kio/schema/describe_delegation_token/v0/request.py index 25b6485c..9a09402d 100644 --- a/src/kio/schema/describe_delegation_token/v0/request.py +++ b/src/kio/schema/describe_delegation_token/v0/request.py @@ -33,5 +33,5 @@ class DescribeDelegationTokenRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(41) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - owners: tuple[DescribeDelegationTokenOwner, ...] + owners: tuple[DescribeDelegationTokenOwner, ...] | None """Each owner that we want to describe delegation tokens for, or null to describe all tokens.""" diff --git a/src/kio/schema/describe_delegation_token/v1/request.py b/src/kio/schema/describe_delegation_token/v1/request.py index 8e94bb47..2be46321 100644 --- a/src/kio/schema/describe_delegation_token/v1/request.py +++ b/src/kio/schema/describe_delegation_token/v1/request.py @@ -33,5 +33,5 @@ class DescribeDelegationTokenRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(41) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - owners: tuple[DescribeDelegationTokenOwner, ...] + owners: tuple[DescribeDelegationTokenOwner, ...] | None """Each owner that we want to describe delegation tokens for, or null to describe all tokens.""" diff --git a/src/kio/schema/describe_delegation_token/v2/request.py b/src/kio/schema/describe_delegation_token/v2/request.py index 59873f87..6352bd29 100644 --- a/src/kio/schema/describe_delegation_token/v2/request.py +++ b/src/kio/schema/describe_delegation_token/v2/request.py @@ -33,5 +33,5 @@ class DescribeDelegationTokenRequest: __flexible__: ClassVar[bool] = True __api_key__: ClassVar[i16] = i16(41) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - owners: tuple[DescribeDelegationTokenOwner, ...] + owners: tuple[DescribeDelegationTokenOwner, ...] | None """Each owner that we want to describe delegation tokens for, or null to describe all tokens.""" diff --git a/src/kio/schema/describe_delegation_token/v3/request.py b/src/kio/schema/describe_delegation_token/v3/request.py index 14b441f6..a1be6a94 100644 --- a/src/kio/schema/describe_delegation_token/v3/request.py +++ b/src/kio/schema/describe_delegation_token/v3/request.py @@ -33,5 +33,5 @@ class DescribeDelegationTokenRequest: __flexible__: ClassVar[bool] = True __api_key__: ClassVar[i16] = i16(41) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - owners: tuple[DescribeDelegationTokenOwner, ...] + owners: tuple[DescribeDelegationTokenOwner, ...] | None """Each owner that we want to describe delegation tokens for, or null to describe all tokens.""" diff --git a/src/kio/schema/describe_log_dirs/v0/request.py b/src/kio/schema/describe_log_dirs/v0/request.py index 5c98a24d..79eb1d9f 100644 --- a/src/kio/schema/describe_log_dirs/v0/request.py +++ b/src/kio/schema/describe_log_dirs/v0/request.py @@ -35,5 +35,5 @@ class DescribeLogDirsRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(35) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[DescribableLogDirTopic, ...] + topics: tuple[DescribableLogDirTopic, ...] | None """Each topic that we want to describe log directories for, or null for all topics.""" diff --git a/src/kio/schema/describe_log_dirs/v1/request.py b/src/kio/schema/describe_log_dirs/v1/request.py index f0f742e3..f4438b61 100644 --- a/src/kio/schema/describe_log_dirs/v1/request.py +++ b/src/kio/schema/describe_log_dirs/v1/request.py @@ -35,5 +35,5 @@ class DescribeLogDirsRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(35) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[DescribableLogDirTopic, ...] + topics: tuple[DescribableLogDirTopic, ...] | None """Each topic that we want to describe log directories for, or null for all topics.""" diff --git a/src/kio/schema/describe_log_dirs/v2/request.py b/src/kio/schema/describe_log_dirs/v2/request.py index 2d89cfbe..d46f190d 100644 --- a/src/kio/schema/describe_log_dirs/v2/request.py +++ b/src/kio/schema/describe_log_dirs/v2/request.py @@ -35,5 +35,5 @@ class DescribeLogDirsRequest: __flexible__: ClassVar[bool] = True __api_key__: ClassVar[i16] = i16(35) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[DescribableLogDirTopic, ...] + topics: tuple[DescribableLogDirTopic, ...] | None """Each topic that we want to describe log directories for, or null for all topics.""" diff --git a/src/kio/schema/describe_log_dirs/v3/request.py b/src/kio/schema/describe_log_dirs/v3/request.py index 64f812cf..629fd3b2 100644 --- a/src/kio/schema/describe_log_dirs/v3/request.py +++ b/src/kio/schema/describe_log_dirs/v3/request.py @@ -35,5 +35,5 @@ class DescribeLogDirsRequest: __flexible__: ClassVar[bool] = True __api_key__: ClassVar[i16] = i16(35) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[DescribableLogDirTopic, ...] + topics: tuple[DescribableLogDirTopic, ...] | None """Each topic that we want to describe log directories for, or null for all topics.""" diff --git a/src/kio/schema/describe_log_dirs/v4/request.py b/src/kio/schema/describe_log_dirs/v4/request.py index 9f617bbc..84e9e780 100644 --- a/src/kio/schema/describe_log_dirs/v4/request.py +++ b/src/kio/schema/describe_log_dirs/v4/request.py @@ -35,5 +35,5 @@ class DescribeLogDirsRequest: __flexible__: ClassVar[bool] = True __api_key__: ClassVar[i16] = i16(35) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[DescribableLogDirTopic, ...] + topics: tuple[DescribableLogDirTopic, ...] | None """Each topic that we want to describe log directories for, or null for all topics.""" diff --git a/src/kio/schema/describe_user_scram_credentials/v0/request.py b/src/kio/schema/describe_user_scram_credentials/v0/request.py index a655294f..ff6f3ae5 100644 --- a/src/kio/schema/describe_user_scram_credentials/v0/request.py +++ b/src/kio/schema/describe_user_scram_credentials/v0/request.py @@ -31,5 +31,5 @@ class DescribeUserScramCredentialsRequest: __flexible__: ClassVar[bool] = True __api_key__: ClassVar[i16] = i16(50) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - users: tuple[UserName, ...] + users: tuple[UserName, ...] | None """The users to describe, or null/empty to describe all users.""" diff --git a/src/kio/schema/elect_leaders/v0/request.py b/src/kio/schema/elect_leaders/v0/request.py index 449c0415..9edf7fb2 100644 --- a/src/kio/schema/elect_leaders/v0/request.py +++ b/src/kio/schema/elect_leaders/v0/request.py @@ -37,7 +37,7 @@ class ElectLeadersRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(43) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topic_partitions: tuple[TopicPartitions, ...] + topic_partitions: tuple[TopicPartitions, ...] | None """The topic partitions to elect leaders.""" timeout: i32Timedelta = field( metadata={"kafka_type": "timedelta_i32"}, diff --git a/src/kio/schema/elect_leaders/v1/request.py b/src/kio/schema/elect_leaders/v1/request.py index 1dca8b40..6b8262ec 100644 --- a/src/kio/schema/elect_leaders/v1/request.py +++ b/src/kio/schema/elect_leaders/v1/request.py @@ -40,7 +40,7 @@ class ElectLeadersRequest: __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader election_type: i8 = field(metadata={"kafka_type": "int8"}) """Type of elections to conduct for the partition. A value of '0' elects the preferred replica. A value of '1' elects the first live replica if there are no in-sync replica.""" - topic_partitions: tuple[TopicPartitions, ...] + topic_partitions: tuple[TopicPartitions, ...] | None """The topic partitions to elect leaders.""" timeout: i32Timedelta = field( metadata={"kafka_type": "timedelta_i32"}, diff --git a/src/kio/schema/elect_leaders/v2/request.py b/src/kio/schema/elect_leaders/v2/request.py index 37eb59c6..d7be8696 100644 --- a/src/kio/schema/elect_leaders/v2/request.py +++ b/src/kio/schema/elect_leaders/v2/request.py @@ -40,7 +40,7 @@ class ElectLeadersRequest: __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader election_type: i8 = field(metadata={"kafka_type": "int8"}) """Type of elections to conduct for the partition. A value of '0' elects the preferred replica. A value of '1' elects the first live replica if there are no in-sync replica.""" - topic_partitions: tuple[TopicPartitions, ...] + topic_partitions: tuple[TopicPartitions, ...] | None """The topic partitions to elect leaders.""" timeout: i32Timedelta = field( metadata={"kafka_type": "timedelta_i32"}, diff --git a/src/kio/schema/fetch/v10/response.py b/src/kio/schema/fetch/v10/response.py index abc6683d..a67423fc 100644 --- a/src/kio/schema/fetch/v10/response.py +++ b/src/kio/schema/fetch/v10/response.py @@ -49,7 +49,7 @@ class PartitionData: """The last stable offset (or LSO) of the partition. This is the last offset such that the state of all transactional records prior to this offset have been decided (ABORTED or COMMITTED)""" log_start_offset: i64 = field(metadata={"kafka_type": "int64"}, default=i64(-1)) """The current log start offset.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" records: tuple[bytes | None, ...] = field(metadata={"kafka_type": "records"}) """The record data.""" diff --git a/src/kio/schema/fetch/v11/response.py b/src/kio/schema/fetch/v11/response.py index 177854d9..c2e07d44 100644 --- a/src/kio/schema/fetch/v11/response.py +++ b/src/kio/schema/fetch/v11/response.py @@ -50,7 +50,7 @@ class PartitionData: """The last stable offset (or LSO) of the partition. This is the last offset such that the state of all transactional records prior to this offset have been decided (ABORTED or COMMITTED)""" log_start_offset: i64 = field(metadata={"kafka_type": "int64"}, default=i64(-1)) """The current log start offset.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" preferred_read_replica: BrokerId = field( metadata={"kafka_type": "int32"}, default=BrokerId(-1) diff --git a/src/kio/schema/fetch/v12/response.py b/src/kio/schema/fetch/v12/response.py index d8182941..ce146a5f 100644 --- a/src/kio/schema/fetch/v12/response.py +++ b/src/kio/schema/fetch/v12/response.py @@ -94,7 +94,7 @@ class PartitionData: ) snapshot_id: SnapshotId = field(metadata={"tag": 2}, default=SnapshotId()) """In the case of fetching an offset less than the LogStartOffset, this is the end offset and epoch that should be used in the FetchSnapshot request.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" preferred_read_replica: BrokerId = field( metadata={"kafka_type": "int32"}, default=BrokerId(-1) diff --git a/src/kio/schema/fetch/v13/response.py b/src/kio/schema/fetch/v13/response.py index ad5eaced..16012065 100644 --- a/src/kio/schema/fetch/v13/response.py +++ b/src/kio/schema/fetch/v13/response.py @@ -94,7 +94,7 @@ class PartitionData: ) snapshot_id: SnapshotId = field(metadata={"tag": 2}, default=SnapshotId()) """In the case of fetching an offset less than the LogStartOffset, this is the end offset and epoch that should be used in the FetchSnapshot request.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" preferred_read_replica: BrokerId = field( metadata={"kafka_type": "int32"}, default=BrokerId(-1) diff --git a/src/kio/schema/fetch/v14/response.py b/src/kio/schema/fetch/v14/response.py index 0285e74c..a531a4e1 100644 --- a/src/kio/schema/fetch/v14/response.py +++ b/src/kio/schema/fetch/v14/response.py @@ -94,7 +94,7 @@ class PartitionData: ) snapshot_id: SnapshotId = field(metadata={"tag": 2}, default=SnapshotId()) """In the case of fetching an offset less than the LogStartOffset, this is the end offset and epoch that should be used in the FetchSnapshot request.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" preferred_read_replica: BrokerId = field( metadata={"kafka_type": "int32"}, default=BrokerId(-1) diff --git a/src/kio/schema/fetch/v15/response.py b/src/kio/schema/fetch/v15/response.py index 1f248258..f1eb1210 100644 --- a/src/kio/schema/fetch/v15/response.py +++ b/src/kio/schema/fetch/v15/response.py @@ -94,7 +94,7 @@ class PartitionData: ) snapshot_id: SnapshotId = field(metadata={"tag": 2}, default=SnapshotId()) """In the case of fetching an offset less than the LogStartOffset, this is the end offset and epoch that should be used in the FetchSnapshot request.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" preferred_read_replica: BrokerId = field( metadata={"kafka_type": "int32"}, default=BrokerId(-1) diff --git a/src/kio/schema/fetch/v4/response.py b/src/kio/schema/fetch/v4/response.py index 54753bab..73a52f9f 100644 --- a/src/kio/schema/fetch/v4/response.py +++ b/src/kio/schema/fetch/v4/response.py @@ -47,7 +47,7 @@ class PartitionData: """The current high water mark.""" last_stable_offset: i64 = field(metadata={"kafka_type": "int64"}, default=i64(-1)) """The last stable offset (or LSO) of the partition. This is the last offset such that the state of all transactional records prior to this offset have been decided (ABORTED or COMMITTED)""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" records: tuple[bytes | None, ...] = field(metadata={"kafka_type": "records"}) """The record data.""" diff --git a/src/kio/schema/fetch/v5/response.py b/src/kio/schema/fetch/v5/response.py index 8eb0b0d5..4305319d 100644 --- a/src/kio/schema/fetch/v5/response.py +++ b/src/kio/schema/fetch/v5/response.py @@ -49,7 +49,7 @@ class PartitionData: """The last stable offset (or LSO) of the partition. This is the last offset such that the state of all transactional records prior to this offset have been decided (ABORTED or COMMITTED)""" log_start_offset: i64 = field(metadata={"kafka_type": "int64"}, default=i64(-1)) """The current log start offset.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" records: tuple[bytes | None, ...] = field(metadata={"kafka_type": "records"}) """The record data.""" diff --git a/src/kio/schema/fetch/v6/response.py b/src/kio/schema/fetch/v6/response.py index 259743a0..c997de80 100644 --- a/src/kio/schema/fetch/v6/response.py +++ b/src/kio/schema/fetch/v6/response.py @@ -49,7 +49,7 @@ class PartitionData: """The last stable offset (or LSO) of the partition. This is the last offset such that the state of all transactional records prior to this offset have been decided (ABORTED or COMMITTED)""" log_start_offset: i64 = field(metadata={"kafka_type": "int64"}, default=i64(-1)) """The current log start offset.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" records: tuple[bytes | None, ...] = field(metadata={"kafka_type": "records"}) """The record data.""" diff --git a/src/kio/schema/fetch/v7/response.py b/src/kio/schema/fetch/v7/response.py index 5472e555..64a1ee59 100644 --- a/src/kio/schema/fetch/v7/response.py +++ b/src/kio/schema/fetch/v7/response.py @@ -49,7 +49,7 @@ class PartitionData: """The last stable offset (or LSO) of the partition. This is the last offset such that the state of all transactional records prior to this offset have been decided (ABORTED or COMMITTED)""" log_start_offset: i64 = field(metadata={"kafka_type": "int64"}, default=i64(-1)) """The current log start offset.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" records: tuple[bytes | None, ...] = field(metadata={"kafka_type": "records"}) """The record data.""" diff --git a/src/kio/schema/fetch/v8/response.py b/src/kio/schema/fetch/v8/response.py index 35ac0b5e..cb792103 100644 --- a/src/kio/schema/fetch/v8/response.py +++ b/src/kio/schema/fetch/v8/response.py @@ -49,7 +49,7 @@ class PartitionData: """The last stable offset (or LSO) of the partition. This is the last offset such that the state of all transactional records prior to this offset have been decided (ABORTED or COMMITTED)""" log_start_offset: i64 = field(metadata={"kafka_type": "int64"}, default=i64(-1)) """The current log start offset.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" records: tuple[bytes | None, ...] = field(metadata={"kafka_type": "records"}) """The record data.""" diff --git a/src/kio/schema/fetch/v9/response.py b/src/kio/schema/fetch/v9/response.py index a71caf68..c8bb7208 100644 --- a/src/kio/schema/fetch/v9/response.py +++ b/src/kio/schema/fetch/v9/response.py @@ -49,7 +49,7 @@ class PartitionData: """The last stable offset (or LSO) of the partition. This is the last offset such that the state of all transactional records prior to this offset have been decided (ABORTED or COMMITTED)""" log_start_offset: i64 = field(metadata={"kafka_type": "int64"}, default=i64(-1)) """The current log start offset.""" - aborted_transactions: tuple[AbortedTransaction, ...] + aborted_transactions: tuple[AbortedTransaction, ...] | None """The aborted transactions.""" records: tuple[bytes | None, ...] = field(metadata={"kafka_type": "records"}) """The record data.""" diff --git a/src/kio/schema/list_partition_reassignments/v0/request.py b/src/kio/schema/list_partition_reassignments/v0/request.py index e3eb23cb..f2f2ae55 100644 --- a/src/kio/schema/list_partition_reassignments/v0/request.py +++ b/src/kio/schema/list_partition_reassignments/v0/request.py @@ -44,5 +44,5 @@ class ListPartitionReassignmentsRequest: default=i32Timedelta.parse(datetime.timedelta(milliseconds=60000)), ) """The time in ms to wait for the request to complete.""" - topics: tuple[ListPartitionReassignmentsTopics, ...] + topics: tuple[ListPartitionReassignmentsTopics, ...] | None """The topics to list partition reassignments for, or null to list everything.""" diff --git a/src/kio/schema/metadata/v1/request.py b/src/kio/schema/metadata/v1/request.py index d6d03a57..9b0d7a9d 100644 --- a/src/kio/schema/metadata/v1/request.py +++ b/src/kio/schema/metadata/v1/request.py @@ -32,5 +32,5 @@ class MetadataRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" diff --git a/src/kio/schema/metadata/v10/request.py b/src/kio/schema/metadata/v10/request.py index 3f7f98e7..8f5f2ed7 100644 --- a/src/kio/schema/metadata/v10/request.py +++ b/src/kio/schema/metadata/v10/request.py @@ -35,7 +35,7 @@ class MetadataRequest: __flexible__: ClassVar[bool] = True __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" allow_auto_topic_creation: bool = field( metadata={"kafka_type": "bool"}, default=True diff --git a/src/kio/schema/metadata/v11/request.py b/src/kio/schema/metadata/v11/request.py index af3a65f4..09288361 100644 --- a/src/kio/schema/metadata/v11/request.py +++ b/src/kio/schema/metadata/v11/request.py @@ -35,7 +35,7 @@ class MetadataRequest: __flexible__: ClassVar[bool] = True __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" allow_auto_topic_creation: bool = field( metadata={"kafka_type": "bool"}, default=True diff --git a/src/kio/schema/metadata/v12/request.py b/src/kio/schema/metadata/v12/request.py index fb77ef93..487ec9b0 100644 --- a/src/kio/schema/metadata/v12/request.py +++ b/src/kio/schema/metadata/v12/request.py @@ -35,7 +35,7 @@ class MetadataRequest: __flexible__: ClassVar[bool] = True __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" allow_auto_topic_creation: bool = field( metadata={"kafka_type": "bool"}, default=True diff --git a/src/kio/schema/metadata/v2/request.py b/src/kio/schema/metadata/v2/request.py index 12b524ea..f06aeba1 100644 --- a/src/kio/schema/metadata/v2/request.py +++ b/src/kio/schema/metadata/v2/request.py @@ -32,5 +32,5 @@ class MetadataRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" diff --git a/src/kio/schema/metadata/v3/request.py b/src/kio/schema/metadata/v3/request.py index e78b336b..e86c5fd2 100644 --- a/src/kio/schema/metadata/v3/request.py +++ b/src/kio/schema/metadata/v3/request.py @@ -32,5 +32,5 @@ class MetadataRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" diff --git a/src/kio/schema/metadata/v4/request.py b/src/kio/schema/metadata/v4/request.py index a994da7a..f2e443f8 100644 --- a/src/kio/schema/metadata/v4/request.py +++ b/src/kio/schema/metadata/v4/request.py @@ -32,7 +32,7 @@ class MetadataRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" allow_auto_topic_creation: bool = field( metadata={"kafka_type": "bool"}, default=True diff --git a/src/kio/schema/metadata/v5/request.py b/src/kio/schema/metadata/v5/request.py index f657f96d..2fec815d 100644 --- a/src/kio/schema/metadata/v5/request.py +++ b/src/kio/schema/metadata/v5/request.py @@ -32,7 +32,7 @@ class MetadataRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" allow_auto_topic_creation: bool = field( metadata={"kafka_type": "bool"}, default=True diff --git a/src/kio/schema/metadata/v6/request.py b/src/kio/schema/metadata/v6/request.py index 033ae32f..45a7afd5 100644 --- a/src/kio/schema/metadata/v6/request.py +++ b/src/kio/schema/metadata/v6/request.py @@ -32,7 +32,7 @@ class MetadataRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" allow_auto_topic_creation: bool = field( metadata={"kafka_type": "bool"}, default=True diff --git a/src/kio/schema/metadata/v7/request.py b/src/kio/schema/metadata/v7/request.py index 224c58da..a140c091 100644 --- a/src/kio/schema/metadata/v7/request.py +++ b/src/kio/schema/metadata/v7/request.py @@ -32,7 +32,7 @@ class MetadataRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" allow_auto_topic_creation: bool = field( metadata={"kafka_type": "bool"}, default=True diff --git a/src/kio/schema/metadata/v8/request.py b/src/kio/schema/metadata/v8/request.py index 045cd0e4..c5e96e65 100644 --- a/src/kio/schema/metadata/v8/request.py +++ b/src/kio/schema/metadata/v8/request.py @@ -32,7 +32,7 @@ class MetadataRequest: __flexible__: ClassVar[bool] = False __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" allow_auto_topic_creation: bool = field( metadata={"kafka_type": "bool"}, default=True diff --git a/src/kio/schema/metadata/v9/request.py b/src/kio/schema/metadata/v9/request.py index c83fb95b..ebf30c2d 100644 --- a/src/kio/schema/metadata/v9/request.py +++ b/src/kio/schema/metadata/v9/request.py @@ -32,7 +32,7 @@ class MetadataRequest: __flexible__: ClassVar[bool] = True __api_key__: ClassVar[i16] = i16(3) __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader - topics: tuple[MetadataRequestTopic, ...] + topics: tuple[MetadataRequestTopic, ...] | None """The topics to fetch metadata for.""" allow_auto_topic_creation: bool = field( metadata={"kafka_type": "bool"}, default=True diff --git a/src/kio/schema/offset_fetch/v2/request.py b/src/kio/schema/offset_fetch/v2/request.py index 297d714e..6c83178c 100644 --- a/src/kio/schema/offset_fetch/v2/request.py +++ b/src/kio/schema/offset_fetch/v2/request.py @@ -40,5 +40,5 @@ class OffsetFetchRequest: __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader group_id: GroupId = field(metadata={"kafka_type": "string"}) """The group to fetch offsets for.""" - topics: tuple[OffsetFetchRequestTopic, ...] + topics: tuple[OffsetFetchRequestTopic, ...] | None """Each topic we would like to fetch offsets for, or null to fetch offsets for all topics.""" diff --git a/src/kio/schema/offset_fetch/v3/request.py b/src/kio/schema/offset_fetch/v3/request.py index dbefb1e2..5f3cc6f8 100644 --- a/src/kio/schema/offset_fetch/v3/request.py +++ b/src/kio/schema/offset_fetch/v3/request.py @@ -40,5 +40,5 @@ class OffsetFetchRequest: __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader group_id: GroupId = field(metadata={"kafka_type": "string"}) """The group to fetch offsets for.""" - topics: tuple[OffsetFetchRequestTopic, ...] + topics: tuple[OffsetFetchRequestTopic, ...] | None """Each topic we would like to fetch offsets for, or null to fetch offsets for all topics.""" diff --git a/src/kio/schema/offset_fetch/v4/request.py b/src/kio/schema/offset_fetch/v4/request.py index 16620f5a..67ab1758 100644 --- a/src/kio/schema/offset_fetch/v4/request.py +++ b/src/kio/schema/offset_fetch/v4/request.py @@ -40,5 +40,5 @@ class OffsetFetchRequest: __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader group_id: GroupId = field(metadata={"kafka_type": "string"}) """The group to fetch offsets for.""" - topics: tuple[OffsetFetchRequestTopic, ...] + topics: tuple[OffsetFetchRequestTopic, ...] | None """Each topic we would like to fetch offsets for, or null to fetch offsets for all topics.""" diff --git a/src/kio/schema/offset_fetch/v5/request.py b/src/kio/schema/offset_fetch/v5/request.py index 1c173e32..71544ebe 100644 --- a/src/kio/schema/offset_fetch/v5/request.py +++ b/src/kio/schema/offset_fetch/v5/request.py @@ -40,5 +40,5 @@ class OffsetFetchRequest: __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader group_id: GroupId = field(metadata={"kafka_type": "string"}) """The group to fetch offsets for.""" - topics: tuple[OffsetFetchRequestTopic, ...] + topics: tuple[OffsetFetchRequestTopic, ...] | None """Each topic we would like to fetch offsets for, or null to fetch offsets for all topics.""" diff --git a/src/kio/schema/offset_fetch/v6/request.py b/src/kio/schema/offset_fetch/v6/request.py index 7ef197cd..c3f922cf 100644 --- a/src/kio/schema/offset_fetch/v6/request.py +++ b/src/kio/schema/offset_fetch/v6/request.py @@ -40,5 +40,5 @@ class OffsetFetchRequest: __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader group_id: GroupId = field(metadata={"kafka_type": "string"}) """The group to fetch offsets for.""" - topics: tuple[OffsetFetchRequestTopic, ...] + topics: tuple[OffsetFetchRequestTopic, ...] | None """Each topic we would like to fetch offsets for, or null to fetch offsets for all topics.""" diff --git a/src/kio/schema/offset_fetch/v7/request.py b/src/kio/schema/offset_fetch/v7/request.py index 55f0e868..c9653a63 100644 --- a/src/kio/schema/offset_fetch/v7/request.py +++ b/src/kio/schema/offset_fetch/v7/request.py @@ -40,7 +40,7 @@ class OffsetFetchRequest: __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader group_id: GroupId = field(metadata={"kafka_type": "string"}) """The group to fetch offsets for.""" - topics: tuple[OffsetFetchRequestTopic, ...] + topics: tuple[OffsetFetchRequestTopic, ...] | None """Each topic we would like to fetch offsets for, or null to fetch offsets for all topics.""" require_stable: bool = field(metadata={"kafka_type": "bool"}, default=False) """Whether broker should hold on returning unstable offsets but set a retriable error code for the partitions.""" diff --git a/src/kio/schema/offset_fetch/v8/request.py b/src/kio/schema/offset_fetch/v8/request.py index f1974252..9d811f55 100644 --- a/src/kio/schema/offset_fetch/v8/request.py +++ b/src/kio/schema/offset_fetch/v8/request.py @@ -40,7 +40,7 @@ class OffsetFetchRequestGroup: __header_schema__: ClassVar[type[RequestHeader]] = RequestHeader group_id: GroupId = field(metadata={"kafka_type": "string"}) """The group ID.""" - topics: tuple[OffsetFetchRequestTopics, ...] + topics: tuple[OffsetFetchRequestTopics, ...] | None """Each topic we would like to fetch offsets for, or null to fetch offsets for all topics."""