flwr-nightly 1.21.0.dev20250907__py3-none-any.whl → 1.21.0.dev20250908__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.
flwr/app/__init__.py CHANGED
@@ -15,19 +15,28 @@
15
15
  """Public Flower App APIs."""
16
16
 
17
17
 
18
+ from flwr.common.constant import MessageType
18
19
  from flwr.common.context import Context
19
20
  from flwr.common.message import Message
20
- from flwr.common.record import ArrayRecord, ConfigRecord, MetricRecord, RecordDict
21
+ from flwr.common.record import (
22
+ Array,
23
+ ArrayRecord,
24
+ ConfigRecord,
25
+ MetricRecord,
26
+ RecordDict,
27
+ )
21
28
 
22
29
  from .error import Error
23
30
  from .metadata import Metadata
24
31
 
25
32
  __all__ = [
33
+ "Array",
26
34
  "ArrayRecord",
27
35
  "ConfigRecord",
28
36
  "Context",
29
37
  "Error",
30
38
  "Message",
39
+ "MessageType",
31
40
  "Metadata",
32
41
  "MetricRecord",
33
42
  "RecordDict",
flwr/cli/utils.py CHANGED
@@ -32,6 +32,7 @@ from flwr.common.constant import (
32
32
  AUTH_TYPE_JSON_KEY,
33
33
  CREDENTIALS_DIR,
34
34
  FLWR_DIR,
35
+ NO_USER_AUTH_MESSAGE,
35
36
  RUN_ID_NOT_FOUND_MESSAGE,
36
37
  )
37
38
  from flwr.common.grpc import (
@@ -312,11 +313,21 @@ def flwr_cli_grpc_exc_handler() -> Iterator[None]:
312
313
  )
313
314
  raise typer.Exit(code=1) from None
314
315
  if e.code() == grpc.StatusCode.UNIMPLEMENTED:
315
- typer.secho(
316
- "❌ User authentication is not enabled on this SuperLink.",
317
- fg=typer.colors.RED,
318
- bold=True,
319
- )
316
+ if e.details() == NO_USER_AUTH_MESSAGE: # pylint: disable=E1101
317
+ typer.secho(
318
+ "❌ User authentication is not enabled on this SuperLink.",
319
+ fg=typer.colors.RED,
320
+ bold=True,
321
+ )
322
+ else:
323
+ typer.secho(
324
+ "❌ The SuperLink cannot process this request. Please verify that "
325
+ "you set the address to its Control API endpoint correctly in your "
326
+ "`pyproject.toml`, and ensure that the Flower versions used by "
327
+ "the CLI and SuperLink are compatible.",
328
+ fg=typer.colors.RED,
329
+ bold=True,
330
+ )
320
331
  raise typer.Exit(code=1) from None
321
332
  if e.code() == grpc.StatusCode.PERMISSION_DENIED:
322
333
  typer.secho(
@@ -324,7 +335,7 @@ def flwr_cli_grpc_exc_handler() -> Iterator[None]:
324
335
  fg=typer.colors.RED,
325
336
  bold=True,
326
337
  )
327
- # pylint: disable=E1101
338
+ # pylint: disable-next=E1101
328
339
  typer.secho(e.details(), fg=typer.colors.RED, bold=True)
329
340
  raise typer.Exit(code=1) from None
330
341
  if e.code() == grpc.StatusCode.UNAVAILABLE:
@@ -337,7 +348,7 @@ def flwr_cli_grpc_exc_handler() -> Iterator[None]:
337
348
  raise typer.Exit(code=1) from None
338
349
  if (
339
350
  e.code() == grpc.StatusCode.NOT_FOUND
340
- and e.details() == RUN_ID_NOT_FOUND_MESSAGE
351
+ and e.details() == RUN_ID_NOT_FOUND_MESSAGE # pylint: disable=E1101
341
352
  ):
342
353
  typer.secho(
343
354
  "❌ Run ID not found.",
flwr/common/constant.py CHANGED
@@ -154,6 +154,7 @@ PULL_BACKOFF_CAP = 10 # Maximum backoff time for pulling objects
154
154
 
155
155
  # ControlServicer constants
156
156
  RUN_ID_NOT_FOUND_MESSAGE = "Run ID not found"
157
+ NO_USER_AUTH_MESSAGE = "ControlServicer initialized without user authentication"
157
158
 
158
159
 
159
160
  class MessageType:
@@ -29,6 +29,7 @@ from flwr.common.auth_plugin import ControlAuthPlugin
29
29
  from flwr.common.constant import (
30
30
  FAB_MAX_SIZE,
31
31
  LOG_STREAM_INTERVAL,
32
+ NO_USER_AUTH_MESSAGE,
32
33
  RUN_ID_NOT_FOUND_MESSAGE,
33
34
  Status,
34
35
  SubStatus,
@@ -291,7 +292,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
291
292
  if self.auth_plugin is None:
292
293
  context.abort(
293
294
  grpc.StatusCode.UNIMPLEMENTED,
294
- "ControlServicer initialized without user authentication",
295
+ NO_USER_AUTH_MESSAGE,
295
296
  )
296
297
  raise grpc.RpcError() # This line is unreachable
297
298
 
@@ -318,7 +319,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
318
319
  if self.auth_plugin is None:
319
320
  context.abort(
320
321
  grpc.StatusCode.UNIMPLEMENTED,
321
- "ControlServicer initialized without user authentication",
322
+ NO_USER_AUTH_MESSAGE,
322
323
  )
323
324
  raise grpc.RpcError() # This line is unreachable
324
325
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.21.0.dev20250907
3
+ Version: 1.21.0.dev20250908
4
4
  Summary: Flower: A Friendly Federated AI Framework
5
5
  License: Apache-2.0
6
6
  Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
@@ -1,5 +1,5 @@
1
1
  flwr/__init__.py,sha256=CXTKPZSm83CVKTxw9j_ge6AEVnqgd1rlcsm_2kPoVkU,1009
2
- flwr/app/__init__.py,sha256=msr0FM9Iz56oZgWU3jjP58BKHxvo9tiDeiGLEbPWWeY,1086
2
+ flwr/app/__init__.py,sha256=Pqg1iWx_TiBuGYeGJnS1QgYYWcAnPnZ2h4Y5iacNSls,1195
3
3
  flwr/app/error.py,sha256=0PwA-E_CAs5P_nWAA0kksVO1A44t4CNLEf7u-Su-uJ0,2342
4
4
  flwr/app/exception.py,sha256=dAKSNrdh9YqKZTdYaN8hts4dAMVZHfNDV-ytzYby0LQ,1246
5
5
  flwr/app/metadata.py,sha256=rdMBn0zhIOYmCvmGENQWSQqDwcxwsMJzCle4PQdlc_Y,7331
@@ -79,7 +79,7 @@ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=mK8wOWqoQOVxZG6-
79
79
  flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
80
80
  flwr/cli/run/run.py,sha256=ECa0kup9dn15O70H74QdgUsEaeErbzDqVX_U0zZO5IM,8173
81
81
  flwr/cli/stop.py,sha256=TR9F61suTxNUzGIktUdoBhXwdRtCdvzGhy3qCuvcfBg,5000
82
- flwr/cli/utils.py,sha256=fkyiWXWfXo5fS_sACw8Rg9wweq3RQ7XvEUEAa_caqkE,12349
82
+ flwr/cli/utils.py,sha256=tTI8PyJdA8BU1PoTS8ZItdCM5EVTeze_Z1zumffYY6A,12963
83
83
  flwr/client/__init__.py,sha256=boIhKaK6I977zrILmoTutNx94x5jB0e6F1gnAjaRJnI,1250
84
84
  flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
85
85
  flwr/client/client_app.py,sha256=zVhi-l3chAb06ozFsKwix3hU_RpOLjST13Ha50AVIPE,16918
@@ -115,7 +115,7 @@ flwr/common/args.py,sha256=Nq2u4yePbkSY0CWFamn0hZY6Rms8G1xYDeDGIcLIITE,5849
115
115
  flwr/common/auth_plugin/__init__.py,sha256=DktrRcGZrRarLf7Jb_UlHtOyLp9_-kEplyq6PS5-vOA,988
116
116
  flwr/common/auth_plugin/auth_plugin.py,sha256=mM7SuphO4OsVAVJR1GErYVgYT83ZjxDzS_gha12bT9E,4855
117
117
  flwr/common/config.py,sha256=glcZDjco-amw1YfQcYTFJ4S1pt9APoexT-mf1QscuHs,13960
118
- flwr/common/constant.py,sha256=0w5GCaW078GMj_VMQX-Lb7OQDnA70GmWZMzufDvGv6E,8769
118
+ flwr/common/constant.py,sha256=FXG5HqwQG-mQXgfptHn4jTaXD4Y_kyDA1ntTKcp0qfs,8850
119
119
  flwr/common/context.py,sha256=Be8obQR_OvEDy1OmshuUKxGRQ7Qx89mf5F4xlhkR10s,2407
120
120
  flwr/common/date.py,sha256=1ZT2cRSpC2DJqprOVTLXYCR_O2_OZR0zXO_brJ3LqWc,1554
121
121
  flwr/common/differential_privacy.py,sha256=FdlpdpPl_H_2HJa8CQM1iCUGBBQ5Dc8CzxmHERM-EoE,6148
@@ -386,7 +386,7 @@ flwr/superlink/servicer/control/__init__.py,sha256=qhUTMt_Mg4lxslCJYn5hDSrA-lXf5
386
386
  flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=HauUd7Xq-b1TFZmZVl9wpBITfDttn8-1_KhlEq-HJ8M,5966
387
387
  flwr/superlink/servicer/control/control_grpc.py,sha256=DUGArJvH3oZasutEU55NtYm0ZukPEO92UKhzOGu3qu8,4079
388
388
  flwr/superlink/servicer/control/control_license_interceptor.py,sha256=T3AzmRt-PPwyTq3hrdpmZHQd5_CpPOk7TtnFZrB-JRY,3349
389
- flwr/superlink/servicer/control/control_servicer.py,sha256=5GMGcq5_Hvac7DpVg8TWUZbjVibS2B-yRlcSX2U6zeM,13962
389
+ flwr/superlink/servicer/control/control_servicer.py,sha256=RFttpc1O0pYBaru1SXE6v3hUoNfgR3_ijN02bSVhDsM,13914
390
390
  flwr/superlink/servicer/control/control_user_auth_interceptor.py,sha256=9Aqhrt_UX80FXbIQVXUrqDHs5rD5CA7vEn0Bh-zPiYU,6232
391
391
  flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
392
392
  flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
@@ -402,7 +402,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
402
402
  flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
403
403
  flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=nIHRu38EWK-rpNOkcgBRAAKwYQQWFeCwu0lkO7OPZGQ,10239
404
404
  flwr/supernode/start_client_internal.py,sha256=Y9S1-QlO2WP6eo4JvWzIpfaCoh2aoE7bjEYyxNNnlyg,20777
405
- flwr_nightly-1.21.0.dev20250907.dist-info/METADATA,sha256=aXiTtgUb9RiTyRE9PmLM1etPKZRJ2B_1DbRko2ZfS54,15967
406
- flwr_nightly-1.21.0.dev20250907.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
407
- flwr_nightly-1.21.0.dev20250907.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
408
- flwr_nightly-1.21.0.dev20250907.dist-info/RECORD,,
405
+ flwr_nightly-1.21.0.dev20250908.dist-info/METADATA,sha256=sOTcMr6_KLxcsaYqX3eou2bVcol4pTiC94t3qJOKZAA,15967
406
+ flwr_nightly-1.21.0.dev20250908.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
407
+ flwr_nightly-1.21.0.dev20250908.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
408
+ flwr_nightly-1.21.0.dev20250908.dist-info/RECORD,,