Skip to content

Commit d409ca8

Browse files
committed
Intermediate changes
commit_hash:ed866127668ea37af240d0f863a53784df961351
1 parent ee1586d commit d409ca8

File tree

15 files changed

+444
-15
lines changed

15 files changed

+444
-15
lines changed

contrib/python/ydb/py3/.dist-info/METADATA

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Metadata-Version: 2.1
22
Name: ydb
3-
Version: 3.18.15
3+
Version: 3.18.16
44
Summary: YDB Python SDK
55
Home-page: http://github.com/ydb-platform/ydb-python-sdk
66
Author: Yandex LLC

contrib/python/ydb/py3/ya.make

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
PY3_LIBRARY()
44

5-
VERSION(3.18.15)
5+
VERSION(3.18.16)
66

77
LICENSE(Apache-2.0)
88

contrib/python/ydb/py3/ydb/_grpc/grpcwrapper/ydb_topic.py

Lines changed: 212 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,12 +418,14 @@ def from_proto(
418418
class InitRequest(IToProto):
419419
topics_read_settings: List["StreamReadMessage.InitRequest.TopicReadSettings"]
420420
consumer: str
421+
auto_partitioning_support: bool
421422

422423
def to_proto(self) -> ydb_topic_pb2.StreamReadMessage.InitRequest:
423424
res = ydb_topic_pb2.StreamReadMessage.InitRequest()
424425
res.consumer = self.consumer
425426
for settings in self.topics_read_settings:
426427
res.topics_read_settings.append(settings.to_proto())
428+
res.auto_partitioning_support = self.auto_partitioning_support
427429
return res
428430

429431
@dataclass
@@ -695,6 +697,20 @@ def to_proto(self) -> ydb_topic_pb2.StreamReadMessage.StopPartitionSessionRespon
695697
partition_session_id=self.partition_session_id,
696698
)
697699

700+
@dataclass
701+
class EndPartitionSession(IFromProto):
702+
partition_session_id: int
703+
adjacent_partition_ids: List[int]
704+
child_partition_ids: List[int]
705+
706+
@staticmethod
707+
def from_proto(msg: ydb_topic_pb2.StreamReadMessage.EndPartitionSession):
708+
return StreamReadMessage.EndPartitionSession(
709+
partition_session_id=msg.partition_session_id,
710+
adjacent_partition_ids=list(msg.adjacent_partition_ids),
711+
child_partition_ids=list(msg.child_partition_ids),
712+
)
713+
698714
@dataclass
699715
class FromClient(IToProto):
700716
client_message: "ReaderMessagesFromClientToServer"
@@ -774,6 +790,13 @@ def from_proto(
774790
msg.partition_session_status_response
775791
),
776792
)
793+
elif mess_type == "end_partition_session":
794+
return StreamReadMessage.FromServer(
795+
server_status=server_status,
796+
server_message=StreamReadMessage.EndPartitionSession.from_proto(
797+
msg.end_partition_session,
798+
),
799+
)
777800
else:
778801
raise issues.UnexpectedGrpcMessage(
779802
"Unexpected message while parse ReaderMessagesFromServerToClient: '%s'" % mess_type
@@ -798,6 +821,7 @@ def from_proto(
798821
UpdateTokenResponse,
799822
StreamReadMessage.StartPartitionSessionRequest,
800823
StreamReadMessage.StopPartitionSessionRequest,
824+
StreamReadMessage.EndPartitionSession,
801825
]
802826

803827

@@ -942,30 +966,196 @@ def from_public(alter_consumer: ydb_topic_public_types.PublicAlterConsumer) -> A
942966
class PartitioningSettings(IToProto, IFromProto):
943967
min_active_partitions: int
944968
partition_count_limit: int
969+
max_active_partitions: int
970+
auto_partitioning_settings: AutoPartitioningSettings
945971

946972
@staticmethod
947973
def from_proto(msg: ydb_topic_pb2.PartitioningSettings) -> "PartitioningSettings":
948974
return PartitioningSettings(
949975
min_active_partitions=msg.min_active_partitions,
950976
partition_count_limit=msg.partition_count_limit,
977+
max_active_partitions=msg.max_active_partitions,
978+
auto_partitioning_settings=AutoPartitioningSettings.from_proto(msg.auto_partitioning_settings),
951979
)
952980

953981
def to_proto(self) -> ydb_topic_pb2.PartitioningSettings:
982+
auto_partitioning_settings = None
983+
if self.auto_partitioning_settings is not None:
984+
auto_partitioning_settings = self.auto_partitioning_settings.to_proto()
985+
954986
return ydb_topic_pb2.PartitioningSettings(
955987
min_active_partitions=self.min_active_partitions,
956988
partition_count_limit=self.partition_count_limit,
989+
max_active_partitions=self.max_active_partitions,
990+
auto_partitioning_settings=auto_partitioning_settings,
991+
)
992+
993+
994+
class AutoPartitioningStrategy(int, IFromProto, IFromPublic, IToPublic):
995+
UNSPECIFIED = 0
996+
DISABLED = 1
997+
SCALE_UP = 2
998+
SCALE_UP_AND_DOWN = 3
999+
PAUSED = 4
1000+
1001+
@staticmethod
1002+
def from_public(
1003+
strategy: Optional[ydb_topic_public_types.PublicAutoPartitioningStrategy],
1004+
) -> Optional["AutoPartitioningStrategy"]:
1005+
if strategy is None:
1006+
return None
1007+
1008+
return AutoPartitioningStrategy(strategy)
1009+
1010+
@staticmethod
1011+
def from_proto(code: Optional[int]) -> Optional["AutoPartitioningStrategy"]:
1012+
if code is None:
1013+
return None
1014+
1015+
return AutoPartitioningStrategy(code)
1016+
1017+
def to_public(self) -> ydb_topic_public_types.PublicAutoPartitioningStrategy:
1018+
try:
1019+
return ydb_topic_public_types.PublicAutoPartitioningStrategy(int(self))
1020+
except KeyError:
1021+
return ydb_topic_public_types.PublicAutoPartitioningStrategy.UNSPECIFIED
1022+
1023+
1024+
@dataclass
1025+
class AutoPartitioningSettings(IToProto, IFromProto, IFromPublic, IToPublic):
1026+
strategy: AutoPartitioningStrategy
1027+
partition_write_speed: AutoPartitioningWriteSpeedStrategy
1028+
1029+
@staticmethod
1030+
def from_public(
1031+
settings: Optional[ydb_topic_public_types.PublicAutoPartitioningSettings],
1032+
) -> Optional[AutoPartitioningSettings]:
1033+
if not settings:
1034+
return None
1035+
1036+
return AutoPartitioningSettings(
1037+
strategy=settings.strategy,
1038+
partition_write_speed=AutoPartitioningWriteSpeedStrategy(
1039+
stabilization_window=settings.stabilization_window,
1040+
up_utilization_percent=settings.up_utilization_percent,
1041+
down_utilization_percent=settings.down_utilization_percent,
1042+
),
1043+
)
1044+
1045+
@staticmethod
1046+
def from_proto(msg: ydb_topic_pb2.AutoPartitioningSettings) -> AutoPartitioningSettings:
1047+
if msg is None:
1048+
return None
1049+
1050+
return AutoPartitioningSettings(
1051+
strategy=AutoPartitioningStrategy.from_proto(msg.strategy),
1052+
partition_write_speed=AutoPartitioningWriteSpeedStrategy.from_proto(msg.partition_write_speed),
1053+
)
1054+
1055+
def to_proto(self) -> ydb_topic_pb2.AutoPartitioningSettings:
1056+
return ydb_topic_pb2.AutoPartitioningSettings(
1057+
strategy=self.strategy, partition_write_speed=self.partition_write_speed.to_proto()
1058+
)
1059+
1060+
def to_public(self) -> ydb_topic_public_types.PublicAutoPartitioningSettings:
1061+
return ydb_topic_public_types.PublicAutoPartitioningSettings(
1062+
strategy=self.strategy.to_public(),
1063+
stabilization_window=self.partition_write_speed.stabilization_window,
1064+
up_utilization_percent=self.partition_write_speed.up_utilization_percent,
1065+
down_utilization_percent=self.partition_write_speed.down_utilization_percent,
1066+
)
1067+
1068+
1069+
@dataclass
1070+
class AutoPartitioningWriteSpeedStrategy(IToProto, IFromProto):
1071+
stabilization_window: Optional[datetime.timedelta]
1072+
up_utilization_percent: Optional[int]
1073+
down_utilization_percent: Optional[int]
1074+
1075+
def to_proto(self):
1076+
return ydb_topic_pb2.AutoPartitioningWriteSpeedStrategy(
1077+
stabilization_window=proto_duration_from_timedelta(self.stabilization_window),
1078+
up_utilization_percent=self.up_utilization_percent,
1079+
down_utilization_percent=self.down_utilization_percent,
1080+
)
1081+
1082+
@staticmethod
1083+
def from_proto(
1084+
msg: Optional[ydb_topic_pb2.AutoPartitioningWriteSpeedStrategy],
1085+
) -> Optional[AutoPartitioningWriteSpeedStrategy]:
1086+
if msg is None:
1087+
return None
1088+
1089+
return AutoPartitioningWriteSpeedStrategy(
1090+
stabilization_window=timedelta_from_proto_duration(msg.stabilization_window),
1091+
up_utilization_percent=msg.up_utilization_percent,
1092+
down_utilization_percent=msg.down_utilization_percent,
9571093
)
9581094

9591095

9601096
@dataclass
9611097
class AlterPartitioningSettings(IToProto):
9621098
set_min_active_partitions: Optional[int]
9631099
set_partition_count_limit: Optional[int]
1100+
set_max_active_partitions: Optional[int]
1101+
alter_auto_partitioning_settings: Optional[AlterAutoPartitioningSettings]
9641102

9651103
def to_proto(self) -> ydb_topic_pb2.AlterPartitioningSettings:
1104+
alter_auto_partitioning_settings = None
1105+
if self.alter_auto_partitioning_settings is not None:
1106+
alter_auto_partitioning_settings = self.alter_auto_partitioning_settings.to_proto()
1107+
9661108
return ydb_topic_pb2.AlterPartitioningSettings(
9671109
set_min_active_partitions=self.set_min_active_partitions,
9681110
set_partition_count_limit=self.set_partition_count_limit,
1111+
set_max_active_partitions=self.set_max_active_partitions,
1112+
alter_auto_partitioning_settings=alter_auto_partitioning_settings,
1113+
)
1114+
1115+
1116+
@dataclass
1117+
class AlterAutoPartitioningSettings(IToProto, IFromPublic):
1118+
set_strategy: Optional[AutoPartitioningStrategy]
1119+
set_partition_write_speed: Optional[AlterAutoPartitioningWriteSpeedStrategy]
1120+
1121+
@staticmethod
1122+
def from_public(
1123+
settings: Optional[ydb_topic_public_types.PublicAlterAutoPartitioningSettings],
1124+
) -> Optional[AlterAutoPartitioningSettings]:
1125+
if not settings:
1126+
return None
1127+
1128+
return AlterAutoPartitioningSettings(
1129+
set_strategy=settings.set_strategy,
1130+
set_partition_write_speed=AlterAutoPartitioningWriteSpeedStrategy(
1131+
set_stabilization_window=settings.set_stabilization_window,
1132+
set_up_utilization_percent=settings.set_up_utilization_percent,
1133+
set_down_utilization_percent=settings.set_down_utilization_percent,
1134+
),
1135+
)
1136+
1137+
def to_proto(self) -> ydb_topic_pb2.AlterAutoPartitioningSettings:
1138+
set_partition_write_speed = None
1139+
if self.set_partition_write_speed:
1140+
set_partition_write_speed = self.set_partition_write_speed.to_proto()
1141+
1142+
return ydb_topic_pb2.AlterAutoPartitioningSettings(
1143+
set_strategy=self.set_strategy,
1144+
set_partition_write_speed=set_partition_write_speed,
1145+
)
1146+
1147+
1148+
@dataclass
1149+
class AlterAutoPartitioningWriteSpeedStrategy(IToProto):
1150+
set_stabilization_window: Optional[datetime.timedelta]
1151+
set_up_utilization_percent: Optional[int]
1152+
set_down_utilization_percent: Optional[int]
1153+
1154+
def to_proto(self) -> ydb_topic_pb2.AlterAutoPartitioningWriteSpeedStrategy:
1155+
return ydb_topic_pb2.AlterAutoPartitioningWriteSpeedStrategy(
1156+
set_stabilization_window=proto_duration_from_timedelta(self.set_stabilization_window),
1157+
set_up_utilization_percent=self.set_up_utilization_percent,
1158+
set_down_utilization_percent=self.set_down_utilization_percent,
9691159
)
9701160

9711161

@@ -992,7 +1182,7 @@ def from_proto(code: Optional[int]) -> Optional["MeteringMode"]:
9921182

9931183
def to_public(self) -> ydb_topic_public_types.PublicMeteringMode:
9941184
try:
995-
ydb_topic_public_types.PublicMeteringMode(int(self))
1185+
return ydb_topic_public_types.PublicMeteringMode(int(self))
9961186
except KeyError:
9971187
return ydb_topic_public_types.PublicMeteringMode.UNSPECIFIED
9981188

@@ -1011,9 +1201,13 @@ class CreateTopicRequest(IToProto, IFromPublic):
10111201
metering_mode: "MeteringMode"
10121202

10131203
def to_proto(self) -> ydb_topic_pb2.CreateTopicRequest:
1204+
partitioning_settings = None
1205+
if self.partitioning_settings is not None:
1206+
partitioning_settings = self.partitioning_settings.to_proto()
1207+
10141208
return ydb_topic_pb2.CreateTopicRequest(
10151209
path=self.path,
1016-
partitioning_settings=self.partitioning_settings.to_proto(),
1210+
partitioning_settings=partitioning_settings,
10171211
retention_period=proto_duration_from_timedelta(self.retention_period),
10181212
retention_storage_mb=self.retention_storage_mb,
10191213
supported_codecs=self.supported_codecs.to_proto(),
@@ -1038,11 +1232,17 @@ def from_public(req: ydb_topic_public_types.CreateTopicRequestParams):
10381232
consumer = ydb_topic_public_types.PublicConsumer(name=consumer)
10391233
consumers.append(Consumer.from_public(consumer))
10401234

1235+
auto_partitioning_settings = None
1236+
if req.auto_partitioning_settings is not None:
1237+
auto_partitioning_settings = AutoPartitioningSettings.from_public(req.auto_partitioning_settings)
1238+
10411239
return CreateTopicRequest(
10421240
path=req.path,
10431241
partitioning_settings=PartitioningSettings(
10441242
min_active_partitions=req.min_active_partitions,
10451243
partition_count_limit=req.partition_count_limit,
1244+
max_active_partitions=req.max_active_partitions,
1245+
auto_partitioning_settings=auto_partitioning_settings,
10461246
),
10471247
retention_period=req.retention_period,
10481248
retention_storage_mb=req.retention_storage_mb,
@@ -1113,13 +1313,21 @@ def from_public(req: ydb_topic_public_types.AlterTopicRequestParams) -> AlterTop
11131313
consumer = ydb_topic_public_types.PublicAlterConsumer(name=consumer)
11141314
alter_consumers.append(AlterConsumer.from_public(consumer))
11151315

1316+
alter_auto_partitioning_settings = None
1317+
if req.alter_auto_partitioning_settings is not None:
1318+
alter_auto_partitioning_settings = AlterAutoPartitioningSettings.from_public(
1319+
req.alter_auto_partitioning_settings
1320+
)
1321+
11161322
drop_consumers = req.drop_consumers if req.drop_consumers else []
11171323

11181324
return AlterTopicRequest(
11191325
path=req.path,
11201326
alter_partitioning_settings=AlterPartitioningSettings(
11211327
set_min_active_partitions=req.set_min_active_partitions,
11221328
set_partition_count_limit=req.set_partition_count_limit,
1329+
set_max_active_partitions=req.set_max_active_partitions,
1330+
alter_auto_partitioning_settings=alter_auto_partitioning_settings,
11231331
),
11241332
add_consumers=add_consumers,
11251333
set_retention_period=req.set_retention_period,
@@ -1180,6 +1388,8 @@ def to_public(self) -> ydb_topic_public_types.PublicDescribeTopicResult:
11801388
return ydb_topic_public_types.PublicDescribeTopicResult(
11811389
self=scheme._wrap_scheme_entry(self.self_proto),
11821390
min_active_partitions=self.partitioning_settings.min_active_partitions,
1391+
max_active_partitions=self.partitioning_settings.max_active_partitions,
1392+
auto_partitioning_settings=self.partitioning_settings.auto_partitioning_settings.to_public(),
11831393
partition_count_limit=self.partitioning_settings.partition_count_limit,
11841394
partitions=list(map(DescribeTopicResult.PartitionInfo.to_public, self.partitions)),
11851395
retention_period=self.retention_period,

0 commit comments

Comments
 (0)