ramble package
- ramble.ramble_version = '0.6.0'
String containing Ramble version joined with .’s
- ramble.ramble_version_info = (0, 6, 0)
major, minor, patch version for Ramble, in a tuple
Subpackages
- ramble.cmd package
CommandNameErrorPythonNameErrorall_commands()cmd_name()find_workspace()find_workspace_path()get_command()get_module()python_name()remove_options()require_active_workspace()require_cmd_name()require_python_name()- Subpackages
- Submodules
- ramble.cmd.attributes module
- ramble.cmd.clean module
- ramble.cmd.commands module
- ramble.cmd.config module
- ramble.cmd.data module
- ramble.cmd.debug module
- ramble.cmd.deployment module
- ramble.cmd.docs module
- ramble.cmd.edit module
- ramble.cmd.help module
- ramble.cmd.info module
- ramble.cmd.license module
- ramble.cmd.list module
- ramble.cmd.mirror module
- ramble.cmd.on module
- ramble.cmd.python module
- ramble.cmd.repo module
- ramble.cmd.results module
- ramble.cmd.software_definitions module
- ramble.cmd.style module
- ramble.cmd.unit_test module
- ramble.cmd.workspace module
create_temp_workspace_directory()sanitize_arg_name()setup_parser()subcommand_functionsworkspace()workspace_activate()workspace_activate_setup_parser()workspace_analyze()workspace_analyze_setup_parser()workspace_archive()workspace_archive_setup_parser()workspace_concretize()workspace_concretize_setup_parser()workspace_config()workspace_config_setup_parser()workspace_create()workspace_create_setup_parser()workspace_deactivate()workspace_deactivate_setup_parser()workspace_edit()workspace_edit_setup_parser()workspace_experiment_logs()workspace_experiment_logs_setup_parser()workspace_generate_config()workspace_generate_config_setup_parser()workspace_info()workspace_info_setup_parser()workspace_list()workspace_list_setup_parser()workspace_manage()workspace_manage_experiments()workspace_manage_experiments_setup_parser()workspace_manage_includes()workspace_manage_includes_setup_parser()workspace_manage_modifiers()workspace_manage_modifiers_setup_parser()workspace_manage_setup_parser()workspace_manage_software()workspace_manage_software_setup_parser()workspace_mirror()workspace_mirror_setup_parser()workspace_push_to_cache()workspace_push_to_cache_setup_parser()workspace_remove()workspace_remove_setup_parser()workspace_run_pipeline()workspace_setup()workspace_setup_setup_parser()
- ramble.definitions namespace
- Submodules
- ramble.definitions.families module
- ramble.definitions.requirements module
- ramble.definitions.variables module
CommandVariableEnvironmentVariableEnvironmentVariableModificationsEnvironmentVariableModifications.add_modification()EnvironmentVariableModifications.all_methodsEnvironmentVariableModifications.appendEnvironmentVariableModifications.as_str()EnvironmentVariableModifications.copy()EnvironmentVariableModifications.prependEnvironmentVariableModifications.setEnvironmentVariableModifications.unset
VariableVariableModification
- ramble.definitions.versions module
- ramble.language namespace
- Submodules
- ramble.language.application_language module
- ramble.language.language_base module
- ramble.language.language_helpers module
- ramble.language.modifier_language module
- ramble.language.package_manager_language module
- ramble.language.platform_language module
- ramble.language.shared_language module
SharedMetaarchive_pattern()auxiliary_software_file()class_family()command_variable()conflict()default_args()define_compiler()environment_variable()figure_of_merit()figure_of_merit_context()formatted_executable()maintainers()package_manager_config()register_builtin()register_phase()register_template()register_validator()required_package()required_variable()software_spec()strict_versions()success_criteria()tags()target_shells()variable()variant()version()when()
- ramble.language.system_language module
- ramble.language.workflow_manager_language module
- ramble.schema package
- Submodules
- ramble.schema.applications module
- ramble.schema.base_application_repos module
- ramble.schema.base_class_repos module
- ramble.schema.base_modifier_repos module
- ramble.schema.base_package_manager_repos module
- ramble.schema.base_platform_repos module
- ramble.schema.base_system_repos module
- ramble.schema.base_workflow_manager_repos module
- ramble.schema.config module
- ramble.schema.db module
- ramble.schema.env_vars module
- ramble.schema.experiment module
- ramble.schema.experiments_metadata module
- ramble.schema.fom module
- ramble.schema.formatted_executables module
- ramble.schema.internals module
- ramble.schema.licenses module
- ramble.schema.merged module
- ramble.schema.metadata module
- ramble.schema.mirrors module
- ramble.schema.modifier_repos module
- ramble.schema.modifiers module
- ramble.schema.package_manager_repos module
- ramble.schema.platform_repos module
- ramble.schema.repos module
- ramble.schema.software module
- ramble.schema.software_db module
- ramble.schema.success_criteria module
- ramble.schema.system_repos module
- ramble.schema.tables module
- ramble.schema.types module
- ramble.schema.variables module
- ramble.schema.variants module
- ramble.schema.workflow_manager_repos module
- ramble.schema.workspace module
- ramble.schema.zips module
- ramble.test package
- Subpackages
- ramble.test.cmd namespace
- Submodules
- ramble.test.cmd.attributes module
- ramble.test.cmd.clean module
- ramble.test.cmd.config module
- ramble.test.cmd.debug module
- ramble.test.cmd.deployment module
- ramble.test.cmd.docs module
- ramble.test.cmd.edit module
- ramble.test.cmd.help module
- ramble.test.cmd.info module
- ramble.test.cmd.license module
- ramble.test.cmd.list module
- ramble.test.cmd.main module
- ramble.test.cmd.mirror module
- ramble.test.cmd.on module
- ramble.test.cmd.python module
- ramble.test.cmd.repo module
- ramble.test.cmd.results module
- ramble.test.cmd.software_definitions module
- ramble.test.cmd.style module
- ramble.test.cmd.unit_test module
- ramble.test.cmd.workspace module
- ramble.test.cmd.workspace_concretize module
- ramble.test.cmd.workspace_deprecation module
- ramble.test.cmd.workspace_manage module
- ramble.test.definitions namespace
- ramble.test.end_to_end namespace
- Subpackages
- Submodules
- ramble.test.end_to_end.analyze_fom_output module
- ramble.test.end_to_end.analyze_upload module
- ramble.test.end_to_end.chained_experiment_var_inheritance module
- ramble.test.end_to_end.chained_experiment_variant_propagation module
- ramble.test.end_to_end.cleanup_directive module
- ramble.test.end_to_end.concretize_with_different_package_managers module
- ramble.test.end_to_end.config_section_env_vars module
- ramble.test.end_to_end.configvar_dry_run module
- ramble.test.end_to_end.custom_executables module
- ramble.test.end_to_end.define_package_paths module
- ramble.test.end_to_end.dryrun_chained_experiments module
- ramble.test.end_to_end.dryrun_copies_external_env module
- ramble.test.end_to_end.dryrun_series_contains_package_paths module
- ramble.test.end_to_end.env_var_builtin module
- ramble.test.end_to_end.env_var_leakage module
- ramble.test.end_to_end.exclusive_filtered_vector_workloads module
- ramble.test.end_to_end.expanded_fom_dry_run module
- ramble.test.end_to_end.experiment_excludes module
- ramble.test.end_to_end.experiment_hashes module
- ramble.test.end_to_end.experiment_repeats module
- ramble.test.end_to_end.experiment_templates module
- ramble.test.end_to_end.explicit_zips module
- ramble.test.end_to_end.fom_log_file_path module
- ramble.test.end_to_end.formatted_executables module
- ramble.test.end_to_end.globbing_patterns module
- ramble.test.end_to_end.gromacs_size_expansion module
- ramble.test.end_to_end.included_configuration_files module
- ramble.test.end_to_end.inclusive_filtered_vector_workloads module
- ramble.test.end_to_end.known_applications module
- ramble.test.end_to_end.license_name module
- ramble.test.end_to_end.malformed_config module
- ramble.test.end_to_end.manage_software module
- ramble.test.end_to_end.merge_config_files module
- ramble.test.end_to_end.missing_required_dry_run module
- ramble.test.end_to_end.nested_compilers_are_installed module
- ramble.test.end_to_end.nested_config_templates module
- ramble.test.end_to_end.object_import module
- ramble.test.end_to_end.object_precedence module
- ramble.test.end_to_end.object_validation module
- ramble.test.end_to_end.package_manager_config module
- ramble.test.end_to_end.package_manager_provenance module
- ramble.test.end_to_end.package_manager_requirements module
- ramble.test.end_to_end.package_manager_unique_env_dirs module
- ramble.test.end_to_end.passthrough_variables module
- ramble.test.end_to_end.phase_profiling module
- ramble.test.end_to_end.phase_selection module
- ramble.test.end_to_end.phase_selection_with_dependencies module
- ramble.test.end_to_end.registered_builtin_order module
- ramble.test.end_to_end.setup_analyze module
- ramble.test.end_to_end.shared_context module
- ramble.test.end_to_end.shell_wrappers module
- ramble.test.end_to_end.short_builtin_dep_name module
- ramble.test.end_to_end.software_spec_injection module
- ramble.test.end_to_end.spack_env_cache module
- ramble.test.end_to_end.tag_filtering module
- ramble.test.end_to_end.target_shells module
- ramble.test.end_to_end.template module
- ramble.test.end_to_end.test_fast_tables module
- ramble.test.end_to_end.unused_compilers_are_skipped module
- ramble.test.end_to_end.variant_propagation module
- ramble.test.end_to_end.vector_workloads module
- ramble.test.end_to_end.warn_mirror_support module
- ramble.test.end_to_end.workspace_includes module
- ramble.test.end_to_end.workspace_path_replacements module
- ramble.test.end_to_end.wrfv4_dry_run module
- ramble.test.modifier_functionality namespace
- Submodules
- ramble.test.modifier_functionality.executable_modifier_usage_filters module
- ramble.test.modifier_functionality.experiment_modification module
- ramble.test.modifier_functionality.mock_env_var_modifiers module
- ramble.test.modifier_functionality.mock_layered_modifications module
- ramble.test.modifier_functionality.mock_modifier_dry_run module
- ramble.test.modifier_functionality.mock_modifier_phases module
- ramble.test.modifier_functionality.mock_modifier_spack_configs module
- ramble.test.modifier_functionality.mock_repeated_modifications module
- ramble.test.modifier_functionality.mock_spack_modifier module
- ramble.test.modifier_functionality.modeless_variables module
- ramble.test.modifier_functionality.modifier_conflicts module
- ramble.test.modifier_functionality.modifier_helpers module
- ramble.test.modifier_functionality.modifier_nested_var_dry_run module
- ramble.test.modifier_functionality.modifier_prepare_analysis module
- ramble.test.modifier_functionality.multi_modifier_dry_run module
- ramble.test.modifier_functionality.repeat_env_var module
- ramble.test.modifier_functionality.required_variables module
- ramble.test.modifier_functionality.single_modifier_dry_run module
- ramble.test.package_manager_functionality namespace
- ramble.test.success_criteria_functionality namespace
- Submodules
- ramble.test.success_criteria_functionality.always_print_foms module
- ramble.test.success_criteria_functionality.anti_match module
- ramble.test.success_criteria_functionality.repeat_success_strict module
- ramble.test.success_criteria_functionality.success_fom_comparison module
- ramble.test.success_criteria_functionality.success_fom_globbing module
- ramble.test.success_criteria_functionality.success_functions module
- ramble.test.success_criteria_functionality.success_modifiers module
- ramble.test.success_criteria_functionality.success_scoping module
- ramble.test.success_criteria_functionality.success_summary module
- ramble.test.success_criteria_functionality.success_variable_fom_comparison module
- ramble.test.systems_and_platforms namespace
- ramble.test.util namespace
- Submodules
- ramble.test.util.colors module
- ramble.test.util.conversions module
- ramble.test.util.editor module
- ramble.test.util.env module
- ramble.test.util.file_cache module
- ramble.test.util.foms module
- ramble.test.util.format module
- ramble.test.util.logger module
- ramble.test.util.module_utils module
- ramble.test.util.naming module
- ramble.test.util.object_utils module
- ramble.test.util.output_capture module
- ramble.test.util.path module
- ramble.test.util.shell_utils module
- ramble.test.util.spec_utils module
- ramble.test.util.stats module
- ramble.test.util.web module
- ramble.test.util.yaml_generation module
- ramble.test.workflow_manager_functionality namespace
- ramble.test.workspace_hashing namespace
- ramble.test.cmd namespace
- Submodules
- ramble.test.application module
TestApplicationBasebasic_exp_dict()test_app_features()test_application_copy_is_deep()test_application_methods_with_default_workspace()test_basic_app()test_class_attributes()test_define_commands()test_define_variables_for_template_path()test_get_executable_graph_custom_executables()test_get_executable_graph_initial()test_get_executable_graph_yaml_defined()test_register_builtin_app()test_required_builtins()test_set_input_path()test_set_input_path_multi_input()test_set_variables_and_variants()test_short_print()test_undefined_executable_dies()test_workload_groups()test_workload_groups_inherited()
- ramble.test.application_inheritance module
- ramble.test.application_language module
add_compiler()add_executable()add_figure_of_merit()add_input_file()add_software_spec()add_workload()test_application_type_features()test_define_compiler_directive()test_executable_directive()test_figure_of_merit_directive()test_figure_of_merit_directive_required_args()test_input_file_directive()test_license_name_directive()test_non_reserved_variables()test_software_spec_directive()test_stage_files_directive_invalid_method()test_stage_files_directive_method()test_stage_files_directive_no_dst()test_stage_files_directive_overwrite()test_stage_files_directive_stages()test_stage_files_directive_user_defined()test_workload_directive()test_workload_variable_workload_defaults_error()test_workload_variable_workload_defaults_works()
- ramble.test.cache_fetch module
- ramble.test.commands module
- ramble.test.concretize_builtin module
- ramble.test.config module
- ramble.test.context module
- ramble.test.dry_run_helpers module
- ramble.test.expander module
- ramble.test.experiment_result module
experiment_result()test_analyze_experiments_skips_none_fom()test_experiment_result_cache_invalidation_hash_change()test_experiment_result_cache_invalidation_new_file()test_experiment_result_get_newest_experiment_file()test_experiment_result_read_write_cache()test_experiment_result_to_dict()test_extract_inmem_foms_skips_none()test_get_newest_experiment_file_inner_file_not_found()test_get_newest_experiment_file_outer_file_not_found()
- ramble.test.experiment_set module
test_chained_cycle_errors()test_chained_experiment_has_correct_directory()test_chained_experiments()test_chained_experiments_populate_new_experiments()test_chained_invalid_order_errors()test_cross_experiment_missing_experiment_errors()test_cross_experiment_variable_references()test_custom_executables_track_variables()test_experiment_names_match()test_explicit_zips_in_matrix()test_explicit_zips_unconsumed()test_explicit_zips_work()test_full_experiments_from_dict()test_matrix_experiments()test_matrix_experiments_explicit_excludes()test_matrix_multiplication_experiments()test_matrix_undefined_var_errors()test_matrix_vector_experiments()test_missing_required_keyword_errors()test_modifiers_no_version_set_correctly()test_modifiers_set_correctly()test_multi_matrix_experiments()test_n_nodes_correct_defaults()test_n_ranks_correct_defaults()test_nonunique_vector_errors()test_processes_per_node_correct_defaults()test_repeated_experiments()test_reserved_keywords_error_in_application()test_reserved_keywords_error_in_experiment()test_reserved_keywords_error_in_workload()test_single_experiment_in_set()test_single_var_explicit_zip()test_unused_var_propagates_to_chain()test_unused_vector_no_error()test_unused_zip_no_error()test_validation_in_render_repeat_experiments()test_vector_experiment_in_set()test_vector_experiment_with_explicit_excludes()test_vector_experiment_with_late_where_excludes()test_vector_experiment_with_multi_where_excludes()test_vector_experiment_with_where_excludes()test_vector_length_mismatch_errors()test_zip_multi_use_var_errors()test_zip_non_list_var_errors()test_zip_variable_lengths_errors()test_zipped_vector_experiments()
- ramble.test.fetch_strategy module
TestCvsFetchStrategyTestCvsFetchStrategy.fetcher()TestCvsFetchStrategy.mock_vcs_executables()TestCvsFetchStrategy.test_archive()TestCvsFetchStrategy.test_cachable()TestCvsFetchStrategy.test_fetch()TestCvsFetchStrategy.test_init()TestCvsFetchStrategy.test_mirror_id()TestCvsFetchStrategy.test_remove_untracked_files()TestCvsFetchStrategy.test_reset()TestCvsFetchStrategy.test_source_id()TestCvsFetchStrategy.test_str()
TestFsCacheTestGitFetchStrategyTestHgFetchStrategyTestHgFetchStrategy.fetcher()TestHgFetchStrategy.mock_vcs_executables()TestHgFetchStrategy.test_archive()TestHgFetchStrategy.test_cachable()TestHgFetchStrategy.test_fetch()TestHgFetchStrategy.test_init()TestHgFetchStrategy.test_mirror_id()TestHgFetchStrategy.test_reset()TestHgFetchStrategy.test_source_id()TestHgFetchStrategy.test_str()
TestSvnFetchStrategyTestSvnFetchStrategy.fetcher()TestSvnFetchStrategy.mock_vcs_executables()TestSvnFetchStrategy.test_archive()TestSvnFetchStrategy.test_cachable()TestSvnFetchStrategy.test_fetch()TestSvnFetchStrategy.test_init()TestSvnFetchStrategy.test_mirror_id()TestSvnFetchStrategy.test_reset()TestSvnFetchStrategy.test_source_id()TestSvnFetchStrategy.test_str()
TestURLFetchStrategyTestURLFetchStrategy.fetcher()TestURLFetchStrategy.mock_config()TestURLFetchStrategy.mock_curl()TestURLFetchStrategy.mock_tty()TestURLFetchStrategy.test_fetch_curl_404()TestURLFetchStrategy.test_fetch_curl_cert_error()TestURLFetchStrategy.test_fetch_curl_content_mismatch()TestURLFetchStrategy.test_fetch_curl_no_verify_ssl()TestURLFetchStrategy.test_fetch_curl_success()
TestVCSFetchStrategyTestVCSFetchStrategy.DummyVCSTestVCSFetchStrategy.mock_tar()TestVCSFetchStrategy.test_archive()TestVCSFetchStrategy.test_archive_with_exclude()TestVCSFetchStrategy.test_archive_with_srcdir()TestVCSFetchStrategy.test_check_and_expand()TestVCSFetchStrategy.test_init()TestVCSFetchStrategy.test_init_no_url()TestVCSFetchStrategy.test_str()
test_bad_from_url_scheme()test_from_url_scheme()
- ramble.test.gcs_fetch module
- ramble.test.get_file_path module
- ramble.test.impossible_when module
- ramble.test.mirror module
- ramble.test.mock_spack_runner module
MockPackageInfoMockSpackRunnerMockSpackRunner.activate()MockSpackRunner.add_config()MockSpackRunner.add_config_file()MockSpackRunner.add_include_file()MockSpackRunner.add_spec()MockSpackRunner.added_packages()MockSpackRunner.apply_configs()MockSpackRunner.concretize()MockSpackRunner.configure_env()MockSpackRunner.copy_from_external_env()MockSpackRunner.create_env()MockSpackRunner.create_stage_env()MockSpackRunner.deactivate()MockSpackRunner.generate_activate_command()MockSpackRunner.generate_deactivate_command()MockSpackRunner.generate_env_file()MockSpackRunner.generate_source_command()MockSpackRunner.get_package_path()MockSpackRunner.get_version()MockSpackRunner.install()MockSpackRunner.inventory_hash()MockSpackRunner.migrate_stage_env()MockSpackRunner.package_definitions()MockSpackRunner.package_provenance()MockSpackRunner.set_compiler_config_dir()MockSpackRunner.set_dry_run()MockSpackRunner.set_env()
- ramble.test.modifier_application module
- ramble.test.modifier_language module
add_archive_pattern()add_compiler()add_env_var_modification()add_executable_modifier()add_figure_of_merit()add_figure_of_merit_context()add_mode()add_modifier_variable()add_required_package()add_software_spec()add_variable_modification()test_archive_pattern_directive()test_define_compiler_directive()test_env_var_modification_directive()test_executable_modifier_directive()test_figure_of_merit_context_directive()test_figure_of_merit_directive()test_merge_conditions_creates_when_list()test_mode_directive()test_modifier_class_attributes()test_modifier_conflict_usage_error()test_modifier_type_features()test_modifier_variable_directive()test_required_package_directive()test_software_spec_directive()test_variable_modification_directive()test_variable_modification_invalid_method()test_variable_modification_modeless()
- ramble.test.namespace_trie module
- ramble.test.package_manager_language module
- ramble.test.reports module
create_test_exp_result()create_test_fom_result()test_compare_plot()test_compare_plot_with_simplify_names()test_fom_plot()test_fom_plot_with_simplify_names()test_index_printing()test_multiline_plot()test_multiple_groupby()test_repeat_import()test_scaling_plots()test_simplify_names()test_where_query()
- ramble.test.repository module
- ramble.test.software_environment module
test_basic_software_environment()test_compiler_in_environment_warns()test_invalid_environment_error()test_invalid_packages_error()test_is_used_property()test_multi_template_software_environments()test_software_environments_no_packages()test_software_environments_no_rendered_packages()test_template_software_environments()test_undefined_compiler_errors()test_undefined_package_errors()
- ramble.test.spec module
- ramble.test.spec_basic module
- ramble.test.stage module
StageIncludeTestStageTestStage.stage_nameTestStage.test_composite_stage_with_expand_resource()TestStage.test_composite_stage_with_expand_resource_default_placement()TestStage.test_composite_stage_with_noexpand_resource()TestStage.test_ensure_one_stage_entry()TestStage.test_expand_archive()TestStage.test_expand_archive_extra_expand()TestStage.test_fetch()TestStage.test_input_path_available()TestStage.test_keep_exceptions()TestStage.test_keep_without_exceptions()TestStage.test_no_keep_with_exceptions()TestStage.test_no_keep_without_exceptions()TestStage.test_no_search_if_default_succeeds()TestStage.test_no_search_mirror_only()TestStage.test_noexpand_stage_file()TestStage.test_restage()TestStage.test_search_if_default_fails()TestStage.test_setup_and_destroy_name_with_tmp()TestStage.test_setup_and_destroy_name_without_tmp()TestStage.test_setup_no_name_fails()TestStage.test_stage_constructor_no_fetcher()TestStage.test_stage_constructor_with_path()
check_destroy()check_expand_archive()check_fetch()check_setup()composite_stage_with_expanding_resource()failing_fetch_strategy()failing_search_fn()mock_expand_resource()mock_noexpand_resource()mock_stage_archive()search_fn()test_cannot_access()test_stage_create_replace_path()tmp_build_stage_dir()
- ramble.test.success_criteria module
- ramble.test.test_context_columns module
TestContextColumnsTestContextColumns.test_autocolumn_context_name_variable()TestContextColumns.test_autocolumn_match_instance_name_regex()TestContextColumns.test_autocolumn_null_context()TestContextColumns.test_autocolumn_origin_filter()TestContextColumns.test_autocolumn_regex_groups()TestContextColumns.test_context_column_ambiguous_names()TestContextColumns.test_context_column_discovery()TestContextColumns.test_context_column_fom_globbing()TestContextColumns.test_context_column_manual_conflict()TestContextColumns.test_context_column_mixed_sorting()TestContextColumns.test_context_column_sorting()TestContextColumns.test_context_column_where_clause()TestContextColumns.test_table_transpose()
- ramble.test.test_deployment module
- ramble.test.test_results_tables module
TestResultsColumnTestResultsColumn.test_col_name()TestResultsColumn.test_extract_value_expression()TestResultsColumn.test_extract_value_fom()TestResultsColumn.test_extract_value_where_fails()TestResultsColumn.test_init()TestResultsColumn.test_init_both_expression_and_fom()TestResultsColumn.test_init_missing_expression_and_fom()
TestResultsTableTestResultsTables
- ramble.test.uploader module
mock_results_with_metadata()test_create_tables_dataset_does_not_exist()test_create_tables_dataset_exists()test_data_preparation()test_experiment_metadata_preparation()test_fom_validation_fails_with_none()test_sqlite_uploader_chunked_upload_errors()test_sqlite_uploader_create_tables_and_upload()test_sqlite_uploader_create_tables_with_existing()test_sqlite_uploader_perform_upload_no_db()test_upload_results_errs()
- ramble.test.variant module
test_boolean_variants()test_changed_variant_value_works_with_when()test_default_arg_works()test_default_variant_value_works_with_when()test_invalid_variant_value_errors()test_modifier_variants_works_with_when()test_non_matched_variants_are_ignored()test_variant_expansion()test_variant_info_works()test_variant_nesting_works()
- ramble.test.version module
test_application_version_variant_when()test_define_version_variables_errors()test_multi_modifier_versions()test_non_pep440_application_version_variant_when()test_non_pep440_version_number()test_only_one_preferred_version_allowed()test_repeat_modifier_versions_error()test_strict_versions_config()test_strict_versions_directive()test_version_variable_expansion_info()test_versions_inherited_from_base_app()
- ramble.test.when module
test_conflicts_version_when()test_conflicts_when()test_env_var_modification_when()test_executable_errors_when_overlapping_conditions()test_executable_modification_when()test_executable_when()test_fom_context_enabled_when_true()test_fom_enabled_when_true()test_fom_errors_when_context_not_found()test_fom_overwrites_when_inherited()test_formatted_exec_when()test_input_when()test_modifier_variable_when()test_obj_env_var_when()test_obj_required_key_when()test_obj_required_var_when()test_object_conflicts_expander_errors()test_object_conflicts_no_msg()test_object_conflicts_warn_only()test_package_manager_requirement_when()test_package_manager_variable_when()test_register_builtin_when()test_register_phase_when()test_register_template_when()test_register_validator_when()test_same_fom_name_different_context()test_success_criteria_when()test_variable_modification_when()test_variable_when()test_variable_when_workload_constraint()test_workflow_manager_variable_when()test_workload_definition_when()test_workload_errors_when_not_enabled()test_workload_errors_when_overlapping_conditions()test_workload_group_when()
- ramble.test.workspace module
- Subpackages
- ramble.util package
- Subpackages
- Submodules
- ramble.util.class_attributes module
- ramble.util.colors module
- ramble.util.command_runner module
- ramble.util.conflicts module
- ramble.util.conversions module
- ramble.util.directives module
- ramble.util.editor module
- ramble.util.env module
- ramble.util.executable module
- ramble.util.file_cache module
- ramble.util.file_util module
- ramble.util.foms module
- ramble.util.format module
- ramble.util.graph module
- ramble.util.hashing module
- ramble.util.install_cache module
- ramble.util.lock module
- ramble.util.logger module
- ramble.util.matrices module
- ramble.util.module_utils module
- ramble.util.naming module
- ramble.util.object_utils module
- ramble.util.output_capture module
- ramble.util.path module
- ramble.util.shell_utils module
- ramble.util.spec_utils module
- ramble.util.stats module
ConfidenceLevelStatsBaseStatsCoefficientOfVariationStatsConfidenceIntervalBaseStatsConfidenceIntervalLower50StatsConfidenceIntervalLower90StatsConfidenceIntervalLower95StatsConfidenceIntervalLower99StatsConfidenceIntervalUpper50StatsConfidenceIntervalUpper90StatsConfidenceIntervalUpper95StatsConfidenceIntervalUpper99StatsHarmonicMeanStatsMaxStatsMeanStatsMedianStatsMinStatsStdevStatsVar
- ramble.util.version module
- ramble.util.web module
- ramble.util.yaml_generation module
- ramble.workspace package
RambleActiveWorkspaceErrorRambleConflictingDefinitionErrorRambleInvalidTemplateNameErrorRambleWorkspaceErrorWorkspaceWorkspace.activeWorkspace.add_experiments()Workspace.add_include()Workspace.add_modifier()Workspace.add_to_cache()Workspace.all_applications()Workspace.all_auxiliary_software_files()Workspace.all_experiments()Workspace.all_experiments_pathWorkspace.all_templates()Workspace.all_workloads()Workspace.append_result()Workspace.archive_dirWorkspace.auxiliary_software_dirWorkspace.build_experiment_set()Workspace.check_cache()Workspace.clear()Workspace.concretize()Workspace.config_dirWorkspace.config_file_pathWorkspace.config_scopes()Workspace.create_mirror()Workspace.date_string()Workspace.default_results()Workspace.deployment_repos_dirWorkspace.deployments_dirWorkspace.destroy()Workspace.dump_results()Workspace.dump_tables()Workspace.experiment_dirWorkspace.get_applications()Workspace.get_software_dict()Workspace.get_workspace_env_vars()Workspace.get_workspace_formatted_executables()Workspace.get_workspace_internals()Workspace.get_workspace_modifiers()Workspace.get_workspace_paths()Workspace.get_workspace_success_criteria()Workspace.get_workspace_tables()Workspace.get_workspace_variants()Workspace.get_workspace_vars()Workspace.get_workspace_zips()Workspace.hash_file_nameWorkspace.included_config_scopes()Workspace.index_modifiers()Workspace.input_dirWorkspace.insert_result()Workspace.internalWorkspace.internal_subdirWorkspace.inventory_file_nameWorkspace.latest_archiveWorkspace.latest_archive_pathWorkspace.log_dirWorkspace.manage_environments()Workspace.manage_packages()Workspace.nameWorkspace.named_deploymentWorkspace.pathWorkspace.print_config()Workspace.print_modifiers()Workspace.read_config()Workspace.read_file_content()Workspace.read_template()Workspace.read_transaction()Workspace.remove_include()Workspace.remove_modifier()Workspace.results_dirWorkspace.shared_dirWorkspace.shared_license_dirWorkspace.simplify_software()Workspace.simplify_variables()Workspace.software_dirWorkspace.squash_and_print_config()Workspace.symlink_result()Workspace.tables_dirWorkspace.template_path()Workspace.update_metadata()Workspace.workspace_paths()Workspace.write()Workspace.write_config()Workspace.write_metadata()Workspace.write_software_info()Workspace.write_templates()Workspace.write_transaction()Workspace.ws_file_config_scope()Workspace.ws_file_config_scope_name()
activate()active()active_workspace()all_config_files()all_template_paths()all_workspace_names()config_dict()config_file()create()deactivate()exists()get_filepath()get_workspace_path()is_workspace_dir()licenses_file()namespacenamespace.applicationnamespace.chained_experimentsnamespace.commandnamespace.commandsnamespace.compilernamespace.compiler_specnamespace.custom_executablesnamespace.env_varnamespace.environmentsnamespace.excludenamespace.executable_injectionnamespace.executablesnamespace.experimentnamespace.external_envnamespace.formatted_executablesnamespace.includenamespace.indentationnamespace.inherit_variablesnamespace.internalsnamespace.join_separatornamespace.matricesnamespace.matrixnamespace.metadatanamespace.modifiersnamespace.n_repeatsnamespace.package_managernamespace.packagesnamespace.pkg_specnamespace.platformnamespace.prefixnamespace.ramblenamespace.softwarenamespace.successnamespace.systemnamespace.tablesnamespace.tagsnamespace.templatenamespace.variablesnamespace.variantsnamespace.versionnamespace.wherenamespace.workflow_managernamespace.workloadnamespace.workspacenamespace.zips
no_active_workspace()read()root()template_path()- Submodules
- ramble.workspace.shell module
- ramble.workspace.workspace module
AUXILIARY_SOFTWARE_DIR_NAMELOCKFILE_NAMERAMBLE_WORKSPACE_VARRambleActiveWorkspaceErrorRambleConflictingDefinitionErrorRambleInvalidTemplateNameErrorRambleWorkspaceErrorVALID_WORKSPACE_NAME_REWORKSPACE_ARCHIVE_PATHWORKSPACE_CONFIG_PATHWORKSPACE_DEPLOYMENTS_PATHWORKSPACE_EXPERIMENT_PATHWORKSPACE_INPUT_PATHWORKSPACE_LOG_PATHWORKSPACE_RESULTS_PATHWORKSPACE_SHARED_LICENSE_PATHWORKSPACE_SHARED_PATHWORKSPACE_SOFTWARE_PATHWORKSPACE_TABLES_PATHWorkspaceWorkspace.activeWorkspace.add_experiments()Workspace.add_include()Workspace.add_modifier()Workspace.add_to_cache()Workspace.all_applications()Workspace.all_auxiliary_software_files()Workspace.all_experiments()Workspace.all_experiments_pathWorkspace.all_templates()Workspace.all_workloads()Workspace.append_result()Workspace.archive_dirWorkspace.auxiliary_software_dirWorkspace.build_experiment_set()Workspace.check_cache()Workspace.clear()Workspace.concretize()Workspace.config_dirWorkspace.config_file_pathWorkspace.config_scopes()Workspace.create_mirror()Workspace.date_string()Workspace.default_results()Workspace.deployment_repos_dirWorkspace.deployments_dirWorkspace.destroy()Workspace.dump_results()Workspace.dump_tables()Workspace.experiment_dirWorkspace.get_applications()Workspace.get_software_dict()Workspace.get_workspace_env_vars()Workspace.get_workspace_formatted_executables()Workspace.get_workspace_internals()Workspace.get_workspace_modifiers()Workspace.get_workspace_paths()Workspace.get_workspace_success_criteria()Workspace.get_workspace_tables()Workspace.get_workspace_variants()Workspace.get_workspace_vars()Workspace.get_workspace_zips()Workspace.hash_file_nameWorkspace.included_config_scopes()Workspace.index_modifiers()Workspace.input_dirWorkspace.insert_result()Workspace.internalWorkspace.internal_subdirWorkspace.inventory_file_nameWorkspace.latest_archiveWorkspace.latest_archive_pathWorkspace.log_dirWorkspace.manage_environments()Workspace.manage_packages()Workspace.nameWorkspace.named_deploymentWorkspace.pathWorkspace.print_config()Workspace.print_modifiers()Workspace.read_config()Workspace.read_file_content()Workspace.read_template()Workspace.read_transaction()Workspace.remove_include()Workspace.remove_modifier()Workspace.results_dirWorkspace.shared_dirWorkspace.shared_license_dirWorkspace.simplify_software()Workspace.simplify_variables()Workspace.software_dirWorkspace.squash_and_print_config()Workspace.symlink_result()Workspace.tables_dirWorkspace.template_path()Workspace.update_metadata()Workspace.workspace_paths()Workspace.write()Workspace.write_config()Workspace.write_metadata()Workspace.write_software_info()Workspace.write_templates()Workspace.write_transaction()Workspace.ws_file_config_scope()Workspace.ws_file_config_scope_name()
activate()active()active_workspace()all_config_files()all_template_paths()all_workspace_names()applications_schemaconfig_dict()config_file()config_schemacreate()deactivate()deactivate_config_scope()exists()get_filepath()get_workspace()get_workspace_path()is_workspace_dir()licenses_file()no_active_workspace()prepare_config_scope()read()root()template_path()valid_workspace_name()validate_workspace_name()yaml_equivalent()
Submodules
ramble.appkit module
appkit is a set of useful build tools and directives for applications.
Everything in this module is automatically imported into Ramble application files.
ramble.caches module
Caches used by Ramble to store data
- class ramble.caches.MirrorCache(root)[source]
Bases:
object
- ramble.caches.fetch_cache = <ramble.fetch_strategy.FsCache object>
Ramble’s local cache for downloaded source archives
- ramble.caches.fetch_cache_location()[source]
Filesystem cache of downloaded archives.
This prevents Ramble from repeatedly fetch the same files when using them within multiple workspaces.
- ramble.caches.misc_cache = <ramble.util.file_cache.FileCache object>
Ramble’s cache for small data
ramble.config module
This module implements Ramble’s configuration file handling.
This implements Ramble’s configuration system, which handles merging multiple scopes with different levels of precedence.
The scopes are:
default
system
site
user
Important functions in this module are:
get_config reads in YAML data for a particular scope and returns
it. Callers can then modify the data and write it back with
update_config.
When read in, Ramble validates configurations with jsonschemas. The
schemas are in submodules of ramble.schema.
- exception ramble.config.ConfigError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorSuperclass for all ramble config related errors.
- exception ramble.config.ConfigFileError(message: str, long_message: str | None = None)[source]
Bases:
ConfigErrorIssue reading or accessing a configuration file.
- exception ramble.config.ConfigFormatError(validation_error, data, filename=None, line=None)[source]
Bases:
ConfigErrorRaised when a configuration format does not match its schema.
- class ramble.config.ConfigScope(name, path)[source]
Bases:
objectThis class represents a configuration scope.
A scope is one directory containing named configuration files. Each file is a config “section” (e.g., mirrors, compilers, etc).
- property is_platform_dependent
- exception ramble.config.ConfigSectionError(message: str, long_message: str | None = None)[source]
Bases:
ConfigErrorError for referring to a bad config section name in a configuration.
- class ramble.config.Configuration(*scopes)[source]
Bases:
objectA full Ramble configuration, from a hierarchy of config files.
This class makes it easy to add a new scope on top of an existing one.
- clear_caches()[source]
Clears the caches for configuration files,
This will cause files to be re-read upon the next request.
- property file_scopes
List of writable scopes with an associated file.
- get(path, default=None, scope=None)[source]
Get a config section or a single value from one.
Accepts a path syntax that allows us to grab nested config map entries. Getting the ‘config’ section would look like:
ramble.config.get('config')
and the
dirtysection in theconfigscope would be:ramble.config.get('config:dirty')
We use
:as the separator, like YAML objects.
- get_config(section, scope=None)[source]
Get configuration settings for a section.
If
scopeisNoneor not provided, return the merged contents of all of ramble’s configuration scopes. Ifscopeis provided, return only the configuration as specified in that scope.This off the top-level name from the YAML section. That is, for a YAML config file that looks like this:
config: install_tree: $ramble/opt/ramble module_roots: lmod: $ramble/share/ramble/lmodget_config('config')will return:{ 'install_tree': '$ramble/opt/ramble', 'module_roots: { 'lmod': '$ramble/share/ramble/lmod' } }
- get_config_filename(scope, section)[source]
For some scope and section, get the name of the configuration file.
- highest_precedence_non_platform_scope()[source]
Non-internal non-platform scope with highest precedence
Platform-specific scopes are of the form scope/platform
- matching_scopes(reg_expr)[source]
List of all scopes whose names match the provided regular expression.
For example, matching_scopes(r’^command’) will return all scopes whose names begin with command.
- remove_scope(scope_name)[source]
Remove scope by name; has no effect when
scope_namedoes not exist
- set(path, value, scope=None)[source]
Convenience function for setting single values in config files.
Accepts the path syntax described in
get().
- update_config(section, update_data, scope=None, force=False)[source]
Update the configuration file for a particular scope.
Overwrites contents of a section in a scope with update_data, then writes out the config file.
update_data should have the top-level section name stripped off (it will be re-added). Data itself can be a list, dict, or any other yaml-ish structure.
Configuration scopes that are still written in an old schema format will fail to update unless
forceis True.
- class ramble.config.ImmutableConfigScope(name, path)[source]
Bases:
ConfigScopeA configuration scope that cannot be written to.
This is used for ConfigScopes passed on the command line.
- class ramble.config.InternalConfigScope(name, data=None)[source]
Bases:
ConfigScopeAn internal configuration scope that is not persisted to a file.
This is for Ramble internal use so that command-line options and config file settings are accessed the same way, and Ramble can easily override settings from files.
- class ramble.config.SingleFileScope(name, path, schema, yaml_path=None)[source]
Bases:
ConfigScopeThis class represents a configuration scope in a single YAML file.
- property is_platform_dependent
- ramble.config.add(fullpath, scope=None)[source]
Add the given configuration to the specified config scope. Add accepts a path. If you want to add from a filename, use add_from_file
- ramble.config.command_line_scopes: List[str] = []
configuration scopes added on the command line set by
ramble.main.main().
- ramble.config.config = <ramble.config.Configuration object>
This is the singleton configuration instance for ramble.
- ramble.config.config_defaults = {'config': {'build_jobs': 2, 'build_stage': '$tempdir/ramble-stage', 'checksum': True, 'concretizer': 'clingo', 'connect_timeout': 10, 'debug': False, 'dirty': False, 'disable_passthrough': False, 'disable_progress_bar': False, 'enable_strict_versions': True, 'input_cache': '$ramble/var/ramble/cache', 'license_dir': '/home/docs/checkouts/readthedocs.org/user_builds/ramble-dev-dapomeroy/checkouts/latest/lib/ramble/docs/_ramble_root/etc/spack/licenses', 'n_repeats': '0', 'pip': {'install': {'flags': []}}, 'repeat_success_strict': True, 'report_dirs': '~/.ramble/reports', 'shell': 'bash', 'spack': {'concretize': {'flags': '--fresh'}, 'install': {'flags': '--fresh'}}, 'upload': {'push_failed': True}, 'verify_ssl': True, 'workspace_dirs': ['$ramble/var/ramble/workspaces']}}
Hard-coded default values for some key configuration options. This ensures that Ramble will still work even if config.yaml in the defaults scope is removed.
- ramble.config.configuration_paths = (('defaults', '/home/docs/checkouts/readthedocs.org/user_builds/ramble-dev-dapomeroy/checkouts/latest/lib/ramble/docs/_ramble_root/etc/ramble/defaults'), ('system', '/etc/ramble'), ('site', '/home/docs/checkouts/readthedocs.org/user_builds/ramble-dev-dapomeroy/checkouts/latest/lib/ramble/docs/_ramble_root/etc/ramble'), ('user', '/home/docs/.ramble'))
Builtin paths to configuration files in ramble
- ramble.config.default_list_scope()[source]
Return the config scope that is listed by default.
Commands that list configuration list all scopes (merged) by default.
- ramble.config.default_modify_scope(section='config')[source]
Return the config scope that commands should modify by default.
Commands that modify configuration by default modify the highest priority scope.
- Parameters:
section (bool) – Section for which to get the default scope. If this is not ‘experiments’, a general (non-workspace) scope is used.
- ramble.config.ensure_latest_format_fn(section)[source]
Return a function that takes as input a dictionary read from a configuration file and update it to the latest format.
The function returns True if there was any update, False otherwise.
- Parameters:
section (str) – section of the configuration e.g. “applications”, “config”, etc.
- ramble.config.first_existing(dictionary, keys)[source]
Get the value of the first key in keys that is in the dictionary.
- ramble.config.get(path, default=None, scope=None)[source]
Module-level wrapper for
Configuration.get().
- ramble.config.get_valid_type(path)[source]
Returns an instance of a type that will pass validation for path.
The instance is created by calling the constructor with no arguments. If multiple types will satisfy validation for data at the configuration path given, the priority order is
list,dict,str,bool,int,float.
- ramble.config.load_config(*args, **kwargs)[source]
Load YAML using Ramble’s custom Loader that warns on duplicate keys.
- ramble.config.merge_yaml(dest, source)[source]
Merges source into dest; entries in source take precedence over dest.
This routine may modify dest and should be assigned to dest, in case dest was None to begin with, e.g.:
dest = merge_yaml(dest, source)
In the result, elements from lists from
sourcewill appear before elements of lists fromdest. Likewise, when iterating over keys or items in mergedOrderedDictobjects, keys fromsourcewill appear before keys fromdest.Config file authors can optionally end any attribute in a dict with :: instead of :, and the key will override that of the parent instead of merging.
- ramble.config.override(path_or_scope, value=None)[source]
Simple way to override config settings within a context.
- Parameters:
path_or_scope (ConfigScope | str) – scope or single option to override
value (object | None) – value for the single option
Temporarily push a scope on the current configuration, then remove it after the context completes. If a single option is provided, create an internal config scope for it and push/pop that scope.
- ramble.config.overrides_base_name = 'overrides-'
Base name for the (internal) overrides scope.
- ramble.config.read_config_file(filename, schema=None)[source]
Read a YAML configuration file.
User can provide a schema for validation. If no schema is provided, we will infer the schema from the top-level key.
- ramble.config.scopes_metavar = '{defaults,system,site,user}'
metavar to use for commands that accept scopes this is shorter and more readable than listing all choices
- ramble.config.section_schemas: Dict[str, Dict[str, Any]] = {'applications': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'applications': {'additionalProperties': {'additionalProperties': False, 'default': '{}', 'properties': {'chained_experiments': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'command': {'type': 'string'}, 'inherit_variables': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}, 'order': {'type': 'string'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}}, 'type': 'object'}, 'type': 'array'}, 'env_vars': {'append': {'items': {'additionalProperties': {}, 'properties': {'paths': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'var-separator': {'type': 'string'}, 'vars': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'prepend': {'items': {'additionalProperties': {}, 'properties': {'paths': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'formatted_executables': {'additionalProperties': {'additionalProperties': False, 'default': {}, 'properties': {'commands': {'default': ['{unformatted_command}'], 'items': {'type': 'string'}, 'type': 'array'}, 'indentation': {'default': 0, 'type': 'number'}, 'join_separator': {'default': '\n', 'type': 'string'}, 'prefix': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}, 'internals': {'additionalProperties': False, 'default': {}, 'properties': {'custom_executables': {'additionalProperties': {'default': {'force': False, 'output_capture': OUTPUT_CAPTURE.ALL, 'redirect': '{log_file}', 'template': [], 'use_mpi': False, 'variables': {}}, 'properties': {'force': {'type': 'boolean'}, 'redirect': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'template': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}]}, 'use_mpi': {'type': 'boolean'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}, 'executable_injection': {'default': [], 'items': {'additionalProperties': {'relative_to': {'type': 'string'}}, 'default': {}, 'properties': {'name': {'type': 'string'}, 'order': {'default': 'after', 'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'executables': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'modifiers': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'mode': {'type': 'string'}, 'name': {'type': 'string'}, 'on_executable': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'type': 'array'}, 'success_criteria': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'anti_match': {'default': None, 'type': 'string'}, 'file': {'default': None, 'type': 'string'}, 'fom_context': {'default': None, 'type': 'string'}, 'fom_name': {'default': None, 'type': 'string'}, 'formula': {'default': None, 'type': 'string'}, 'match': {'default': None, 'type': 'string'}, 'mode': {'type': 'string'}, 'name': {'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'tables': {'default': [], 'items': {'additionalProperties': False, 'properties': {'autocolumns': {'items': {'additionalProperties': False, 'properties': {'context_name': {'type': 'string'}, 'figure_of_merit': {'type': 'string'}, 'figure_of_merit_origin_type': {'default': None, 'type': 'string'}, 'name': {'type': 'string'}, 'sort_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name', 'figure_of_merit'], 'type': 'object'}, 'type': 'array'}, 'columns': {'items': {'additionalProperties': False, 'properties': {'expression': {'default': None, 'type': 'string'}, 'figure_of_merit': {'default': None, 'type': 'string'}, 'figure_of_merit_context': {'default': None, 'type': 'string'}, 'figure_of_merit_origin_type': {'default': None, 'type': 'string'}, 'name': {'type': 'string'}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name'], 'type': 'object'}, 'type': 'array'}, 'group_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'group_method': {'default': 'max', 'type': 'string'}, 'name': {'type': 'string'}, 'sort_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'transpose': {'default': False, 'type': 'boolean'}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name'], 'type': 'object'}, 'type': 'array'}, 'tags': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'template': {'type': 'boolean'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}, 'variants': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}, 'workloads': {'additionalProperties': {'additionalProperties': False, 'default': {}, 'properties': {'chained_experiments': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'command': {'type': 'string'}, 'inherit_variables': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}, 'order': {'type': 'string'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}}, 'type': 'object'}, 'type': 'array'}, 'env_vars': {'append': {'items': {'additionalProperties': {}, 'properties': {'paths': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'var-separator': {'type': 'string'}, 'vars': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'prepend': {'items': {'additionalProperties': {}, 'properties': {'paths': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'experiments': {'additionalProperties': {'additionalProperties': False, 'default': {}, 'properties': {'chained_experiments': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'command': {'type': 'string'}, 'inherit_variables': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}, 'order': {'type': 'string'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}}, 'type': 'object'}, 'type': 'array'}, 'env_vars': {'append': {'items': {'additionalProperties': {}, 'properties': {'paths': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'var-separator': {'type': 'string'}, 'vars': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'prepend': {'items': {'additionalProperties': {}, 'properties': {'paths': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'exclude': {'additionalProperties': False, 'default': {}, 'properties': {'matrices': {'default': [], 'items': {'anyOf': [{'default': [], 'items': {'type': 'string'}, 'type': 'array'}, {'additionalProperties': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'default': {}, 'properties': {}, 'type': 'object'}]}, 'type': 'array'}, 'matrix': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}, 'where': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'zips': {'additionalProperties': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'default': {}, 'properties': {}, 'type': 'object'}}, 'type': 'object'}, 'formatted_executables': {'additionalProperties': {'additionalProperties': False, 'default': {}, 'properties': {'commands': {'default': ['{unformatted_command}'], 'items': {'type': 'string'}, 'type': 'array'}, 'indentation': {'default': 0, 'type': 'number'}, 'join_separator': {'default': '\n', 'type': 'string'}, 'prefix': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}, 'internals': {'additionalProperties': False, 'default': {}, 'properties': {'custom_executables': {'additionalProperties': {'default': {'force': False, 'output_capture': OUTPUT_CAPTURE.ALL, 'redirect': '{log_file}', 'template': [], 'use_mpi': False, 'variables': {}}, 'properties': {'force': {'type': 'boolean'}, 'redirect': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'template': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}]}, 'use_mpi': {'type': 'boolean'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}, 'executable_injection': {'default': [], 'items': {'additionalProperties': {'relative_to': {'type': 'string'}}, 'default': {}, 'properties': {'name': {'type': 'string'}, 'order': {'default': 'after', 'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'executables': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'matrices': {'default': [], 'items': {'anyOf': [{'default': [], 'items': {'type': 'string'}, 'type': 'array'}, {'additionalProperties': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'default': {}, 'properties': {}, 'type': 'object'}]}, 'type': 'array'}, 'matrix': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'modifiers': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'mode': {'type': 'string'}, 'name': {'type': 'string'}, 'on_executable': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'type': 'array'}, 'n_repeats': {'anyOf': [{'type': 'string'}, {'type': 'number'}], 'default': 0}, 'success_criteria': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'anti_match': {'default': None, 'type': 'string'}, 'file': {'default': None, 'type': 'string'}, 'fom_context': {'default': None, 'type': 'string'}, 'fom_name': {'default': None, 'type': 'string'}, 'formula': {'default': None, 'type': 'string'}, 'match': {'default': None, 'type': 'string'}, 'mode': {'type': 'string'}, 'name': {'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'tables': {'default': [], 'items': {'additionalProperties': False, 'properties': {'autocolumns': {'items': {'additionalProperties': False, 'properties': {'context_name': {'type': 'string'}, 'figure_of_merit': {'type': 'string'}, 'figure_of_merit_origin_type': {'default': None, 'type': 'string'}, 'name': {'type': 'string'}, 'sort_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name', 'figure_of_merit'], 'type': 'object'}, 'type': 'array'}, 'columns': {'items': {'additionalProperties': False, 'properties': {'expression': {'default': None, 'type': 'string'}, 'figure_of_merit': {'default': None, 'type': 'string'}, 'figure_of_merit_context': {'default': None, 'type': 'string'}, 'figure_of_merit_origin_type': {'default': None, 'type': 'string'}, 'name': {'type': 'string'}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name'], 'type': 'object'}, 'type': 'array'}, 'group_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'group_method': {'default': 'max', 'type': 'string'}, 'name': {'type': 'string'}, 'sort_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'transpose': {'default': False, 'type': 'boolean'}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name'], 'type': 'object'}, 'type': 'array'}, 'tags': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'template': {'type': 'boolean'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}, 'variants': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}, 'zips': {'additionalProperties': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'default': {}, 'properties': {}, 'type': 'object'}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}, 'formatted_executables': {'additionalProperties': {'additionalProperties': False, 'default': {}, 'properties': {'commands': {'default': ['{unformatted_command}'], 'items': {'type': 'string'}, 'type': 'array'}, 'indentation': {'default': 0, 'type': 'number'}, 'join_separator': {'default': '\n', 'type': 'string'}, 'prefix': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}, 'internals': {'additionalProperties': False, 'default': {}, 'properties': {'custom_executables': {'additionalProperties': {'default': {'force': False, 'output_capture': OUTPUT_CAPTURE.ALL, 'redirect': '{log_file}', 'template': [], 'use_mpi': False, 'variables': {}}, 'properties': {'force': {'type': 'boolean'}, 'redirect': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'template': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}]}, 'use_mpi': {'type': 'boolean'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}, 'executable_injection': {'default': [], 'items': {'additionalProperties': {'relative_to': {'type': 'string'}}, 'default': {}, 'properties': {'name': {'type': 'string'}, 'order': {'default': 'after', 'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'executables': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'modifiers': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'mode': {'type': 'string'}, 'name': {'type': 'string'}, 'on_executable': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'type': 'array'}, 'success_criteria': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'anti_match': {'default': None, 'type': 'string'}, 'file': {'default': None, 'type': 'string'}, 'fom_context': {'default': None, 'type': 'string'}, 'fom_name': {'default': None, 'type': 'string'}, 'formula': {'default': None, 'type': 'string'}, 'match': {'default': None, 'type': 'string'}, 'mode': {'type': 'string'}, 'name': {'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'tables': {'default': [], 'items': {'additionalProperties': False, 'properties': {'autocolumns': {'items': {'additionalProperties': False, 'properties': {'context_name': {'type': 'string'}, 'figure_of_merit': {'type': 'string'}, 'figure_of_merit_origin_type': {'default': None, 'type': 'string'}, 'name': {'type': 'string'}, 'sort_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name', 'figure_of_merit'], 'type': 'object'}, 'type': 'array'}, 'columns': {'items': {'additionalProperties': False, 'properties': {'expression': {'default': None, 'type': 'string'}, 'figure_of_merit': {'default': None, 'type': 'string'}, 'figure_of_merit_context': {'default': None, 'type': 'string'}, 'figure_of_merit_origin_type': {'default': None, 'type': 'string'}, 'name': {'type': 'string'}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name'], 'type': 'object'}, 'type': 'array'}, 'group_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'group_method': {'default': 'max', 'type': 'string'}, 'name': {'type': 'string'}, 'sort_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'transpose': {'default': False, 'type': 'boolean'}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name'], 'type': 'object'}, 'type': 'array'}, 'tags': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'template': {'type': 'boolean'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}, 'variants': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}, 'zips': {'additionalProperties': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'default': {}, 'properties': {}, 'type': 'object'}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}, 'zips': {'additionalProperties': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'default': {}, 'properties': {}, 'type': 'object'}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}}, 'title': 'Ramble application configuration file schema', 'type': 'object'}, 'base_application_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'base_application_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble base application repository configuration file schema', 'type': 'object'}, 'base_class_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'base_class_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble base class repository configuration file schema', 'type': 'object'}, 'base_modifier_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'base_modifier_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble base modifier repository configuration file schema', 'type': 'object'}, 'base_package_manager_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'base_package_manager_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble base package manager repository configuration file schema', 'type': 'object'}, 'base_platform_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'base_platform_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble base platform repository configuration file schema', 'type': 'object'}, 'base_system_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'base_system_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble base system repository configuration file schema', 'type': 'object'}, 'base_workflow_manager_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'base_workflow_manager_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble base workflow manager repository configuration file schema', 'type': 'object'}, 'config': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'config': {'aggregate_warnings': {'default': False, 'type': 'boolean'}, 'default': {}, 'deprecatedProperties': {'error': False, 'message': 'config:module_roots has been replaced by modules:[module set]:roots and is ignored', 'properties': ['module_roots']}, 'disable_logger': {'default': False, 'type': 'boolean'}, 'disable_passthrough': {'default': False, 'type': 'boolean'}, 'disable_progress_bar': {'default': False, 'type': 'boolean'}, 'enable_strict_versions': {'default': True, 'type': 'boolean'}, 'enable_workspace_prompt': {'default': False, 'type': 'boolean'}, 'input_cache': {'default': '$ramble/var/ramble/cache', 'type': 'string'}, 'n_repeats': {'default': '0', 'type': 'string'}, 'overwrite_inventories': {'default': False, 'type': 'boolean'}, 'pip': {'additionalProperties': False, 'default': {'install': {'flags': []}}, 'properties': {'install': {'additionalProperties': False, 'properties': {'flags': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'properties': {'additional_external_search_paths': {'items': {'type': 'string'}, 'type': 'array'}, 'allow_sgid': {'type': 'boolean'}, 'binary_index_root': {'type': 'string'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}, 'build_language': {'type': 'string'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'concretizer': {'enum': ['original', 'clingo'], 'type': 'string'}, 'connect_timeout': {'minimum': 0, 'type': 'integer'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'debug': {'type': 'boolean'}, 'deprecated': {'type': 'boolean'}, 'dirty': {'type': 'boolean'}, 'extensions': {'items': {'type': 'string'}, 'type': 'array'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'install_missing_compilers': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'install_tree': {'anyOf': [{'properties': {'padded_length': {'oneOf': [{'minimum': 0, 'type': 'integer'}, {'type': 'boolean'}]}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'root': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'license_dir': {'type': 'string'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'package_lock_timeout': {'anyOf': [{'minimum': 1, 'type': 'integer'}, {'type': 'null'}]}, 'shared_linking': {'enum': ['rpath', 'runpath'], 'type': 'string'}, 'source_cache': {'type': 'string'}, 'suppress_gpg_warnings': {'type': 'boolean'}, 'template_dirs': {'items': {'type': 'string'}, 'type': 'array'}, 'test_stage': {'type': 'string'}, 'url_fetch_method': {'enum': ['urllib', 'curl'], 'type': 'string'}, 'verify_ssl': {'type': 'boolean'}}, 'repeat_success_strict': {'default': True, 'type': 'boolean'}, 'report_dirs': {'default': '~/.ramble/reports', 'type': 'string'}, 'shell': {'enum': ['sh', 'bash', 'csh', 'tcsh', 'fish'], 'type': 'string'}, 'spack': {'additionalProperties': False, 'default': {'concretize': {'flags': '--fresh'}, 'install': {'flags': '--fresh'}}, 'flags': {}, 'properties': {'buildcache': {'additionalProperties': False, 'default': {'flags': '', 'prefix': ''}, 'properties': {'flags': {'default': '', 'type': 'string'}, 'prefix': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'compiler_find': {'default': {'flags': '', 'prefix': ''}, 'properties': {'flags': {'default': '', 'type': 'string'}, 'prefix': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'concretize': {'additionalProperties': False, 'default': {'flags': '--fresh', 'prefix': ''}, 'properties': {'flags': {'default': '--fresh', 'type': 'string'}, 'prefix': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'env_create': {'additionalProperties': False, 'default': {'flags': ''}, 'properties': {'flags': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'env_view': {'additionalProperties': False, 'default': {'link_type': 'symlink'}, 'properties': {'link_type': {'default': 'symlink', 'type': 'string'}}, 'type': 'object'}, 'global': {'additionalProperties': False, 'default': {'flags': ''}, 'properties': {'flags': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'install': {'additionalProperties': False, 'default': {'flags': '--fresh', 'prefix': ''}, 'properties': {'flags': {'default': '--fresh', 'type': 'string'}, 'prefix': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'resolve_variables_in_subprocesses': {'additionalProperties': False, 'default': False, 'type': 'boolean'}}, 'type': 'object'}, 'stage_method': {'default': 'cp', 'enum': ['cp', 'rsync', 'symbolic_link', 'hard_link'], 'type': 'string'}, 'suppress_warnings': {'default': False, 'type': 'boolean'}, 'type': 'object', 'upload': {'properties': {'push_failed': {'default': True, 'type': 'boolean'}, 'type': {'default': 'BigQuery', 'enum': ['BigQuery', 'PrintOnly', 'SQLite'], 'type': 'string'}, 'uri': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'user': {'default': '', 'type': 'string'}, 'workspace_dirs': {'default': '$ramble/var/ramble/workspaces', 'items': {'type': 'string'}, 'type': ['string', 'array']}}}, 'title': 'Ramble core configuration file schema', 'type': 'object'}, 'env_vars': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'env_vars': {'append': {'items': {'additionalProperties': {}, 'properties': {'paths': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'var-separator': {'type': 'string'}, 'vars': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'prepend': {'items': {'additionalProperties': {}, 'properties': {'paths': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}}, 'title': 'Ramble environment variable configuration file schema', 'type': 'object'}, 'formatted_executables': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'formatted_executables': {'additionalProperties': {'additionalProperties': False, 'default': {}, 'properties': {'commands': {'default': ['{unformatted_command}'], 'items': {'type': 'string'}, 'type': 'array'}, 'indentation': {'default': 0, 'type': 'number'}, 'join_separator': {'default': '\n', 'type': 'string'}, 'prefix': {'default': '', 'type': 'string'}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}}, 'title': 'Ramble formatted executables configuration file schema', 'type': 'object'}, 'internals': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'internals': {'additionalProperties': False, 'default': {}, 'properties': {'custom_executables': {'additionalProperties': {'default': {'force': False, 'output_capture': OUTPUT_CAPTURE.ALL, 'redirect': '{log_file}', 'template': [], 'use_mpi': False, 'variables': {}}, 'properties': {'force': {'type': 'boolean'}, 'redirect': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'template': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}]}, 'use_mpi': {'type': 'boolean'}, 'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}, 'executable_injection': {'default': [], 'items': {'additionalProperties': {'relative_to': {'type': 'string'}}, 'default': {}, 'properties': {'name': {'type': 'string'}, 'order': {'default': 'after', 'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'executables': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'title': 'Ramble internals configuration file schema', 'type': 'object'}, 'licenses': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'licenses': {'additionalProperties': {'additionalProperties': False, 'default': {}, 'properties': {'append': {'items': {'additionalProperties': {}, 'properties': {'paths': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'var-separator': {'type': 'string'}, 'vars': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'prepend': {'items': {'additionalProperties': {}, 'properties': {'paths': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}}, 'title': 'Ramble licenses configuration file schema', 'type': 'object'}, 'mirrors': {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'mirrors': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'properties': {'fetch': {'type': ['string', 'object']}, 'push': {'type': ['string', 'object']}}, 'required': ['fetch', 'push'], 'type': 'object'}]}}, 'type': 'object'}}, 'title': 'Ramble mirror configuration file schema', 'type': 'object'}, 'modifier_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'modifier_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble modifier repository configuration file schema', 'type': 'object'}, 'modifiers': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'modifiers': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'mode': {'type': 'string'}, 'name': {'type': 'string'}, 'on_executable': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'type': 'array'}}, 'title': 'Ramble application configuration file schema', 'type': 'object'}, 'package_manager_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'package_manager_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble package manager repository configuration file schema', 'type': 'object'}, 'platform_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'platform_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble platform repository configuration file schema', 'type': 'object'}, 'repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble repository configuration file schema', 'type': 'object'}, 'software': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'software': {'additionalProperties': False, 'default': {}, 'properties': {'environments': {'additionalProperties': {'additionalProperties': {'type': 'string'}, 'default': {}, 'properties': {'external_env': {'default': None, 'type': 'string'}, 'packages': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'default': {}, 'properties': {}, 'type': 'object'}, 'packages': {'additionalProperties': {'additionalProperties': True, 'default': {}, 'properties': {'compiler': {'default': None, 'type': 'string'}, 'compiler_spec': {'default': None, 'type': 'string'}, 'pkg_spec': {'type': 'string'}}, 'type': 'object'}, 'type': 'object'}}, 'type': 'object'}}, 'title': 'Software configuration file schema', 'type': 'object'}, 'success_criteria': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'success_criteria': {'default': [], 'items': {'additionalProperties': False, 'default': {}, 'properties': {'anti_match': {'default': None, 'type': 'string'}, 'file': {'default': None, 'type': 'string'}, 'fom_context': {'default': None, 'type': 'string'}, 'fom_name': {'default': None, 'type': 'string'}, 'formula': {'default': None, 'type': 'string'}, 'match': {'default': None, 'type': 'string'}, 'mode': {'type': 'string'}, 'name': {'type': 'string'}}, 'type': 'object'}, 'type': 'array'}}, 'title': 'Ramble success criteria configuration file schema', 'type': 'object'}, 'system_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'system_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble system repository configuration file schema', 'type': 'object'}, 'tables': {'$schema': 'http://json-schema.org/schema#', 'properties': {'tables': {'default': [], 'items': {'additionalProperties': False, 'properties': {'autocolumns': {'items': {'additionalProperties': False, 'properties': {'context_name': {'type': 'string'}, 'figure_of_merit': {'type': 'string'}, 'figure_of_merit_origin_type': {'default': None, 'type': 'string'}, 'name': {'type': 'string'}, 'sort_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name', 'figure_of_merit'], 'type': 'object'}, 'type': 'array'}, 'columns': {'items': {'additionalProperties': False, 'properties': {'expression': {'default': None, 'type': 'string'}, 'figure_of_merit': {'default': None, 'type': 'string'}, 'figure_of_merit_context': {'default': None, 'type': 'string'}, 'figure_of_merit_origin_type': {'default': None, 'type': 'string'}, 'name': {'type': 'string'}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name'], 'type': 'object'}, 'type': 'array'}, 'group_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'group_method': {'default': 'max', 'type': 'string'}, 'name': {'type': 'string'}, 'sort_by': {'default': None, 'items': {'type': 'string'}, 'type': ['string', 'array']}, 'transpose': {'default': False, 'type': 'boolean'}, 'where': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['name'], 'type': 'object'}, 'type': 'array'}}, 'title': 'Ramble tables configuration file schema', 'type': 'object'}, 'variables': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'variables': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}}, 'title': 'Ramble variables configuration file schema', 'type': 'object'}, 'variants': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'variants': {'additionalProperties': True, 'default': {}, 'properties': {}, 'type': ['object', 'null']}}, 'title': 'Ramble variants configuration file schema', 'type': 'object'}, 'workflow_manager_repos': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'workflow_manager_repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'title': 'Ramble workflow manager repository configuration file schema', 'type': 'object'}, 'zips': {'$schema': 'http://json-schema.org/schema#', 'additionalProperties': False, 'properties': {'zips': {'additionalProperties': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'default': {}, 'properties': {}, 'type': 'object'}}, 'title': 'Ramble zips configuration file schema', 'type': 'object'}}
Dict from section names -> schema for that section
- ramble.config.set(path, value, scope=None)[source]
Convenience function for setting single values in config files.
Accepts the path syntax described in
get().
- ramble.config.use_configuration(*scopes_or_paths)[source]
Use the configuration scopes passed as arguments within the context manager.
- Parameters:
*scopes_or_paths – scope objects or paths to be used
- Returns:
Configuration object associated with the scopes passed as arguments
ramble.context module
- class ramble.context.Context[source]
Bases:
objectClass to represent a context
This class contains variable definitions to store any individual context (such as application, workload, or experiment) and logic to merge in additional contexts by order of precedence.
- property escaped_name
- output_mapping = {'chained_experiments': 'chained_experiments', 'env_variables': 'env_vars', 'exclude': 'exclude', 'formatted_executables': 'formatted_executables', 'internals': 'internals', 'matrices': 'matrices', 'modifiers': 'modifiers', 'n_repeats': 'n_repeats', 'success_criteria': 'success_criteria', 'tables': 'tables', 'tags': 'tags', 'template': 'template', 'variables': 'variables', 'variants': 'variants', 'zips': 'zips'}
- ramble.context.create_context_from_dict(context_name, in_dict)[source]
Creates a new Context object from an input dictionary
Dictionaries should follow the below format:
in_dict = { 'env_vars': [], 'variables': {}, 'variants': {}, 'internals': {}, 'template': '', 'chained_experiments': [], 'modifiers': [], 'context_name': '', 'exclude': {}, 'zips': {}, 'matrices': {} or [], 'tags': [], 'n_repeats': '' }
ramble.error module
- exception ramble.error.ApplicationError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorException that is raised by applications
- exception ramble.error.ChainCycleDetectedError(message: str, long_message: str | None = None)[source]
Bases:
ApplicationErrorException raised when a cycle is detected in a defined experiment chain
- exception ramble.error.ConflictingModifiersError(message: str, long_message: str | None = None)[source]
Bases:
ModifierErrorException raised when two modifiers on the same experiment conflict
- exception ramble.error.DirectiveError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorThis is raised when something is wrong with a language directive.
- exception ramble.error.ExecutableNameError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorException raised when a name collision in executables happens
- exception ramble.error.FormattedExecutableError(message: str, long_message: str | None = None)[source]
Bases:
ApplicationErrorException raise when there are issues defining formatted executables
- exception ramble.error.InvalidChainError(message: str, long_message: str | None = None)[source]
Bases:
ApplicationErrorException raised when a invalid chained experiment is defined
- exception ramble.error.InvalidModeError(message: str, long_message: str | None = None)[source]
Bases:
ModifierErrorException raised when an invalid mode is passed
- exception ramble.error.ModifierError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorException that is raised by modifiers
- exception ramble.error.ObjectValidationError(message: str, long_message: str | None = None)[source]
Bases:
ApplicationErrorError when an object validator fails
- exception ramble.error.PackageManagerError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorException that is raised by package managers
- exception ramble.error.RambleCommandError[source]
Bases:
ExceptionRaised when RambleCommand execution fails.
- exception ramble.error.RambleError(message: str, long_message: str | None = None)[source]
Bases:
ExceptionThis is the superclass for all Ramble errors. Subclasses can be found in the modules they have to do with.
- print_context() None[source]
Print extended debug information about this exception.
This is usually printed when the top-level Ramble error handler calls
die(), but it can be called separately beforehand if a lower-level error handler needs to print error context and continue without raising the exception to the top level.
- exception ramble.error.SpecError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorSuperclass for all errors that occur while constructing specs.
- ramble.error.debug = False
whether we should write stack traces or short error messages this is module-scoped because it needs to be set very early
ramble.expander module
- exception ramble.expander.ApplicationNotDefinedError(message: str, long_message: str | None = None)[source]
Bases:
ExpanderErrorRaised when an application is not defined properly
- class ramble.expander.Expander(variables, experiment_set, no_expand_vars=None)[source]
Bases:
objectA class that will track and expand keyword arguments
This class will track variables and their definitions, to allow for expansion within string.
The variables can come from workspace variables, software stack variables, and experiment variables.
Additionally, math will be evaluated as part of expansion.
- add_no_expand_var(var: str)[source]
Add a new variable to the no expand set
- Parameters:
var (str) – Variable that should not expand
- property application_input_dir
- property application_name
- property application_namespace
- property application_run_dir
- property application_spec
- property application_version
- property env_path
- eval_math(node, expansion_vars=None)[source]
Evaluate math from parsing the AST
Does not assume a specific type of operands. Some operators will generate floating point, while others will generate integers (if the inputs are integers).
- evaluate_predicate(in_str, extra_vars=None, merge_used_stage: bool = True)[source]
Evaluate a predicate by expanding and evaluating math contained in a string
- Parameters:
in_str – String representing predicate that should be evaluated
extra_vars – Variable definitions to use with highest precedence
- Returns:
True or False, based on the evaluation of in_str
- Return type:
- expand_lists(var)[source]
Expand a variable into a list if possible
If expanding a variable would generate a list, this function will return a list. If any error case happens, this function will return the unmodified input value.
NOTE: This function is generally called early in the expansion. This allows lists to be generated before rendering experiments, but does not support pulling a list from a different experiment.
- expand_var(var: str, extra_vars: Dict | None = None, allow_passthrough: bool = True, typed: bool = False, merge_used_stage: bool = True, replace_escaped_braces: bool | None = None)[source]
Perform expansion of a string
Expand a string by building up a dict of all expansion variables.
- Parameters:
var (str) – String variable to expand
extra_vars (dict) – Variable definitions to use with highest precedence
allow_passthrough (bool) – Whether the string is allowed to have keywords after expansion
typed (bool) – Whether the return type should be typed or not
merge_used_stage (bool) – Whether tracked variables are merged into the used variable set or not.
replace_escaped_braces (bool) – Whether escaped curly braces are replaced as part of expansion or not.
- expand_var_name(var_name: str, extra_vars: Dict | None = None, allow_passthrough: bool = True, typed: bool = False, merge_used_stage: bool = True, replace_escaped_braces: bool | None = None)[source]
Convert a variable name to an expansion string, and expand it
Take a variable name (var) and convert it to an expansion string by calling the expansion_str function. Pass the expansion string into expand_var, and return the result.
- Parameters:
var_name (str) – String name of variable to expand
extra_vars (dict) – Variable definitions to use with highest precedence
allow_passthrough (bool) – Whether the string is allowed to have keywords after expansion
typed (bool) – Whether the return type should be typed or not
merge_used_stage (bool) – Whether tracked variables are merged into the used variable set or not.
replace_escaped_braces (bool) – Whether escaped curly braces are replaced as part of expansion or not.
- property experiment_name
- property experiment_namespace
- property experiment_run_dir
- property license_input_dir
- perform_math_eval(in_str, expansion_vars=None)[source]
Attempt to evaluate in_str
- Parameters:
in_str (str) – string representing math to attempt to evaluate
- Returns:
(str) either the evaluation of in_str (if successful) or in_str unmodified (if unsuccessful)
- satisfies(reqs: str | List[str] | FrozenSet[str] | None = None, variant_set=None, extra_vars=None, merge_used_stage: bool = True)[source]
Determine an experiment’s variants satisfy a query
- Parameters:
reqs – List of string requirements to check if experiment satisfies
extra_vars – Variable definitions to use with highest precedence
merged_used_stage – Whether used variables are merged into the set of used variables or not.
- Returns:
- True or False, based if the experiment’s variants satisfy
the input requirement.
- Return type:
(bool)
- property workload_input_dir
- property workload_name
- property workload_namespace
- property workload_run_dir
- exception ramble.expander.ExpanderError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorRaised when an error happens within an expander
- class ramble.expander.ExpansionDelimiter[source]
Bases:
objectClass representing the delimiters for ramble expansion strings
- escape = '\\'
- left = '{'
- right = '}'
- class ramble.expander.ExpansionGraph(in_str)[source]
Bases:
objectClass representing a graph of ExpansionNodes
- walk(in_node=None)[source]
Perform a DFS walk of the nodes in the graph
- Parameters:
in_node (ExpansionNode) – node to begin the walk from, if not set uses self.root
- Yields:
(ExpansionNode) – nodes following a DFS traversal of the graph
- class ramble.expander.ExpansionNode(left_idx, right_idx)[source]
Bases:
objectClass representing a node in a ramble expansion graph
- add_children(children)[source]
Add children to this node
- Parameters:
children (ExpansionNode | list) – nodes to adds as children of self
- define_value(expansion_dict, allow_passthrough=True, expansion_func=<class 'str'>, evaluation_func=<built-in function eval>, no_expand_vars=None, used_vars=None, replace_escaped_braces=None)[source]
Define the value for this node.
Construct the value of self. This builds up a string representation of self, and performs evaluation and formatting of the resulting string. This includes extracting the values of the children nodes, and replacing their values in the proper positions in self’s string.
Stores the resulting value in self.value
- Parameters:
expansion_dict (dict) – variable definitions to use for expanding detected matches
allow_passthrough (bool) – if true, expansion is allowed to fail. if false, failed expansion raises an error.
expansion_func (func) – function to use for expansion of nested variable definitions
evaluation_func (func) – function to use for evaluating math of strings
no_expand_vars (set) – set of variable names that should never be expanded
replace_escaped_braces (bool) – Whether escaped curly braces are replaced as part of expansion or not.
- relative_indices(relative_to)[source]
Compute node indices relative to another node
- Parameters:
relative_to (ExpansionNode) – node to shift current node’s indices relative to
- Returns:
(tuple) indices of shifted match set
- exception ramble.expander.ExperimentNotDefinedError(message: str, long_message: str | None = None)[source]
Bases:
ExpanderErrorRaised when an experiment is not defined properly
- exception ramble.expander.MathEvaluationError(message: str, long_message: str | None = None)[source]
Bases:
ExpanderErrorRaised when an error happens while evaluating math during expansion
- exception ramble.expander.RamblePassthroughError(message: str, long_message: str | None = None)[source]
Bases:
ExpanderErrorRaised when passthrough is disabled and variables fail to expand
- exception ramble.expander.RambleSyntaxError(message: str, long_message: str | None = None)[source]
Bases:
ExpanderErrorRaised when a syntax error happens within variable definitions
- class ramble.expander.VformatDelimiter[source]
Bases:
objectClass representing the delimiters for the string.Formatter class
- left = '{'
- right = '}'
ramble.experiment_result module
- class ramble.experiment_result.ExperimentResult(app_inst)[source]
Bases:
objectClass containing results and related metadata of an experiment
- cache_file_name = 'ramble_results_cache.json'
- from_dict(in_dict: dict)[source]
Convert a dict back into a results object
- Parameters:
in_dict (dict) – Input dictionary of results from a cache
- class ramble.experiment_result.ExperimentStatus(*values)[source]
-
- CANCELLED = 'CANCELLED'
- COMPLETE = 'COMPLETE'
- FAILED = 'FAILED'
- RUNNING = 'RUNNING'
- SETUP = 'SETUP'
- SUBMITTED = 'SUBMITTED'
- SUCCESS = 'SUCCESS'
- TIMEOUT = 'TIMEOUT'
- UNKNOWN = 'UNKNOWN'
- UNQUEUED = 'UNQUEUED'
- UNRESOLVED = 'UNRESOLVED'
ramble.experiment_set module
- class ramble.experiment_set.ExperimentSet(workspace)[source]
Bases:
objectClass to represent a full set of experiments
This class contains logic to take sets of variable definitions and generate experiments from the variable hierarchy.
Experiments are housed in the internal self.experiments dictionary. Keys of this dictionary are experiment names, while values are application instances.
- all_experiment_tags()[source]
Aggregate all tags from experiments in this experiment set
- Returns:
A set of all tags from the experiment set.
- Return type:
(set)
- property application_namespace
Property to return application namespace (application spec)
- property experiment_namespace
Property to return experiment namespace
Experiment namespaces are of the form: application_spec.workload_name.experiment_name
- filtered_experiments(filters)[source]
Return a filtered set of all experiments based on a logical expression
Exclusion takes overrides inclusion. If conflicting filters are provided which both include, and exclude the same experiment, the experiment will be excluded.
- Parameters:
expression – A logical expression to evaluate, with each experiment
- Yields:
exp – The name of the experiment, if expression results in True inst: An application instance representing the experiment
- get_var_from_experiment(experiment, variable)[source]
Lookup a variable in a given experiment
Does not error if invalid values are passed in, to allow @ symbol to pass through to rendered content.
- Parameters:
experiment – A fully qualified experiment name (application.workload.experiment)
variable – Name of variable to look up
- keywords
Create experiment set class
- render_experiment_set(app_name, workload_name, experiment_context, warn_validation=True, die_on_validate_error=True, chained=False) list[source]
Render a set of experiments for a specific application and workload
This method will render a new set of experiments for a given app (input with app_name) and workload (input with workload_name, but could be an indirect variable reference). It takes a context object for the experiment, and will process any vectors and matrices to create multiple experiments.
If chained=True these are added to this experiment set’s chained_experiments list, rather than the base experiments list. Upon completion, all rendered experiment instances are returned in a list, to allow further processing. For example, if one wants to render chained experiments from the child experiment.
- Parameters:
app_name (str) – Name of application to render experiments for
workload_name (str) – Name, or template, of workload(s) to render experiments for
experiment_context (ramble.context.Context) – Context object for the set of experiments to render
warn_validation (bool) – Whether validation warnings should print or not
die_on_validate_error (bool) – Whether validation errors should be fatal or not
chained (bool) – Whether the experiments are chained experiments or not
- Returns:
List of application instances from the rendered set of experiments
- Return type:
(list)
- search_primary_experiments(pattern)[source]
Search primary experiments using a glob syntax.
NOTE: This does not search experiments defined in an experiment chain
- set_experiment_context(experiment_context, warn_validation=True, die_on_validate_error=True, chained=False) list[source]
Set up current experiment context
- property workload_namespace
Property to return workload namespace
Workload namespaces are of the form: application_spec.workload_name
ramble.fetch_strategy module
Fetch strategies are used to download source code into a staging area in order to build it. They need to define the following methods:
- fetch()
This should attempt to download/check out source from somewhere.
- check()
Apply a checksum to the downloaded source code, e.g. for an archive. May not do anything if the fetch method was safe to begin with.
- expand()
Expand (e.g., an archive) downloaded file to source, with the standard stage source path as the destination directory.
- reset()
Restore original state of downloaded code. Used by clean commands. This may just remove the expanded source and re-expand an archive, or it may run something like git reset –hard.
- archive()
Archive a source directory, e.g. for creating a mirror.
- class ramble.fetch_strategy.BundleFetchStrategy(**kwargs)[source]
Bases:
FetchStrategyFetch strategy associated with bundle, or no-code, packages.
Having a basic fetch strategy is a requirement for executing post-install hooks. Consequently, this class provides the API but does little more than log messages.
TODO: Remove this class by refactoring resource handling and the link between composite stages and composite fetch strategies (see #11981).
- property cachable
Report False as there is no code to cache.
- class ramble.fetch_strategy.CacheURLFetchStrategy(url=None, checksum=None, **kwargs)[source]
Bases:
URLFetchStrategyThe resource associated with a cache URL may be out of date.
- exception ramble.fetch_strategy.ChecksumError(message: str, long_message: str | None = None)[source]
Bases:
FetchErrorRaised when archive fails to checksum.
- class ramble.fetch_strategy.CvsFetchStrategy(**kwargs)[source]
Bases:
VCSFetchStrategy- Fetch strategy that gets source code from a CVS repository.
Use like this in a package:
- version(‘name’,
cvs=’:pserver:anonymous@www.example.com:/cvsroot%module=modulename’)
Optionally, you can provide a branch and/or a date for the URL:
- version(‘name’,
cvs=’:pserver:anonymous@www.example.com:/cvsroot%module=modulename’, branch=’branchname’, date=’date’)
Repositories are checked out into the standard stage source path directory.
- archive(destination)[source]
Create an archive of the downloaded data for a mirror.
For downloaded files, this should preserve the checksum of the original file. For repositories, it should just create an expandable tarball out of the downloaded repository.
- property cachable
Whether fetcher is capable of caching the resource it retrieves.
This generally is determined by whether the resource is identifiably associated with a specific package version.
- Returns:
True if can cache, False otherwise.
- Return type:
- property cvs
- fetch()[source]
Fetch source code archive or repo.
- Returns:
True on success, False on failure.
- Return type:
- mirror_id()[source]
This is a unique ID for a source that is intended to help identify reuse of resources across packages.
It is unique like source-id, but it does not include the package name and is not necessarily easy for a human to create themselves.
- reset()[source]
Revert to freshly downloaded state.
For archive files, this may just re-expand the archive.
- exception ramble.fetch_strategy.FailedDownloadError(url, msg='')[source]
Bases:
FetchErrorRaised when a download fails.
- exception ramble.fetch_strategy.FetchError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorSuperclass for fetcher errors.
- class ramble.fetch_strategy.FetchStrategy(**kwargs)[source]
Bases:
objectSuperclass of all fetch strategies.
- archive(destination)[source]
Create an archive of the downloaded data for a mirror.
For downloaded files, this should preserve the checksum of the original file. For repositories, it should just create an expandable tarball out of the downloaded repository.
- property cachable
Whether fetcher is capable of caching the resource it retrieves.
This generally is determined by whether the resource is identifiably associated with a specific package version.
- Returns:
True if can cache, False otherwise.
- Return type:
- fetch()[source]
Fetch source code archive or repo.
- Returns:
True on success, False on failure.
- Return type:
- classmethod matches(args)[source]
Predicate that matches fetch strategies to arguments of the version directive.
- Parameters:
args – arguments of the version directive
- mirror_id()[source]
This is a unique ID for a source that is intended to help identify reuse of resources across packages.
It is unique like source-id, but it does not include the package name and is not necessarily easy for a human to create themselves.
- reset()[source]
Revert to freshly downloaded state.
For archive files, this may just re-expand the archive.
- class ramble.fetch_strategy.FetchStrategyComposite[source]
Bases:
CompositeComposite for a FetchStrategy object.
- classmethod matches(args)
Predicate that matches fetch strategies to arguments of the version directive.
- Parameters:
args – arguments of the version directive
- class ramble.fetch_strategy.GCSFetchStrategy(*args, **kwargs)[source]
Bases:
URLFetchStrategyFetchStrategy that pulls from a GCS bucket.
- class ramble.fetch_strategy.GitFetchStrategy(**kwargs)[source]
Bases:
VCSFetchStrategyFetch strategy that gets source code from a git repository. Use like this in a package:
version(‘name’, git=’https://github.com/project/repo.git’)
Optionally, you can provide a branch, or commit to check out, e.g.:
version(‘1.1’, git=’https://github.com/project/repo.git’, tag=’v1.1’)
You can use these three optional attributes in addition to
git:branch: Particular branch to build from (default is therepository’s default branch)
tag: Particular tag to check outcommit: Particular commit hash in the repo
Repositories are cloned into the standard stage source path directory.
- archive(destination)[source]
Create an archive of the downloaded data for a mirror.
For downloaded files, this should preserve the checksum of the original file. For repositories, it should just create an expandable tarball out of the downloaded repository.
- property cachable
Whether fetcher is capable of caching the resource it retrieves.
This generally is determined by whether the resource is identifiably associated with a specific package version.
- Returns:
True if can cache, False otherwise.
- Return type:
- clone(dest=None, commit=None, branch=None, tag=None, bare=False)[source]
Clone a repository to a path.
This method handles cloning from git, but does not require a stage.
- Parameters:
dest (str | None) – The path into which the code is cloned. If None, requires a stage and uses the stage’s source path.
commit (str | None) – A commit to fetch from the remote. Only one of commit, branch, and tag may be non-None.
branch (str | None) – A branch to fetch from the remote.
tag (str | None) – A tag to fetch from the remote.
bare (bool) – Execute a “bare” git clone (–bare option to git)
- fetch()[source]
Fetch source code archive or repo.
- Returns:
True on success, False on failure.
- Return type:
- property git
- property git_version
- git_version_re = 'git version (\\S+)'
- mirror_id()[source]
This is a unique ID for a source that is intended to help identify reuse of resources across packages.
It is unique like source-id, but it does not include the package name and is not necessarily easy for a human to create themselves.
- optional_attrs: List[str] = ['tag', 'branch', 'commit', 'submodules', 'get_full_repo', 'submodules_delete']
- protocol_supports_shallow_clone()[source]
Shallow clone operations (–depth #) are not supported by the basic HTTP protocol or by no-protocol file specifications. Use (e.g.) https:// or file:// instead.
- reset()[source]
Revert to freshly downloaded state.
For archive files, this may just re-expand the archive.
- source_id()[source]
A unique ID for the source.
It is intended that a human could easily generate this themselves using the information available to them in the Spack package.
The returned value is added to the content which determines the full hash for a package using str().
- class ramble.fetch_strategy.HgFetchStrategy(**kwargs)[source]
Bases:
VCSFetchStrategyFetch strategy that gets source code from a Mercurial repository. Use like this in a package:
version(‘name’, hg=’https://jay.grs.rwth-aachen.de/hg/lwm2’)
Optionally, you can provide a branch, or revision to check out, e.g.:
- version(‘torus’,
hg=’https://jay.grs.rwth-aachen.de/hg/lwm2’, branch=’torus’)
You can use the optional ‘revision’ attribute to check out a branch, tag, or particular revision in hg. To prevent non-reproducible builds, using a moving target like a branch is discouraged.
revision: Particular revision, branch, or tag.
Repositories are cloned into the standard stage source path directory.
- archive(destination)[source]
Create an archive of the downloaded data for a mirror.
For downloaded files, this should preserve the checksum of the original file. For repositories, it should just create an expandable tarball out of the downloaded repository.
- property cachable
Whether fetcher is capable of caching the resource it retrieves.
This generally is determined by whether the resource is identifiably associated with a specific package version.
- Returns:
True if can cache, False otherwise.
- Return type:
- fetch()[source]
Fetch source code archive or repo.
- Returns:
True on success, False on failure.
- Return type:
- property hg
Returns: Executable: the hg executable
- mirror_id()[source]
This is a unique ID for a source that is intended to help identify reuse of resources across packages.
It is unique like source-id, but it does not include the package name and is not necessarily easy for a human to create themselves.
- reset()[source]
Revert to freshly downloaded state.
For archive files, this may just re-expand the archive.
- exception ramble.fetch_strategy.InvalidArgsError(**args)[source]
Bases:
FetchErrorRaised when a version can’t be deduced from a set of arguments.
- exception ramble.fetch_strategy.NoArchiveFileError(message: str, long_message: str | None = None)[source]
Bases:
FetchError“Raised when an archive file is expected but none exists.
- exception ramble.fetch_strategy.NoCacheError(message: str, long_message: str | None = None)[source]
Bases:
FetchErrorRaised when there is no cached archive for a package.
- exception ramble.fetch_strategy.NoDigestError(message: str, long_message: str | None = None)[source]
Bases:
FetchErrorRaised after attempt to checksum when URL has no digest.
- exception ramble.fetch_strategy.NoStageError(method)[source]
Bases:
FetchErrorRaised when fetch operations are called before set_stage().
- class ramble.fetch_strategy.S3FetchStrategy(*args, **kwargs)[source]
Bases:
URLFetchStrategyFetchStrategy that pulls from an S3 bucket.
- class ramble.fetch_strategy.SvnFetchStrategy(**kwargs)[source]
Bases:
VCSFetchStrategy- Fetch strategy that gets source code from a subversion repository.
Use like this in a package:
version(‘name’, svn=’http://www.example.com/svn/trunk’)
Optionally, you can provide a revision for the URL:
- version(‘name’, svn=’http://www.example.com/svn/trunk’,
revision=’1641’)
Repositories are checked out into the standard stage source path directory.
- archive(destination)[source]
Create an archive of the downloaded data for a mirror.
For downloaded files, this should preserve the checksum of the original file. For repositories, it should just create an expandable tarball out of the downloaded repository.
- property cachable
Whether fetcher is capable of caching the resource it retrieves.
This generally is determined by whether the resource is identifiably associated with a specific package version.
- Returns:
True if can cache, False otherwise.
- Return type:
- fetch()[source]
Fetch source code archive or repo.
- Returns:
True on success, False on failure.
- Return type:
- mirror_id()[source]
This is a unique ID for a source that is intended to help identify reuse of resources across packages.
It is unique like source-id, but it does not include the package name and is not necessarily easy for a human to create themselves.
- reset()[source]
Revert to freshly downloaded state.
For archive files, this may just re-expand the archive.
- source_id()[source]
A unique ID for the source.
It is intended that a human could easily generate this themselves using the information available to them in the Spack package.
The returned value is added to the content which determines the full hash for a package using str().
- property svn
- class ramble.fetch_strategy.URLFetchStrategy(url=None, checksum=None, **kwargs)[source]
Bases:
FetchStrategyURLFetchStrategy pulls source code from a URL for an archive, check the archive against a checksum, and decompresses the archive.
The destination for the resulting file(s) is the standard stage path.
- property archive_file
Path to the source archive within this stage directory.
- property cachable
Whether fetcher is capable of caching the resource it retrieves.
This generally is determined by whether the resource is identifiably associated with a specific package version.
- Returns:
True if can cache, False otherwise.
- Return type:
- property candidate_urls
- check()[source]
Check the downloaded archive against a checksum digest. No-op if this stage checks code out of a repository.
- property curl
- fetch()[source]
Fetch source code archive or repo.
- Returns:
True on success, False on failure.
- Return type:
- mirror_id()[source]
This is a unique ID for a source that is intended to help identify reuse of resources across packages.
It is unique like source-id, but it does not include the package name and is not necessarily easy for a human to create themselves.
- class ramble.fetch_strategy.VCSFetchStrategy(**kwargs)[source]
Bases:
FetchStrategySuperclass for version control system fetch strategies.
Like all fetchers, VCS fetchers are identified by the attributes passed to the
versiondirective. The optional_attrs for a VCS fetch strategy represent types of revisions, e.g. tags, branches, commits, etc.The required attributes (git, svn, etc.) are used to specify the URL and to distinguish a VCS fetch strategy from a URL fetch strategy.
- ramble.fetch_strategy.all_strategies = [<class 'ramble.fetch_strategy.BundleFetchStrategy'>, <class 'ramble.fetch_strategy.URLFetchStrategy'>, <class 'ramble.fetch_strategy.CacheURLFetchStrategy'>, <class 'ramble.fetch_strategy.GitFetchStrategy'>, <class 'ramble.fetch_strategy.CvsFetchStrategy'>, <class 'ramble.fetch_strategy.SvnFetchStrategy'>, <class 'ramble.fetch_strategy.HgFetchStrategy'>, <class 'ramble.fetch_strategy.S3FetchStrategy'>, <class 'ramble.fetch_strategy.GCSFetchStrategy'>]
List of all fetch strategies, created by FetchStrategy metaclass.
- ramble.fetch_strategy.from_kwargs(**kwargs)[source]
Construct an appropriate FetchStrategy from the given keyword arguments.
- Parameters:
**kwargs – dictionary of keyword arguments, e.g. from a
version()directive in a package.- Returns:
- The fetch strategy that matches the args, based
on attribute names (e.g.,
git,hg, etc.)
- Return type:
- Raises:
FetchError – If no
fetch_strategymatches the args.
- ramble.fetch_strategy.from_url_scheme(url, *args, **kwargs)[source]
Finds a suitable FetchStrategy by matching its url_attr with the scheme in the given url.
ramble.filters module
- class ramble.filters.Filters(phase_filters: List[str] | None = None, include_where_filters: List[List[str]] | None = None, exclude_where_filters: List[List[str]] | None = None, tags: List[List[str]] | None = None)[source]
Bases:
objectObject containing filters for limiting various operations in Ramble
ramble.graphs module
- class ramble.graphs.AttributeGraph(obj_inst)[source]
Bases:
object- add_node(node)[source]
Add a node to the graph
- Parameters:
node (ramble.util.graph.GraphNode) – Node to add into graph
- define_edges(node, dep_nodes=None, internal_order=False)[source]
Define graph edges
Process dependencies, and internal orderings (inside the node object) to define new graph edges.
- Parameters:
node (ramble.util.graph.GraphNode) – Node to inject or modify
dep_nodes (list(ramble.util.graph.GraphNode) | None) – List of nodes that are dependencies
internal_order (bool) – True to process internal dependencies, False to skip
- get_node(key)[source]
Given a key, return the node containing this key
- Parameters:
key (str) – Name of key to find in the graph
- Returns:
- Node representing the key
requested. Returns None if the key isn’t found.
- Return type:
- node_type = 'object'
- update_graph(node, dep_nodes=None, internal_order=False)[source]
Update the graph with a new node and / or new dependencies.
Given a node, and list of dependencies, define new edges in the graph. If the node is new, also construct a new phase node.
- Parameters:
node (ramble.util.graph.GraphNode) – Node to inject or modify
dep_nodes (list(ramble.util.graph.GraphNode) | None) – List of node that are dependencies
internal_order (bool) – True to process internal dependencies, False to skip
- class ramble.graphs.ExecutableGraph(exec_order, executables, builtin_objects, builtin_groups, obj_inst)[source]
Bases:
AttributeGraphGraph that handles command executables and builtins
- inject_executable(exec_name, injection_order, relative)[source]
Inject an executable into the graph
- node_type = 'command executable'
- class ramble.graphs.FormattedExecutableGraph(formatted_execs: dict, obj_inst)[source]
Bases:
AttributeGraphGraph that handles formatted executables
- node_type = 'formatted executable'
- exception ramble.graphs.GraphCycleError(message: str, long_message: str | None = None)[source]
Bases:
GraphErrorException raised when a cycle is detected in a graph
- exception ramble.graphs.GraphError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorException raised with errors in a graph type
- exception ramble.graphs.GraphNodeAmbiguousError(message: str, long_message: str | None = None)[source]
Bases:
GraphErrorException raised when the given name can be resolved to non-unique nodes
- exception ramble.graphs.GraphNodeNotFoundError(message: str, long_message: str | None = None)[source]
Bases:
GraphErrorException raised when the given name cannot be resolved to a node
- class ramble.graphs.PhaseGraph(phase_definitions, obj_inst)[source]
Bases:
AttributeGraph- add_node(node, obj_inst=None)[source]
Add a new phase node to the graph
Extract the phase function from the object instance, and inject a new node into the graph.
- Parameters:
node (ramble.util.graph.GraphNode) – Phase node to add into graph
obj_inst (object) – Object that owns the phase
- node_type = 'phase'
ramble.keywords module
- class ramble.keywords.Keywords(extra_keys=None)[source]
Bases:
objectClass to represent known ramble keywords.
Each keyword contains a dictionary of its attributes. Currently, these include: - type - level
Valid types are identified by the ‘key_type’ variable as an enum. Valid levels are identified by the ‘output_level’.
- Current key types are:
Reserved: Ramble defines these, and a user should not be allowed to define them
Optional: Ramble can function with a definition from the user but it isn’t required
Required: Ramble requires a definition for these. Ramble will try to set sensible defaults, but it might not be possible always.
- Current levels are:
- Key: Ramble defines this as a top level variable. When results are
output, these are hoisted to a set of variables that are guaranteed to be in the output. These are non-application specific inputs that define a Ramble experiment.
- Variable: These are considered standard variables. They might be
derived from the values of entries with the level key. In results, they are presented in the variables section. These may include application specific inputs to further configure the experiment.
- check_required_keys(definitions, warn_validation=True, die_on_validate_error=True)[source]
Check a dictionary of variable definitions for all required keywords
- check_reserved_keys(definitions)[source]
Check a dictionary of variable definitions for reserved keywords
ramble.main module
This is the implementation of the Ramble command line executable.
In a normal Ramble installation, this is invoked from the bin/ramble script after the system path is set up.
- class ramble.main.RambleArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=<class 'argparse.HelpFormatter'>, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True, exit_on_error=True)[source]
Bases:
ArgumentParser
- class ramble.main.RambleCommand(command_name)[source]
Bases:
objectCallable object that invokes a ramble command (for testing).
Example usage:
list = RambleCommand('list') list('hostname')
Use this to invoke Ramble commands directly from Python and check their output.
- class ramble.main.RambleHelpFormatter(prog, indent_increment=2, max_help_position=24, width=None)[source]
Bases:
RawTextHelpFormatter
- ramble.main.finish_parse_and_run(parser, cmd_name, main_args, workspace_format_error)[source]
Finish parsing after we know the command to run.
- ramble.main.intro_by_level = {'long': 'Complete list of ramble commands:', 'short': 'These are common ramble commands:'}
intro text for help at different levels
- ramble.main.levels = ['short', 'long']
help levels in order of detail (i.e., number of commands shown)
- ramble.main.main(argv=None)[source]
This is the entry point for the Ramble command.
main()itself is just an error handler – it handles errors for everything in Ramble that makes it to the top level.The logic is all in
_main().- Parameters:
argv (list | None) – command line arguments, NOT including the executable name. If None, parses from sys.argv.
- ramble.main.make_argument_parser(**kwargs)[source]
Create an basic argument parser without any subcommands added.
- ramble.main.options_by_level = {'long': 'all', 'short': ['h', 'k', 'V', 'color', 'd']}
control top-level ramble options shown in basic vs. advanced help
- ramble.main.ramble_working_dir = None
Recorded directory where ramble command was originally invoked
- ramble.main.required_command_properties = ['level', 'section', 'description']
Properties that commands are required to set.
- ramble.main.resolve_alias(cmd_name, cmd)[source]
Resolves aliases in the given command.
- Parameters:
cmd_name – command name.
cmd – command line arguments.
- Returns:
new command name and arguments.
- ramble.main.section_descriptions = {'admin': 'administration', 'basic': 'query applications', 'config': 'configuration', 'developer': 'developer', 'help': 'more help', 'system': 'system'}
Longer text for each section, to show in help
- ramble.main.section_order = {'basic': ['list', 'info', 'find']}
preferential command order for some sections (e.g., build pipeline is in execution order, not alphabetical)
- ramble.main.send_warning_to_tty(message, *args)[source]
Redirects messages to ramble.util.logger.logger.warn.
- ramble.main.set_working_dir()[source]
Change the working directory to getcwd, or ramble prefix if no cwd.
- ramble.main.stat_names = {'calls': (((1, -1),), 'call count'), 'cumtime': (((3, -1),), 'cumulative time'), 'cumulative': (((3, -1),), 'cumulative time'), 'filename': (((4, 1),), 'file name'), 'line': (((5, 1),), 'line number'), 'module': (((4, 1),), 'file name'), 'name': (((6, 1),), 'function name'), 'ncalls': (((1, -1),), 'call count'), 'nfl': (((6, 1), (4, 1), (5, 1)), 'name/file/line'), 'pcalls': (((0, -1),), 'primitive call count'), 'stdname': (((7, 1),), 'standard name'), 'time': (((2, -1),), 'internal time'), 'tottime': (((2, -1),), 'internal time')}
names of profile statistics
ramble.mirror module
This file contains code for creating ramble mirror directories. A mirror is an organized hierarchy containing specially named archive files. This enabled ramble to know where to find files in a mirror if the main server for a particular input is down. Or, if the computer where ramble is run is not connected to the internet, it allows ramble to download inputs directly from a mirror (e.g., on an intranet).
- class ramble.mirror.Mirror(fetch_url, push_url=None, name=None)[source]
Bases:
objectRepresents a named location for storing input tarballs.
Mirrors have a fetch_url that indicate where and how artifacts are fetched from them, and a push_url that indicate where and how artifacts are pushed to them. These two URLs are usually the same.
- property fetch_url
- property name
- property push_url
- class ramble.mirror.MirrorCollection(mirrors=None, scope=None)[source]
Bases:
MappingA mapping of mirror names to mirrors.
- exception ramble.mirror.MirrorError(msg, long_msg=None)[source]
Bases:
RambleErrorSuperclass of all mirror-creation related errors.
- class ramble.mirror.MirrorReference(cosmetic_path, global_path=None)[source]
Bases:
objectA
MirrorReferencestores the relative paths where you can store a resource in a mirror directory.The appropriate storage location is given by
storage_path. Thecosmetic_pathproperty provides a reference that a human could generate themselves based on reading the details of the input.A user can iterate over a
MirrorReferenceobject to get all the possible names that might be used to refer to the resource in a mirror; this includes names generated by previous naming schemes that are no-longer reported bystorage_pathorcosmetic_path.- property storage_path
ramble.modkit module
modkit is a set of useful modules to import when writing modifiers
ramble.namespace module
- class ramble.namespace.namespace[source]
Bases:
objectClass of namespace variables
- application = 'applications'
- chained_experiments = 'chained_experiments'
- command = 'command'
- commands = 'commands'
- compiler = 'compiler'
- compiler_spec = 'compiler_spec'
- custom_executables = 'custom_executables'
- env_var = 'env_vars'
- environments = 'environments'
- exclude = 'exclude'
- executable_injection = 'executable_injection'
- executables = 'executables'
- experiment = 'experiments'
- external_env = 'external_env'
- formatted_executables = 'formatted_executables'
- include = 'include'
- indentation = 'indentation'
- inherit_variables = 'inherit_variables'
- internals = 'internals'
- join_separator = 'join_separator'
- matrices = 'matrices'
- matrix = 'matrix'
- metadata = 'metadata'
- modifiers = 'modifiers'
- n_repeats = 'n_repeats'
- package_manager = 'package_manager'
- packages = 'packages'
- pkg_spec = 'pkg_spec'
- platform = 'platform'
- prefix = 'prefix'
- ramble = 'ramble'
- software = 'software'
- success = 'success_criteria'
- system = 'system'
- tables = 'tables'
- tags = 'tags'
- template = 'template'
- variables = 'variables'
- variants = 'variants'
- version = 'version'
- where = 'where'
- workflow_manager = 'workflow_manager'
- workload = 'workloads'
- workspace = 'workspace'
- zips = 'zips'
ramble.paths module
Defines paths that are part of Ramble’s directory structure.
Do not import other ramble modules here. This module is used
throughout Ramble and should bring in a minimal number of external
dependencies.
- ramble.paths.bin_path: str = '/home/docs/checkouts/readthedocs.org/user_builds/ramble-dev-dapomeroy/checkouts/latest/lib/ramble/docs/_ramble_root/bin'
bin directory in the ramble prefix
- ramble.paths.prefix: str = '/home/docs/checkouts/readthedocs.org/user_builds/ramble-dev-dapomeroy/checkouts/latest/lib/ramble/docs/_ramble_root'
This file lives in $prefix/lib/ramble/ramble/__file__
- ramble.paths.ramble_root: str = '/home/docs/checkouts/readthedocs.org/user_builds/ramble-dev-dapomeroy/checkouts/latest/lib/ramble/docs/_ramble_root'
synonym for prefix
- ramble.paths.ramble_script: str = '/home/docs/checkouts/readthedocs.org/user_builds/ramble-dev-dapomeroy/checkouts/latest/lib/ramble/docs/_ramble_root/bin/ramble'
The ramble script itself
ramble.pipeline module
- class ramble.pipeline.AnalyzePipeline(workspace, filters, output_formats=None, upload=False, print_results=False, summary_only=False, fom_origin_types=None)[source]
Bases:
PipelineClass for the analyze pipeline
- name = 'analyze'
- class ramble.pipeline.ArchivePipeline(workspace, filters, create_tar=False, archive_prefix=None, upload_url=None, include_secrets=False, archive_patterns=None)[source]
Bases:
PipelineClass for the archive pipeline
- name = 'archive'
- class ramble.pipeline.ExecutePipeline(workspace, filters, executor='{batch_submit}', suppress_per_experiment_prints=True, suppress_run_header=False)[source]
Bases:
Pipelineclass for the execute (on) pipeline
- name = 'execute'
- class ramble.pipeline.LogsPipeline(workspace, filters, first_only=False, suppress_per_experiment_prints=True, suppress_run_header=True)[source]
Bases:
Pipelineclass for the logs pipeline
- name = 'logs'
- class ramble.pipeline.MirrorPipeline(workspace, filters, mirror_path=None)[source]
Bases:
PipelineClass for the mirror pipeline
- name = 'mirror'
- class ramble.pipeline.Pipeline(workspace, filters)[source]
Bases:
objectBase Class for all pipeline objects
- property experiment_set
- name = 'base'
- class ramble.pipeline.PushDeploymentPipeline(workspace, filters, create_tar=False, upload_url=None, deployment_name=None)[source]
Bases:
Pipelineclass for the prepare-deployment pipeline
- index_filename = 'index.json'
- index_namespace = 'deployment_files'
- legacy_object_repo_name = 'object_repo'
- name = 'pushdeployment'
- tar_extension = '.tar.gz'
- class ramble.pipeline.PushToCachePipeline(workspace, filters, spack_cache_path=None)[source]
Bases:
PipelineClass for the pushtocache pipeline
- name = 'pushtocache'
- class ramble.pipeline.SetupPipeline(workspace, filters)[source]
Bases:
PipelineClass for the setup pipeline
- name = 'setup'
ramble.pkgmankit module
pkgmankit is a set of useful modules to import when writing package managers
ramble.platkit module
ramble.renderer module
- class ramble.renderer.RenderGroup(obj_type=None, action='create')[source]
Bases:
object- from_dict(name_template, in_dict)[source]
Extract RenderGroup definitions from a dictionary
Dictionaries should follow the below format:
- in_dict = {
‘variables’: {}, ‘zips’: {}, ‘matrix’: [], ‘matrices’: {} or [] }
- Parameters:
name_template – The name template for the objects this group represents
in_dict – A dictionary representing the group definitions
- Returns:
True if anything was extracted from the dictionary
- Return type:
- class ramble.renderer.Renderer[source]
Bases:
object- render_objects(render_group, exclude_where=None, ignore_used=True, fatal=True)[source]
Render objects based on the input variables and matrices
Internally collects all matrix and vector variables.
First, zips are created. Zips extract vector variables, and group them into a higher level name.
Next, matrices are processed. Matrices consume vector variables, or explicit zips.
Vectors in the same matrix are crossed, sibling matrices are zipped. All matrices are required to result in the same number of elements, but not be the same shape.
Matrix elements are only allowed to be the names of variables. These variables are required to be vectors.
After matrices are processed, any remaining vectors are zipped together. All vectors are required to be of the same size.
The resulting zip of vectors is then crossed with all of the matrices to build a final list of objects.
After processing the expansion logic, this function yields a dictionary of variable definitions, one for each object that would be rendered.
If n_repeats is defined in input variables, this function yields one base and n copies of the rendered variable dictionary.
- Yields:
a dictionary of variables for single object definition
a Repeats object indicating if rendered object is a repeat and its index
ramble.repeats module
ramble.reports module
- class ramble.reports.ComparisonPlot(spec, normalize, report_dir_path, exp_results, logx, logy, split_by, simplify_names=False, where=None)[source]
Bases:
PlotGenerator- plot_type = 'comparison'
- class ramble.reports.FomPlot(spec, normalize, report_dir_path, exp_results, logx, logy, split_by, simplify_names=False, where=None)[source]
Bases:
PlotGenerator- plot_type = 'foms'
- class ramble.reports.MultiLinePlot(spec, normalize, report_dir_path, exp_results, logx, logy, split_by, simplify_names=False, where=None)[source]
Bases:
ScalingPlotGenerator- generate_plot_data(pdf_report)[source]
Creates a dataframe for plotting line charts with scaling var on x axis, and performance variable on y axis.
- normalize_data(data, scale_to_index=True, to_col='normalized_fom_value', from_col='fom_value')[source]
- plot_type = 'multi_line'
- class ramble.reports.PlotGenerator(spec, normalize, report_dir_path, exp_results, logx, logy, split_by, simplify_names=False, where=None)[source]
Bases:
object- add_minmax_data(selected_data, min_data, max_data, scale_var)[source]
When using summary statistics from repeats, adds columns fom_value_min and fom_value_max to the selected data.
- add_to_inventory(filename)[source]
Adds a filename to the inventory.
- Parameters:
filename – filename to add to inventory.
- draw_filler(perf_measure, scale_var, series, exception, pdf_report)[source]
Draws a filler figure in cases where a chart cannot be drawn due to errors.
- normalize_data(data, scale_to_index=False, to_col='normalized_fom_value', from_col='fom_value')[source]
- class ramble.reports.ReportVars(*values)[source]
Bases:
Enum- APP_NAME = 'application_name'
- BETTER_DIRECTION = 'better_direction'
- CONTEXT_NAME = 'context_name'
- EXP_NAME = 'experiment_name'
- EXP_NS = 'experiment_namespace'
- FOM_NAME = 'fom_name'
- FOM_ORIGIN = 'fom_origin'
- FOM_ORIGIN_TYPE = 'fom_origin_type'
- FOM_UNITS = 'fom_units'
- FOM_VALUE = 'fom_value'
- FOM_VALUE_MAX = 'fom_value_max'
- FOM_VALUE_MIN = 'fom_value_min'
- IDEAL_PERF_VALUE = 'ideal_perf_value'
- NORMALIZED_FOM_VALUE = 'normalized_fom_value'
- SERIES = 'series'
- WL_NAME = 'workload_name'
- WL_NS = 'workload_namespace'
- class ramble.reports.ScalingPlotGenerator(spec, normalize, report_dir_path, exp_results, logx, logy, split_by, simplify_names=False, where=None)[source]
Bases:
PlotGenerator
- class ramble.reports.StrongScalingPlot(spec, normalize, report_dir_path, exp_results, logx, logy, split_by, simplify_names=False, where=None)[source]
Bases:
ScalingPlotGenerator- normalize_data(data, scale_to_index=True, to_col='normalized_fom_value', from_col='fom_value')[source]
- plot_type = 'strong_scaling'
- class ramble.reports.WeakScalingPlot(spec, normalize, report_dir_path, exp_results, logx, logy, split_by, simplify_names=False, where=None)[source]
Bases:
ScalingPlotGenerator- plot_type = 'weak_scaling'
- ramble.reports.clean_redundant_prefixes(name, application_name, workload_name)[source]
Strip application and workload names from a name string, handling case, dots, underscores, and hyphens.
- ramble.reports.extract_data(experiments: List[dict], foms: List[str], variables: List[str], where_query=None)[source]
Extracts data from the experiments dicts and returns it as a Pandas DataFrame.
- Parameters:
experiments – List of experiment dictionaries containing results to extract
foms – List of FOMs to extract from experiments
variables – List of variables to extract from experiments
where_query – Pandas query to constrain results
- Returns:
Pandas DataFrame containing extracted data
- ramble.reports.filter_exp_results(experiments: list)[source]
Filters a list of experiment results to remove failed experiments and duplicate data.
When repeats are used, this removes individual repeats and returns only the summary statistics.
- ramble.reports.generate_result_index(experiments: list, all_vars=False, where_query=None)[source]
Creates an index from the results in the list of experiments
Index format is: {
- “applications”: {
- application_name: {
- workload: {
“Contexts”: set(), “FOMs”: set(), “Template Variables”: set(),
}
}
} “modifiers”: {
- modifier_name: {
“Contexts”: set(), “FOMs”: set(),
}
(all other object types)
}
- ramble.reports.get_common_stripped_prefix(original_values, simplified_values)[source]
Find the longest common prefix stripped from original_values to get simplified_values.
- ramble.reports.is_key_to_skip(key_name: str)[source]
Check if a results dict key should be skipped for indexing and analysis.
The purpose of this is to ignore non-variables and reduce clutter in the results index. Some values in the results index, like paths and commands, have limited utility for analysis or are derived from variables that are available separately.
- ramble.reports.simplify_experiment_names(df, index_col=None)[source]
Simplify the index or a column of a dataframe by stripping redundant application/workload names and common prefixes/suffixes.
ramble.repository module
- exception ramble.repository.BadRepoError(message: str, long_message: str | None = None)[source]
Bases:
RepoErrorRaised when repo layout is invalid.
- exception ramble.repository.FailedConstructorError(name, exc_type, exc_obj, exc_tb, object_type=None)[source]
Bases:
RepoErrorRaised when an object’s class constructor fails.
- class ramble.repository.FastObjectChecker(objects_path, object_file_name, object_type)[source]
Bases:
MappingCache that maps object names to the stats obtained on the ‘.py’ files associated with them.
For each repository a cache is maintained at class level, and shared among all instances referring to it. Update of the global cache is done lazily during instance initialization.
- exception ramble.repository.IndexError(message: str, long_message: str | None = None)[source]
Bases:
RepoErrorRaised when there’s an error with an index.
- class ramble.repository.Indexer(object_type=ObjectTypes.applications)[source]
Bases:
objectAdaptor for indexes that need to be generated when repos are updated.
- needs_update(pkg)[source]
Whether an update is needed when the application file hasn’t changed.
- Returns:
Trueif this application needs its indexupdated,
Falseotherwise.
- Return type:
(bool)
We already automatically update indexes when object files change, but other files (like patches) may change underneath the object file. This method can be used to check additional object-specific files whenever they’re loaded, to tell the RepoIndex to update the index just for that object.
- exception ramble.repository.InvalidNamespaceError(message: str, long_message: str | None = None)[source]
Bases:
RepoErrorRaised when an invalid namespace is encountered.
- ramble.repository.NOT_PROVIDED = <object object>
Guaranteed unused default value for some functions.
- exception ramble.repository.NoRepoConfiguredError(message: str, long_message: str | None = None)[source]
Bases:
RepoErrorRaised when there are no repositories configured.
- class ramble.repository.ObjectNamespace(namespace)[source]
Bases:
ModuleTypeAllow lazy loading of modules.
- class ramble.repository.ObjectTypes(*values)
Bases:
Enum- applications = 1
- base_applications = 8
- base_classes = 7
- base_modifiers = 9
- base_package_managers = 10
- base_platforms = 13
- base_systems = 12
- base_workflow_managers = 11
- modifiers = 2
- package_managers = 3
- platforms = 6
- systems = 5
- workflow_managers = 4
- class ramble.repository.Repo(root, object_type=ObjectTypes.applications)[source]
Bases:
objectClass representing a object repository in the filesystem.
Each object repository must have a top-level configuration file called repo.yaml.
Currently, repo.yaml this must define:
- namespace:
A Python namespace where the repository’s objects should live.
- all_object_classes()[source]
Iterator over all object classes in the repository.
Use this with care, because loading objects is slow.
- all_objects()[source]
Iterator over all objects in the repository.
Use this with care, because loading objects is slow.
- dirname_for_object_name(obj_name)[source]
Get the directory name for a particular object. This is the directory that contains its object.py file.
- dump_provenance(spec, path)[source]
Dump provenance information for a spec to a particular path.
This dumps the object file. Raises UnknownObjectError if not found.
- filename_for_object_name(obj_name)[source]
Get the filename for the module we should load for a particular object. objects for a Repo live in
$root/<object_name>/<object_type>.pyThis will return a proper <object_type>.py path even if the object doesn’t exist yet, so callers will need to ensure the object exists before importing.
- find_module(fullname, path=None)[source]
Python find_module import hook.
Returns this Repo if it can load the module; None if not.
- get_obj_class(obj_name)[source]
Get the class for the object out of its module.
First loads (or fetches from cache) a module for the object. Then extracts the object class from the module according to Ramble’s naming convention.
- property index
Construct the index for this repo lazily.
- load_module(fullname)[source]
Python importer load hook.
Tries to load the module; raises an ImportError if it can’t.
- real_name(import_name)[source]
Allow users to import Ramble objects using Python identifiers.
A python identifier might map to many different Ramble object names due to hyphen/underscore ambiguity.
- Easy example:
num3proxy -> 3proxy
- Ambiguous:
foo_bar -> foo_bar, foo-bar
- More ambiguous:
foo_bar_baz -> foo_bar_baz, foo-bar-baz, foo_bar-baz, foo-bar_baz
- property tag_index
Index of tags and which objects they’re defined on.
- exception ramble.repository.RepoError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorSuperclass for repository-related errors.
- class ramble.repository.RepoIndex(object_checker, namespace, object_type=ObjectTypes.applications)[source]
Bases:
objectContainer class that manages a set of Indexers for a Repo.
This class is responsible for checking objects in a repository for updates (using
FastObjectChecker) and for regenerating indexes when they’re needed.Indexersshould be added to theRepoIndexusingadd_index(name, indexer), and they should support the interface defined byIndexer, so that theRepoIndexcan read, generate, and update stored indices.Generated indexes are accessed by name via
__getitem__().
- class ramble.repository.RepoLoader(fullname, repo, object_name)[source]
Bases:
_PrependFileLoaderLoads a Python module associated with a object in specific repository
- class ramble.repository.RepoPath(*repos, object_type=ObjectTypes.applications)[source]
Bases:
objectA RepoPath is a list of repos that function as one.
It functions exactly like a Repo, but it operates on the combined results of the Repos in its list instead of on a single object repository.
- Parameters:
repos (list) – list Repo objects or paths to put in this RepoPath
- dump_provenance(spec, path)[source]
Dump provenance information for a spec to a particular path.
This dumps the object file and any associated patch files. Raises UnknownObjectError if not found.
- exists(obj_name)[source]
Whether object with the give name exists in the path’s repos.
Note that virtual objects do not “exist”.
- find_module(fullname, path=None)[source]
Implements precedence for overlaid namespaces.
Loop checks each namespace in self.repos for objects, and also handles loading empty containing namespaces.
- property first_repo
Get the first repo in precedence order.
- get_full_namespace(namespace)[source]
Returns the full namespace of a repository, given its relative one.
- get_repo(namespace, default=<object object>)[source]
Get a repository by namespace.
- Parameters:
namespace – Look up this namespace in the RepoPath, and return it if found.
Optional Arguments:
default:
If default is provided, return it when the namespace isn’t found. If not, raise an UnknownNamespaceError.
- class ramble.repository.ReposFinder(object_type=ObjectTypes.applications)[source]
Bases:
objectMetaPathFinder class that loads a Python module corresponding to an object
Return a loader based on the inspection of the current global repository list.
- class ramble.repository.RepositoryNamespace(namespace)[source]
Bases:
ModuleTypeAllow lazy loading of modules.
- class ramble.repository.TagIndex(object_type=ObjectTypes.applications)[source]
Bases:
MappingMaps tags to list of applications.
- class ramble.repository.TagIndexer(object_type=ObjectTypes.applications)[source]
Bases:
IndexerLifecycle methods for a TagIndex on a Repo.
- exception ramble.repository.UnknownEntityError(message: str, long_message: str | None = None)[source]
Bases:
RepoErrorRaised when we encounter a object ramble doesn’t have.
- exception ramble.repository.UnknownNamespaceError(namespace)[source]
Bases:
UnknownEntityErrorRaised when we encounter an unknown namespace
- exception ramble.repository.UnknownObjectError(name, repo=None, object_type='Object')[source]
Bases:
UnknownEntityErrorRaised when we encounter an object ramble doesn’t have.
- ramble.repository.additional_repository(repository, object_type=ObjectTypes.applications)[source]
Adds temporarily a repository to the default one.
- Parameters:
repository – repository to be added
- ramble.repository.all_object_names(object_type=ObjectTypes.applications)[source]
Convenience wrapper around
ramble.repository.all_object_names().
- ramble.repository.autospec(function)[source]
Decorator that automatically converts the first argument of a function to a Spec.
- ramble.repository.create(configuration, object_type=ObjectTypes.applications)[source]
Create a RepoPath from a configuration object.
- Parameters:
configuration (ramble.config.Configuration) – configuration object
- ramble.repository.create_or_construct(path, namespace=None)[source]
Create a repository, or just return a Repo if it already exists.
- ramble.repository.create_repo(root, namespace=None, subdir='applications', object_type=ObjectTypes.applications, unified_repo=True)[source]
Create a new repository in root with the specified namespace.
If the namespace is not provided, use basename of root. Return the canonicalized path and namespace of the created repository.
- ramble.repository.get(spec, object_type=ObjectTypes.applications)[source]
Convenience wrapper around
ramble.repository.get().
- ramble.repository.get_base_class(spec)[source]
Convenience wrapper around
ramble.repository.get_obj_class()for base classes.
- ramble.repository.get_obj_class(spec, object_type=ObjectTypes.applications)[source]
Convenience wrapper around
ramble.repository.get_obj_class().
- ramble.repository.list_object_files(obj_inst, object_type)[source]
List object file paths of the given object along the inheritance chain.
This is currently used by ramble deployment to copy relevant files to create a self-contained repo.
- ramble.repository.set_path(repo, object_type=ObjectTypes.applications)[source]
Set the path singleton to a specific value.
Overwrite
pathand register it as an importer insys.meta_pathif it is aRepoorRepoPath.
- ramble.repository.use_repositories(*paths_and_repos, object_type=ObjectTypes.applications)[source]
Use the repositories passed as arguments within the context manager.
- Parameters:
*paths_and_repos – paths to the repositories to be used, or already constructed Repo objects
- Returns:
Corresponding RepoPath object
ramble.results_table module
- class ramble.results_table.ResultsAutoColumn(conf_dict)[source]
Bases:
objectClass representing a template for auto-generated columns
- class ramble.results_table.ResultsColumn(conf_dict)[source]
Bases:
objectClass representing a single column in a results table
- col_name(app_inst)[source]
Expand this columns name based on the current experiment
- Parameters:
app_inst – Instance of an application class to expand name with
- Returns:
Expanded column name
- Return type:
(str)
- class ramble.results_table.ResultsTable(conf_dict)[source]
Bases:
objectA single results table based on the tables.py schema
- extract_row(app_inst)[source]
Extract a row of data from an experiment
- Parameters:
app_inst – Instance of an application class to extract data from
- includes_experiment(app_inst)[source]
Determine if an experiment is included in this table.
- Parameters:
app_inst – Instance of an application class
- Returns:
True if the app_inst is included in table, False otherwise
- Return type:
(bool)
- class ramble.results_table.ResultsTables[source]
Bases:
objectClass representing a set of results tables
- add_table_template(table_conf)[source]
Construct a new results table, and add to this set of tables
- Parameters:
table_conf (dict) – Dictionary configuration of table, assuming table schema from tables.py
- Returns:
New table instance
- Return type:
- build_tables(experiment_set, filters)[source]
Extract data for each table in this set
- Parameters:
experiment_set – Set of experiments to extract data from
filters – Filter object to downselect experiments
- property num_tables
ramble.software_environments module
- class ramble.software_environments.ExternalEnvironment(name: str, name_or_path: str)[source]
Bases:
SoftwareEnvironmentClass representing an externally defined software environment
- exception ramble.software_environments.RambleSoftwareEnvironmentError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorSuper class for all software environment errors
- class ramble.software_environments.RenderedEnvironment(name: str, package_manager)[source]
Bases:
SoftwareEnvironmentClass representing an already rendered software environment
- property package_manager_name
- class ramble.software_environments.RenderedExternalEnvironment(name: str, name_or_path: str, package_manager)[source]
Bases:
ExternalEnvironmentClass representing a rendered externally defined software environment
- property package_manager_name
- class ramble.software_environments.RenderedPackage(name: str, pkg_info: dict, package_manager, spec: str, compiler: str = '', compiler_spec: str = '')[source]
Bases:
SoftwarePackageClass representing an already rendered software package
- info(indent: int = 0, verbosity: int = 0, color_level: int = 0, only_used: bool = True)[source]
String representation of package information
- class ramble.software_environments.SoftwareEnvironment(name: str)[source]
Bases:
objectClass representing a single software environment
- add_package(package: SoftwarePackage)[source]
Add a package definition to this environment
- Parameters:
package (SoftwarePackage) – Package object
- info(indent: int = 0, verbosity: int = 0, color_level: int = 0, only_used: bool = True)[source]
Software environment information
- class ramble.software_environments.SoftwareEnvironments(workspace)[source]
Bases:
objectClass representing a group of software environments
- add_spec_to_environment(environment: SoftwareEnvironment, spec: SoftwareSpec, expander: Expander, package_manager)[source]
Add a spec to a given environment
Creates a new template / rendered package (if needed) from the input spec, and adds to the template and rendered environment as a package in the environment.
- Parameters:
environment (SoftwareEnvironment) – Rendered environment to add package to
spec (ramble.util.spec_utils.SoftwareSpec) – Software spec to add to environment
expander (ramble.expander.Expander) – Experiment’s expander object, to render package / environment with
package_manager – Package manager from the experiment
- compiler_specs_for_environment(environment: RenderedEnvironment)[source]
Iterator over compiler specs for a given environment
Assumes all compilers have been defined via self.define_compiler_packages()
- Parameters:
environment (SoftwareEnvironment) – Environment to extract compiler specs for
- Yields:
(str) Package spec string for each compiler (str) Compiler spec string for each compiler
- define_compiler_packages(environment: RenderedEnvironment, expander: Expander)[source]
Define packages for compilers in this environment
If compilers referenced by (environment) are not defined, create definitions for them to properly create compiler specs.
- Parameters:
environment (RenderedEnvironment) – Environment to extract necessary compilers from
expander (ramble.expander.Expander) – Expander object to use when constructing compiler package names
- info(indent: int = 0, verbosity: int = 0, color_level: int = 0, only_used: bool = True)[source]
Information for all packages and environments
- package_specs_for_environment(environment: SoftwareEnvironment)[source]
Iterator over package specs for a given environment
Assumes all compilers have been defined via self.define_compiler_packages()
- Parameters:
environment (SoftwareEnvironment) – Environment to extract package specs for
- Yields:
(str) Spec string for each package
- render_environment(env_name: str, expander: Expander, package_manager, require=True)[source]
Render an environment needed by an experiment
- Parameters:
env_name (str) – Name of environment needed by the experiment
expander (ramble.expander.Expander) – Expander object from the experiment
package_manager – Package manager the environment is rendered with
- Returns:
- Reference to software environment for
the experiment
- Return type:
- unused_environments()[source]
Iterator over environment templates that do not have any rendered environments
- Yields:
(TemplateEnvironment) Each unused template environment in this group
- unused_packages()[source]
Iterator over package templates that do not have any rendered packages
- Yields:
(TemplatePackage) Each unused template package in this group
- use_environment(package_manager, env_name)[source]
Mark an environment as used.
Given a package manager object and the name of a rendered environment, mark the environment as used. This allows the info method to only print information about used packages and environments.
- Parameters:
package_manager – Reference to a package manager object
env_name (str) – Name of the rendered environment to mark as used
- class ramble.software_environments.SoftwarePackage(name: str, pkg_info: dict)[source]
Bases:
objectClass to represent a single software package
- info(indent: int = 0, verbosity: int = 0, color_level: int = 0, only_used: bool = True)[source]
String representation of package information
- property is_used
Return if this package is used or not
- Returns:
Whether package is used or not
- Return type:
(bool)
- class ramble.software_environments.TemplateEnvironment(name: str)[source]
Bases:
SoftwareEnvironmentClass representing a template software environment
- add_rendered_environment(environment: RenderedEnvironment, all_environments: dict, all_packages: dict, pm_name: str)[source]
Add a rendered environment to this template
- Parameters:
environment (RenderedEnvironment) – Reference to rendered environment
all_environments (dict) – Dictionary containing all environments
all_packages (dict) – Dictionary containing all packages
pm_name (str) – Name of the associated package manager
- info(indent: int = 0, verbosity: int = 0, color_level: int = 0, only_used: bool = True)[source]
Software environment information
- property is_used
Determine if TemplateEnvironment is used or not
- Returns:
Whether template environment is used or not
- Return type:
(bool)
- render_environment(expander: Expander, all_package_templates: dict, all_packages: dict, package_manager)[source]
Render a SoftwareEnvironment from this TemplateEnvironment
- Parameters:
expander (ramble.expander.Expander) – Expander object to use when rendering
all_packages (dict) – All package definitions
package_manager – Package manager the environment is rendered with
- Returns:
(RenderedEnvironment) Reference to the rendered SoftwareEnvironment
- class ramble.software_environments.TemplatePackage(name: str, pkg_info: dict)[source]
Bases:
SoftwarePackageClass representing a template software package
- add_rendered_package(new_package: RenderedPackage, all_packages: dict, pm_name: str)[source]
Add a rendered package to this template’s list of rendered packages
- Parameters:
new_package (SoftwarePackage) – New package definition to add
all_packages (dict) – Dictionary of all package definitions
pm_name (str) – The name of the package manager used for the package
- info(indent: int = 0, verbosity: int = 0, color_level: int = 0, only_used: bool = True)[source]
String representation of package information
- property is_used
Determine if template package is used
Iterate over all packages in this template, and determine if any are used.
- Returns:
Whether this template contains any used packages or not
- Return type:
(bool)
- render_package(expander: Expander, package_manager)[source]
Render a SoftwarePackage from this TemplatePackage
- Parameters:
expander (ramble.expander.Expander) – Expander to use to render a package from this template
- Returns:
Rendered SoftwarePackage
- Return type:
ramble.software_info module
ramble.spec module
- class ramble.spec.Spec(spec_like=None)[source]
Bases:
object- format(format_string='{name}', **kwargs)[source]
Prints out particular pieces of a spec, depending on what is in the format string.
Using the
{attribute}syntax, any field of the spec can be selected. Those attributes can be recursive.Commonly used attributes of the Spec for format strings include:
name
- property fullname
ramble.stage module
- class ramble.stage.DIYStage(path)[source]
Bases:
objectSimple class that allows any directory to be a ramble input stage. Consequently, it does not expect or require that the source path adhere to the standard directory naming convention.
- property expanded
Returns True since the source_path must exist.
- managed_by_ramble = False
- class ramble.stage.InputStage(url_or_fetch_strategy, name=None, path=None, mirror_paths=None, keep=True, lock=True, search_fn=None)[source]
Bases:
objectManages a stage directory for containing input files.
A Stage object is a context manager that handles a directory where some workload inputs are downloaded. It handles fetching inputs, either as an archive to be expanded or by checking it out of a repository. A stage’s lifecycle looks like this:
with InputStage() as stage: # Context manager creates the stage # directory stage.fetch() # Fetch an input archive into the stage. stage.expand_archive() # Expand the archive into input_path.
Because the input files are needed to execute various experiments, the stage is retained by default.
You can also use the stage’s create/destroy functions manually, like this:
stage = InputStage() try: stage.create() # Explicitly create the stage directory. stage.fetch() # Fetch a source archive into the stage. stage.expand_archive() # Expand the archive into source_path. <install> # Build and install the archive. # (handled by user of Stage) finally: stage.destroy() # Explicitly destroy the stage directory.
InputStages are required to be named by default. The name should match a workload namespace.
- property archive_file
Path to the source archive within this stage directory.
- cache_mirror(mirror, stats)[source]
Perform a fetch if the resource is not already cached
- Parameters:
mirror (ramble.caches.MirrorCache) – the mirror to cache this Stage’s resource in
stats (ramble.mirror.MirrorStats) – this is updated depending on whether the caching operation succeeded or failed
- check()[source]
Check the downloaded archive against a checksum digest. No-op if this stage checks code out of a repository.
- expand_archive()[source]
Changes to the stage directory and attempt to expand the downloaded archive. Fail if the stage is not set up or if the archive is not yet downloaded.
- property expanded
Returns True if source path expanded; else False.
- property expected_archive_files
Possible archive file paths.
- managed_by_ramble = True
- property save_filename
- property source_path
Returns the well-known source directory path.
- class ramble.stage.ResourceStage(url_or_fetch_strategy, root, resource, **kwargs)[source]
Bases:
InputStage
- exception ramble.stage.RestageError(message: str, long_message: str | None = None)[source]
Bases:
StageError“Error encountered during restaging.
- class ramble.stage.StageComposite[source]
Bases:
CompositeComposite for Stage type objects. The first item in this composite is considered to be the root workload, and operations that return a value are forwarded to it.
- property archive_file
- property expanded
- property path
- property source_path
- exception ramble.stage.StageError(message: str, long_message: str | None = None)[source]
Bases:
RambleError“Superclass for all errors encountered during staging.
ramble.success_criteria module
- class ramble.success_criteria.ScopedCriteriaList[source]
Bases:
objectA scoped list of success criteria
This object represents a list of success criteria. The criteria are scoped based on which portion of a workspace they are defined in.
- Possible scopes are:
object_definitions
application
workload
experiment
To see if success was met, all criteria will be checked and are AND-ed together.
- class ramble.success_criteria.SuccessCriteria(name, mode, match=None, file='{log_file}', fom_name=None, fom_context='null', formula=None, anti_match=None, owning_object=None)[source]
Bases:
objectA single success criteria object
This object represents a single criteria for success for a Ramble experiment.
ramble.syskit module
ramble.uploader module
- class ramble.uploader.BigQueryUploader[source]
Bases:
UploaderClass to handle upload of FOMs to BigQuery
- class ramble.uploader.Experiment(name, workspace_hash, data, timestamp)[source]
Bases:
objectClass representation of experiment data
- class ramble.uploader.PrintOnlyUploader[source]
Bases:
UploaderAn uploader that only prints out formatted data without actually uploading.
- class ramble.uploader.SQLiteUploader[source]
Bases:
UploaderClass to handle upload of FOMs to a local SQLite database
- class ramble.uploader.Uploader[source]
Bases:
object- chunked_upload(table_id, data, uri=None)[source]
Abstract method for chunked uploads. Must be implemented by subclasses.
- schema = [{'metadata_key': 'experiment_schema_version', 'schema': {0.1: {'additionalProperties': False, 'properties': {'application_name': {'type': 'string'}, 'bulk_hash': {'type': 'string'}, 'data': {'type': 'string'}, 'id': {'type': 'integer'}, 'n_nodes': {'type': 'integer'}, 'n_ranks': {'type': 'integer'}, 'n_threads': {'type': 'integer'}, 'name': {'type': 'string'}, 'node_type': {'type': 'string'}, 'processes_per_node': {'type': 'integer'}, 'status': {'type': 'string'}, 'timestamp': {'format': 'date-time', 'type': 'string'}, 'user': {'type': 'string'}, 'workload_name': {'type': 'string'}, 'workspace_hash': {'type': 'string'}, 'workspace_name': {'type': 'string'}}, 'required': ['name', 'id', 'data', 'application_name', 'workspace_name', 'workspace_hash', 'workload_name', 'bulk_hash', 'n_nodes', 'processes_per_node', 'n_ranks', 'n_threads', 'node_type', 'status', 'user', 'timestamp'], 'type': 'object'}}, 'table': 'experiments', 'version': 0.1}, {'metadata_key': 'fom_schema_version', 'schema': {0.1: {'additionalProperties': False, 'properties': {'context': {'type': 'string'}, 'experiment_id': {'type': 'integer'}, 'experiment_name': {'type': 'string'}, 'name': {'type': 'string'}, 'origin': {'type': 'string'}, 'origin_type': {'type': 'string'}, 'unit': {'type': 'string'}, 'value': {'type': 'string'}}, 'required': ['name', 'value', 'unit', 'origin', 'origin_type', 'context', 'experiment_id', 'experiment_name'], 'type': 'object'}}, 'table': 'foms', 'version': 0.1}, {'metadata_key': 'metadata_schema_version', 'schema': {0.1: {'additionalProperties': False, 'properties': {'key': {'type': 'string'}, 'timestamp': {'format': 'date-time', 'type': 'string'}, 'value': {'type': 'string'}}, 'required': ['key', 'value', 'timestamp'], 'type': 'object'}}, 'table': 'metadata', 'version': 0.1}, {'metadata_key': 'experiments_metadata_schema_version', 'schema': {0.1: {'additionalProperties': False, 'properties': {'experiment_id': {'type': 'integer'}, 'key': {'type': 'string'}, 'timestamp': {'format': 'date-time', 'type': 'string'}, 'value': {'type': 'string'}}, 'required': ['experiment_id', 'key', 'value'], 'type': 'object'}}, 'table': 'experiments_metadata', 'version': 0.1}, {'metadata_key': 'software_db_schema_version', 'schema': {0.1: {'additionalProperties': False, 'properties': {'compiler': {'type': 'string'}, 'compiler_version': {'type': 'string'}, 'experiment_id': {'type': 'integer'}, 'experiment_name': {'type': 'string'}, 'name': {'type': 'string'}, 'target': {'type': 'string'}, 'variants': {'type': 'string'}, 'version': {'type': 'string'}}, 'required': ['experiment_id', 'experiment_name', 'name'], 'type': 'object'}}, 'table': 'software', 'version': 0.1}]
- ramble.uploader.determine_node_type(experiment, contexts)[source]
Extract node type from available FOMS.
First prio is machine specific data, such as GCP meta data Second prio is more general data like CPU type
- ramble.uploader.format_data(data_in)[source]
Goal: convert results to a more searchable and decomposed format for insertion into data store (etc)
Input:
{ experiment_name: { "CONTEXTS": { "context_name": "FOM_name { unit: "value", "value":value" } ...} } }Output: The general idea is the decompose the results into a more “database” like format, where the runs and FOMs are in a different table.
ramble.variants module
- exception ramble.variants.RambleVariantError(message: str, long_message: str | None = None)[source]
Bases:
RambleErrorClass representing errors with variants
- class ramble.variants.Variant(name: str, default: Any | None = None, description: str | None = '', values: Sequence | Callable[[Any], bool] | None = None)[source]
Bases:
objectA custom set for housing multiple types of variants, and encapsulating the logic of merging them together.
- as_definition() str[source]
Build a definition for this variant
Format the variant as a string which can be used to test against when clauses.
- Returns:
String definition for this variant
- Return type:
- as_definitions() list[source]
Build a list of definitions for this variant
Format the variant as all possible strings which can be used to test against when clauses.
- Returns:
String definitions for this variant
- Return type:
- class ramble.variants.VariantSet[source]
Bases:
objectA custom set for housing multiple types of variants, and encapsulating the logic of merging them together.
- as_set(expander: Expander | None = None) set[source]
Construct a set of definitions for this variant set
The set of variant definitions will be used to determine if a when clause is valid or not.
- Returns:
A set consisting of strings with the variant definitions expander (ramble.expander.Expander): Expander to use when expanding
variant definitions
- Return type:
- default_variant(name: str, default: Any | None = None, description: str = '', values: Sequence | Callable[[Any], bool] | None = None)[source]
Define a new default variant within this set.
Default variants are variants defined by directives in an object. These are used to define the defaults, and provide documentation for users.
- Parameters:
name – Name of variant
default – Default value of the variant
description – Description of the variant, and what it’s used for
values – Set of valid values for the variant
- experiment_variant(name: str, value: Any)[source]
Define a new experiment variant within this set.
Experiment variants are variants defined within a workspace’s configuration file. These are expected to be user defined values that will override the defaults of the object.
Experiment variants should always be defined after default variants (as defaults come from object directives, and experiment variants come from yaml). As a result, we only define experiment variants that have a corresponding default variant with the same name.
- Parameters:
name – Name of variant
value – The value the variant should take.
- merge_default_variants(in_set)[source]
Merge another variant set’s default variants into this variant set.
- Parameters:
in_set – VariantSet to merge into self
- merge_experiment_variants(in_set)[source]
Merge another variant set’s experiment variants into this variant set.
- Parameters:
in_set – VariantSet to merge into self
- merge_multi_value_variants(in_set)[source]
Merge another variant set’s multi value variants into this variant set.
- Parameters:
in_set – VariantSet to merge into self
- merge_version_variants(in_set)[source]
Merge another variant set’s version variants into this variant set.
- Parameters:
in_set – VariantSet to merge into self
- value(name: str)[source]
Extract the value of a variant by name
- Parameters:
name – Name of variant to determine value for
- Returns:
Value of variant if found, otherwise None.
- version(name: str)[source]
Extract the version of the named variant
- Parameters:
name – Name of the variant to determine version of
- Returns:
Version of the variant
- Return type:
- version_variant(name: str, value: Any)[source]
Define a new version variant within this set.
Version variants are variants defined within the software section of a workspace’s configuration file.
- Parameters:
name – Name of variant
default – Default value of the variant
description – Description of the variant, and what it’s used for
values – Set of valid values for the variant
ramble.wmkit module
wmkit is a set of useful modules to import when writing workflow managers
ramble.workload module
- class ramble.workload.Workload(name: str, executables: List[str], inputs: List[str] | None = None, tags: List[str] | None = None, when: List[str] | None = None)[source]
Bases:
objectClass representing a single workload
- add_environment_variable(env_var: EnvironmentVariable)[source]
Add an environment variable to this workload
- Parameters:
env_var (ramble.definitions.variables.EnvironmentVariable) – New environment variable to add to this workload
- add_executable(executable: str)[source]
Add an executable to this workload
- Parameters:
executable (str) – Name of executable to add to this workload
- add_variable(variable: Variable)[source]
Add a variable to this workload
- Parameters:
variable (ramble.definitions.variables.Variable) – New variable to add to this workload
- find_variable(name)[source]
Find a variable in this workload
- Parameters:
var_name (str) – Name of variable to find
- Returns:
- Variable instance if it exists, None if
it is not found
- Return type:
- class ramble.workload.WorkloadGroup(name: str, workloads: List[str], when_list: List[str])[source]
Bases:
objectClass representing a single workload group
- add_workloads(workloads: List[str], when_list: List[str], mode: str)[source]
Add workloads to this workload group using a different set of ‘when’ condition
- Parameters:
workloads – List of workloads
when_list – List of ‘when’ conditions for this list of workloads
mode – Append or overwrite workloads in this set of ‘when’ conditions