Skip to content

launcher.cli

BaseCliArgs

Bases: BaseSettings

Base class for CLI arguments using Pydantic for validation and configuration.

Attributes:

Name Type Description
data_dir PathLike

The data directory where to save the data.

repository_dir Optional[PathLike]

The repository root directory.

create_directories CliImplicitFlag[bool]

Whether to create necessary directory structure.

debug_mode CliImplicitFlag[bool]

Whether to run in debug mode.

allow_dirty CliImplicitFlag[bool]

Whether to allow running with a dirty repository.

skip_hardware_validation CliImplicitFlag[bool]

Whether to skip hardware validation.

subject Optional[str]

The name of the subject. If None, will be prompted later.

task_logic_path Optional[PathLike]

Path to the task logic schema. If None, will be prompted later.

rig_path Optional[PathLike]

Path to the rig schema. If None, will be prompted later.

validate_init CliExplicitFlag[bool]

Whether to validate the launcher state during initialization.

temp_dir PathLike

Directory used for launcher temp files.

group_by_subject_log CliExplicitFlag[bool]

Whether to group data logging by subject.

Example

Create CLI args from command line

args = BaseCliArgs()

Create with specific values

args = BaseCliArgs( data_dir="/path/to/data", debug_mode=True, subject="mouse_001" )

Access properties

print(f"Data directory: {args.data_dir}") print(f"Debug mode: {args.debug_mode}")

settings_customise_sources classmethod

settings_customise_sources(
    settings_cls: Type[BaseSettings],
    init_settings: PydanticBaseSettingsSource,
    env_settings: PydanticBaseSettingsSource,
    dotenv_settings: PydanticBaseSettingsSource,
    file_secret_settings: PydanticBaseSettingsSource,
) -> Tuple[PydanticBaseSettingsSource, ...]

Customizes the order of settings sources for the CLI.

Defines the priority order for configuration sources, with initialization settings taking precedence, followed by YAML files, environment variables, dotenv files, and finally file secrets.

Parameters:

Name Type Description Default
settings_cls Type[BaseSettings]

The settings class

required
init_settings PydanticBaseSettingsSource

Initial settings source

required
env_settings PydanticBaseSettingsSource

Environment variable settings source

required
dotenv_settings PydanticBaseSettingsSource

Dotenv settings source

required
file_secret_settings PydanticBaseSettingsSource

File secret settings source

required

Returns:

Type Description
Tuple[PydanticBaseSettingsSource, ...]

Tuple[PydanticBaseSettingsSource, ...]: Ordered tuple of settings sources

Example

This method is automatically called by Pydantic

when creating a BaseCliArgs instance. Settings are loaded

in this priority order:

1. init_settings (constructor arguments)

2. YAML config files

3. Environment variables

4. .env files

5. File secrets

args = BaseCliArgs(data_dir="/override/path") # init_settings

Source code in src/clabe/launcher/cli.py
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
@classmethod
def settings_customise_sources(
    cls,
    settings_cls: Type[BaseSettings],
    init_settings: PydanticBaseSettingsSource,
    env_settings: PydanticBaseSettingsSource,
    dotenv_settings: PydanticBaseSettingsSource,
    file_secret_settings: PydanticBaseSettingsSource,
) -> Tuple[PydanticBaseSettingsSource, ...]:
    """
    Customizes the order of settings sources for the CLI.

    Defines the priority order for configuration sources, with initialization settings
    taking precedence, followed by YAML files, environment variables, dotenv files,
    and finally file secrets.

    Args:
        settings_cls: The settings class
        init_settings: Initial settings source
        env_settings: Environment variable settings source
        dotenv_settings: Dotenv settings source
        file_secret_settings: File secret settings source

    Returns:
        Tuple[PydanticBaseSettingsSource, ...]: Ordered tuple of settings sources

    Example:
        # This method is automatically called by Pydantic
        # when creating a BaseCliArgs instance. Settings are loaded
        # in this priority order:
        # 1. init_settings (constructor arguments)
        # 2. YAML config files
        # 3. Environment variables
        # 4. .env files
        # 5. File secrets
        args = BaseCliArgs(data_dir="/override/path")  # init_settings
    """
    return (
        init_settings,
        YamlConfigSettingsSource(settings_cls),
        env_settings,
        dotenv_settings,
        file_secret_settings,
    )