From 11702caa04a98f72dcbeaeb5864dca08e3e872ec Mon Sep 17 00:00:00 2001 From: Chong Shen Ng Date: Fri, 26 Jul 2024 11:06:23 +0100 Subject: [PATCH] feat(framework:skip) Add verbose logging for `SimulationEngine` (#3913) --- src/py/flwr/superexec/simulation.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/py/flwr/superexec/simulation.py b/src/py/flwr/superexec/simulation.py index d4cc489e24ab..a2048f179938 100644 --- a/src/py/flwr/superexec/simulation.py +++ b/src/py/flwr/superexec/simulation.py @@ -63,8 +63,10 @@ class SimulationEngine(Executor): def __init__( self, num_supernodes: Optional[int] = None, + verbose: Optional[bool] = False, ) -> None: self.num_supernodes = num_supernodes + self.verbose = verbose @override def set_config( @@ -80,6 +82,8 @@ def set_config( Supported configuration key/value pairs: - "num-supernodes": int Number of nodes to register for the simulation. + - "verbose": bool + Set verbosity of logs. """ if num_supernodes := config.get("num-supernodes"): if not isinstance(num_supernodes, int): @@ -97,6 +101,13 @@ def set_config( "positive integer." ) + if verbose := config.get("verbose"): + if not isinstance(verbose, bool): + raise ValueError( + "The `verbose` value must be a string `true` or `false`." + ) + self.verbose = verbose + @override def start_run( self, @@ -121,10 +132,11 @@ def start_run( fab_path = install_from_fab(fab_file, None, True) # Install FAB Python package - subprocess.check_call( + subprocess.run( [sys.executable, "-m", "pip", "install", "--no-deps", str(fab_path)], - stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL, + stdout=None if self.verbose else subprocess.DEVNULL, + stderr=None if self.verbose else subprocess.DEVNULL, + check=True, ) # Load and validate config