flwr-nightly 1.9.0.dev20240521__py3-none-any.whl → 1.9.0.dev20240522__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/cli/build.py CHANGED
@@ -24,7 +24,7 @@ import pathspec
24
24
  import typer
25
25
  from typing_extensions import Annotated
26
26
 
27
- from .config_utils import load_and_validate_with_defaults
27
+ from .config_utils import load_and_validate
28
28
  from .utils import is_valid_project_name
29
29
 
30
30
 
@@ -67,9 +67,7 @@ def build(
67
67
  )
68
68
  raise typer.Exit(code=1)
69
69
 
70
- conf, errors, warnings = load_and_validate_with_defaults(
71
- directory / "pyproject.toml"
72
- )
70
+ conf, errors, warnings = load_and_validate(directory / "pyproject.toml")
73
71
  if conf is None:
74
72
  typer.secho(
75
73
  "Project configuration could not be loaded.\npyproject.toml is invalid:\n"
flwr/cli/config_utils.py CHANGED
@@ -22,7 +22,7 @@ import tomli
22
22
  from flwr.common import object_ref
23
23
 
24
24
 
25
- def load_and_validate_with_defaults(
25
+ def load_and_validate(
26
26
  path: Optional[Path] = None,
27
27
  ) -> Tuple[Optional[Dict[str, Any]], List[str], List[str]]:
28
28
  """Load and validate pyproject.toml as dict.
@@ -47,14 +47,6 @@ def load_and_validate_with_defaults(
47
47
  if not is_valid:
48
48
  return (None, errors, warnings)
49
49
 
50
- # Apply defaults
51
- defaults = {
52
- "flower": {
53
- "engine": {"name": "simulation", "simulation": {"supernode": {"num": 2}}}
54
- }
55
- }
56
- config = apply_defaults(config, defaults)
57
-
58
50
  return (config, errors, warnings)
59
51
 
60
52
 
@@ -129,17 +121,3 @@ def validate(config: Dict[str, Any]) -> Tuple[bool, List[str], List[str]]:
129
121
  return False, [reason], []
130
122
 
131
123
  return True, [], []
132
-
133
-
134
- def apply_defaults(
135
- config: Dict[str, Any],
136
- defaults: Dict[str, Any],
137
- ) -> Dict[str, Any]:
138
- """Apply defaults to config."""
139
- for key in defaults:
140
- if key in config:
141
- if isinstance(config[key], dict) and isinstance(defaults[key], dict):
142
- apply_defaults(config[key], defaults[key])
143
- else:
144
- config[key] = defaults[key]
145
- return config
@@ -29,3 +29,9 @@ publisher = "$username"
29
29
  [flower.components]
30
30
  serverapp = "$import_name.server:app"
31
31
  clientapp = "$import_name.client:app"
32
+
33
+ [flower.engine]
34
+ name = "simulation"
35
+
36
+ [flower.engine.simulation.supernode]
37
+ num = 2
@@ -26,3 +26,9 @@ publisher = "$username"
26
26
  [flower.components]
27
27
  serverapp = "$import_name.server:app"
28
28
  clientapp = "$import_name.client:app"
29
+
30
+ [flower.engine]
31
+ name = "simulation"
32
+
33
+ [flower.engine.simulation.supernode]
34
+ num = 2
@@ -24,3 +24,9 @@ publisher = "$username"
24
24
  [flower.components]
25
25
  serverapp = "$import_name.server:app"
26
26
  clientapp = "$import_name.client:app"
27
+
28
+ [flower.engine]
29
+ name = "simulation"
30
+
31
+ [flower.engine.simulation.supernode]
32
+ num = 2
@@ -26,3 +26,9 @@ publisher = "$username"
26
26
  [flower.components]
27
27
  serverapp = "$import_name.server:app"
28
28
  clientapp = "$import_name.client:app"
29
+
30
+ [flower.engine]
31
+ name = "simulation"
32
+
33
+ [flower.engine.simulation.supernode]
34
+ num = 2
@@ -25,3 +25,9 @@ publisher = "$username"
25
25
  [flower.components]
26
26
  serverapp = "$import_name.server:app"
27
27
  clientapp = "$import_name.client:app"
28
+
29
+ [flower.engine]
30
+ name = "simulation"
31
+
32
+ [flower.engine.simulation.supernode]
33
+ num = 2
@@ -25,3 +25,9 @@ publisher = "$username"
25
25
  [flower.components]
26
26
  serverapp = "$import_name.server:app"
27
27
  clientapp = "$import_name.client:app"
28
+
29
+ [flower.engine]
30
+ name = "simulation"
31
+
32
+ [flower.engine.simulation.supernode]
33
+ num = 2
flwr/cli/run/run.py CHANGED
@@ -15,18 +15,32 @@
15
15
  """Flower command line interface `run` command."""
16
16
 
17
17
  import sys
18
+ from enum import Enum
19
+ from typing import Optional
18
20
 
19
21
  import typer
22
+ from typing_extensions import Annotated
20
23
 
21
24
  from flwr.cli import config_utils
22
25
  from flwr.simulation.run_simulation import _run_simulation
23
26
 
24
27
 
25
- def run() -> None:
28
+ class Engine(str, Enum):
29
+ """Enum defining the engine to run on."""
30
+
31
+ SIMULATION = "simulation"
32
+
33
+
34
+ def run(
35
+ engine: Annotated[
36
+ Optional[Engine],
37
+ typer.Option(case_sensitive=False, help="The ML framework to use"),
38
+ ] = None,
39
+ ) -> None:
26
40
  """Run Flower project."""
27
41
  typer.secho("Loading project configuration... ", fg=typer.colors.BLUE)
28
42
 
29
- config, errors, warnings = config_utils.load_and_validate_with_defaults()
43
+ config, errors, warnings = config_utils.load_and_validate()
30
44
 
31
45
  if config is None:
32
46
  typer.secho(
@@ -49,9 +63,11 @@ def run() -> None:
49
63
 
50
64
  server_app_ref = config["flower"]["components"]["serverapp"]
51
65
  client_app_ref = config["flower"]["components"]["clientapp"]
52
- engine = config["flower"]["engine"]["name"]
53
66
 
54
- if engine == "simulation":
67
+ if engine is None:
68
+ engine = config["flower"]["engine"]["name"]
69
+
70
+ if engine == Engine.SIMULATION:
55
71
  num_supernodes = config["flower"]["engine"]["simulation"]["supernode"]["num"]
56
72
 
57
73
  typer.secho("Starting run... ", fg=typer.colors.BLUE)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.9.0.dev20240521
3
+ Version: 1.9.0.dev20240522
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -1,8 +1,8 @@
1
1
  flwr/__init__.py,sha256=VmBWedrCxqmt4QvUHBLqyVEH6p7zaFMD_oCHerXHSVw,937
2
2
  flwr/cli/__init__.py,sha256=cZJVgozlkC6Ni2Hd_FAIrqefrkCGOV18fikToq-6iLw,720
3
3
  flwr/cli/app.py,sha256=IFu7V_xdexF1T9sUsvgYWVFW5wEPHHcBWHJRPdlX38U,1141
4
- flwr/cli/build.py,sha256=W30wnPSgFuHRnGB9G_vKO14rsaibWk7m-jv9r8rDqo4,5106
5
- flwr/cli/config_utils.py,sha256=Hql5A5hbSpJ51hgpwaTkKqfPoaZN4Zq7FZfBuQYLMcQ,4899
4
+ flwr/cli/build.py,sha256=PDuqoyIWo5QdMCRSBg6nFFAF4N1Hf4bFxcR8CK6UhME,5064
5
+ flwr/cli/config_utils.py,sha256=kFGSOqYnYbBZPqkfP-OyUtItzvvOiLSSVAIBzQl1i54,4277
6
6
  flwr/cli/example.py,sha256=1bGDYll3BXQY2kRqSN-oICqS5n1b9m0g0RvXTopXHl4,2215
7
7
  flwr/cli/new/__init__.py,sha256=cQzK1WH4JP2awef1t2UQ2xjl1agVEz9rwutV18SWV1k,789
8
8
  flwr/cli/new/new.py,sha256=7BWziuEOE15MXX4xNLH-w0-x0ytOEfYn_AUrbaDp13Y,6223
@@ -31,15 +31,15 @@ flwr/cli/new/templates/app/code/task.jax.py.tpl,sha256=u4o3V019EH79szOw2xzVeC5r9
31
31
  flwr/cli/new/templates/app/code/task.mlx.py.tpl,sha256=y7aVj3F_98-wBnDcbPsCNnFs9BOHTn0y6XIYkByzv7Y,2598
32
32
  flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=NvajdZN-eTyfdqKK0v2MrvWITXw9BjJ3Ri5c1haPJDs,3684
33
33
  flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=cPOUUS07QbblT9PGFucwu9lY1clRA4-W4DQGA7cpcao,1044
34
- flwr/cli/new/templates/app/pyproject.hf.toml.tpl,sha256=PNGBNTfWmNJ23aVnW5f1TMMJ0uEwIljevpOsI-mqX08,676
34
+ flwr/cli/new/templates/app/pyproject.hf.toml.tpl,sha256=zQz3sUmd-Tpa8QF0UwrAKT13CTxfH-qJ1DtkZN6oKuA,759
35
35
  flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=o34H5MvQeu4H2nRolbIas9G63mR7nDDL4rqQMlJW6LA,568
36
- flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=JCEsuHZffO1KKkN65rSp6N-A9-OW8-kl6EQp5Z2H3uE,585
37
- flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=m276SKsjOZ4awGdXasUKvLim66agrpAsPNP9-PN6q4I,523
38
- flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=QikP3u5ht6qr2BkgcnvB3rCYK7jt1cS0nAm7V8g_zFc,592
39
- flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=IO5iIlyKSBxZCCf48iqEyRWeG1jmVx2tO_s2iE7FpHo,572
40
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=CpjCOHyJ3zdIlkXQ1An6fEKN9l7rIStx43g4SsIwbkw,571
36
+ flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=oUtYknyM00vGZSBoxmdJqCeOZahg9mtAQfupgaQPhlI,668
37
+ flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=1cBwKx5eYW6vEcU5gyuVbt2FEFT5fbQ7Lr6t5LGNUuc,606
38
+ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=yBlpz7WF8m8bLBYsPdD5J93cn6xv8vLHbLNxP1a1Iwg,675
39
+ flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=T0MxHVnW1fnMDdz1EqN1JK6jIc3J0ZmznBQwK1eGvkg,655
40
+ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=yp4w6LZn2v67AvYRRO9mSm7yfKi14zFYQBl5SbIjEe0,654
41
41
  flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
42
- flwr/cli/run/run.py,sha256=jr_J7Cbcyuj1MXIbuwU86htHdFI7XogsBrdGl7P4aYY,2334
42
+ flwr/cli/run/run.py,sha256=Oadt7JsJX549JG-2P1UPdF11vnblLWS8uGvuVx0modA,2687
43
43
  flwr/cli/utils.py,sha256=px-M-IlBLu6Ez-Sc9tWhsJRjWurRaZTmxB9ASz8wurk,4119
44
44
  flwr/client/__init__.py,sha256=CivBxRFjK6gXHN5kUUf9UaZQHa_NHlEM867WWB-H0D8,1268
45
45
  flwr/client/app.py,sha256=rzfaHiXxrtjwyhHrHb3epRD6NNw07YzL5DoZO6eW7RA,22313
@@ -225,8 +225,8 @@ flwr/simulation/ray_transport/ray_actor.py,sha256=_wv2eP7qxkCZ-6rMyYWnjLrGPBZRxj
225
225
  flwr/simulation/ray_transport/ray_client_proxy.py,sha256=oDu4sEPIOu39vrNi-fqDAe10xtNUXMO49bM2RWfRcyw,6738
226
226
  flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
227
227
  flwr/simulation/run_simulation.py,sha256=Jmc6DyN5UCY1U1PcDvL04NgYmEQ6ufJ1JisjG5yqfY8,15098
228
- flwr_nightly-1.9.0.dev20240521.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
229
- flwr_nightly-1.9.0.dev20240521.dist-info/METADATA,sha256=jAPTX3619MWQxUCtUuDtG1Ji_LzrK6d9uIM1YDCPD0E,15434
230
- flwr_nightly-1.9.0.dev20240521.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
231
- flwr_nightly-1.9.0.dev20240521.dist-info/entry_points.txt,sha256=8JJPfpqMnXz9c5V_FSt07Xwd-wCWbAO3MFUDXQ5ZGsI,378
232
- flwr_nightly-1.9.0.dev20240521.dist-info/RECORD,,
228
+ flwr_nightly-1.9.0.dev20240522.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
229
+ flwr_nightly-1.9.0.dev20240522.dist-info/METADATA,sha256=t02fKZUqKCzNgDN4iH8E1EAjaRCGqfQK-XFPXjS0kq4,15434
230
+ flwr_nightly-1.9.0.dev20240522.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
231
+ flwr_nightly-1.9.0.dev20240522.dist-info/entry_points.txt,sha256=8JJPfpqMnXz9c5V_FSt07Xwd-wCWbAO3MFUDXQ5ZGsI,378
232
+ flwr_nightly-1.9.0.dev20240522.dist-info/RECORD,,