SYMBOL INDEX (441 symbols across 47 files) FILE: ci/examples/example_experiment.py function run (line 11) | def run( FILE: ci/examples/example_reschedule.py function reschedule (line 10) | def reschedule(step: int): function run (line 16) | def run( FILE: examples/advanced_example_experiment.py function preprocessing_none (line 18) | def preprocessing_none(): function preprocessing_normalize (line 27) | def preprocessing_normalize(): function batchnorm (line 36) | def batchnorm(): function no_batchnorm (line 42) | def no_batchnorm(): function config (line 48) | def config(): class ModelVariant1 (line 52) | class ModelVariant1: method __init__ (line 57) | def __init__(self, hidden_sizes, dropout, batchnorm, residual): class ModelVariant2 (line 64) | class ModelVariant2: method __init__ (line 69) | def __init__(self, hidden_sizes, dropout, batchnorm, residual): class ExperimentWrapper (line 76) | class ExperimentWrapper: method __init__ (line 83) | def __init__(self, init_all=True): method init_dataset (line 89) | def init_dataset(self, dataset): method init_model (line 104) | def init_model( method init_optimizer (line 123) | def init_optimizer(self, regularization: dict, optimizer_type: str): method init_preprocessing (line 128) | def init_preprocessing(self, mean: float, std: float): method init_augmentation (line 132) | def init_augmentation(self, flip: bool): method init_all (line 135) | def init_all(self): method train (line 146) | def train(self, patience, num_epochs): function get_experiment (line 165) | def get_experiment(init_all=False): function reschedule_hook (line 177) | def reschedule_hook(model_weights, step, **kwargs): function train (line 190) | def train(experiment=None): FILE: examples/example_experiment.py function run (line 10) | def run( FILE: examples/tutorial/example_experiment.py function config (line 13) | def config(): function run (line 23) | def run(hidden_sizes: list, learning_rate: float, max_epochs: int): FILE: src/seml/__main__.py function parse_dict (line 36) | def parse_dict(x: str): function restrict_collection (line 59) | def restrict_collection(require: bool = True): function collection_free_commands (line 79) | def collection_free_commands(app: typer.Typer) -> List[str]: function get_db_collections (line 89) | def get_db_collections(): function first_argument_completer (line 100) | def first_argument_completer(): function parse_optional_str_list (line 151) | def parse_optional_str_list(values: Optional[Sequence[str]]) -> List[str]: function version_callback (line 313) | def version_callback(value: bool): function callback (line 322) | def callback( function list_command (line 394) | def list_command( function clean_db_command (line 423) | def clean_db_command(ctx: typer.Context, yes: YesAnnotation = False): function configure_command (line 432) | def configure_command( function start_jupyter_command (line 496) | def start_jupyter_command( function cancel_command (line 527) | def cancel_command( function add_command (line 572) | def add_command( function start_command (line 661) | def start_command( function clean_jobs_command (line 723) | def clean_jobs_command( function prepare_experiment_command (line 742) | def prepare_experiment_command( function claim_experiment_command (line 800) | def claim_experiment_command( function launch_worker_command (line 819) | def launch_worker_command( function print_fail_trace_command (line 863) | def print_fail_trace_command( function reload_sources_command (line 892) | def reload_sources_command( function update_working_dir_command (line 929) | def update_working_dir_command( function print_command_command (line 964) | def print_command_command( function print_experiment_command (line 1013) | def print_experiment_command( function print_output_command (line 1054) | def print_output_command( function reset_command (line 1109) | def reset_command( function delete_command (line 1139) | def delete_command( function drop_command (line 1180) | def drop_command( function detect_killed_command (line 1200) | def detect_killed_command( function status_command (line 1213) | def status_command( function download_sources_command (line 1230) | def download_sources_command( function hold_command (line 1263) | def hold_command( function release_command (line 1281) | def release_command( function queue_command (line 1299) | def queue_command( function detect_duplicates_command (line 1348) | def detect_duplicates_command( function description_set_command (line 1374) | def description_set_command( function description_delete_command (line 1408) | def description_delete_command( function description_list_command (line 1433) | def description_list_command( function init_project_command (line 1453) | def init_project_command( function list_templates_command (line 1533) | def list_templates_command( class CommandTreeNode (line 1561) | class CommandTreeNode: function command_tree (line 1569) | def command_tree(app: typer.Typer) -> CommandTreeNode: function split_args (line 1584) | def split_args( function main (line 1629) | def main(): FILE: src/seml/cli_utils/cache.py class DiskCachedFunction (line 6) | class DiskCachedFunction(Generic[R]): method __init__ (line 7) | def __init__( method cache_path (line 18) | def cache_path(self): method __call__ (line 30) | def __call__(self) -> R: method clear_cache (line 60) | def clear_cache(self): method recompute_cache (line 71) | def recompute_cache(self): function cache_to_disk (line 78) | def cache_to_disk(name: str, time_to_live: float | None = None): FILE: src/seml/cli_utils/cli_states.py class DummyStates (line 9) | class DummyStates: method __getitem__ (line 10) | def __getitem__(self, item): method __getattr__ (line 13) | def __getattr__(self, item): method values (line 16) | def values(self): FILE: src/seml/cli_utils/module_hider.py class PackageNotFoundError (line 11) | class PackageNotFoundError(Exception): ... class FakeImportlibMetadata (line 14) | class FakeImportlibMetadata(Loader): method create_module (line 15) | def create_module(self, spec): method exec_module (line 18) | def exec_module(self, module): class ModuleHider (line 28) | class ModuleHider(MetaPathFinder): method __init__ (line 29) | def __init__(self, *hidden_modules: str, hide: bool = AUTOCOMPLETING) ... method find_spec (line 34) | def find_spec(self, fullname, path, target=None): method __enter__ (line 41) | def __enter__(self): method __exit__ (line 45) | def __exit__(self, exc_type, exc_val, exc_tb): FILE: src/seml/commands/add.py function remove_existing_experiments (line 40) | def remove_existing_experiments( function add_configs (line 86) | def add_configs( function add_config_files (line 148) | def add_config_files( function add_config_file (line 197) | def add_config_file( FILE: src/seml/commands/configure.py function prompt_ssh_forward (line 8) | def prompt_ssh_forward(): function mongodb_configure (line 28) | def mongodb_configure( FILE: src/seml/commands/description.py function collection_set_description (line 16) | def collection_set_description( function collection_delete_description (line 103) | def collection_delete_description( function collection_list_descriptions (line 149) | def collection_list_descriptions(db_collection_name: str, update_status:... FILE: src/seml/commands/manage.py function should_check_killed (line 50) | def should_check_killed(filter_states: list[str] | None) -> bool: function cancel_empty_pending_jobs (line 70) | def cancel_empty_pending_jobs(db_collection_name: str, *sacred_ids: int): function cancel_jobs_without_experiments (line 115) | def cancel_jobs_without_experiments(*slurm_array_ids: str | int): function cancel_experiment_by_id (line 154) | def cancel_experiment_by_id( function cancel_experiments (line 250) | def cancel_experiments( function delete_experiments (line 392) | def delete_experiments( function drop_collections (line 483) | def drop_collections( function reset_slurm_dict (line 524) | def reset_slurm_dict(exp: ExperimentDoc): function get_experiment_reset_op (line 546) | def get_experiment_reset_op(exp: ExperimentDoc): function reset_single_experiment (line 600) | def reset_single_experiment(collection: Collection[ExperimentDoc], exp: ... function reset_experiments (line 613) | def reset_experiments( function detect_killed (line 661) | def detect_killed(db_collection_name: str, print_detected: bool = True): function get_experiment_files (line 744) | def get_experiment_files(experiment: ExperimentDoc) -> list[str]: function reload_sources (line 767) | def reload_sources( function detect_duplicates (line 980) | def detect_duplicates( FILE: src/seml/commands/migration.py function migrate_collection (line 18) | def migrate_collection(db_collection_name: str, skip: bool, backup: bool): class Migration (line 78) | class Migration(Protocol): method __init__ (line 79) | def __init__(self, collection: Collection[ExperimentDoc]): ... method requires_migration (line 80) | def requires_migration(self) -> bool: ... method migrate (line 81) | def migrate(self) -> int: ... method name (line 82) | def name(self) -> str: ... method is_silent (line 83) | def is_silent(self) -> bool: ... class Migration04To05Slurm (line 86) | class Migration04To05Slurm(Migration): method __init__ (line 90) | def __init__(self, collection: Collection[ExperimentDoc]): method is_silent (line 93) | def is_silent(self): method requires_migration (line 96) | def requires_migration(self): method name (line 99) | def name(self): method migrate (line 102) | def migrate(self): class Migration05Version (line 139) | class Migration05Version(Migration): method __init__ (line 153) | def __init__(self, collection: Collection[ExperimentDoc]): method is_silent (line 156) | def is_silent(self): method requires_migration (line 159) | def requires_migration(self): method name (line 162) | def name(self): method migrate (line 165) | def migrate(self): FILE: src/seml/commands/print.py function print_fail_trace (line 44) | def print_fail_trace( function print_status (line 144) | def print_status( function print_collections (line 268) | def print_collections( function print_duplicates (line 407) | def print_duplicates( function print_experiment (line 453) | def print_experiment( function print_output (line 532) | def print_output( function generate_queue_table (line 642) | def generate_queue_table( function print_queue (line 762) | def print_queue( function print_command (line 800) | def print_command( FILE: src/seml/commands/project.py function init_project (line 11) | def init_project( function checkout_template_repo (line 118) | def checkout_template_repo( function get_available_templates (line 154) | def get_available_templates( function print_available_templates (line 176) | def print_available_templates( FILE: src/seml/commands/slurm.py function hold_or_release_experiments (line 12) | def hold_or_release_experiments( FILE: src/seml/commands/sources.py function download_sources (line 13) | def download_sources( FILE: src/seml/commands/start.py function get_experiment_environment (line 49) | def get_experiment_environment(experiment: ExperimentDoc): function get_and_make_output_dir_path (line 57) | def get_and_make_output_dir_path(config: ExperimentDoc): function get_exp_name (line 71) | def get_exp_name(exp_config: ExperimentDoc, db_collection_name: str): function set_slurm_job_name (line 75) | def set_slurm_job_name( function create_slurm_options_string (line 96) | def create_slurm_options_string(slurm_options: SBatchOptions, srun: bool... function start_sbatch_job (line 130) | def start_sbatch_job( function start_srun_job (line 295) | def start_srun_job( function start_local_job (line 348) | def start_local_job( function chunk_list (line 485) | def chunk_list(exps: Sequence[ExperimentDoc]): function prepare_staged_experiments (line 507) | def prepare_staged_experiments( function add_to_slurm_queue (line 559) | def add_to_slurm_queue( function check_compute_node (line 665) | def check_compute_node(): function start_local_worker (line 673) | def start_local_worker( function start_experiments (line 837) | def start_experiments( function start_jupyter_job (line 951) | def start_jupyter_job( function get_experiment_to_prepare (line 1055) | def get_experiment_to_prepare( function claim_experiment (line 1099) | def claim_experiment(db_collection_name: str, exp_ids: Sequence[int]): function prepare_experiment (line 1186) | def prepare_experiment( FILE: src/seml/console/__init__.py function pause_live_widget (line 44) | def pause_live_widget(): function track (line 55) | def track(*args, **kwargs): function prompt (line 86) | def prompt(*args, **kwargs): function Heading (line 91) | def Heading(text: str): function list_items (line 103) | def list_items(items: Sequence[str]): FILE: src/seml/database.py function _get_collection (line 25) | def _get_collection(collection_name: str, mongodb_config: Hashabledict |... function get_collection (line 34) | def get_collection(collection_name: str, mongodb_config: dict[str, Any] ... function get_mongo_client (line 40) | def get_mongo_client( function get_database (line 67) | def get_database( function get_collections_from_mongo_shell_or_pymongo (line 74) | def get_collections_from_mongo_shell_or_pymongo( function get_mongodb_config (line 105) | def get_mongodb_config(path: str | Path = SETTINGS.DATABASE.MONGODB_CONF... function build_filter_dict (line 192) | def build_filter_dict( function get_max_in_collection (line 253) | def get_max_in_collection( function get_max_in_collection (line 261) | def get_max_in_collection( function get_max_in_collection (line 268) | def get_max_in_collection( function upload_file (line 296) | def upload_file( function upload_file_mt (line 340) | def upload_file_mt(x: tuple[str, str, int, str]) -> ObjectId | None: function delete_files (line 347) | def delete_files( function clean_unreferenced_artifacts (line 359) | def clean_unreferenced_artifacts( function update_working_dir (line 456) | def update_working_dir( FILE: src/seml/document.py class SemlDocBase (line 16) | class SemlDocBase(TypedDict, total=False): class SemlFileConfig (line 46) | class SemlFileConfig(SemlDocBase, total=False): class SemlDoc (line 60) | class SemlDoc(SemlDocBase, total=False): class SemlConfig (line 92) | class SemlConfig(SemlDoc, total=False): class SlurmConfig (line 129) | class SlurmConfig(TypedDict): class SlurmDoc (line 148) | class SlurmDoc(SlurmConfig): class GitDoc (line 171) | class GitDoc(TypedDict): class ExecutionDoc (line 190) | class ExecutionDoc(TypedDict): class SacredExperimentDoc (line 216) | class SacredExperimentDoc(TypedDict): class GPUDoc (line 230) | class GPUDoc(TypedDict): class GPUsDoc (line 249) | class GPUsDoc(TypedDict): class HostDoc (line 265) | class HostDoc(TypedDict): class MetaDoc (line 295) | class MetaDoc(TypedDict): class StatDoc (line 319) | class StatDoc(TypedDict): class GPUStatDoc (line 338) | class GPUStatDoc(TypedDict): class StatsDoc (line 349) | class StatsDoc(TypedDict): class ExperimentDoc (line 359) | class ExperimentDoc(TypedDict, total=True): class ExperimentConfig (line 461) | class ExperimentConfig(TypedDict, total=False, closed=False): class SemlExperimentFile (line 470) | class SemlExperimentFile(ExperimentConfig, total=False, closed=True): FILE: src/seml/evaluation.py function parse_jsonpickle (line 27) | def parse_jsonpickle(db_entry: ExperimentDoc): function get_results (line 44) | def get_results( function get_results (line 58) | def get_results( function get_results (line 71) | def get_results( FILE: src/seml/experiment/__init__.py function Experiment (line 9) | def Experiment(*args, **kwargs): FILE: src/seml/experiment/command.py function _generate_debug_attach_url (line 16) | def _generate_debug_attach_url(ip_address: str, port: int): function get_environment_variables (line 30) | def get_environment_variables( function get_config_overrides (line 51) | def get_config_overrides(config: Sequence[str]): function get_shell_command (line 57) | def get_shell_command( function value_to_string (line 77) | def value_to_string(value: Any, use_json: bool = False): function get_command_from_exp (line 88) | def get_command_from_exp( FILE: src/seml/experiment/config.py function unpack_config (line 61) | def unpack_config(config): function extract_parameter_set (line 83) | def extract_parameter_set(input_config: dict, key: str): function convert_parameter_collections (line 95) | def convert_parameter_collections(input_config: dict): function standardize_config (line 129) | def standardize_config(config: dict): function invert_config (line 140) | def invert_config(config: dict): function detect_duplicate_parameters (line 151) | def detect_duplicate_parameters( function generate_configs (line 206) | def generate_configs(experiment_config, overwrite_params=None): function generate_named_config (line 347) | def generate_named_config(named_config_dict: dict) -> list[str]: function generate_named_configs (line 404) | def generate_named_configs(configs: list[dict]) -> tuple[list[dict], lis... function load_config_dict (line 434) | def load_config_dict(cfg_name: str): function _get_scaffold_state (line 470) | def _get_scaffold_state(scaffolding): function _set_scaffold_state (line 477) | def _set_scaffold_state(scaffolding, state): function _sacred_create_configs (line 485) | def _sacred_create_configs( function resolve_configs (line 606) | def resolve_configs( function check_config (line 666) | def check_config( function restore (line 742) | def restore(flat): function _convert_value (line 754) | def _convert_value(value): function convert_values (line 767) | def convert_values(val: Any): function read_config (line 779) | def read_config(config_path: str | Path): function determine_executable_and_working_dir (line 852) | def determine_executable_and_working_dir( function remove_prepended_dashes (line 904) | def remove_prepended_dashes(param_dict: dict[str, Any]) -> dict[str, Any]: function config_get_exclude_keys (line 929) | def config_get_exclude_keys(config_unresolved: dict | None = None) -> li... function create_starts_with_regex (line 952) | def create_starts_with_regex(*strings: str): function requires_interpolation (line 981) | def requires_interpolation( function escape_non_interpolated_dollars (line 1019) | def escape_non_interpolated_dollars( function resolve_interpolations (line 1050) | def resolve_interpolations( function remove_duplicates_in_list (line 1100) | def remove_duplicates_in_list(documents: Sequence[ExperimentDoc], use_ha... function remove_duplicates_in_db (line 1137) | def remove_duplicates_in_db( function remove_duplicates (line 1185) | def remove_duplicates( function check_slurm_config (line 1231) | def check_slurm_config(experiments_per_job: int, sbatch_options: SBatchO... function assemble_slurm_config_dict (line 1249) | def assemble_slurm_config_dict(experiment_slurm_config: SlurmConfig): FILE: src/seml/experiment/description.py function resolve_description (line 11) | def resolve_description(description: str, config: Mapping) -> str: FILE: src/seml/experiment/experiment.py class LoggerOptions (line 43) | class LoggerOptions(Enum): class RescheduleInterrupt (line 49) | class RescheduleInterrupt(SacredInterrupt): class Experiment (line 53) | class Experiment(ExperimentBase): method __init__ (line 57) | def __init__( method run (line 92) | def run( method reschedule_hook (line 116) | def reschedule_hook(self, f: Callable[P, dict]) -> Callable[P, None]: method _ensure_reschedule_hook_ready (line 187) | def _ensure_reschedule_hook_ready(self) -> bool: method _add_reschedule_config_to_db (line 227) | def _add_reschedule_config_to_db(self, config: dict): method _get_db_collection (line 237) | def _get_db_collection(self) -> Optional[Collection[ExperimentDoc]]: method _get_exp_id (line 249) | def _get_exp_id(self) -> Optional[int]: method _get_exp_document_from_db (line 259) | def _get_exp_document_from_db(self) -> Optional[ExperimentDoc]: method _is_reschedule_timeout_configured (line 273) | def _is_reschedule_timeout_configured(exp: ExperimentDoc) -> bool: method _is_local_execution (line 280) | def _is_local_execution(exp: ExperimentDoc) -> bool: method _get_reschedule_signal_file (line 285) | def _get_reschedule_signal_file(exp: ExperimentDoc) -> Path: method _touch_reschedule_request_file (line 292) | def _touch_reschedule_request_file(self) -> None: class MongoDbObserverConfig (line 300) | class MongoDbObserverConfig: method __init__ (line 301) | def __init__(self, experiment: Experiment): method __call__ (line 304) | def __call__(self, fixed=None, preset=None, fallback=None): class ClearObserverForMultiTaskConfig (line 326) | class ClearObserverForMultiTaskConfig: method __init__ (line 327) | def __init__(self, experiment: Experiment): method __call__ (line 330) | def __call__(self, fixed=None, preset=None, fallback=None): function setup_logger (line 348) | def setup_logger( function _collect_exp_stats (line 409) | def _collect_exp_stats(run): function collect_exp_stats (line 480) | def collect_exp_stats(run): FILE: src/seml/experiment/mattermost_observer.py function to_local_timezone (line 16) | def to_local_timezone(dtime: datetime): class MattermostObserver (line 20) | class MattermostObserver(RunObserver): method from_config (line 27) | def from_config(cls, filename): method __init__ (line 39) | def __init__( method run (line 151) | def run(self): method started_event (line 155) | def started_event( method get_completed_text (line 189) | def get_completed_text(self): method get_started_text (line 192) | def get_started_text(self): method get_interrupted_text (line 195) | def get_interrupted_text(self): method get_failed_text (line 198) | def get_failed_text(self): method get_heartbeat_text (line 201) | def get_heartbeat_text(self): method completed_event (line 204) | def completed_event(self, stop_time, result): method interrupted_event (line 227) | def interrupted_event(self, interrupt_time, status): method failed_event (line 250) | def failed_event(self, fail_time, fail_trace): method heartbeat_event (line 273) | def heartbeat_event(self, info, captured_out, beat_time: datetime, res... FILE: src/seml/experiment/observers.py function create_mongodb_observer (line 28) | def create_mongodb_observer( function create_file_storage_observer (line 73) | def create_file_storage_observer( function add_to_file_storage_observer (line 92) | def add_to_file_storage_observer( function create_slack_observer (line 126) | def create_slack_observer(webhook: str | None = None): function create_mattermost_observer (line 139) | def create_mattermost_observer(webhook=None, channel=None, **kwargs): function create_neptune_observer (line 176) | def create_neptune_observer( FILE: src/seml/experiment/parameters.py function sample_random_configs (line 12) | def sample_random_configs( function sample_parameter (line 53) | def sample_parameter( function generate_grid (line 161) | def generate_grid(parameter: dict[str, Any], parent_key: str = ''): function zipped_dict (line 248) | def zipped_dict(input_dict: dict[str, tuple[Sequence, str]]): function cartesian_product_zipped_dict (line 283) | def cartesian_product_zipped_dict(zipped_dict: dict[str, dict[str, Seque... FILE: src/seml/experiment/sources.py function import_exe (line 29) | def import_exe(executable: str, conda_env: str | None, working_dir: str): function get_imported_sources (line 77) | def get_imported_sources( function upload_sources (line 120) | def upload_sources( function get_git_info (line 155) | def get_git_info(filename: str, working_dir: str): function load_sources_from_db (line 193) | def load_sources_from_db( function delete_batch_sources (line 221) | def delete_batch_sources(collection: Collection[ExperimentDoc], batch_id... function delete_orphaned_sources (line 240) | def delete_orphaned_sources( FILE: src/seml/settings.py class SettingsDict (line 27) | class SettingsDict(Mapping[str, T]): method __getattr__ (line 28) | def __getattr__(self, name: str) -> T: ... class DatabaseSettings (line 31) | class DatabaseSettings(SettingsDict): class States (line 35) | class States(SettingsDict[List[str]]): class SlurmStates (line 46) | class SlurmStates(SettingsDict[List[str]]): class FileObserverSettings (line 56) | class FileObserverSettings(SettingsDict[Any]): class SlackObserverSettings (line 60) | class SlackObserverSettings(SettingsDict[str]): class MattermostObserverSettings (line 64) | class MattermostObserverSettings(SettingsDict[str]): class NetupeObserverSettings (line 69) | class NetupeObserverSettings(SettingsDict[str]): class ObserverSettings (line 73) | class ObserverSettings(SettingsDict[Dict[str, str]]): class NamedConfigSettings (line 80) | class NamedConfigSettings(SettingsDict[str]): class ConfirmThresholdSettings (line 86) | class ConfirmThresholdSettings(SettingsDict[int]): class ExperimentSettings (line 94) | class ExperimentSettings(SettingsDict): class MigrationSettings (line 100) | class MigrationSettings(SettingsDict): class SSHForwardSettings (line 107) | class SSHForwardSettings(SettingsDict): class Settings (line 115) | class Settings(SettingsDict): FILE: src/seml/utils/__init__.py function s_if (line 25) | def s_if(n: int) -> str: function unflatten (line 29) | def unflatten( function flatten (line 141) | def flatten(dictionary: Mapping[str, Any], parent_key: str = '', sep: st... function get_from_nested (line 173) | def get_from_nested(d: Mapping[str, Any], key: str, sep: str = '.') -> Any: function list_is_prefix (line 195) | def list_is_prefix(first: Sequence, second: Sequence) -> bool: function resolve_projection_path_conflicts (line 199) | def resolve_projection_path_conflicts( function chunker (line 246) | def chunker(seq: S, size: int) -> Generator[S]: function merge_dicts (line 268) | def merge_dicts(dict1: D, dict2: D) -> D: ... function merge_dicts (line 276) | def merge_dicts(dict1: dict, dict2: dict) -> dict: ... # type: ignore function merge_dicts (line 279) | def merge_dicts(dict1: Mapping, dict2: Mapping) -> Mapping: function remove_keys_from_nested (line 318) | def remove_keys_from_nested(d: dict, keys: Iterable[str] = ()) -> dict: function make_hash (line 342) | def make_hash(d: dict, exclude_keys: Sequence[str] = ()): class Hashabledict (line 367) | class Hashabledict(dict): method __hash__ (line 368) | def __hash__(self): # type: ignore - I don't think we can satisfy thi... function working_directory (line 375) | def working_directory(path: Path | str): function to_slices (line 392) | def to_slices(items: list[int]) -> list[tuple[int, int]]: function slice_to_str (line 422) | def slice_to_str(s: tuple[int, int]) -> str: function to_hashable (line 442) | def to_hashable(x: Any) -> Any: function warn_multiple_calls (line 469) | def warn_multiple_calls(warning: str, warn_after: int = 1): function load_text_resource (line 497) | def load_text_resource(path: str | Path): function assert_package_installed (line 526) | def assert_package_installed(package: str, error: str): function find_jupyter_host (line 544) | def find_jupyter_host( function get_virtual_env_path (line 620) | def get_virtual_env_path(): function is_local_file (line 634) | def is_local_file( function smaller_than_version_filter (line 671) | def smaller_than_version_filter(version: tuple[int, int, int]): function utcnow (line 705) | def utcnow(): function to_typeddict (line 725) | def to_typeddict(d: Mapping[str, Any], cls: type[TD], missing_ok: bool =... function drop_typeddict_difference (line 765) | def drop_typeddict_difference(obj: TD1, cls: type[TD1], cls2: type[TD2])... FILE: src/seml/utils/errors.py class InputError (line 4) | class InputError(SystemExit): class ConfigError (line 10) | class ConfigError(InputError): method __init__ (line 13) | def __init__(self, message='The config file contains an error.'): class ExecutableError (line 17) | class ExecutableError(InputError): method __init__ (line 20) | def __init__(self, message='The Python executable has a problem.'): class MongoDBError (line 24) | class MongoDBError(InputError): method __init__ (line 27) | def __init__(self, message='The MongoDB or its config has a problem.'): class ArgumentError (line 31) | class ArgumentError(InputError): method __init__ (line 34) | def __init__(self, message='The parsed arguments contain an error.'): FILE: src/seml/utils/io.py function tail_file (line 10) | def tail_file(path: str | Path, n: int = 1): FILE: src/seml/utils/json.py class NumpyEncoder (line 7) | class NumpyEncoder(json.JSONEncoder): method default (line 8) | def default(self, o): class PythonEncoder (line 22) | class PythonEncoder(json.JSONEncoder): method iterencode (line 23) | def iterencode(self, o, _one_shot=False): function _make_iterencode (line 75) | def _make_iterencode( FILE: src/seml/utils/multi_process.py function process_id (line 15) | def process_id(): function local_id (line 19) | def local_id(): function process_count (line 23) | def process_count(): function is_main_process (line 27) | def is_main_process(): function is_local_main_process (line 31) | def is_local_main_process(): function is_running_in_multi_process (line 35) | def is_running_in_multi_process(): class ChildProcessSkip (line 39) | class ChildProcessSkip(Exception): ... class MainProcessExecuteContext (line 42) | class MainProcessExecuteContext: method __enter__ (line 43) | def __enter__(self): method trace (line 49) | def trace(self, frame, event, arg): method __exit__ (line 52) | def __exit__(self, type, value, traceback): function only_on_main_process (line 64) | def only_on_main_process(func: Callable[P, R]) -> Callable[P, R | None]:... function only_on_main_process (line 68) | def only_on_main_process(func: None = None) -> MainProcessExecuteContext... function only_on_main_process (line 71) | def only_on_main_process( FILE: src/seml/utils/network.py function get_network_interfaces (line 6) | def get_network_interfaces(): function find_free_port (line 44) | def find_free_port(): FILE: src/seml/utils/slurm.py function get_cluster_name (line 12) | def get_cluster_name(): function get_slurm_jobs (line 35) | def get_slurm_jobs(*job_ids: str): function parse_scontrol_job_info (line 73) | def parse_scontrol_job_info(job_info: str): function get_slurm_arrays_tasks (line 107) | def get_slurm_arrays_tasks( function get_current_slurm_array_id (line 158) | def get_current_slurm_array_id(): function get_current_slurm_job_id (line 164) | def get_current_slurm_job_id(): function cancel_slurm_jobs (line 168) | def cancel_slurm_jobs(*job_ids: str | int, state: str | None = None): function are_slurm_jobs_running (line 186) | def are_slurm_jobs_running(*job_ids: str): function wait_until_slurm_jobs_finished (line 213) | def wait_until_slurm_jobs_finished(*job_ids: str, timeout: int | float): FILE: src/seml/utils/ssh_forward.py function retried_and_locked_ssh_port_forward (line 18) | def retried_and_locked_ssh_port_forward( function _ssh_forward_process (line 79) | def _ssh_forward_process( function _get_ssh_forward (line 128) | def _get_ssh_forward(ssh_config: dict[str, Any]): function get_forwarded_mongo_client (line 195) | def get_forwarded_mongo_client( FILE: src/seml/utils/yaml.py class YamlUniqueLoader (line 6) | class YamlUniqueLoader(yaml.FullLoader): function construct_mapping (line 16) | def construct_mapping(loader, node, deep=False): class YamlDumper (line 34) | class YamlDumper(yaml.Dumper): method represent_mapping (line 35) | def represent_mapping(self, tag, mapping, flow_style=None): FILE: test/resources/scripts/experiment_resolve_config.py function config (line 7) | def config(): function py_named_1 (line 15) | def py_named_1(): function py_named_2 (line 20) | def py_named_2(): function main (line 25) | def main(foo, bar, py, json, yaml): ... FILE: test/resources/scripts/experiment_resolve_config_interpolate.py function main (line 7) | def main(foo, bar, param1, interpolated_1, interpolated_2): ... FILE: test/test_config.py class TestParseConfigDicts (line 16) | class TestParseConfigDicts(unittest.TestCase): method setUpClass (line 18) | def setUpClass(cls): method tearDownClass (line 23) | def tearDownClass(cls): method load_config_dict (line 73) | def load_config_dict(self, path): method test_config_inheritance (line 78) | def test_config_inheritance(self): method test_convert_parameter_collections (line 122) | def test_convert_parameter_collections(self): method test_resolve_config (line 144) | def test_resolve_config(self): method test_resolve_config_interpolation (line 232) | def test_resolve_config_interpolation(self): method test_unpack_config_dict (line 266) | def test_unpack_config_dict(self): method test_empty_dictionary (line 290) | def test_empty_dictionary(self): method test_overwrite_parameters (line 296) | def test_overwrite_parameters(self): method test_zipped_parameters (line 305) | def test_zipped_parameters(self): method test_named_config_python (line 316) | def test_named_config_python(self): method test_named_config_python_raises (line 355) | def test_named_config_python_raises(self): method test_duplicate_parameters (line 373) | def test_duplicate_parameters(self): method test_generate_configs (line 395) | def test_generate_configs(self): method test_config_experiments_error (line 421) | def test_config_experiments_error(self): FILE: test/test_start.py class TestValueToString (line 6) | class TestValueToString(unittest.TestCase): method test_literal (line 7) | def test_literal(self): method test_list (line 14) | def test_list(self): method test_dict (line 57) | def test_dict(self): FILE: test/test_utils.py class TestMergeDictionaries (line 6) | class TestMergeDictionaries(unittest.TestCase): method test_basic (line 7) | def test_basic(self): method test_nested (line 14) | def test_nested(self): method test_empty (line 21) | def test_empty(self): method test_fails_not_dict (line 30) | def test_fails_not_dict(self): method test_nested_non_dict_override (line 38) | def test_nested_non_dict_override(self): class TestUnflattenDictionaries (line 51) | class TestUnflattenDictionaries(unittest.TestCase): method test_basic (line 52) | def test_basic(self): method test_recursive (line 63) | def test_recursive(self): method test_merge_duplicate_keys (line 74) | def test_merge_duplicate_keys(self): method test_conflicting_keys (line 80) | def test_conflicting_keys(self): method test_unflatten_single_level (line 113) | def test_unflatten_single_level(self): method test_out_of_bounds (line 125) | def test_out_of_bounds(self): method test_errors (line 137) | def test_errors(self): method test_empty (line 144) | def test_empty(self): method test_recursive_with_levels (line 148) | def test_recursive_with_levels(self): method test_unflatten_multiple_levels (line 185) | def test_unflatten_multiple_levels(self):