flwr-nightly 1.11.0.dev20240828__py3-none-any.whl → 1.11.0.dev20240829__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.

Potentially problematic release.


This version of flwr-nightly might be problematic. Click here for more details.

flwr/client/__init__.py CHANGED
@@ -20,8 +20,6 @@ from .app import start_numpy_client as start_numpy_client
20
20
  from .client import Client as Client
21
21
  from .client_app import ClientApp as ClientApp
22
22
  from .numpy_client import NumPyClient as NumPyClient
23
- from .supernode import run_client_app as run_client_app
24
- from .supernode import run_supernode as run_supernode
25
23
  from .typing import ClientFn as ClientFn
26
24
  from .typing import ClientFnExt as ClientFnExt
27
25
 
@@ -32,8 +30,6 @@ __all__ = [
32
30
  "ClientFnExt",
33
31
  "NumPyClient",
34
32
  "mod",
35
- "run_client_app",
36
- "run_supernode",
37
33
  "start_client",
38
34
  "start_numpy_client",
39
35
  ]
@@ -17,11 +17,13 @@
17
17
 
18
18
  import base64
19
19
  import collections
20
+ from logging import WARNING
20
21
  from typing import Any, Callable, Optional, Sequence, Tuple, Union
21
22
 
22
23
  import grpc
23
24
  from cryptography.hazmat.primitives.asymmetric import ec
24
25
 
26
+ from flwr.common.logger import log
25
27
  from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
26
28
  bytes_to_public_key,
27
29
  compute_hmac,
@@ -151,8 +153,15 @@ class AuthenticateClientInterceptor(grpc.UnaryUnaryClientInterceptor): # type:
151
153
  server_public_key_bytes = base64.urlsafe_b64decode(
152
154
  _get_value_from_tuples(_PUBLIC_KEY_HEADER, response.initial_metadata())
153
155
  )
154
- self.server_public_key = bytes_to_public_key(server_public_key_bytes)
155
- self.shared_secret = generate_shared_key(
156
- self.private_key, self.server_public_key
157
- )
156
+
157
+ if server_public_key_bytes != b"":
158
+ self.server_public_key = bytes_to_public_key(server_public_key_bytes)
159
+ else:
160
+ log(WARNING, "Can't get server public key, SuperLink may be offline")
161
+
162
+ if self.server_public_key is not None:
163
+ self.shared_secret = generate_shared_key(
164
+ self.private_key, self.server_public_key
165
+ )
166
+
158
167
  return response
flwr/common/telemetry.py CHANGED
@@ -132,53 +132,59 @@ class EventType(str, Enum):
132
132
  # Ping
133
133
  PING = auto()
134
134
 
135
- # Client: start_client
135
+ # --- LEGACY FUNCTIONS -------------------------------------------------------------
136
+
137
+ # Legacy: `start_client` function
136
138
  START_CLIENT_ENTER = auto()
137
139
  START_CLIENT_LEAVE = auto()
138
140
 
139
- # Server: start_server
141
+ # Legacy: `start_server` function
140
142
  START_SERVER_ENTER = auto()
141
143
  START_SERVER_LEAVE = auto()
142
144
 
143
- # Driver API
144
- RUN_DRIVER_API_ENTER = auto()
145
- RUN_DRIVER_API_LEAVE = auto()
145
+ # Legacy: `start_simulation` function
146
+ START_SIMULATION_ENTER = auto()
147
+ START_SIMULATION_LEAVE = auto()
146
148
 
147
- # Fleet API
148
- RUN_FLEET_API_ENTER = auto()
149
- RUN_FLEET_API_LEAVE = auto()
149
+ # --- `flwr` CLI -------------------------------------------------------------------
150
150
 
151
- # Driver API and Fleet API
152
- RUN_SUPERLINK_ENTER = auto()
153
- RUN_SUPERLINK_LEAVE = auto()
151
+ # Not yet implemented
154
152
 
155
- # Simulation
156
- START_SIMULATION_ENTER = auto()
157
- START_SIMULATION_LEAVE = auto()
153
+ # --- SuperExec --------------------------------------------------------------------
158
154
 
159
- # Driver: Driver
160
- DRIVER_CONNECT = auto()
161
- DRIVER_DISCONNECT = auto()
155
+ # SuperExec
156
+ RUN_SUPEREXEC_ENTER = auto()
157
+ RUN_SUPEREXEC_LEAVE = auto()
162
158
 
163
- # Driver: start_driver
164
- START_DRIVER_ENTER = auto()
165
- START_DRIVER_LEAVE = auto()
159
+ # --- Simulation Engine ------------------------------------------------------------
166
160
 
167
- # flower-client-app
168
- RUN_CLIENT_APP_ENTER = auto()
169
- RUN_CLIENT_APP_LEAVE = auto()
161
+ # CLI: flower-simulation
162
+ CLI_FLOWER_SIMULATION_ENTER = auto()
163
+ CLI_FLOWER_SIMULATION_LEAVE = auto()
170
164
 
171
- # flower-server-app
172
- RUN_SERVER_APP_ENTER = auto()
173
- RUN_SERVER_APP_LEAVE = auto()
165
+ # Python API: `run_simulation`
166
+ PYTHON_API_RUN_SIMULATION_ENTER = auto()
167
+ PYTHON_API_RUN_SIMULATION_LEAVE = auto()
174
168
 
175
- # SuperNode
169
+ # --- Deployment Engine ------------------------------------------------------------
170
+
171
+ # CLI: `flower-superlink`
172
+ RUN_SUPERLINK_ENTER = auto()
173
+ RUN_SUPERLINK_LEAVE = auto()
174
+
175
+ # CLI: `flower-supernode`
176
176
  RUN_SUPERNODE_ENTER = auto()
177
177
  RUN_SUPERNODE_LEAVE = auto()
178
178
 
179
- # SuperExec
180
- RUN_SUPEREXEC_ENTER = auto()
181
- RUN_SUPEREXEC_LEAVE = auto()
179
+ # CLI: `flower-server-app`
180
+ RUN_SERVER_APP_ENTER = auto()
181
+ RUN_SERVER_APP_LEAVE = auto()
182
+
183
+ # --- DEPRECATED -------------------------------------------------------------------
184
+
185
+ # [DEPRECATED] CLI: `flower-client-app`
186
+ RUN_CLIENT_APP_ENTER = auto()
187
+ RUN_CLIENT_APP_LEAVE = auto()
182
188
 
183
189
 
184
190
  # Use the ThreadPoolExecutor with max_workers=1 to have a queue
flwr/server/__init__.py CHANGED
@@ -17,14 +17,12 @@
17
17
 
18
18
  from . import strategy
19
19
  from . import workflow as workflow
20
- from .app import run_superlink as run_superlink
21
20
  from .app import start_server as start_server
22
21
  from .client_manager import ClientManager as ClientManager
23
22
  from .client_manager import SimpleClientManager as SimpleClientManager
24
23
  from .compat import LegacyContext as LegacyContext
25
24
  from .driver import Driver as Driver
26
25
  from .history import History as History
27
- from .run_serverapp import run_server_app as run_server_app
28
26
  from .server import Server as Server
29
27
  from .server_app import ServerApp as ServerApp
30
28
  from .server_config import ServerConfig as ServerConfig
@@ -40,8 +38,6 @@ __all__ = [
40
38
  "ServerAppComponents",
41
39
  "ServerConfig",
42
40
  "SimpleClientManager",
43
- "run_server_app",
44
- "run_superlink",
45
41
  "start_server",
46
42
  "strategy",
47
43
  "workflow",
flwr/server/compat/app.py CHANGED
@@ -18,7 +18,6 @@
18
18
  from logging import INFO
19
19
  from typing import Optional
20
20
 
21
- from flwr.common import EventType, event
22
21
  from flwr.common.logger import log
23
22
  from flwr.server.client_manager import ClientManager
24
23
  from flwr.server.history import History
@@ -65,8 +64,6 @@ def start_driver( # pylint: disable=too-many-arguments, too-many-locals
65
64
  hist : flwr.server.history.History
66
65
  Object containing training and evaluation metrics.
67
66
  """
68
- event(EventType.START_DRIVER_ENTER)
69
-
70
67
  # Initialize the Driver API server and config
71
68
  initialized_server, initialized_config = init_defaults(
72
69
  server=server,
@@ -96,6 +93,4 @@ def start_driver( # pylint: disable=too-many-arguments, too-many-locals
96
93
  f_stop.set()
97
94
  thread.join()
98
95
 
99
- event(EventType.START_SERVER_LEAVE)
100
-
101
96
  return hist
@@ -21,7 +21,7 @@ from typing import Iterable, List, Optional, cast
21
21
 
22
22
  import grpc
23
23
 
24
- from flwr.common import DEFAULT_TTL, EventType, Message, Metadata, RecordSet, event
24
+ from flwr.common import DEFAULT_TTL, Message, Metadata, RecordSet
25
25
  from flwr.common.grpc import create_channel
26
26
  from flwr.common.logger import log
27
27
  from flwr.common.serde import (
@@ -94,7 +94,6 @@ class GrpcDriver(Driver):
94
94
 
95
95
  This will not call GetRun.
96
96
  """
97
- event(EventType.DRIVER_CONNECT)
98
97
  if self._is_connected:
99
98
  log(WARNING, "Already connected")
100
99
  return
@@ -108,7 +107,6 @@ class GrpcDriver(Driver):
108
107
 
109
108
  def _disconnect(self) -> None:
110
109
  """Disconnect from the Driver API."""
111
- event(EventType.DRIVER_DISCONNECT)
112
110
  if not self._is_connected:
113
111
  log(DEBUG, "Already disconnected")
114
112
  return
@@ -109,6 +109,11 @@ def run_simulation_from_cli() -> None:
109
109
  """Run Simulation Engine from the CLI."""
110
110
  args = _parse_args_run_simulation().parse_args()
111
111
 
112
+ event(
113
+ EventType.CLI_FLOWER_SIMULATION_ENTER,
114
+ event_details={"backend": args.backend, "num-supernodes": args.num_supernodes},
115
+ )
116
+
112
117
  # Add warnings for deprecated server_app and client_app arguments
113
118
  if args.server_app:
114
119
  warn_deprecated_feature(
@@ -177,7 +182,9 @@ def run_simulation_from_cli() -> None:
177
182
  client_app_attr = app_components["clientapp"]
178
183
  server_app_attr = app_components["serverapp"]
179
184
 
180
- override_config = parse_config_args([args.run_config])
185
+ override_config = parse_config_args(
186
+ [args.run_config] if args.run_config else args.run_config
187
+ )
181
188
  fused_config = get_fused_config_from_dir(app_path, override_config)
182
189
  app_dir = args.app
183
190
  is_app = True
@@ -212,6 +219,7 @@ def run_simulation_from_cli() -> None:
212
219
  verbose_logging=args.verbose,
213
220
  server_app_run_config=fused_config,
214
221
  is_app=is_app,
222
+ exit_event=EventType.CLI_FLOWER_SIMULATION_LEAVE,
215
223
  )
216
224
 
217
225
 
@@ -265,6 +273,11 @@ def run_simulation(
265
273
  When disabled, only INFO, WARNING and ERROR log messages will be shown. If
266
274
  enabled, DEBUG-level logs will be displayed.
267
275
  """
276
+ event(
277
+ EventType.PYTHON_API_RUN_SIMULATION_ENTER,
278
+ event_details={"backend": backend_name, "num-supernodes": num_supernodes},
279
+ )
280
+
268
281
  if enable_tf_gpu_growth:
269
282
  warn_deprecated_feature_with_example(
270
283
  "Passing `enable_tf_gpu_growth=True` is deprecated.",
@@ -282,6 +295,7 @@ def run_simulation(
282
295
  backend_config=backend_config,
283
296
  enable_tf_gpu_growth=enable_tf_gpu_growth,
284
297
  verbose_logging=verbose_logging,
298
+ exit_event=EventType.PYTHON_API_RUN_SIMULATION_LEAVE,
285
299
  )
286
300
 
287
301
 
@@ -365,6 +379,7 @@ def _main_loop(
365
379
  is_app: bool,
366
380
  enable_tf_gpu_growth: bool,
367
381
  run: Run,
382
+ exit_event: EventType,
368
383
  flwr_dir: Optional[str] = None,
369
384
  client_app: Optional[ClientApp] = None,
370
385
  client_app_attr: Optional[str] = None,
@@ -372,7 +387,7 @@ def _main_loop(
372
387
  server_app_attr: Optional[str] = None,
373
388
  server_app_run_config: Optional[UserConfig] = None,
374
389
  ) -> None:
375
- """Launch SuperLink with Simulation Engine, then ServerApp on a separate thread."""
390
+ """Start ServerApp on a separate thread, then launch Simulation Engine."""
376
391
  # Initialize StateFactory
377
392
  state_factory = StateFactory(":flwr-in-memory-state:")
378
393
 
@@ -380,6 +395,7 @@ def _main_loop(
380
395
  # A Threading event to indicate if an exception was raised in the ServerApp thread
381
396
  server_app_thread_has_exception = threading.Event()
382
397
  serverapp_th = None
398
+ success = True
383
399
  try:
384
400
  # Register run
385
401
  log(DEBUG, "Pre-registering run with id %s", run.run_id)
@@ -403,8 +419,7 @@ def _main_loop(
403
419
  enable_tf_gpu_growth=enable_tf_gpu_growth,
404
420
  )
405
421
 
406
- # SuperLink with Simulation Engine
407
- event(EventType.RUN_SUPERLINK_ENTER)
422
+ # Start Simulation Engine
408
423
  vce.start_vce(
409
424
  num_supernodes=num_supernodes,
410
425
  client_app_attr=client_app_attr,
@@ -422,13 +437,13 @@ def _main_loop(
422
437
  except Exception as ex:
423
438
  log(ERROR, "An exception occurred !! %s", ex)
424
439
  log(ERROR, traceback.format_exc())
440
+ success = False
425
441
  raise RuntimeError("An error was encountered. Ending simulation.") from ex
426
442
 
427
443
  finally:
428
444
  # Trigger stop event
429
445
  f_stop.set()
430
-
431
- event(EventType.RUN_SUPERLINK_LEAVE)
446
+ event(exit_event, event_details={"success": success})
432
447
  if serverapp_th:
433
448
  serverapp_th.join()
434
449
  if server_app_thread_has_exception.is_set():
@@ -440,6 +455,7 @@ def _main_loop(
440
455
  # pylint: disable=too-many-arguments,too-many-locals
441
456
  def _run_simulation(
442
457
  num_supernodes: int,
458
+ exit_event: EventType,
443
459
  client_app: Optional[ClientApp] = None,
444
460
  server_app: Optional[ServerApp] = None,
445
461
  backend_name: str = "ray",
@@ -506,6 +522,7 @@ def _run_simulation(
506
522
  is_app,
507
523
  enable_tf_gpu_growth,
508
524
  run,
525
+ exit_event,
509
526
  flwr_dir,
510
527
  client_app,
511
528
  client_app_attr,
@@ -13,9 +13,3 @@
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
15
  """Flower SuperExec service."""
16
-
17
- from .app import run_superexec as run_superexec
18
-
19
- __all__ = [
20
- "run_superexec",
21
- ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.11.0.dev20240828
3
+ Version: 1.11.0.dev20240829
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -60,7 +60,7 @@ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=bRIvPCPvTTI4Eo5b
60
60
  flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
61
61
  flwr/cli/run/run.py,sha256=RI6MgLBNYxmacjQg8XMAQ7VKxbV0DkRyJTfe4GsDFuw,7979
62
62
  flwr/cli/utils.py,sha256=l65Ul0YsSBPuypk0uorAtEDmLEYiUrzpCXi6zCg9mJ4,4506
63
- flwr/client/__init__.py,sha256=wzJZsYJIHf_8-PMzvfbinyzzjgh1UP1vLrAw2_yEbKI,1345
63
+ flwr/client/__init__.py,sha256=DGDoO0AEAfz-0CUFmLdyUUweAS64-07AOnmDfWUefK4,1192
64
64
  flwr/client/app.py,sha256=o_2bhmlBeZATtWnAPZhL-Q1Ly0QZxc9ou4i7t0HKumE,31956
65
65
  flwr/client/client.py,sha256=gy6WVlMUFAp8oevN4xpQPX30vPOIYGVqdbuFlTWkyG4,9080
66
66
  flwr/client/client_app.py,sha256=WcO4r6wrdfaus__3s22D2sYjfcptdgmVujUAYdNE6HU,10393
@@ -74,7 +74,7 @@ flwr/client/grpc_adapter_client/connection.py,sha256=aOlCYasl8f2CrfcN-WrVEmvjAZF
74
74
  flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
75
75
  flwr/client/grpc_client/connection.py,sha256=czhRm23fwTgjN24Vf5nyNQ3hcb5Fo_5k-o9yZnelQCs,9362
76
76
  flwr/client/grpc_rere_client/__init__.py,sha256=MK-oSoV3kwUEQnIwl0GN4OpiHR7eLOrMA8ikunET130,752
77
- flwr/client/grpc_rere_client/client_interceptor.py,sha256=sYPEznuQPdy2BPDlvM9FK0ZRRucb4NfwUee1Z_mN82E,4954
77
+ flwr/client/grpc_rere_client/client_interceptor.py,sha256=wRMgrxt_IN1MNsaJdNscfMZD7jExJOL2g8yV5mC_RBc,5238
78
78
  flwr/client/grpc_rere_client/connection.py,sha256=aiIWW9fVgJZNeZ9SjUAx5ax-3825JrjYc5E5l7XvzyM,10913
79
79
  flwr/client/grpc_rere_client/grpc_adapter.py,sha256=Pw7Toi4wCUIEdBMyv4yKirjgW6814gFhhAmsTYmV4IM,5005
80
80
  flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
@@ -131,7 +131,7 @@ flwr/common/secure_aggregation/quantization.py,sha256=1obYr9qneaI8r-A0F_pghrPNG9
131
131
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=9MF-oQh62uD7rt9VeNB-rHf2gBLd5GL3S9OejCxmILY,2183
132
132
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=3VssKgYF7HQIkSpROnEUoYWVt47p12PE_Rj4nYqqg04,3221
133
133
  flwr/common/serde.py,sha256=SIKZa-TNCSWVtqx8L3aUkylN6gxK-IwXlgoukiYwYyc,29209
134
- flwr/common/telemetry.py,sha256=nSjJHDitPhzB2qUl6LeSMT9Zld5lIk9uW98RpxQwiZw,8366
134
+ flwr/common/telemetry.py,sha256=CZeBHqaH_W-H7yo-9LE-gV7ju5gJTXZztw4tJlFZqz8,8916
135
135
  flwr/common/typing.py,sha256=rGabiSkjFvGIHwmhDqtuu-LBvz7LVSj1vyMlNtA7VA0,5004
136
136
  flwr/common/version.py,sha256=W1ntylR04xkCP6zeSet6sRtBn7P1cje2lOqBJgYBjJY,1349
137
137
  flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
@@ -192,19 +192,19 @@ flwr/proto/transport_pb2.pyi,sha256=CZvJRWTU3QWFWLXNFtyLSrSKFatIyMcy-ohzLbQ-G9c,
192
192
  flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPcosk,2598
193
193
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
194
194
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
- flwr/server/__init__.py,sha256=BxzPhvouvWFGi7CFpI5b4EeVR9XDqbK7Ndqg24EL_Rw,1679
195
+ flwr/server/__init__.py,sha256=cEg1oecBu4cKB69iJCqWEylC8b5XW47bl7rQiJsdTvM,1528
196
196
  flwr/server/app.py,sha256=QFnqrN1aeNTN-hmHt2YcqZNncAq89Qr2mlZtwITRIc4,24430
197
197
  flwr/server/client_manager.py,sha256=T8UDSRJBVD3fyIDI7NTAA-NA7GPrMNNgH2OAF54RRxE,6127
198
198
  flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
199
199
  flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
200
- flwr/server/compat/app.py,sha256=u0elxfiLjGouCMQIy5KnCpeCHdc3s0qvojUm8unInIs,3421
200
+ flwr/server/compat/app.py,sha256=5vkHHm_h-4cMthvWD1GJo1ZW3eihytjGgvsgfXUK9gA,3298
201
201
  flwr/server/compat/app_utils.py,sha256=B9pec7LnYACzowXKZTZNu3SNS-fSaHfefwvRyAQa4Nc,3456
202
202
  flwr/server/compat/driver_client_proxy.py,sha256=BxTDo7i89VAG2tuF4x7zogSVn2bXPMr0H2H0lERzW9c,5444
203
203
  flwr/server/compat/legacy_context.py,sha256=wBzBcfV6YO6IQGriM_FdJ5XZfiBBEEJdS_OdAiF47dY,1804
204
204
  flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
205
205
  flwr/server/driver/__init__.py,sha256=bikRv6CjTwSvYh7tf10gziU5o2YotOWhhftz2tr3KDc,886
206
206
  flwr/server/driver/driver.py,sha256=NT_yaeit7_kZEIsCEqOWPID1GrVD3ywH4xZ2wtIh5lM,5217
207
- flwr/server/driver/grpc_driver.py,sha256=EbnOtrTR4cmu2ZhmPqKEmOHAhNQD1fd0hAd_xN1MePQ,9749
207
+ flwr/server/driver/grpc_driver.py,sha256=qrCF0hi2AlKF_8R5N_W5aKoAxd80lN1xbdLTUVtpSO0,9648
208
208
  flwr/server/driver/inmemory_driver.py,sha256=RcK94_NtjGZ4aZDIscnU7A3Uv1u8jGx29-xcbjQvZTM,6444
209
209
  flwr/server/history.py,sha256=bBOHKyX1eQONIsUx4EUU-UnAk1i0EbEl8ioyMq_UWQ8,5063
210
210
  flwr/server/run_serverapp.py,sha256=Xw42zqNXmKGy3Fz5QjYOUS1MH7ULy2u9nad4QA8hh74,10479
@@ -286,16 +286,16 @@ flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQD
286
286
  flwr/simulation/ray_transport/ray_actor.py,sha256=3j0HgzjrlYjnzdTRy8aA4Nf6VoUvxi1hGRQkGSU5z6c,19020
287
287
  flwr/simulation/ray_transport/ray_client_proxy.py,sha256=0abIsU0VBk9rNJZOKHIyzYGy3ZnWBgqYocX_oct1EP0,7307
288
288
  flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
289
- flwr/simulation/run_simulation.py,sha256=EeioiueoxuBompr04ETUSJp4nNuigamiUEObjVAZHV4,21722
290
- flwr/superexec/__init__.py,sha256=9h94ogLxi6eJ3bUuJYq3E3pApThSabTPiSmPAGlTkHE,800
289
+ flwr/simulation/run_simulation.py,sha256=TjkgoSh_FGiFmyJ9g45S-uh4nh16scm4GDo-5J8k2gI,22279
290
+ flwr/superexec/__init__.py,sha256=fcj366jh4RFby_vDwLroU4kepzqbnJgseZD_jUr_Mko,715
291
291
  flwr/superexec/app.py,sha256=KQuAnyTs2RQMGeIOrJjR3fJ70HsIEF3LQRKazOy27OA,6489
292
292
  flwr/superexec/deployment.py,sha256=1qhztkcZDjaSbicligbXGqn49gbpN271rTlEVAnNuWw,6283
293
293
  flwr/superexec/exec_grpc.py,sha256=PhqGoZEpTMxSQmUSV8Wgtzb1Za_pHJ-adZqo5RYnDyE,1942
294
294
  flwr/superexec/exec_servicer.py,sha256=jl0aKVjm0PLQABcTL5c3jdSIzb0Z6hpVOtrAn4Ob7ts,2323
295
295
  flwr/superexec/executor.py,sha256=k_adivto6R2U82DADOHNvdtobehBYreRek1gOEBIQnQ,2318
296
296
  flwr/superexec/simulation.py,sha256=J6pw-RqCSiUed8I_3MasZH4tl57ZmDebPAHNnbb0-vE,7420
297
- flwr_nightly-1.11.0.dev20240828.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
298
- flwr_nightly-1.11.0.dev20240828.dist-info/METADATA,sha256=DW4GNlzLFXJ5MQZC68Xdz7ie4OMwHW486Ci6x_G5--E,15703
299
- flwr_nightly-1.11.0.dev20240828.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
300
- flwr_nightly-1.11.0.dev20240828.dist-info/entry_points.txt,sha256=3cDQVJEBRCSLzJrVYAgjXpoCjuQ74I3A9NZ61DOHdVo,388
301
- flwr_nightly-1.11.0.dev20240828.dist-info/RECORD,,
297
+ flwr_nightly-1.11.0.dev20240829.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
298
+ flwr_nightly-1.11.0.dev20240829.dist-info/METADATA,sha256=nRkLn44Km59xZAZ_rrpm5JEWkuQzAjDz0iaMNo_DSf0,15703
299
+ flwr_nightly-1.11.0.dev20240829.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
300
+ flwr_nightly-1.11.0.dev20240829.dist-info/entry_points.txt,sha256=WUCbqhLEOzjx_lyATIM0-f0e8kOVaQjzwOvyOxHrMhs,434
301
+ flwr_nightly-1.11.0.dev20240829.dist-info/RECORD,,
@@ -0,0 +1,10 @@
1
+ [console_scripts]
2
+ flower-client-app=flwr.client.supernode:run_client_app
3
+ flower-server-app=flwr.server.run_serverapp:run_server_app
4
+ flower-simulation=flwr.simulation.run_simulation:run_simulation_from_cli
5
+ flower-superexec=flwr.superexec.app:run_superexec
6
+ flower-superlink=flwr.server.app:run_superlink
7
+ flower-supernode=flwr.client.supernode.app:run_supernode
8
+ flwr=flwr.cli.app:app
9
+ flwr-clientapp=flwr.client.clientapp:flwr_clientapp
10
+
@@ -1,10 +0,0 @@
1
- [console_scripts]
2
- flower-client-app=flwr.client:run_client_app
3
- flower-server-app=flwr.server:run_server_app
4
- flower-simulation=flwr.simulation.run_simulation:run_simulation_from_cli
5
- flower-superexec=flwr.superexec:run_superexec
6
- flower-superlink=flwr.server:run_superlink
7
- flower-supernode=flwr.client:run_supernode
8
- flwr=flwr.cli.app:app
9
- flwr-clientapp=flwr.client.clientapp:flwr_clientapp
10
-