Coverage for src/shephex/cli/execute.py: 100%

18 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-03-29 18:45 +0100

1from pathlib import Path 

2 

3import rich_click as click 

4 

5from shephex import Experiment 

6from shephex.executor import LocalExecutor 

7from shephex.experiment.status import Submitted, Pending 

8 

9 

10@click.command(name='execute') 

11@click.argument( 

12 'directory', type=click.Path(exists=True, file_okay=False, dir_okay=True) 

13) 

14@click.option( 

15 '-e', 

16 '--execution-directory', 

17 type=click.Path(exists=True, file_okay=False, dir_okay=True), 

18 default=None, 

19) 

20@click.option('-v', '--verbose', is_flag=True, help='Enable verbose output.', default=False) 

21def execute(directory: click.Path, execution_directory: click.Path, verbose: bool) -> None: 

22 """ 

23 Execute an experiment. 

24 """ 

25 directory = Path(directory) 

26 

27 if verbose: 

28 print(f'Loading experiment from {directory}') 

29 

30 experiment = Experiment.load(directory) 

31 executor = LocalExecutor() 

32 

33 if execution_directory is not None: 

34 execution_directory = Path(execution_directory) 

35 

36 executor.execute(experiment, execution_directory=execution_directory, 

37 valid_statuses=[Pending(), Submitted()])