fmdtools 2.5.3__tar.gz → 2.5.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fmdtools-2.5.3 → fmdtools-2.5.5}/LICENSE +1 -1
- {fmdtools-2.5.3/fmdtools.egg-info → fmdtools-2.5.5}/PKG-INFO +7 -7
- {fmdtools-2.5.3 → fmdtools-2.5.5}/README.md +5 -5
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/state.py +35 -28
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/contingency_management/model_aircraft.py +2 -2
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/contingency_management/model_environment.py +1 -1
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/water_pump/test_pump_stochastic.py +2 -2
- {fmdtools-2.5.3 → fmdtools-2.5.5/fmdtools.egg-info}/PKG-INFO +7 -7
- {fmdtools-2.5.3 → fmdtools-2.5.5}/fmdtools.egg-info/SOURCES.txt +95 -1
- {fmdtools-2.5.3 → fmdtools-2.5.5}/pyproject.toml +79 -1
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/__init__.py +1 -1
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/common.py +74 -9
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/graph/base.py +14 -4
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/history.py +66 -29
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/phases.py +11 -6
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/result.py +65 -18
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/tabulate.py +43 -27
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/architecture/action.py +1 -1
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/architecture/geom.py +4 -1
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/base.py +8 -3
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/block/base.py +10 -3
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/container/base.py +2 -2
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/container/mode.py +19 -1
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/container/parameter.py +3 -2
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/container/rand.py +320 -86
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/container/state.py +26 -15
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/container/time.py +2 -2
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/object/coords.py +8 -3
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/object/timer.py +9 -6
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/sim/propagate.py +2 -1
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/sim/sample.py +152 -49
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/sim/scenario.py +38 -20
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/sim/search.py +15 -8
- fmdtools-2.5.5/tests/test_appended_history_snapshots.py +172 -0
- fmdtools-2.5.5/tests/test_approach_joint_domains.py +186 -0
- fmdtools-2.5.5/tests/test_approach_model_timestep.py +192 -0
- fmdtools-2.5.5/tests/test_approach_phase_map_ownership.py +129 -0
- fmdtools-2.5.5/tests/test_architecture_vector_inputs.py +176 -0
- fmdtools-2.5.5/tests/test_array_state_limits.py +126 -0
- fmdtools-2.5.5/tests/test_array_state_rounding.py +131 -0
- fmdtools-2.5.5/tests/test_binomial_trial_counts.py +189 -0
- fmdtools-2.5.5/tests/test_bounded_array_increments.py +141 -0
- fmdtools-2.5.5/tests/test_callable_parameter_domains.py +142 -0
- fmdtools-2.5.5/tests/test_choice_draw_mass.py +198 -0
- fmdtools-2.5.5/tests/test_choice_probability_precision.py +173 -0
- fmdtools-2.5.5/tests/test_common.py +166 -0
- fmdtools-2.5.5/tests/test_comparison_ci_metrics.py +208 -0
- fmdtools-2.5.5/tests/test_coordinate_cell_boundaries.py +124 -0
- fmdtools-2.5.5/tests/test_default_fault_sample_timestep.py +184 -0
- fmdtools-2.5.5/tests/test_degradation_path_boundaries.py +153 -0
- fmdtools-2.5.5/tests/test_dirichlet_batches.py +195 -0
- fmdtools-2.5.5/tests/test_disconnected_graph_robustness.py +154 -0
- fmdtools-2.5.5/tests/test_discrete_grid_values.py +171 -0
- fmdtools-2.5.5/tests/test_discrete_sample_sizes.py +252 -0
- fmdtools-2.5.5/tests/test_even_sampling_mass.py +159 -0
- fmdtools-2.5.5/tests/test_expectation_without_nominal.py +120 -0
- fmdtools-2.5.5/tests/test_explicit_history_times.py +137 -0
- fmdtools-2.5.5/tests/test_factor_sort_priority.py +142 -0
- fmdtools-2.5.5/tests/test_fault_history_paths.py +179 -0
- fmdtools-2.5.5/tests/test_fault_object_overrides.py +205 -0
- fmdtools-2.5.5/tests/test_fault_space_ownership.py +151 -0
- fmdtools-2.5.5/tests/test_fault_space_sample_limits.py +124 -0
- fmdtools-2.5.5/tests/test_fault_summary_paths.py +170 -0
- fmdtools-2.5.5/tests/test_fault_weight_arrays.py +150 -0
- fmdtools-2.5.5/tests/test_faulty_scenario_selection.py +143 -0
- fmdtools-2.5.5/tests/test_fmea_input_ownership.py +126 -0
- fmdtools-2.5.5/tests/test_generated_history_phase_timestep.py +92 -0
- fmdtools-2.5.5/tests/test_graph_edge_comparison.py +129 -0
- fmdtools-2.5.5/tests/test_graph_zero_seed.py +117 -0
- fmdtools-2.5.5/tests/test_history_alignment_ownership.py +136 -0
- fmdtools-2.5.5/tests/test_history_sample_indices.py +147 -0
- fmdtools-2.5.5/tests/test_hypergeometric_count_conversion.py +167 -0
- fmdtools-2.5.5/tests/test_immutable_fault_injection.py +185 -0
- fmdtools-2.5.5/tests/test_implicit_sampling_start.py +158 -0
- fmdtools-2.5.5/tests/test_integer_bound_conversion.py +177 -0
- fmdtools-2.5.5/tests/test_integer_history_differences.py +196 -0
- fmdtools-2.5.5/tests/test_integer_rate_metrics.py +176 -0
- fmdtools-2.5.5/tests/test_join_phase_timestep.py +118 -0
- fmdtools-2.5.5/tests/test_joint_fault_metadata_order.py +137 -0
- fmdtools-2.5.5/tests/test_joint_fault_phase_map.py +192 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_joint_fault_weights.py +2 -1
- fmdtools-2.5.5/tests/test_joint_scenario_quadrature.py +229 -0
- fmdtools-2.5.5/tests/test_location_scale_draw_sizes.py +268 -0
- fmdtools-2.5.5/tests/test_lognormal_defaults.py +180 -0
- fmdtools-2.5.5/tests/test_metric_weight_alignment.py +140 -0
- fmdtools-2.5.5/tests/test_mixed_shape_degradation.py +180 -0
- fmdtools-2.5.5/tests/test_multidimensional_state_comparison.py +96 -0
- fmdtools-2.5.5/tests/test_multinomial_sampling_arguments.py +195 -0
- fmdtools-2.5.5/tests/test_multivariate_hypergeometric_options.py +201 -0
- fmdtools-2.5.5/tests/test_multivariate_normal_arguments.py +199 -0
- fmdtools-2.5.5/tests/test_named_default_restoration.py +143 -0
- fmdtools-2.5.5/tests/test_named_parameter_maps.py +129 -0
- fmdtools-2.5.5/tests/test_nearest_point_exclusion.py +89 -0
- fmdtools-2.5.5/tests/test_nested_comparison_inputs.py +173 -0
- fmdtools-2.5.5/tests/test_nested_comparison_parentage.py +213 -0
- fmdtools-2.5.5/tests/test_nested_history_summary.py +120 -0
- fmdtools-2.5.5/tests/test_nested_parameter_constraints.py +148 -0
- fmdtools-2.5.5/tests/test_nested_sample_metrics.py +173 -0
- fmdtools-2.5.5/tests/test_nested_scenario_parameters.py +167 -0
- fmdtools-2.5.5/tests/test_not_equal_constraints.py +138 -0
- fmdtools-2.5.5/tests/test_object_history_copy.py +140 -0
- fmdtools-2.5.5/tests/test_offset_time_grids.py +119 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_packages.py +2 -2
- fmdtools-2.5.5/tests/test_parameter_grid_bounds.py +140 -0
- fmdtools-2.5.5/tests/test_parameter_sample_defaults.py +146 -0
- fmdtools-2.5.5/tests/test_permutation_axis_probabilities.py +188 -0
- fmdtools-2.5.5/tests/test_permuted_nan_probabilities.py +193 -0
- fmdtools-2.5.5/tests/test_permuted_slice_probabilities.py +184 -0
- fmdtools-2.5.5/tests/test_phase_map_default_isolation.py +91 -0
- fmdtools-2.5.5/tests/test_ragged_confidence_histories.py +166 -0
- fmdtools-2.5.5/tests/test_rand.py +177 -0
- fmdtools-2.5.5/tests/test_random_combination_types.py +169 -0
- fmdtools-2.5.5/tests/test_reference_risk_calculations.py +124 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_result.py +107 -11
- fmdtools-2.5.5/tests/test_result_constructor_input.py +121 -0
- fmdtools-2.5.5/tests/test_sample.py +501 -0
- fmdtools-2.5.5/tests/test_scenario.py +211 -0
- fmdtools-2.5.5/tests/test_scenario_metric_mappings.py +184 -0
- fmdtools-2.5.5/tests/test_shape_distribution_sizes.py +221 -0
- fmdtools-2.5.5/tests/test_simple_problem_vector_inputs.py +164 -0
- fmdtools-2.5.5/tests/test_simulation_exposure.py +160 -0
- fmdtools-2.5.5/tests/test_standard_draw_arguments.py +205 -0
- fmdtools-2.5.5/tests/test_string_state_histories.py +96 -0
- fmdtools-2.5.5/tests/test_time_reset.py +103 -0
- fmdtools-2.5.5/tests/test_triangular_arraylike_parameters.py +181 -0
- fmdtools-2.5.5/tests/test_tuple_table_factors.py +143 -0
- fmdtools-2.5.5/tests/test_uniform_bound_dtypes.py +174 -0
- fmdtools-2.5.5/tests/test_wald_density.py +188 -0
- fmdtools-2.5.5/tests/test_weighted_percent_metrics.py +106 -0
- fmdtools-2.5.5/tests/test_zero_fault_start_times.py +120 -0
- fmdtools-2.5.5/tests/test_zero_time_objectives.py +117 -0
- fmdtools-2.5.5/tests/test_zero_timer_increment.py +130 -0
- fmdtools-2.5.3/tests/test_sample.py +0 -165
- fmdtools-2.5.3/tests/test_scenario.py +0 -111
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airport_taxiway/model_asset.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airport_taxiway/model_atc.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airport_taxiway/model_common.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airport_taxiway/model_main.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airport_taxiway/test_asset.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airport_taxiway/test_model.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/aircraft.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/aircraftarchitecture.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/arch/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/arch/aviate.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/arch/controlflight.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/arch/flows.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/arch/holdpayload.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/arch/perceiveenvironment.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/arch/storeee.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/base/parameter.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/contingency_management/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/contingency_management/model_flightplanner.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/water_rescue/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/water_rescue/model_drone.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/water_rescue/model_environment.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/water_rescue/model_main.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/water_rescue/model_responder.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/wildfire_response/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/wildfire_response/model_aircraft.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/wildfire_response/model_environment.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/wildfire_response/model_main.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/cooling_tank/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/cooling_tank/model_main.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/cooling_tank/model_optimization.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/cooling_tank/test_tank.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/electric_power_system/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/electric_power_system/model_main.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/electric_power_system/test_model.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/human_hazard_mitigation/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/human_hazard_mitigation/model_main.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/multirotor_drone/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/multirotor_drone/model_dynamic.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/multirotor_drone/model_hierarchical.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/multirotor_drone/model_rural.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/multirotor_drone/model_static.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/multirotor_drone/model_urban.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/multirotor_drone/script_opt_model_rural.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/multirotor_drone/test_multirotor.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/navigating_rover/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/navigating_rover/model_degradation.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/navigating_rover/model_human.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/navigating_rover/model_main.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/navigating_rover/model_troupe.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/navigating_rover/script_ea_analysis.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/navigating_rover/script_mode_space.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/navigating_rover/script_search_rover.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/navigating_rover/test_rover.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/state_communication/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/state_communication/model_main.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/state_communication/test_multiflow.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/water_pump/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/water_pump/model_indiv.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/water_pump/model_main.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/water_pump/model_stochastic.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/water_pump/script_jointfaults.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/water_pump/script_parallelism.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/water_pump/test_pump.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/examples/water_pump/test_pump_example.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/fmdtools.egg-info/dependency_links.txt +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/fmdtools.egg-info/requires.txt +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/fmdtools.egg-info/top_level.txt +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/setup.cfg +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/graph/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/graph/label.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/graph/model.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/analyze/graph/style.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/architecture/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/architecture/base.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/architecture/component.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/architecture/function.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/block/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/block/action.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/block/component.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/block/function.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/container/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/environment.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/flow/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/flow/base.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/flow/commsflow.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/flow/multiflow.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/object/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/object/base.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/object/geom.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/define/pathplan.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/src/fmdtools/sim/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/__init__.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/common.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_array_differences.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_array_random_states.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_array_result_equality.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_bootstrap_statistic_arguments.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_calc_metric_ci_constant_outputs.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_comparison_groups.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_confidence_history_clipping.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_error_history_plots.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_exact_nominal_expectation.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_explicit_result_file_formats.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_exponential_rayleigh_draw_sizes.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_fault_sample_without_nominal.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_fault_time_without_traces.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_gamma_sampling_density.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_geom.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_graph.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_hierarchical.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_history_phase_identifiers.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_history_standard_deviation.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_independent_single_replicate_seeds.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_individual_result_paths.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_integer_draw_mass.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_join_phasemaps.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_json_result_arrays.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_named_metric_rounding.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_nested_nominal_groups.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_nesting_custom_separators.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_parameter_sample_seeds.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_parameter_subsampling_types.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_pareto_density.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_pathplan.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_phase_timestep.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_pruned_fault_times.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_result_folder_selection.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_scenario_defaults.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_standard_t_density.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_table_factor_indices.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_time.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_uniform_density.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_unit_random_density.py +0 -0
- {fmdtools-2.5.3 → fmdtools-2.5.5}/tests/test_vonmises_density.py +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmdtools
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.5
|
|
4
4
|
Summary: System resilience modelling, simulation, and assessment in Python
|
|
5
5
|
Author: fmdtools Developers
|
|
6
6
|
Maintainer-email: Daniel Hulse <daniel.e.hulse@nasa.gov>
|
|
7
|
-
License: fmdtools version 2.5.
|
|
7
|
+
License: fmdtools version 2.5.5
|
|
8
8
|
---------------------------
|
|
9
9
|
Apache License
|
|
10
10
|
Version 2.0, January 2004
|
|
@@ -394,7 +394,7 @@ More guidance on development installations is provided in [How to Contribute](ht
|
|
|
394
394
|
Note that this version reflects the latest version on the ``main`` git branch along with any local changes. To use a particular version of ``fmdtools`` in the context of a development install you can checkout the tag corresponding to the version you want, e.g.:
|
|
395
395
|
|
|
396
396
|
```
|
|
397
|
-
git checkout v2.5.
|
|
397
|
+
git checkout v2.5.5
|
|
398
398
|
```
|
|
399
399
|
|
|
400
400
|
|
|
@@ -500,9 +500,9 @@ Decent (but **very imperfect**) results can be achieved using LLMs for model dev
|
|
|
500
500
|
|
|
501
501
|
```prompt
|
|
502
502
|
You are an experienced software engineer learning a new Python library for the first time.
|
|
503
|
-
Make an fmdtools simulation of a <enter your system here> using the latest syntax from `https://github.com/nasa/fmdtools/tree/v2.5.
|
|
503
|
+
Make an fmdtools simulation of a <enter your system here> using the latest syntax from `https://github.com/nasa/fmdtools/tree/v2.5.5` for all modeling (`fmdtools.define`), simulation (`fmdtools.sim`), and analysis (`fmdtools.analyze`) classes.
|
|
504
504
|
The output should be a bare bones but well-commented .py file with simple behaviors for each class and a small script at the bottom leveraging the built-in capabilities in the `fmdtools.analyze` package instead of directly using external libraries like matplotlib.
|
|
505
|
-
As you are going, explain the structure of each class, the usage of each function call and how they each leverage the correct fmdtools v2.5.
|
|
505
|
+
As you are going, explain the structure of each class, the usage of each function call and how they each leverage the correct fmdtools v2.5.5 syntax.
|
|
506
506
|
```
|
|
507
507
|
|
|
508
508
|
The important aspects of this prompt are specifying the URL and version--otherwise the LLM is likely to hallucinate usage or recall an earlier version of fmdtools. Do not expect perfect output from this--you may have to spend some time identifying the problems so they can be fixed!
|
|
@@ -548,8 +548,8 @@ To cite a particular version of the fmdtools, you may use:
|
|
|
548
548
|
author = {{NASA}},
|
|
549
549
|
title = {fmdtools},
|
|
550
550
|
url = {https://github.com/nasa/fmdtools},
|
|
551
|
-
version = {2.5.
|
|
552
|
-
date = {2026-
|
|
551
|
+
version = {2.5.5},
|
|
552
|
+
date = {2026-10-08},
|
|
553
553
|
}
|
|
554
554
|
```
|
|
555
555
|
|
|
@@ -123,7 +123,7 @@ More guidance on development installations is provided in [How to Contribute](ht
|
|
|
123
123
|
Note that this version reflects the latest version on the ``main`` git branch along with any local changes. To use a particular version of ``fmdtools`` in the context of a development install you can checkout the tag corresponding to the version you want, e.g.:
|
|
124
124
|
|
|
125
125
|
```
|
|
126
|
-
git checkout v2.5.
|
|
126
|
+
git checkout v2.5.5
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
|
|
@@ -229,9 +229,9 @@ Decent (but **very imperfect**) results can be achieved using LLMs for model dev
|
|
|
229
229
|
|
|
230
230
|
```prompt
|
|
231
231
|
You are an experienced software engineer learning a new Python library for the first time.
|
|
232
|
-
Make an fmdtools simulation of a <enter your system here> using the latest syntax from `https://github.com/nasa/fmdtools/tree/v2.5.
|
|
232
|
+
Make an fmdtools simulation of a <enter your system here> using the latest syntax from `https://github.com/nasa/fmdtools/tree/v2.5.5` for all modeling (`fmdtools.define`), simulation (`fmdtools.sim`), and analysis (`fmdtools.analyze`) classes.
|
|
233
233
|
The output should be a bare bones but well-commented .py file with simple behaviors for each class and a small script at the bottom leveraging the built-in capabilities in the `fmdtools.analyze` package instead of directly using external libraries like matplotlib.
|
|
234
|
-
As you are going, explain the structure of each class, the usage of each function call and how they each leverage the correct fmdtools v2.5.
|
|
234
|
+
As you are going, explain the structure of each class, the usage of each function call and how they each leverage the correct fmdtools v2.5.5 syntax.
|
|
235
235
|
```
|
|
236
236
|
|
|
237
237
|
The important aspects of this prompt are specifying the URL and version--otherwise the LLM is likely to hallucinate usage or recall an earlier version of fmdtools. Do not expect perfect output from this--you may have to spend some time identifying the problems so they can be fixed!
|
|
@@ -277,8 +277,8 @@ To cite a particular version of the fmdtools, you may use:
|
|
|
277
277
|
author = {{NASA}},
|
|
278
278
|
title = {fmdtools},
|
|
279
279
|
url = {https://github.com/nasa/fmdtools},
|
|
280
|
-
version = {2.5.
|
|
281
|
-
date = {2026-
|
|
280
|
+
version = {2.5.5},
|
|
281
|
+
date = {2026-10-08},
|
|
282
282
|
}
|
|
283
283
|
```
|
|
284
284
|
|
|
@@ -41,19 +41,26 @@ class AircraftPosition(State):
|
|
|
41
41
|
dy: float = 0.0
|
|
42
42
|
dims = ('x', 'y')
|
|
43
43
|
|
|
44
|
-
def
|
|
44
|
+
def get_dims(self, *dims):
|
|
45
|
+
"""Get the dimensions to calculate over. Default is self.dims."""
|
|
46
|
+
if not dims:
|
|
47
|
+
return self.dims
|
|
48
|
+
else:
|
|
49
|
+
return dims
|
|
50
|
+
|
|
51
|
+
def get_goal(self, *dims):
|
|
45
52
|
"""Get the goal attributes (goal_x, goal_y) of the AircraftPosition."""
|
|
46
|
-
return self.get(*['goal_'+d for d in self.dims])
|
|
53
|
+
return self.get(*['goal_'+d for d in self.get_dims(*dims)])
|
|
47
54
|
|
|
48
|
-
def get_loc(self):
|
|
55
|
+
def get_loc(self, *dims):
|
|
49
56
|
"""Get the location (x, y) attributes of the AircraftPosition."""
|
|
50
|
-
return self.get(*self.dims)
|
|
57
|
+
return self.get(*self.get_dims(*dims))
|
|
51
58
|
|
|
52
|
-
def get_vel(self):
|
|
59
|
+
def get_vel(self, *dims):
|
|
53
60
|
"""Get the velocity attributes (dx, dy) of the AircraftPosition."""
|
|
54
|
-
return self.get(*['d'+d for d in self.dims])
|
|
61
|
+
return self.get(*['d'+d for d in self.get_dims(*dims)])
|
|
55
62
|
|
|
56
|
-
def find_direction(self):
|
|
63
|
+
def find_direction(self, *dims):
|
|
57
64
|
"""
|
|
58
65
|
Find the (unit vector) direction from the x,y to goal_x, goal_y.
|
|
59
66
|
|
|
@@ -71,22 +78,22 @@ class AircraftPosition(State):
|
|
|
71
78
|
>>> ap.find_direction()
|
|
72
79
|
array([0., 1.])
|
|
73
80
|
"""
|
|
74
|
-
dist = self.calc_dist()
|
|
81
|
+
dist = self.calc_dist(*dims)
|
|
75
82
|
if dist > 0.0:
|
|
76
83
|
return self.calc_vector_dist()/self.calc_dist()
|
|
77
84
|
else:
|
|
78
85
|
return np.zeros(len(self.dims))
|
|
79
86
|
|
|
80
|
-
def calc_vector_dist(self):
|
|
87
|
+
def calc_vector_dist(self, *dims):
|
|
81
88
|
"""Calculate the vector distance from x,y to goal_x, goal_y."""
|
|
82
|
-
return self.get_goal() - self.get_loc()
|
|
89
|
+
return self.get_goal(*dims) - self.get_loc(*dims)
|
|
83
90
|
|
|
84
|
-
def calc_dist(self):
|
|
91
|
+
def calc_dist(self, *dims):
|
|
85
92
|
"""Calculate the scalar distance from x,y to goal_x, goal_y."""
|
|
86
|
-
vector_dist = self.calc_vector_dist()
|
|
93
|
+
vector_dist = self.calc_vector_dist(*dims)
|
|
87
94
|
return np.sqrt(sum(vector_dist**2))
|
|
88
95
|
|
|
89
|
-
def at_goal(self):
|
|
96
|
+
def at_goal(self, *dims):
|
|
90
97
|
"""
|
|
91
98
|
Determine if the aircraft is at its goal location.
|
|
92
99
|
|
|
@@ -99,17 +106,17 @@ class AircraftPosition(State):
|
|
|
99
106
|
>>> ap.at_goal()
|
|
100
107
|
True
|
|
101
108
|
"""
|
|
102
|
-
return all(self.get_goal() == self.get_loc())
|
|
109
|
+
return all(self.get_goal(*dims) == self.get_loc(*dims))
|
|
103
110
|
|
|
104
|
-
def in_range(self, dist_range=10.0):
|
|
111
|
+
def in_range(self, *dims, dist_range=10.0):
|
|
105
112
|
"""Determine if the aircraft is in the range of its goal location."""
|
|
106
|
-
return self.calc_dist() <= dist_range
|
|
113
|
+
return self.calc_dist(*dims) <= dist_range
|
|
107
114
|
|
|
108
|
-
def calc_dist_to_travel(self, dist_range=10.0):
|
|
115
|
+
def calc_dist_to_travel(self, *dims, dist_range=10.0):
|
|
109
116
|
"""Determine the distance to the goal location (under max dist dist_range)."""
|
|
110
|
-
return np.min([dist_range, self.calc_dist()])
|
|
117
|
+
return np.min([dist_range, self.calc_dist(*dims)])
|
|
111
118
|
|
|
112
|
-
def update_dist_to_travel(self, maxvel=10.0):
|
|
119
|
+
def update_dist_to_travel(self, *dims, maxvel=10.0):
|
|
113
120
|
"""
|
|
114
121
|
Update dx, dy to reflect goal location (travelling at max velocity).
|
|
115
122
|
|
|
@@ -128,14 +135,14 @@ class AircraftPosition(State):
|
|
|
128
135
|
>>> ap
|
|
129
136
|
AircraftPosition(x=0.0, goal_x=10.0, dx=10.0, y=0.0, goal_y=0.0, dy=0.0)
|
|
130
137
|
"""
|
|
131
|
-
if self.in_range(dist_range=maxvel):
|
|
132
|
-
vel = self.calc_dist()
|
|
138
|
+
if self.in_range(*dims, dist_range=maxvel):
|
|
139
|
+
vel = self.calc_dist(*dims)
|
|
133
140
|
else:
|
|
134
141
|
vel = maxvel
|
|
135
|
-
vels = vel * self.find_direction()
|
|
136
|
-
self.put(**{'d'+dim: vels[i] for i, dim in enumerate(self.dims)})
|
|
142
|
+
vels = vel * self.find_direction(*dims)
|
|
143
|
+
self.put(**{'d'+dim: vels[i] for i, dim in enumerate(self.get_dims(*dims))})
|
|
137
144
|
|
|
138
|
-
def update_position(self, maxvel=10.0):
|
|
145
|
+
def update_position(self, *dims, maxvel=10.0):
|
|
139
146
|
"""
|
|
140
147
|
Update x, y to reflect progress towards the goal location at maxvel.
|
|
141
148
|
|
|
@@ -157,12 +164,12 @@ class AircraftPosition(State):
|
|
|
157
164
|
>>> ap
|
|
158
165
|
AircraftPosition(x=10.0, goal_x=10.0, dx=0.0, y=10.0, goal_y=10.0, dy=0.0)
|
|
159
166
|
"""
|
|
160
|
-
self.update_dist_to_travel(maxvel=maxvel)
|
|
161
|
-
self.increment_position()
|
|
167
|
+
self.update_dist_to_travel(*dims, maxvel=maxvel)
|
|
168
|
+
self.increment_position(*dims)
|
|
162
169
|
|
|
163
|
-
def increment_position(self):
|
|
170
|
+
def increment_position(self, *dims):
|
|
164
171
|
"""Increment position (x,y) by (dx, dy)."""
|
|
165
|
-
self.inc(**{dim: getattr(self, 'd'+dim) for dim in self.dims})
|
|
172
|
+
self.inc(**{dim: getattr(self, 'd'+dim) for dim in self.get_dims(*dims)})
|
|
166
173
|
|
|
167
174
|
|
|
168
175
|
class AircraftPosition3(AircraftPosition):
|
{fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/contingency_management/model_aircraft.py
RENAMED
|
@@ -148,9 +148,9 @@ class ContingencyControlFlight(ControlFlight):
|
|
|
148
148
|
"""Set new landing location in depletion scenario."""
|
|
149
149
|
ts = self.trajectories.s.copy()
|
|
150
150
|
ts.assign(self.environment.c.start, "goal_x", "goal_y")
|
|
151
|
-
dist_to_start = ts.calc_dist_to_travel(1000)
|
|
151
|
+
dist_to_start = ts.calc_dist_to_travel(dist_range=1000)
|
|
152
152
|
ts.assign(self.environment.c.end, "goal_x", "goal_y")
|
|
153
|
-
dist_to_end = ts.calc_dist_to_travel(1000)
|
|
153
|
+
dist_to_end = ts.calc_dist_to_travel(dist_range=1000)
|
|
154
154
|
if dist_to_end < self.electricity.s.charge:
|
|
155
155
|
self.s.endpt = self.environment.c.end
|
|
156
156
|
elif dist_to_start < self.electricity.s.charge:
|
{fmdtools-2.5.3 → fmdtools-2.5.5}/examples/airspacelib/contingency_management/model_environment.py
RENAMED
|
@@ -165,7 +165,7 @@ class Threat(GeomPoint):
|
|
|
165
165
|
|
|
166
166
|
def update_position(self):
|
|
167
167
|
"""Update position given known speed."""
|
|
168
|
-
self.s.update_position(self.s.buffer_speed)
|
|
168
|
+
self.s.update_position(maxvel=self.s.buffer_speed)
|
|
169
169
|
|
|
170
170
|
def get_shapely_args(self):
|
|
171
171
|
return (self.s.x, self.s.y)
|
|
@@ -48,7 +48,7 @@ class StochasticPumpTests(unittest.TestCase, CommonTests):
|
|
|
48
48
|
49.32124529702974,
|
|
49
49
|
0.31327201999190035,
|
|
50
50
|
21.386958080811567,
|
|
51
|
-
3.
|
|
51
|
+
3.331196298953918,
|
|
52
52
|
9.066120598345039,
|
|
53
53
|
131.79987407014573,
|
|
54
54
|
5.81402243889764,
|
|
@@ -277,7 +277,7 @@ class StochasticPumpTests(unittest.TestCase, CommonTests):
|
|
|
277
277
|
|
|
278
278
|
if __name__ == '__main__':
|
|
279
279
|
# suite = unittest.TestSuite()
|
|
280
|
-
# suite.addTest(StochasticPumpTests("
|
|
280
|
+
# suite.addTest(StochasticPumpTests("test_stochastic_pdf"))
|
|
281
281
|
# suite.addTest(StochasticPumpTests("test_save_load_nominalapproach_indiv"))
|
|
282
282
|
# runner = unittest.TextTestRunner()
|
|
283
283
|
# runner.run(suite)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmdtools
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.5
|
|
4
4
|
Summary: System resilience modelling, simulation, and assessment in Python
|
|
5
5
|
Author: fmdtools Developers
|
|
6
6
|
Maintainer-email: Daniel Hulse <daniel.e.hulse@nasa.gov>
|
|
7
|
-
License: fmdtools version 2.5.
|
|
7
|
+
License: fmdtools version 2.5.5
|
|
8
8
|
---------------------------
|
|
9
9
|
Apache License
|
|
10
10
|
Version 2.0, January 2004
|
|
@@ -394,7 +394,7 @@ More guidance on development installations is provided in [How to Contribute](ht
|
|
|
394
394
|
Note that this version reflects the latest version on the ``main`` git branch along with any local changes. To use a particular version of ``fmdtools`` in the context of a development install you can checkout the tag corresponding to the version you want, e.g.:
|
|
395
395
|
|
|
396
396
|
```
|
|
397
|
-
git checkout v2.5.
|
|
397
|
+
git checkout v2.5.5
|
|
398
398
|
```
|
|
399
399
|
|
|
400
400
|
|
|
@@ -500,9 +500,9 @@ Decent (but **very imperfect**) results can be achieved using LLMs for model dev
|
|
|
500
500
|
|
|
501
501
|
```prompt
|
|
502
502
|
You are an experienced software engineer learning a new Python library for the first time.
|
|
503
|
-
Make an fmdtools simulation of a <enter your system here> using the latest syntax from `https://github.com/nasa/fmdtools/tree/v2.5.
|
|
503
|
+
Make an fmdtools simulation of a <enter your system here> using the latest syntax from `https://github.com/nasa/fmdtools/tree/v2.5.5` for all modeling (`fmdtools.define`), simulation (`fmdtools.sim`), and analysis (`fmdtools.analyze`) classes.
|
|
504
504
|
The output should be a bare bones but well-commented .py file with simple behaviors for each class and a small script at the bottom leveraging the built-in capabilities in the `fmdtools.analyze` package instead of directly using external libraries like matplotlib.
|
|
505
|
-
As you are going, explain the structure of each class, the usage of each function call and how they each leverage the correct fmdtools v2.5.
|
|
505
|
+
As you are going, explain the structure of each class, the usage of each function call and how they each leverage the correct fmdtools v2.5.5 syntax.
|
|
506
506
|
```
|
|
507
507
|
|
|
508
508
|
The important aspects of this prompt are specifying the URL and version--otherwise the LLM is likely to hallucinate usage or recall an earlier version of fmdtools. Do not expect perfect output from this--you may have to spend some time identifying the problems so they can be fixed!
|
|
@@ -548,8 +548,8 @@ To cite a particular version of the fmdtools, you may use:
|
|
|
548
548
|
author = {{NASA}},
|
|
549
549
|
title = {fmdtools},
|
|
550
550
|
url = {https://github.com/nasa/fmdtools},
|
|
551
|
-
version = {2.5.
|
|
552
|
-
date = {2026-
|
|
551
|
+
version = {2.5.5},
|
|
552
|
+
date = {2026-10-08},
|
|
553
553
|
}
|
|
554
554
|
```
|
|
555
555
|
|
|
@@ -127,49 +127,143 @@ src/fmdtools/sim/scenario.py
|
|
|
127
127
|
src/fmdtools/sim/search.py
|
|
128
128
|
tests/__init__.py
|
|
129
129
|
tests/common.py
|
|
130
|
+
tests/test_appended_history_snapshots.py
|
|
131
|
+
tests/test_approach_joint_domains.py
|
|
132
|
+
tests/test_approach_model_timestep.py
|
|
133
|
+
tests/test_approach_phase_map_ownership.py
|
|
134
|
+
tests/test_architecture_vector_inputs.py
|
|
130
135
|
tests/test_array_differences.py
|
|
131
136
|
tests/test_array_random_states.py
|
|
132
137
|
tests/test_array_result_equality.py
|
|
138
|
+
tests/test_array_state_limits.py
|
|
139
|
+
tests/test_array_state_rounding.py
|
|
140
|
+
tests/test_binomial_trial_counts.py
|
|
133
141
|
tests/test_bootstrap_statistic_arguments.py
|
|
142
|
+
tests/test_bounded_array_increments.py
|
|
134
143
|
tests/test_calc_metric_ci_constant_outputs.py
|
|
144
|
+
tests/test_callable_parameter_domains.py
|
|
145
|
+
tests/test_choice_draw_mass.py
|
|
146
|
+
tests/test_choice_probability_precision.py
|
|
147
|
+
tests/test_common.py
|
|
148
|
+
tests/test_comparison_ci_metrics.py
|
|
135
149
|
tests/test_comparison_groups.py
|
|
136
150
|
tests/test_confidence_history_clipping.py
|
|
151
|
+
tests/test_coordinate_cell_boundaries.py
|
|
152
|
+
tests/test_default_fault_sample_timestep.py
|
|
153
|
+
tests/test_degradation_path_boundaries.py
|
|
154
|
+
tests/test_dirichlet_batches.py
|
|
155
|
+
tests/test_disconnected_graph_robustness.py
|
|
156
|
+
tests/test_discrete_grid_values.py
|
|
157
|
+
tests/test_discrete_sample_sizes.py
|
|
137
158
|
tests/test_error_history_plots.py
|
|
159
|
+
tests/test_even_sampling_mass.py
|
|
138
160
|
tests/test_exact_nominal_expectation.py
|
|
161
|
+
tests/test_expectation_without_nominal.py
|
|
162
|
+
tests/test_explicit_history_times.py
|
|
139
163
|
tests/test_explicit_result_file_formats.py
|
|
140
164
|
tests/test_exponential_rayleigh_draw_sizes.py
|
|
165
|
+
tests/test_factor_sort_priority.py
|
|
166
|
+
tests/test_fault_history_paths.py
|
|
167
|
+
tests/test_fault_object_overrides.py
|
|
141
168
|
tests/test_fault_sample_without_nominal.py
|
|
169
|
+
tests/test_fault_space_ownership.py
|
|
170
|
+
tests/test_fault_space_sample_limits.py
|
|
171
|
+
tests/test_fault_summary_paths.py
|
|
142
172
|
tests/test_fault_time_without_traces.py
|
|
173
|
+
tests/test_fault_weight_arrays.py
|
|
174
|
+
tests/test_faulty_scenario_selection.py
|
|
175
|
+
tests/test_fmea_input_ownership.py
|
|
143
176
|
tests/test_gamma_sampling_density.py
|
|
177
|
+
tests/test_generated_history_phase_timestep.py
|
|
144
178
|
tests/test_geom.py
|
|
145
179
|
tests/test_graph.py
|
|
180
|
+
tests/test_graph_edge_comparison.py
|
|
181
|
+
tests/test_graph_zero_seed.py
|
|
146
182
|
tests/test_hierarchical.py
|
|
183
|
+
tests/test_history_alignment_ownership.py
|
|
147
184
|
tests/test_history_phase_identifiers.py
|
|
185
|
+
tests/test_history_sample_indices.py
|
|
148
186
|
tests/test_history_standard_deviation.py
|
|
187
|
+
tests/test_hypergeometric_count_conversion.py
|
|
188
|
+
tests/test_immutable_fault_injection.py
|
|
189
|
+
tests/test_implicit_sampling_start.py
|
|
149
190
|
tests/test_independent_single_replicate_seeds.py
|
|
150
191
|
tests/test_individual_result_paths.py
|
|
192
|
+
tests/test_integer_bound_conversion.py
|
|
151
193
|
tests/test_integer_draw_mass.py
|
|
194
|
+
tests/test_integer_history_differences.py
|
|
195
|
+
tests/test_integer_rate_metrics.py
|
|
196
|
+
tests/test_join_phase_timestep.py
|
|
152
197
|
tests/test_join_phasemaps.py
|
|
198
|
+
tests/test_joint_fault_metadata_order.py
|
|
199
|
+
tests/test_joint_fault_phase_map.py
|
|
153
200
|
tests/test_joint_fault_weights.py
|
|
201
|
+
tests/test_joint_scenario_quadrature.py
|
|
154
202
|
tests/test_json_result_arrays.py
|
|
203
|
+
tests/test_location_scale_draw_sizes.py
|
|
204
|
+
tests/test_lognormal_defaults.py
|
|
205
|
+
tests/test_metric_weight_alignment.py
|
|
206
|
+
tests/test_mixed_shape_degradation.py
|
|
207
|
+
tests/test_multidimensional_state_comparison.py
|
|
208
|
+
tests/test_multinomial_sampling_arguments.py
|
|
209
|
+
tests/test_multivariate_hypergeometric_options.py
|
|
210
|
+
tests/test_multivariate_normal_arguments.py
|
|
211
|
+
tests/test_named_default_restoration.py
|
|
155
212
|
tests/test_named_metric_rounding.py
|
|
213
|
+
tests/test_named_parameter_maps.py
|
|
214
|
+
tests/test_nearest_point_exclusion.py
|
|
215
|
+
tests/test_nested_comparison_inputs.py
|
|
216
|
+
tests/test_nested_comparison_parentage.py
|
|
217
|
+
tests/test_nested_history_summary.py
|
|
156
218
|
tests/test_nested_nominal_groups.py
|
|
219
|
+
tests/test_nested_parameter_constraints.py
|
|
220
|
+
tests/test_nested_sample_metrics.py
|
|
221
|
+
tests/test_nested_scenario_parameters.py
|
|
157
222
|
tests/test_nesting_custom_separators.py
|
|
223
|
+
tests/test_not_equal_constraints.py
|
|
224
|
+
tests/test_object_history_copy.py
|
|
225
|
+
tests/test_offset_time_grids.py
|
|
158
226
|
tests/test_packages.py
|
|
227
|
+
tests/test_parameter_grid_bounds.py
|
|
228
|
+
tests/test_parameter_sample_defaults.py
|
|
159
229
|
tests/test_parameter_sample_seeds.py
|
|
160
230
|
tests/test_parameter_subsampling_types.py
|
|
161
231
|
tests/test_pareto_density.py
|
|
162
232
|
tests/test_pathplan.py
|
|
233
|
+
tests/test_permutation_axis_probabilities.py
|
|
234
|
+
tests/test_permuted_nan_probabilities.py
|
|
235
|
+
tests/test_permuted_slice_probabilities.py
|
|
236
|
+
tests/test_phase_map_default_isolation.py
|
|
163
237
|
tests/test_phase_timestep.py
|
|
164
238
|
tests/test_pruned_fault_times.py
|
|
239
|
+
tests/test_ragged_confidence_histories.py
|
|
240
|
+
tests/test_rand.py
|
|
241
|
+
tests/test_random_combination_types.py
|
|
242
|
+
tests/test_reference_risk_calculations.py
|
|
165
243
|
tests/test_result.py
|
|
244
|
+
tests/test_result_constructor_input.py
|
|
166
245
|
tests/test_result_folder_selection.py
|
|
167
246
|
tests/test_sample.py
|
|
168
247
|
tests/test_scenario.py
|
|
169
248
|
tests/test_scenario_defaults.py
|
|
249
|
+
tests/test_scenario_metric_mappings.py
|
|
250
|
+
tests/test_shape_distribution_sizes.py
|
|
251
|
+
tests/test_simple_problem_vector_inputs.py
|
|
252
|
+
tests/test_simulation_exposure.py
|
|
253
|
+
tests/test_standard_draw_arguments.py
|
|
170
254
|
tests/test_standard_t_density.py
|
|
255
|
+
tests/test_string_state_histories.py
|
|
171
256
|
tests/test_table_factor_indices.py
|
|
172
257
|
tests/test_time.py
|
|
258
|
+
tests/test_time_reset.py
|
|
259
|
+
tests/test_triangular_arraylike_parameters.py
|
|
260
|
+
tests/test_tuple_table_factors.py
|
|
261
|
+
tests/test_uniform_bound_dtypes.py
|
|
173
262
|
tests/test_uniform_density.py
|
|
174
263
|
tests/test_unit_random_density.py
|
|
175
|
-
tests/test_vonmises_density.py
|
|
264
|
+
tests/test_vonmises_density.py
|
|
265
|
+
tests/test_wald_density.py
|
|
266
|
+
tests/test_weighted_percent_metrics.py
|
|
267
|
+
tests/test_zero_fault_start_times.py
|
|
268
|
+
tests/test_zero_time_objectives.py
|
|
269
|
+
tests/test_zero_timer_increment.py
|
|
@@ -18,7 +18,7 @@ classifiers = [
|
|
|
18
18
|
description = "System resilience modelling, simulation, and assessment in Python"
|
|
19
19
|
license = {file="LICENSE"}
|
|
20
20
|
name = "fmdtools"
|
|
21
|
-
version="2.5.
|
|
21
|
+
version="2.5.5"
|
|
22
22
|
readme = "README.md"
|
|
23
23
|
requires-python = ">=3.12"
|
|
24
24
|
|
|
@@ -109,3 +109,81 @@ omit = [
|
|
|
109
109
|
"*/Temp/*"
|
|
110
110
|
]
|
|
111
111
|
|
|
112
|
+
[tool.bumpversion]
|
|
113
|
+
current_version = "2.5.5"
|
|
114
|
+
parse = """(?x)
|
|
115
|
+
(?P<major>0|[1-9]\\d*)\\.
|
|
116
|
+
(?P<minor>0|[1-9]\\d*)\\.
|
|
117
|
+
(?P<patch>0|[1-9]\\d*)
|
|
118
|
+
(?:
|
|
119
|
+
. # dot for pre-release section
|
|
120
|
+
(?P<stage>[a-zA-Z-]+) # pre-release label
|
|
121
|
+
(?P<num>0|[1-9]\\d*) # pre-release version number
|
|
122
|
+
)? # pre-release section is optional
|
|
123
|
+
"""
|
|
124
|
+
serialize = [
|
|
125
|
+
"{major}.{minor}.{patch}.{stage}{num}",
|
|
126
|
+
"{major}.{minor}.{patch}",
|
|
127
|
+
]
|
|
128
|
+
search = "{current_version}"
|
|
129
|
+
replace = "{new_version}"
|
|
130
|
+
regex = false
|
|
131
|
+
ignore_missing_version = false
|
|
132
|
+
tag = true
|
|
133
|
+
sign_tags = true
|
|
134
|
+
tag_name = "v{new_version}"
|
|
135
|
+
tag_message = "Bump version: {current_version} → {new_version}"
|
|
136
|
+
allow_dirty = false
|
|
137
|
+
commit = true
|
|
138
|
+
message = "Bump version: {current_version} → {new_version}"
|
|
139
|
+
commit_args = ""
|
|
140
|
+
|
|
141
|
+
[tool.bumpversion.parts.stage]
|
|
142
|
+
values = ["dev", "rc", "final"]
|
|
143
|
+
optional_value = "final"
|
|
144
|
+
|
|
145
|
+
[[tool.bumpversion.files]]
|
|
146
|
+
filename = "src/fmdtools/__init__.py"
|
|
147
|
+
search = "__version__ = '{current_version}'"
|
|
148
|
+
replace = "__version__ = '{new_version}'"
|
|
149
|
+
|
|
150
|
+
[[tool.bumpversion.files]]
|
|
151
|
+
filename = "conf.py"
|
|
152
|
+
search = "release = '{current_version}'"
|
|
153
|
+
replace = "release = '{new_version}'"
|
|
154
|
+
|
|
155
|
+
[[tool.bumpversion.files]]
|
|
156
|
+
filename = "LICENSE"
|
|
157
|
+
search = "fmdtools version {current_version}"
|
|
158
|
+
replace = "fmdtools version {new_version}"
|
|
159
|
+
|
|
160
|
+
[[tool.bumpversion.files]]
|
|
161
|
+
filename = "README.md"
|
|
162
|
+
search = "git checkout v{current_version}"
|
|
163
|
+
replace = "git checkout v{new_version}"
|
|
164
|
+
|
|
165
|
+
[[tool.bumpversion.files]]
|
|
166
|
+
filename = "README.md"
|
|
167
|
+
search = "https://github.com/nasa/fmdtools/tree/v{current_version}"
|
|
168
|
+
replace = "https://github.com/nasa/fmdtools/tree/v{new_version}"
|
|
169
|
+
|
|
170
|
+
[[tool.bumpversion.files]]
|
|
171
|
+
filename = "README.md"
|
|
172
|
+
search = "fmdtools v{current_version}"
|
|
173
|
+
replace = "fmdtools v{new_version}"
|
|
174
|
+
|
|
175
|
+
[[tool.bumpversion.files]]
|
|
176
|
+
filename = "README.md"
|
|
177
|
+
search = "version = {{{current_version}}}"
|
|
178
|
+
replace = "version = {{{new_version}}}"
|
|
179
|
+
|
|
180
|
+
[[tool.bumpversion.files]]
|
|
181
|
+
filename = "README.md"
|
|
182
|
+
search = "date = {{\\d{{4}}-\\d{{2}}-\\d{{2}}}}"
|
|
183
|
+
replace = "date = {{{now:%Y-%m-%d}}}"
|
|
184
|
+
regex = true
|
|
185
|
+
|
|
186
|
+
[[tool.bumpversion.files]]
|
|
187
|
+
filename = "docs-source/Intro_to_fmdtools.md"
|
|
188
|
+
search = "fmdtools v{current_version}"
|
|
189
|
+
replace = "fmdtools v{new_version}"
|