flwr-nightly 1.20.0.dev20250702__py3-none-any.whl → 1.20.0.dev20250704__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/cli/utils.py CHANGED
@@ -320,7 +320,7 @@ def flwr_cli_grpc_exc_handler() -> Iterator[None]:
320
320
  raise typer.Exit(code=1) from None
321
321
  if e.code() == grpc.StatusCode.PERMISSION_DENIED:
322
322
  typer.secho(
323
- "❌ Permission denied. Please contact the SuperLink administrator.",
323
+ "❌ Permission denied.",
324
324
  fg=typer.colors.RED,
325
325
  bold=True,
326
326
  )
@@ -30,6 +30,7 @@ class ExitCode:
30
30
  # SuperLink-specific exit codes (100-199)
31
31
  SUPERLINK_THREAD_CRASH = 100
32
32
  SUPERLINK_LICENSE_INVALID = 101
33
+ SUPERLINK_LICENSE_MISSING = 102
33
34
 
34
35
  # ServerApp-specific exit codes (200-299)
35
36
 
@@ -65,6 +66,10 @@ EXIT_CODE_HELP = {
65
66
  "The license is invalid or has expired. "
66
67
  "Please contact `hello@flower.ai` for assistance."
67
68
  ),
69
+ ExitCode.SUPERLINK_LICENSE_MISSING: (
70
+ "The license is missing. Please specify the license key by setting the "
71
+ "environment variable `FLWR_LICENSE_KEY`."
72
+ ),
68
73
  # ServerApp-specific exit codes (200-299)
69
74
  # SuperNode-specific exit codes (300-399)
70
75
  ExitCode.SUPERNODE_REST_ADDRESS_INVALID: (
@@ -77,7 +82,7 @@ EXIT_CODE_HELP = {
77
82
  "to be provided (providing only one of them is not sufficient)."
78
83
  ),
79
84
  ExitCode.SUPERNODE_NODE_AUTH_KEYS_INVALID: (
80
- "Node uthentication requires elliptic curve private and public key pair. "
85
+ "Node authentication requires elliptic curve private and public key pair. "
81
86
  "Please ensure that the file path points to a valid private/public key "
82
87
  "file and try again."
83
88
  ),
@@ -58,7 +58,11 @@ class ExecLicenseInterceptor(grpc.ServerInterceptor): # type: ignore
58
58
  call = method_handler.unary_unary or method_handler.unary_stream
59
59
 
60
60
  if not self.license_plugin.check_license():
61
- context.abort(grpc.StatusCode.PERMISSION_DENIED, "License check failed")
61
+ context.abort(
62
+ grpc.StatusCode.PERMISSION_DENIED,
63
+ "❗️ License check failed. Please contact the SuperLink "
64
+ "administrator.",
65
+ )
62
66
  raise grpc.RpcError()
63
67
 
64
68
  return call(request, context) # type: ignore
@@ -108,7 +108,9 @@ class ExecUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore
108
108
  # Check if the user is authorized
109
109
  if not self.authz_plugin.verify_user_authorization(account_info):
110
110
  context.abort(
111
- grpc.StatusCode.PERMISSION_DENIED, "User not authorized"
111
+ grpc.StatusCode.PERMISSION_DENIED,
112
+ "❗️ User not authorized. "
113
+ "Please contact the SuperLink administrator.",
112
114
  )
113
115
  raise grpc.RpcError()
114
116
  return call(request, context) # type: ignore
@@ -127,7 +129,9 @@ class ExecUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore
127
129
  # Check if the user is authorized
128
130
  if not self.authz_plugin.verify_user_authorization(account_info):
129
131
  context.abort(
130
- grpc.StatusCode.PERMISSION_DENIED, "User not authorized"
132
+ grpc.StatusCode.PERMISSION_DENIED,
133
+ "❗️ User not authorized. "
134
+ "Please contact the SuperLink administrator.",
131
135
  )
132
136
  raise grpc.RpcError()
133
137
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.20.0.dev20250702
3
+ Version: 1.20.0.dev20250704
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
@@ -73,7 +73,7 @@ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=3-gDei-K7zskh5dD
73
73
  flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
74
74
  flwr/cli/run/run.py,sha256=psmr215gkV0e0QtX9NFp7KUwKSA_ZwekdJmoL1zFyfw,8478
75
75
  flwr/cli/stop.py,sha256=l8DcRkA---CESVJgc7iTHLWIBAPGxWIfoem8qSU3lZQ,4972
76
- flwr/cli/utils.py,sha256=X7Jdvwf70bkOpKynFgMGVYPMDxLQiSVG8Y3G1Y9iRjs,12009
76
+ flwr/cli/utils.py,sha256=Y2VSSsgPeWMjTdezXfrDWvCwYIabmvnsRYXssDt_MBQ,11965
77
77
  flwr/client/__init__.py,sha256=boIhKaK6I977zrILmoTutNx94x5jB0e6F1gnAjaRJnI,1250
78
78
  flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
79
79
  flwr/client/client_app.py,sha256=zVhi-l3chAb06ozFsKwix3hU_RpOLjST13Ha50AVIPE,16918
@@ -118,7 +118,7 @@ flwr/common/event_log_plugin/__init__.py,sha256=ts3VAL3Fk6Grp1EK_1Qg_V-BfOof9F86
118
118
  flwr/common/event_log_plugin/event_log_plugin.py,sha256=eK8OaDFagQRwqpb9eV0cJcm2ErtEBpMxFbhxJNx6n5w,2061
119
119
  flwr/common/exit/__init__.py,sha256=-ZOJYLaNnR729a7VzZiFsLiqngzKQh3xc27svYStZ_Q,826
120
120
  flwr/common/exit/exit.py,sha256=mJgbqMlVlwAgYtq-Vedj53wO4VxcDcy_P-GzqGK-1GQ,3452
121
- flwr/common/exit/exit_code.py,sha256=rvr9ftYL3yp9vJF0epkx8S61R1xcivgPPBJsiS_al9A,3664
121
+ flwr/common/exit/exit_code.py,sha256=qpOQsh2-TNJosxrGpR-rKnLBiv5lnl_2sClNoDblAW4,3882
122
122
  flwr/common/exit_handlers.py,sha256=IaqJ60fXZuu7McaRYnoYKtlbH9t4Yl9goNExKqtmQbs,4304
123
123
  flwr/common/grpc.py,sha256=manTaHaPiyYngUq1ErZvvV2B2GxlXUUUGRy3jc3TBIQ,9798
124
124
  flwr/common/heartbeat.py,sha256=SyEpNDnmJ0lni0cWO67rcoJVKasCLmkNHm3dKLeNrLU,5749
@@ -344,9 +344,9 @@ flwr/superexec/app.py,sha256=U2jjOHb2LGWoU7vrl9_czTzre9O2mPxu3CPGUZ86sK4,1465
344
344
  flwr/superexec/deployment.py,sha256=cFxhFom-0zv93HLNjNcUdBy3Sf6JwshRoXPQtcZunF0,6797
345
345
  flwr/superexec/exec_event_log_interceptor.py,sha256=7aBjZ4lkpOIyWut0s394OpMePr16g_Te594s-9aDM9Q,5774
346
346
  flwr/superexec/exec_grpc.py,sha256=xyyxrhPQLGX7tafGadv5DXLUzVoUIkGLd53_raOfNHk,4202
347
- flwr/superexec/exec_license_interceptor.py,sha256=-BZPO-ZwtrPYumcDNdEh2QZK4uX-tuYBsZqKuDK0MZ8,3026
347
+ flwr/superexec/exec_license_interceptor.py,sha256=Wg6Wt4ZdSOFDEPAtI7TQZbkLSJc0x8KJ5Xk_5iWyc74,3160
348
348
  flwr/superexec/exec_servicer.py,sha256=c0nwdFBiS6CbKrRA7ffOpsgASOLeaRV_ICwxDfxNGAg,12498
349
- flwr/superexec/exec_user_auth_interceptor.py,sha256=HpGHTcDKzB7XUiQHXgntNVFYL-VfP9Wj5tEVc04VOOw,5820
349
+ flwr/superexec/exec_user_auth_interceptor.py,sha256=AQnSb7dpVeuHR0BMyUcUJeBTXllnnrPygMVErBfTkiI,6028
350
350
  flwr/superexec/executor.py,sha256=LaErHRJvNggjWV6FI6eajgKfnwOvSv2UqzFH253yDro,3265
351
351
  flwr/superexec/simulation.py,sha256=62rSLcS-1wnMsMsafSQuIDLs5ZS6Ail1spkZ-alNNTg,4156
352
352
  flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
@@ -364,7 +364,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
364
364
  flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
365
365
  flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=d3GdIabycUoDBDL_eVlt513knGSjQW3-9lG6Cw4QEk4,5719
366
366
  flwr/supernode/start_client_internal.py,sha256=DAXuReZ1FCXt9Y1KbM0p-dI50ROWPEJXzfKrl14OE6k,18233
367
- flwr_nightly-1.20.0.dev20250702.dist-info/METADATA,sha256=8d9q2wvhlW2COoXbSpdskVn_hi20csCHmYKHe9SYM-o,15910
368
- flwr_nightly-1.20.0.dev20250702.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
369
- flwr_nightly-1.20.0.dev20250702.dist-info/entry_points.txt,sha256=jNpDXGBGgs21RqUxelF_jwGaxtqFwm-MQyfz-ZqSjrA,367
370
- flwr_nightly-1.20.0.dev20250702.dist-info/RECORD,,
367
+ flwr_nightly-1.20.0.dev20250704.dist-info/METADATA,sha256=xIxyFotU6joGiiu2-zmyadLLFm7tW5vb8OCZukeKTTU,15910
368
+ flwr_nightly-1.20.0.dev20250704.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
369
+ flwr_nightly-1.20.0.dev20250704.dist-info/entry_points.txt,sha256=jNpDXGBGgs21RqUxelF_jwGaxtqFwm-MQyfz-ZqSjrA,367
370
+ flwr_nightly-1.20.0.dev20250704.dist-info/RECORD,,