flwr 1.22.0__py3-none-any.whl → 1.24.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. flwr/__init__.py +16 -5
  2. flwr/app/error.py +2 -2
  3. flwr/app/exception.py +3 -3
  4. flwr/cli/app.py +34 -1
  5. flwr/cli/app_cmd/__init__.py +23 -0
  6. flwr/cli/app_cmd/publish.py +285 -0
  7. flwr/cli/app_cmd/review.py +252 -0
  8. flwr/cli/auth_plugin/__init__.py +15 -6
  9. flwr/cli/auth_plugin/auth_plugin.py +94 -0
  10. flwr/cli/auth_plugin/noop_auth_plugin.py +101 -0
  11. flwr/cli/auth_plugin/oidc_cli_plugin.py +46 -32
  12. flwr/cli/build.py +166 -53
  13. flwr/cli/{cli_user_auth_interceptor.py → cli_account_auth_interceptor.py} +29 -11
  14. flwr/cli/config_utils.py +101 -13
  15. flwr/cli/federation/__init__.py +24 -0
  16. flwr/cli/federation/ls.py +140 -0
  17. flwr/cli/federation/show.py +317 -0
  18. flwr/cli/install.py +91 -13
  19. flwr/cli/log.py +54 -11
  20. flwr/cli/login/login.py +41 -27
  21. flwr/cli/ls.py +177 -133
  22. flwr/cli/new/new.py +175 -40
  23. flwr/cli/new/templates/app/code/task.pytorch.py.tpl +1 -0
  24. flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
  25. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -1
  26. flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
  27. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
  28. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
  29. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
  30. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +3 -3
  31. flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl +1 -1
  32. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
  33. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +2 -2
  34. flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl +1 -1
  35. flwr/cli/pull.py +12 -7
  36. flwr/cli/run/run.py +82 -31
  37. flwr/cli/run_utils.py +130 -0
  38. flwr/cli/stop.py +27 -9
  39. flwr/cli/supernode/__init__.py +25 -0
  40. flwr/cli/supernode/ls.py +268 -0
  41. flwr/cli/supernode/register.py +190 -0
  42. flwr/cli/supernode/unregister.py +140 -0
  43. flwr/cli/utils.py +464 -81
  44. flwr/client/__init__.py +2 -1
  45. flwr/client/dpfedavg_numpy_client.py +4 -1
  46. flwr/client/grpc_adapter_client/connection.py +12 -15
  47. flwr/client/grpc_rere_client/connection.py +68 -41
  48. flwr/client/grpc_rere_client/grpc_adapter.py +34 -14
  49. flwr/client/grpc_rere_client/{client_interceptor.py → node_auth_client_interceptor.py} +5 -7
  50. flwr/client/message_handler/message_handler.py +2 -2
  51. flwr/client/mod/secure_aggregation/secaggplus_mod.py +10 -8
  52. flwr/client/numpy_client.py +1 -1
  53. flwr/client/rest_client/connection.py +94 -51
  54. flwr/client/run_info_store.py +4 -5
  55. flwr/client/typing.py +1 -1
  56. flwr/clientapp/__init__.py +1 -2
  57. flwr/{client → clientapp}/client_app.py +9 -10
  58. flwr/clientapp/mod/centraldp_mods.py +16 -17
  59. flwr/clientapp/mod/localdp_mod.py +8 -9
  60. flwr/clientapp/typing.py +1 -1
  61. flwr/{client/clientapp → clientapp}/utils.py +4 -4
  62. flwr/common/address.py +1 -2
  63. flwr/common/args.py +3 -4
  64. flwr/common/config.py +13 -16
  65. flwr/common/constant.py +56 -13
  66. flwr/common/differential_privacy.py +3 -4
  67. flwr/common/event_log_plugin/event_log_plugin.py +3 -4
  68. flwr/common/exit/exit.py +15 -2
  69. flwr/common/exit/exit_code.py +39 -10
  70. flwr/common/exit/exit_handler.py +6 -2
  71. flwr/common/exit/signal_handler.py +5 -5
  72. flwr/common/grpc.py +6 -6
  73. flwr/common/inflatable_protobuf_utils.py +1 -1
  74. flwr/common/inflatable_utils.py +48 -31
  75. flwr/common/logger.py +19 -19
  76. flwr/common/message.py +4 -4
  77. flwr/common/object_ref.py +7 -7
  78. flwr/common/record/array.py +6 -6
  79. flwr/common/record/arrayrecord.py +18 -21
  80. flwr/common/record/configrecord.py +3 -3
  81. flwr/common/record/recorddict.py +5 -5
  82. flwr/common/record/typeddict.py +9 -2
  83. flwr/common/recorddict_compat.py +7 -10
  84. flwr/common/retry_invoker.py +20 -20
  85. flwr/common/secure_aggregation/crypto/symmetric_encryption.py +1 -89
  86. flwr/common/secure_aggregation/ndarrays_arithmetic.py +3 -3
  87. flwr/common/serde.py +9 -6
  88. flwr/common/serde_utils.py +2 -2
  89. flwr/common/telemetry.py +9 -5
  90. flwr/common/typing.py +59 -43
  91. flwr/compat/client/app.py +39 -38
  92. flwr/compat/client/grpc_client/connection.py +13 -13
  93. flwr/compat/server/app.py +5 -6
  94. flwr/proto/appio_pb2.py +13 -3
  95. flwr/proto/appio_pb2.pyi +134 -65
  96. flwr/proto/appio_pb2_grpc.py +20 -0
  97. flwr/proto/appio_pb2_grpc.pyi +27 -0
  98. flwr/proto/clientappio_pb2.py +17 -7
  99. flwr/proto/clientappio_pb2.pyi +15 -0
  100. flwr/proto/clientappio_pb2_grpc.py +206 -40
  101. flwr/proto/clientappio_pb2_grpc.pyi +168 -53
  102. flwr/proto/control_pb2.py +72 -40
  103. flwr/proto/control_pb2.pyi +319 -87
  104. flwr/proto/control_pb2_grpc.py +339 -28
  105. flwr/proto/control_pb2_grpc.pyi +209 -37
  106. flwr/proto/error_pb2.py +13 -3
  107. flwr/proto/error_pb2.pyi +24 -6
  108. flwr/proto/error_pb2_grpc.py +20 -0
  109. flwr/proto/error_pb2_grpc.pyi +27 -0
  110. flwr/proto/fab_pb2.py +24 -10
  111. flwr/proto/fab_pb2.pyi +68 -20
  112. flwr/proto/fab_pb2_grpc.py +20 -0
  113. flwr/proto/fab_pb2_grpc.pyi +27 -0
  114. flwr/proto/federation_pb2.py +38 -0
  115. flwr/proto/federation_pb2.pyi +56 -0
  116. flwr/proto/federation_pb2_grpc.py +24 -0
  117. flwr/proto/federation_pb2_grpc.pyi +31 -0
  118. flwr/proto/fleet_pb2.py +45 -27
  119. flwr/proto/fleet_pb2.pyi +186 -70
  120. flwr/proto/fleet_pb2_grpc.py +277 -66
  121. flwr/proto/fleet_pb2_grpc.pyi +201 -55
  122. flwr/proto/grpcadapter_pb2.py +14 -4
  123. flwr/proto/grpcadapter_pb2.pyi +38 -16
  124. flwr/proto/grpcadapter_pb2_grpc.py +35 -4
  125. flwr/proto/grpcadapter_pb2_grpc.pyi +38 -7
  126. flwr/proto/heartbeat_pb2.py +17 -7
  127. flwr/proto/heartbeat_pb2.pyi +51 -22
  128. flwr/proto/heartbeat_pb2_grpc.py +20 -0
  129. flwr/proto/heartbeat_pb2_grpc.pyi +27 -0
  130. flwr/proto/log_pb2.py +13 -3
  131. flwr/proto/log_pb2.pyi +34 -11
  132. flwr/proto/log_pb2_grpc.py +20 -0
  133. flwr/proto/log_pb2_grpc.pyi +27 -0
  134. flwr/proto/message_pb2.py +15 -5
  135. flwr/proto/message_pb2.pyi +154 -86
  136. flwr/proto/message_pb2_grpc.py +20 -0
  137. flwr/proto/message_pb2_grpc.pyi +27 -0
  138. flwr/proto/node_pb2.py +16 -4
  139. flwr/proto/node_pb2.pyi +77 -4
  140. flwr/proto/node_pb2_grpc.py +20 -0
  141. flwr/proto/node_pb2_grpc.pyi +27 -0
  142. flwr/proto/recorddict_pb2.py +13 -3
  143. flwr/proto/recorddict_pb2.pyi +184 -107
  144. flwr/proto/recorddict_pb2_grpc.py +20 -0
  145. flwr/proto/recorddict_pb2_grpc.pyi +27 -0
  146. flwr/proto/run_pb2.py +40 -31
  147. flwr/proto/run_pb2.pyi +149 -84
  148. flwr/proto/run_pb2_grpc.py +20 -0
  149. flwr/proto/run_pb2_grpc.pyi +27 -0
  150. flwr/proto/serverappio_pb2.py +13 -3
  151. flwr/proto/serverappio_pb2.pyi +32 -8
  152. flwr/proto/serverappio_pb2_grpc.py +246 -65
  153. flwr/proto/serverappio_pb2_grpc.pyi +221 -85
  154. flwr/proto/simulationio_pb2.py +16 -8
  155. flwr/proto/simulationio_pb2.pyi +15 -0
  156. flwr/proto/simulationio_pb2_grpc.py +162 -41
  157. flwr/proto/simulationio_pb2_grpc.pyi +149 -55
  158. flwr/proto/transport_pb2.py +20 -10
  159. flwr/proto/transport_pb2.pyi +249 -160
  160. flwr/proto/transport_pb2_grpc.py +35 -4
  161. flwr/proto/transport_pb2_grpc.pyi +38 -8
  162. flwr/server/app.py +173 -127
  163. flwr/server/client_manager.py +4 -5
  164. flwr/server/client_proxy.py +10 -11
  165. flwr/server/compat/app.py +4 -5
  166. flwr/server/compat/app_utils.py +2 -1
  167. flwr/server/compat/grid_client_proxy.py +10 -12
  168. flwr/server/compat/legacy_context.py +3 -4
  169. flwr/server/fleet_event_log_interceptor.py +2 -1
  170. flwr/server/grid/grid.py +2 -3
  171. flwr/server/grid/grpc_grid.py +10 -8
  172. flwr/server/grid/inmemory_grid.py +4 -4
  173. flwr/server/run_serverapp.py +2 -3
  174. flwr/server/server.py +34 -39
  175. flwr/server/server_app.py +7 -8
  176. flwr/server/server_config.py +1 -2
  177. flwr/server/serverapp/app.py +34 -28
  178. flwr/server/serverapp_components.py +4 -5
  179. flwr/server/strategy/aggregate.py +9 -8
  180. flwr/server/strategy/bulyan.py +13 -11
  181. flwr/server/strategy/dp_adaptive_clipping.py +16 -20
  182. flwr/server/strategy/dp_fixed_clipping.py +12 -17
  183. flwr/server/strategy/dpfedavg_adaptive.py +3 -4
  184. flwr/server/strategy/dpfedavg_fixed.py +6 -10
  185. flwr/server/strategy/fault_tolerant_fedavg.py +14 -13
  186. flwr/server/strategy/fedadagrad.py +18 -14
  187. flwr/server/strategy/fedadam.py +16 -14
  188. flwr/server/strategy/fedavg.py +16 -17
  189. flwr/server/strategy/fedavg_android.py +15 -15
  190. flwr/server/strategy/fedavgm.py +21 -18
  191. flwr/server/strategy/fedmedian.py +2 -3
  192. flwr/server/strategy/fedopt.py +11 -10
  193. flwr/server/strategy/fedprox.py +10 -9
  194. flwr/server/strategy/fedtrimmedavg.py +12 -11
  195. flwr/server/strategy/fedxgb_bagging.py +13 -11
  196. flwr/server/strategy/fedxgb_cyclic.py +6 -6
  197. flwr/server/strategy/fedxgb_nn_avg.py +4 -4
  198. flwr/server/strategy/fedyogi.py +16 -14
  199. flwr/server/strategy/krum.py +12 -11
  200. flwr/server/strategy/qfedavg.py +16 -15
  201. flwr/server/strategy/strategy.py +6 -9
  202. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +19 -8
  203. flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +1 -2
  204. flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +3 -4
  205. flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +10 -12
  206. flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +1 -3
  207. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +136 -42
  208. flwr/server/superlink/fleet/grpc_rere/{server_interceptor.py → node_auth_server_interceptor.py} +28 -51
  209. flwr/server/superlink/fleet/message_handler/message_handler.py +100 -49
  210. flwr/server/superlink/fleet/rest_rere/rest_api.py +54 -33
  211. flwr/server/superlink/fleet/vce/backend/backend.py +2 -2
  212. flwr/server/superlink/fleet/vce/backend/raybackend.py +6 -6
  213. flwr/server/superlink/fleet/vce/vce_api.py +32 -13
  214. flwr/server/superlink/linkstate/in_memory_linkstate.py +266 -207
  215. flwr/server/superlink/linkstate/linkstate.py +161 -62
  216. flwr/server/superlink/linkstate/linkstate_factory.py +24 -6
  217. flwr/server/superlink/linkstate/sqlite_linkstate.py +698 -638
  218. flwr/server/superlink/linkstate/utils.py +9 -60
  219. flwr/server/superlink/serverappio/serverappio_grpc.py +1 -2
  220. flwr/server/superlink/serverappio/serverappio_servicer.py +28 -23
  221. flwr/server/superlink/simulation/simulationio_grpc.py +1 -2
  222. flwr/server/superlink/simulation/simulationio_servicer.py +19 -14
  223. flwr/server/superlink/utils.py +4 -6
  224. flwr/server/typing.py +1 -1
  225. flwr/server/utils/tensorboard.py +15 -8
  226. flwr/server/utils/validator.py +2 -3
  227. flwr/server/workflow/default_workflows.py +5 -5
  228. flwr/server/workflow/secure_aggregation/secagg_workflow.py +2 -4
  229. flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +12 -10
  230. flwr/serverapp/strategy/bulyan.py +16 -15
  231. flwr/serverapp/strategy/dp_adaptive_clipping.py +12 -11
  232. flwr/serverapp/strategy/dp_fixed_clipping.py +11 -14
  233. flwr/serverapp/strategy/fedadagrad.py +10 -11
  234. flwr/serverapp/strategy/fedadam.py +10 -11
  235. flwr/serverapp/strategy/fedavg.py +9 -10
  236. flwr/serverapp/strategy/fedavgm.py +17 -16
  237. flwr/serverapp/strategy/fedmedian.py +2 -2
  238. flwr/serverapp/strategy/fedopt.py +10 -11
  239. flwr/serverapp/strategy/fedprox.py +7 -8
  240. flwr/serverapp/strategy/fedtrimmedavg.py +9 -9
  241. flwr/serverapp/strategy/fedxgb_bagging.py +3 -3
  242. flwr/serverapp/strategy/fedxgb_cyclic.py +9 -9
  243. flwr/serverapp/strategy/fedyogi.py +9 -11
  244. flwr/serverapp/strategy/krum.py +7 -7
  245. flwr/serverapp/strategy/multikrum.py +9 -9
  246. flwr/serverapp/strategy/qfedavg.py +17 -16
  247. flwr/serverapp/strategy/strategy.py +6 -9
  248. flwr/serverapp/strategy/strategy_utils.py +7 -8
  249. flwr/simulation/app.py +46 -42
  250. flwr/simulation/legacy_app.py +12 -12
  251. flwr/simulation/ray_transport/ray_actor.py +11 -12
  252. flwr/simulation/ray_transport/ray_client_proxy.py +12 -13
  253. flwr/simulation/run_simulation.py +44 -43
  254. flwr/simulation/simulationio_connection.py +4 -4
  255. flwr/supercore/cli/flower_superexec.py +3 -4
  256. flwr/supercore/constant.py +52 -0
  257. flwr/supercore/corestate/corestate.py +24 -3
  258. flwr/supercore/corestate/in_memory_corestate.py +138 -0
  259. flwr/supercore/corestate/sqlite_corestate.py +157 -0
  260. flwr/supercore/ffs/disk_ffs.py +1 -2
  261. flwr/supercore/ffs/ffs.py +1 -2
  262. flwr/supercore/ffs/ffs_factory.py +1 -2
  263. flwr/{common → supercore}/heartbeat.py +20 -25
  264. flwr/supercore/object_store/in_memory_object_store.py +1 -6
  265. flwr/supercore/object_store/object_store.py +1 -2
  266. flwr/supercore/object_store/object_store_factory.py +27 -8
  267. flwr/supercore/object_store/sqlite_object_store.py +253 -0
  268. flwr/{client/clientapp → supercore/primitives}/__init__.py +1 -1
  269. flwr/supercore/primitives/asymmetric.py +117 -0
  270. flwr/supercore/primitives/asymmetric_ed25519.py +175 -0
  271. flwr/supercore/sqlite_mixin.py +159 -0
  272. flwr/supercore/superexec/plugin/base_exec_plugin.py +1 -2
  273. flwr/supercore/superexec/plugin/exec_plugin.py +3 -3
  274. flwr/supercore/superexec/run_superexec.py +9 -13
  275. flwr/supercore/utils.py +20 -0
  276. flwr/superlink/artifact_provider/artifact_provider.py +1 -2
  277. flwr/{common → superlink}/auth_plugin/__init__.py +6 -6
  278. flwr/superlink/auth_plugin/auth_plugin.py +88 -0
  279. flwr/superlink/auth_plugin/noop_auth_plugin.py +84 -0
  280. flwr/superlink/federation/__init__.py +24 -0
  281. flwr/superlink/federation/federation_manager.py +64 -0
  282. flwr/superlink/federation/noop_federation_manager.py +71 -0
  283. flwr/superlink/servicer/control/{control_user_auth_interceptor.py → control_account_auth_interceptor.py} +41 -32
  284. flwr/superlink/servicer/control/control_event_log_interceptor.py +7 -7
  285. flwr/superlink/servicer/control/control_grpc.py +18 -17
  286. flwr/superlink/servicer/control/control_license_interceptor.py +3 -3
  287. flwr/superlink/servicer/control/control_servicer.py +239 -63
  288. flwr/supernode/cli/flower_supernode.py +74 -26
  289. flwr/supernode/nodestate/in_memory_nodestate.py +60 -49
  290. flwr/supernode/nodestate/nodestate.py +7 -8
  291. flwr/supernode/nodestate/nodestate_factory.py +7 -4
  292. flwr/supernode/runtime/run_clientapp.py +43 -24
  293. flwr/supernode/servicer/clientappio/clientappio_servicer.py +40 -10
  294. flwr/supernode/start_client_internal.py +175 -51
  295. {flwr-1.22.0.dist-info → flwr-1.24.0.dist-info}/METADATA +8 -8
  296. flwr-1.24.0.dist-info/RECORD +454 -0
  297. flwr/common/auth_plugin/auth_plugin.py +0 -149
  298. flwr/supercore/object_store/utils.py +0 -43
  299. flwr-1.22.0.dist-info/RECORD +0 -428
  300. {flwr-1.22.0.dist-info → flwr-1.24.0.dist-info}/WHEEL +0 -0
  301. {flwr-1.22.0.dist-info → flwr-1.24.0.dist-info}/entry_points.txt +0 -0
@@ -1,12 +1,22 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
3
4
  # source: flwr/proto/recorddict.proto
4
- # Protobuf Python Version: 4.25.1
5
+ # Protobuf Python Version: 5.29.0
5
6
  """Generated protocol buffer code."""
6
7
  from google.protobuf import descriptor as _descriptor
7
8
  from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
8
10
  from google.protobuf import symbol_database as _symbol_database
9
11
  from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 0,
17
+ '',
18
+ 'flwr/proto/recorddict.proto'
19
+ )
10
20
  # @@protoc_insertion_point(imports)
11
21
 
12
22
  _sym_db = _symbol_database.Default()
@@ -19,8 +29,8 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lwr/proto/
19
29
  _globals = globals()
20
30
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
31
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.recorddict_pb2', _globals)
22
- if _descriptor._USE_C_DESCRIPTORS == False:
23
- DESCRIPTOR._options = None
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
24
34
  _globals['_DOUBLELIST']._serialized_start=43
25
35
  _globals['_DOUBLELIST']._serialized_end=69
26
36
  _globals['_SINTLIST']._serialized_start=71
@@ -1,111 +1,156 @@
1
1
  """
2
2
  @generated by mypy-protobuf. Do not edit manually!
3
3
  isort:skip_file
4
+ Copyright 2024 Flower Labs GmbH. All Rights Reserved.
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ ==============================================================================
4
18
  """
19
+
5
20
  import builtins
21
+ import collections.abc
6
22
  import google.protobuf.descriptor
7
23
  import google.protobuf.internal.containers
8
24
  import google.protobuf.message
9
25
  import typing
10
- import typing_extensions
11
26
 
12
27
  DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
13
28
 
29
+ @typing.final
14
30
  class DoubleList(google.protobuf.message.Message):
15
31
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
32
+
16
33
  VALS_FIELD_NUMBER: builtins.int
17
34
  @property
18
35
  def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
19
- def __init__(self,
36
+ def __init__(
37
+ self,
20
38
  *,
21
- vals: typing.Optional[typing.Iterable[builtins.float]] = ...,
22
- ) -> None: ...
23
- def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
39
+ vals: collections.abc.Iterable[builtins.float] | None = ...,
40
+ ) -> None: ...
41
+ def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ...
42
+
24
43
  global___DoubleList = DoubleList
25
44
 
45
+ @typing.final
26
46
  class SintList(google.protobuf.message.Message):
27
47
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
48
+
28
49
  VALS_FIELD_NUMBER: builtins.int
29
50
  @property
30
51
  def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
31
- def __init__(self,
52
+ def __init__(
53
+ self,
32
54
  *,
33
- vals: typing.Optional[typing.Iterable[builtins.int]] = ...,
34
- ) -> None: ...
35
- def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
55
+ vals: collections.abc.Iterable[builtins.int] | None = ...,
56
+ ) -> None: ...
57
+ def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ...
58
+
36
59
  global___SintList = SintList
37
60
 
61
+ @typing.final
38
62
  class UintList(google.protobuf.message.Message):
39
63
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
64
+
40
65
  VALS_FIELD_NUMBER: builtins.int
41
66
  @property
42
67
  def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
43
- def __init__(self,
68
+ def __init__(
69
+ self,
44
70
  *,
45
- vals: typing.Optional[typing.Iterable[builtins.int]] = ...,
46
- ) -> None: ...
47
- def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
71
+ vals: collections.abc.Iterable[builtins.int] | None = ...,
72
+ ) -> None: ...
73
+ def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ...
74
+
48
75
  global___UintList = UintList
49
76
 
77
+ @typing.final
50
78
  class BoolList(google.protobuf.message.Message):
51
79
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
80
+
52
81
  VALS_FIELD_NUMBER: builtins.int
53
82
  @property
54
83
  def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bool]: ...
55
- def __init__(self,
84
+ def __init__(
85
+ self,
56
86
  *,
57
- vals: typing.Optional[typing.Iterable[builtins.bool]] = ...,
58
- ) -> None: ...
59
- def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
87
+ vals: collections.abc.Iterable[builtins.bool] | None = ...,
88
+ ) -> None: ...
89
+ def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ...
90
+
60
91
  global___BoolList = BoolList
61
92
 
93
+ @typing.final
62
94
  class StringList(google.protobuf.message.Message):
63
95
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
96
+
64
97
  VALS_FIELD_NUMBER: builtins.int
65
98
  @property
66
- def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
67
- def __init__(self,
99
+ def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
100
+ def __init__(
101
+ self,
68
102
  *,
69
- vals: typing.Optional[typing.Iterable[typing.Text]] = ...,
70
- ) -> None: ...
71
- def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
103
+ vals: collections.abc.Iterable[builtins.str] | None = ...,
104
+ ) -> None: ...
105
+ def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ...
106
+
72
107
  global___StringList = StringList
73
108
 
109
+ @typing.final
74
110
  class BytesList(google.protobuf.message.Message):
75
111
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
112
+
76
113
  VALS_FIELD_NUMBER: builtins.int
77
114
  @property
78
115
  def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ...
79
- def __init__(self,
116
+ def __init__(
117
+ self,
80
118
  *,
81
- vals: typing.Optional[typing.Iterable[builtins.bytes]] = ...,
82
- ) -> None: ...
83
- def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
119
+ vals: collections.abc.Iterable[builtins.bytes] | None = ...,
120
+ ) -> None: ...
121
+ def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ...
122
+
84
123
  global___BytesList = BytesList
85
124
 
125
+ @typing.final
86
126
  class Array(google.protobuf.message.Message):
87
127
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
128
+
88
129
  DTYPE_FIELD_NUMBER: builtins.int
89
130
  SHAPE_FIELD_NUMBER: builtins.int
90
131
  STYPE_FIELD_NUMBER: builtins.int
91
132
  DATA_FIELD_NUMBER: builtins.int
92
- dtype: typing.Text
133
+ dtype: builtins.str
134
+ stype: builtins.str
135
+ data: builtins.bytes
93
136
  @property
94
137
  def shape(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
95
- stype: typing.Text
96
- data: builtins.bytes
97
- def __init__(self,
138
+ def __init__(
139
+ self,
98
140
  *,
99
- dtype: typing.Text = ...,
100
- shape: typing.Optional[typing.Iterable[builtins.int]] = ...,
101
- stype: typing.Text = ...,
141
+ dtype: builtins.str = ...,
142
+ shape: collections.abc.Iterable[builtins.int] | None = ...,
143
+ stype: builtins.str = ...,
102
144
  data: builtins.bytes = ...,
103
- ) -> None: ...
104
- def ClearField(self, field_name: typing_extensions.Literal["data",b"data","dtype",b"dtype","shape",b"shape","stype",b"stype"]) -> None: ...
145
+ ) -> None: ...
146
+ def ClearField(self, field_name: typing.Literal["data", b"data", "dtype", b"dtype", "shape", b"shape", "stype", b"stype"]) -> None: ...
147
+
105
148
  global___Array = Array
106
149
 
150
+ @typing.final
107
151
  class MetricRecordValue(google.protobuf.message.Message):
108
152
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
153
+
109
154
  DOUBLE_FIELD_NUMBER: builtins.int
110
155
  SINT64_FIELD_NUMBER: builtins.int
111
156
  UINT64_FIELD_NUMBER: builtins.int
@@ -114,33 +159,36 @@ class MetricRecordValue(google.protobuf.message.Message):
114
159
  UINT_LIST_FIELD_NUMBER: builtins.int
115
160
  double: builtins.float
116
161
  """Single element"""
117
-
118
162
  sint64: builtins.int
119
163
  uint64: builtins.int
120
164
  @property
121
165
  def double_list(self) -> global___DoubleList:
122
166
  """List types"""
123
- pass
167
+
124
168
  @property
125
169
  def sint_list(self) -> global___SintList: ...
126
170
  @property
127
171
  def uint_list(self) -> global___UintList: ...
128
- def __init__(self,
172
+ def __init__(
173
+ self,
129
174
  *,
130
175
  double: builtins.float = ...,
131
176
  sint64: builtins.int = ...,
132
177
  uint64: builtins.int = ...,
133
- double_list: typing.Optional[global___DoubleList] = ...,
134
- sint_list: typing.Optional[global___SintList] = ...,
135
- uint_list: typing.Optional[global___UintList] = ...,
136
- ) -> None: ...
137
- def HasField(self, field_name: typing_extensions.Literal["double",b"double","double_list",b"double_list","sint64",b"sint64","sint_list",b"sint_list","uint64",b"uint64","uint_list",b"uint_list","value",b"value"]) -> builtins.bool: ...
138
- def ClearField(self, field_name: typing_extensions.Literal["double",b"double","double_list",b"double_list","sint64",b"sint64","sint_list",b"sint_list","uint64",b"uint64","uint_list",b"uint_list","value",b"value"]) -> None: ...
139
- def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["double","sint64","uint64","double_list","sint_list","uint_list"]]: ...
178
+ double_list: global___DoubleList | None = ...,
179
+ sint_list: global___SintList | None = ...,
180
+ uint_list: global___UintList | None = ...,
181
+ ) -> None: ...
182
+ def HasField(self, field_name: typing.Literal["double", b"double", "double_list", b"double_list", "sint64", b"sint64", "sint_list", b"sint_list", "uint64", b"uint64", "uint_list", b"uint_list", "value", b"value"]) -> builtins.bool: ...
183
+ def ClearField(self, field_name: typing.Literal["double", b"double", "double_list", b"double_list", "sint64", b"sint64", "sint_list", b"sint_list", "uint64", b"uint64", "uint_list", b"uint_list", "value", b"value"]) -> None: ...
184
+ def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["double", "sint64", "uint64", "double_list", "sint_list", "uint_list"] | None: ...
185
+
140
186
  global___MetricRecordValue = MetricRecordValue
141
187
 
188
+ @typing.final
142
189
  class ConfigRecordValue(google.protobuf.message.Message):
143
190
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
191
+
144
192
  DOUBLE_FIELD_NUMBER: builtins.int
145
193
  SINT64_FIELD_NUMBER: builtins.int
146
194
  UINT64_FIELD_NUMBER: builtins.int
@@ -155,16 +203,15 @@ class ConfigRecordValue(google.protobuf.message.Message):
155
203
  BYTES_LIST_FIELD_NUMBER: builtins.int
156
204
  double: builtins.float
157
205
  """Single element"""
158
-
159
206
  sint64: builtins.int
160
207
  uint64: builtins.int
161
208
  bool: builtins.bool
162
- string: typing.Text
209
+ string: builtins.str
163
210
  bytes: builtins.bytes
164
211
  @property
165
212
  def double_list(self) -> global___DoubleList:
166
213
  """List types"""
167
- pass
214
+
168
215
  @property
169
216
  def sint_list(self) -> global___SintList: ...
170
217
  @property
@@ -175,139 +222,169 @@ class ConfigRecordValue(google.protobuf.message.Message):
175
222
  def string_list(self) -> global___StringList: ...
176
223
  @property
177
224
  def bytes_list(self) -> global___BytesList: ...
178
- def __init__(self,
225
+ def __init__(
226
+ self,
179
227
  *,
180
228
  double: builtins.float = ...,
181
229
  sint64: builtins.int = ...,
182
230
  uint64: builtins.int = ...,
183
231
  bool: builtins.bool = ...,
184
- string: typing.Text = ...,
232
+ string: builtins.str = ...,
185
233
  bytes: builtins.bytes = ...,
186
- double_list: typing.Optional[global___DoubleList] = ...,
187
- sint_list: typing.Optional[global___SintList] = ...,
188
- uint_list: typing.Optional[global___UintList] = ...,
189
- bool_list: typing.Optional[global___BoolList] = ...,
190
- string_list: typing.Optional[global___StringList] = ...,
191
- bytes_list: typing.Optional[global___BytesList] = ...,
192
- ) -> None: ...
193
- def HasField(self, field_name: typing_extensions.Literal["bool",b"bool","bool_list",b"bool_list","bytes",b"bytes","bytes_list",b"bytes_list","double",b"double","double_list",b"double_list","sint64",b"sint64","sint_list",b"sint_list","string",b"string","string_list",b"string_list","uint64",b"uint64","uint_list",b"uint_list","value",b"value"]) -> builtins.bool: ...
194
- def ClearField(self, field_name: typing_extensions.Literal["bool",b"bool","bool_list",b"bool_list","bytes",b"bytes","bytes_list",b"bytes_list","double",b"double","double_list",b"double_list","sint64",b"sint64","sint_list",b"sint_list","string",b"string","string_list",b"string_list","uint64",b"uint64","uint_list",b"uint_list","value",b"value"]) -> None: ...
195
- def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["double","sint64","uint64","bool","string","bytes","double_list","sint_list","uint_list","bool_list","string_list","bytes_list"]]: ...
234
+ double_list: global___DoubleList | None = ...,
235
+ sint_list: global___SintList | None = ...,
236
+ uint_list: global___UintList | None = ...,
237
+ bool_list: global___BoolList | None = ...,
238
+ string_list: global___StringList | None = ...,
239
+ bytes_list: global___BytesList | None = ...,
240
+ ) -> None: ...
241
+ def HasField(self, field_name: typing.Literal["bool", b"bool", "bool_list", b"bool_list", "bytes", b"bytes", "bytes_list", b"bytes_list", "double", b"double", "double_list", b"double_list", "sint64", b"sint64", "sint_list", b"sint_list", "string", b"string", "string_list", b"string_list", "uint64", b"uint64", "uint_list", b"uint_list", "value", b"value"]) -> builtins.bool: ...
242
+ def ClearField(self, field_name: typing.Literal["bool", b"bool", "bool_list", b"bool_list", "bytes", b"bytes", "bytes_list", b"bytes_list", "double", b"double", "double_list", b"double_list", "sint64", b"sint64", "sint_list", b"sint_list", "string", b"string", "string_list", b"string_list", "uint64", b"uint64", "uint_list", b"uint_list", "value", b"value"]) -> None: ...
243
+ def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["double", "sint64", "uint64", "bool", "string", "bytes", "double_list", "sint_list", "uint_list", "bool_list", "string_list", "bytes_list"] | None: ...
244
+
196
245
  global___ConfigRecordValue = ConfigRecordValue
197
246
 
247
+ @typing.final
198
248
  class ArrayRecord(google.protobuf.message.Message):
199
249
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
250
+
251
+ @typing.final
200
252
  class Item(google.protobuf.message.Message):
201
253
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
254
+
202
255
  KEY_FIELD_NUMBER: builtins.int
203
256
  VALUE_FIELD_NUMBER: builtins.int
204
- key: typing.Text
257
+ key: builtins.str
205
258
  @property
206
259
  def value(self) -> global___Array: ...
207
- def __init__(self,
260
+ def __init__(
261
+ self,
208
262
  *,
209
- key: typing.Text = ...,
210
- value: typing.Optional[global___Array] = ...,
211
- ) -> None: ...
212
- def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
213
- def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
263
+ key: builtins.str = ...,
264
+ value: global___Array | None = ...,
265
+ ) -> None: ...
266
+ def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
267
+ def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
214
268
 
215
269
  ITEMS_FIELD_NUMBER: builtins.int
216
270
  @property
217
271
  def items(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ArrayRecord.Item]: ...
218
- def __init__(self,
272
+ def __init__(
273
+ self,
219
274
  *,
220
- items: typing.Optional[typing.Iterable[global___ArrayRecord.Item]] = ...,
221
- ) -> None: ...
222
- def ClearField(self, field_name: typing_extensions.Literal["items",b"items"]) -> None: ...
275
+ items: collections.abc.Iterable[global___ArrayRecord.Item] | None = ...,
276
+ ) -> None: ...
277
+ def ClearField(self, field_name: typing.Literal["items", b"items"]) -> None: ...
278
+
223
279
  global___ArrayRecord = ArrayRecord
224
280
 
281
+ @typing.final
225
282
  class MetricRecord(google.protobuf.message.Message):
226
283
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
284
+
285
+ @typing.final
227
286
  class Item(google.protobuf.message.Message):
228
287
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
288
+
229
289
  KEY_FIELD_NUMBER: builtins.int
230
290
  VALUE_FIELD_NUMBER: builtins.int
231
- key: typing.Text
291
+ key: builtins.str
232
292
  @property
233
293
  def value(self) -> global___MetricRecordValue: ...
234
- def __init__(self,
294
+ def __init__(
295
+ self,
235
296
  *,
236
- key: typing.Text = ...,
237
- value: typing.Optional[global___MetricRecordValue] = ...,
238
- ) -> None: ...
239
- def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
240
- def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
297
+ key: builtins.str = ...,
298
+ value: global___MetricRecordValue | None = ...,
299
+ ) -> None: ...
300
+ def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
301
+ def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
241
302
 
242
303
  ITEMS_FIELD_NUMBER: builtins.int
243
304
  @property
244
305
  def items(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MetricRecord.Item]: ...
245
- def __init__(self,
306
+ def __init__(
307
+ self,
246
308
  *,
247
- items: typing.Optional[typing.Iterable[global___MetricRecord.Item]] = ...,
248
- ) -> None: ...
249
- def ClearField(self, field_name: typing_extensions.Literal["items",b"items"]) -> None: ...
309
+ items: collections.abc.Iterable[global___MetricRecord.Item] | None = ...,
310
+ ) -> None: ...
311
+ def ClearField(self, field_name: typing.Literal["items", b"items"]) -> None: ...
312
+
250
313
  global___MetricRecord = MetricRecord
251
314
 
315
+ @typing.final
252
316
  class ConfigRecord(google.protobuf.message.Message):
253
317
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
318
+
319
+ @typing.final
254
320
  class Item(google.protobuf.message.Message):
255
321
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
322
+
256
323
  KEY_FIELD_NUMBER: builtins.int
257
324
  VALUE_FIELD_NUMBER: builtins.int
258
- key: typing.Text
325
+ key: builtins.str
259
326
  @property
260
327
  def value(self) -> global___ConfigRecordValue: ...
261
- def __init__(self,
328
+ def __init__(
329
+ self,
262
330
  *,
263
- key: typing.Text = ...,
264
- value: typing.Optional[global___ConfigRecordValue] = ...,
265
- ) -> None: ...
266
- def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
267
- def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
331
+ key: builtins.str = ...,
332
+ value: global___ConfigRecordValue | None = ...,
333
+ ) -> None: ...
334
+ def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
335
+ def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
268
336
 
269
337
  ITEMS_FIELD_NUMBER: builtins.int
270
338
  @property
271
339
  def items(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConfigRecord.Item]: ...
272
- def __init__(self,
340
+ def __init__(
341
+ self,
273
342
  *,
274
- items: typing.Optional[typing.Iterable[global___ConfigRecord.Item]] = ...,
275
- ) -> None: ...
276
- def ClearField(self, field_name: typing_extensions.Literal["items",b"items"]) -> None: ...
343
+ items: collections.abc.Iterable[global___ConfigRecord.Item] | None = ...,
344
+ ) -> None: ...
345
+ def ClearField(self, field_name: typing.Literal["items", b"items"]) -> None: ...
346
+
277
347
  global___ConfigRecord = ConfigRecord
278
348
 
349
+ @typing.final
279
350
  class RecordDict(google.protobuf.message.Message):
280
351
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
352
+
353
+ @typing.final
281
354
  class Item(google.protobuf.message.Message):
282
355
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
356
+
283
357
  KEY_FIELD_NUMBER: builtins.int
284
358
  ARRAY_RECORD_FIELD_NUMBER: builtins.int
285
359
  METRIC_RECORD_FIELD_NUMBER: builtins.int
286
360
  CONFIG_RECORD_FIELD_NUMBER: builtins.int
287
- key: typing.Text
361
+ key: builtins.str
288
362
  @property
289
363
  def array_record(self) -> global___ArrayRecord: ...
290
364
  @property
291
365
  def metric_record(self) -> global___MetricRecord: ...
292
366
  @property
293
367
  def config_record(self) -> global___ConfigRecord: ...
294
- def __init__(self,
368
+ def __init__(
369
+ self,
295
370
  *,
296
- key: typing.Text = ...,
297
- array_record: typing.Optional[global___ArrayRecord] = ...,
298
- metric_record: typing.Optional[global___MetricRecord] = ...,
299
- config_record: typing.Optional[global___ConfigRecord] = ...,
300
- ) -> None: ...
301
- def HasField(self, field_name: typing_extensions.Literal["array_record",b"array_record","config_record",b"config_record","metric_record",b"metric_record","value",b"value"]) -> builtins.bool: ...
302
- def ClearField(self, field_name: typing_extensions.Literal["array_record",b"array_record","config_record",b"config_record","key",b"key","metric_record",b"metric_record","value",b"value"]) -> None: ...
303
- def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["array_record","metric_record","config_record"]]: ...
371
+ key: builtins.str = ...,
372
+ array_record: global___ArrayRecord | None = ...,
373
+ metric_record: global___MetricRecord | None = ...,
374
+ config_record: global___ConfigRecord | None = ...,
375
+ ) -> None: ...
376
+ def HasField(self, field_name: typing.Literal["array_record", b"array_record", "config_record", b"config_record", "metric_record", b"metric_record", "value", b"value"]) -> builtins.bool: ...
377
+ def ClearField(self, field_name: typing.Literal["array_record", b"array_record", "config_record", b"config_record", "key", b"key", "metric_record", b"metric_record", "value", b"value"]) -> None: ...
378
+ def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["array_record", "metric_record", "config_record"] | None: ...
304
379
 
305
380
  ITEMS_FIELD_NUMBER: builtins.int
306
381
  @property
307
382
  def items(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RecordDict.Item]: ...
308
- def __init__(self,
383
+ def __init__(
384
+ self,
309
385
  *,
310
- items: typing.Optional[typing.Iterable[global___RecordDict.Item]] = ...,
311
- ) -> None: ...
312
- def ClearField(self, field_name: typing_extensions.Literal["items",b"items"]) -> None: ...
386
+ items: collections.abc.Iterable[global___RecordDict.Item] | None = ...,
387
+ ) -> None: ...
388
+ def ClearField(self, field_name: typing.Literal["items", b"items"]) -> None: ...
389
+
313
390
  global___RecordDict = RecordDict
@@ -1,4 +1,24 @@
1
1
  # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
2
  """Client and server classes corresponding to protobuf-defined services."""
3
3
  import grpc
4
+ import warnings
4
5
 
6
+
7
+ GRPC_GENERATED_VERSION = '1.70.0'
8
+ GRPC_VERSION = grpc.__version__
9
+ _version_not_supported = False
10
+
11
+ try:
12
+ from grpc._utilities import first_version_is_lower
13
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
14
+ except ImportError:
15
+ _version_not_supported = True
16
+
17
+ if _version_not_supported:
18
+ raise RuntimeError(
19
+ f'The grpc package installed is at version {GRPC_VERSION},'
20
+ + f' but the generated code in flwr/proto/recorddict_pb2_grpc.py depends on'
21
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
22
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
23
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
24
+ )
@@ -1,4 +1,31 @@
1
1
  """
2
2
  @generated by mypy-protobuf. Do not edit manually!
3
3
  isort:skip_file
4
+ Copyright 2024 Flower Labs GmbH. All Rights Reserved.
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ ==============================================================================
4
18
  """
19
+
20
+ import abc
21
+ import collections.abc
22
+ import grpc
23
+ import grpc.aio
24
+ import typing
25
+
26
+ _T = typing.TypeVar("_T")
27
+
28
+ class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ...
29
+
30
+ class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg]
31
+ ...