repyability 0.12__tar.gz → 0.13__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.
- {repyability-0.12/repyability.egg-info → repyability-0.13}/PKG-INFO +21 -12
- {repyability-0.12 → repyability-0.13}/README.md +19 -10
- {repyability-0.12 → repyability-0.13}/pyproject.toml +9 -7
- {repyability-0.12 → repyability-0.13}/repyability/__init__.py +39 -4
- {repyability-0.12 → repyability-0.13}/repyability/_version.py +1 -1
- {repyability-0.12 → repyability-0.13}/repyability/fault_tree.py +168 -95
- {repyability-0.12 → repyability-0.13}/repyability/network.py +44 -24
- {repyability-0.12 → repyability-0.13}/repyability/non_repairable.py +50 -14
- repyability-0.13/repyability/rbd/_bdd_kernel.py +183 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_ccf_chain.py +428 -83
- repyability-0.13/repyability/rbd/_ccf_modules.py +1123 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_chain_transient.py +10 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_compiled.py +100 -82
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_conditional.py +74 -24
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_dependent_lifetimes.py +5 -4
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_hidden_tests.py +43 -14
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_importance_time.py +41 -48
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_kernel.py +609 -1226
- repyability-0.13/repyability/rbd/_mean_lifetime.py +327 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_model_utils.py +17 -33
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_montecarlo.py +16 -35
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_ordered_bdd.py +6 -0
- repyability-0.13/repyability/rbd/_philox.py +67 -0
- repyability-0.13/repyability/rbd/_philox_kernel.py +44 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_point_availability.py +239 -33
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_quadrature.py +1 -1
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_rates.py +16 -2
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_repairable_uncertainty.py +190 -64
- repyability-0.13/repyability/rbd/_sampling.py +288 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_sensitivity.py +323 -34
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_streams.py +67 -44
- repyability-0.13/repyability/rbd/_timeline_runs.py +399 -0
- repyability-0.13/repyability/rbd/bdd.py +720 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/capacity.py +10 -2
- {repyability-0.12 → repyability-0.13}/repyability/rbd/ccf.py +168 -39
- {repyability-0.12 → repyability-0.13}/repyability/rbd/chunks.py +2 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/degrading_node.py +27 -8
- {repyability-0.12 → repyability-0.13}/repyability/rbd/engines.py +5 -3
- {repyability-0.12 → repyability-0.13}/repyability/rbd/helper_classes.py +37 -6
- {repyability-0.12 → repyability-0.13}/repyability/rbd/load_sharing_node.py +33 -31
- {repyability-0.12 → repyability-0.13}/repyability/rbd/modular.py +87 -93
- {repyability-0.12 → repyability-0.13}/repyability/rbd/non_repairable_rbd.py +630 -215
- {repyability-0.12 → repyability-0.13}/repyability/rbd/phased_mission.py +2 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/rare_event.py +5 -2
- {repyability-0.12 → repyability-0.13}/repyability/rbd/rbd.py +189 -35
- {repyability-0.12 → repyability-0.13}/repyability/rbd/repairable_rbd.py +2566 -911
- {repyability-0.12 → repyability-0.13}/repyability/rbd/repeated_node.py +6 -2
- {repyability-0.12 → repyability-0.13}/repyability/rbd/results.py +588 -172
- {repyability-0.12 → repyability-0.13}/repyability/rbd/routes.py +17 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/serialisation.py +16 -14
- {repyability-0.12 → repyability-0.13}/repyability/rbd/shannon.py +147 -39
- {repyability-0.12 → repyability-0.13}/repyability/rbd/standby_node.py +78 -34
- {repyability-0.12 → repyability-0.13}/repyability/rbd/uncertainty.py +24 -1
- {repyability-0.12 → repyability-0.13}/repyability/repairable.py +5 -3
- repyability-0.13/repyability/tests/_bdd_cases.py +239 -0
- repyability-0.13/repyability/tests/bdd_records.json +30363 -0
- repyability-0.13/repyability/tests/catalogue.py +600 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/keyed_draws.py +18 -14
- repyability-0.13/repyability/tests/seeded_event_loop.json +763 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_analysis_routes.py +185 -391
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_api_consistency.py +9 -7
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_availability_allocation.py +1 -4
- repyability-0.13/repyability/tests/test_bdd_records.py +102 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_block_replacement.py +1 -2
- repyability-0.13/repyability/tests/test_call_forms.py +158 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_capacity.py +25 -7
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_capacity_over_time.py +3 -3
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_capacity_simulation.py +2 -2
- repyability-0.13/repyability/tests/test_catalogue.py +419 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_ccf_lifetime.py +7 -3
- repyability-0.13/repyability/tests/test_ccf_modules.py +319 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_ccf_over_time.py +36 -18
- repyability-0.13/repyability/tests/test_ccf_repairable_modules.py +487 -0
- repyability-0.13/repyability/tests/test_ccf_timed.py +225 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_chains_over_time.py +2 -2
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_condition_over_time.py +1 -1
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_condition_replacement.py +11 -8
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_conditional.py +100 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_control_variate.py +10 -6
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_demonstration.py +3 -7
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_dependent_lifetimes.py +1 -2
- repyability-0.13/repyability/tests/test_discounting.py +250 -0
- repyability-0.13/repyability/tests/test_docs_examples.py +253 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_engine_plugins.py +0 -2
- repyability-0.13/repyability/tests/test_evaluation_costs.py +347 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_exact_mttf.py +2 -3
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_expected_window.py +8 -8
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_fault_tree.py +21 -16
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_fitted_models_in_parallel.py +5 -12
- repyability-0.13/repyability/tests/test_help.py +53 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_hidden_failures_timed.py +32 -5
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_inspection_offsets.py +66 -15
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_intervals_with_crews.py +6 -4
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_junctions.py +22 -1
- repyability-0.13/repyability/tests/test_levers.py +364 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_limited_failure_population.py +22 -29
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_load_sharing.py +4 -1
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_maintenance_intervals.py +55 -1
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_meshed_structures.py +1 -1
- repyability-0.13/repyability/tests/test_messages.py +375 -0
- repyability-0.13/repyability/tests/test_mixture_lives.py +207 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_monte_carlo.py +100 -34
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_non_repairable.py +3 -4
- repyability-0.13/repyability/tests/test_one_expected_value.py +184 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_performance_equivalence.py +36 -7
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_point_availability.py +58 -7
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_preventive_maintenance.py +1 -1
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_quadrature.py +7 -7
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rates.py +69 -5
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_imperfect_repair.py +1 -2
- repyability-0.13/repyability/tests/test_refused_inputs.py +281 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_removed_in_0_12.py +7 -22
- repyability-0.13/repyability/tests/test_removed_in_0_13.py +52 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repair_crews.py +3 -1
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_cost.py +10 -5
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_rbd.py +1 -1
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_standby.py +5 -3
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_uncertainty.py +7 -1
- repyability-0.13/repyability/tests/test_result_objects.py +233 -0
- repyability-0.13/repyability/tests/test_safety_edges.py +131 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_serialisation.py +1 -2
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_shards.py +1 -1
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_simulation_chunks.py +71 -1
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_simulation_engines.py +55 -62
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_small_probabilities.py +1 -2
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_spares.py +10 -5
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_staggered_and_partial_tests.py +25 -6
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_start_from_state.py +11 -6
- repyability-0.13/repyability/tests/test_streams.py +79 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_structure_messages.py +81 -0
- repyability-0.13/repyability/tests/test_threads.py +130 -0
- repyability-0.13/repyability/tests/test_time_order.py +178 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_timelines.py +20 -61
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_total_cost.py +21 -1
- repyability-0.13/repyability/tests/test_unavailability.py +130 -0
- repyability-0.13/repyability/tests/test_uncertainty_arrays.py +113 -0
- repyability-0.13/repyability/tests/test_uncertainty_sharing.py +115 -0
- {repyability-0.12 → repyability-0.13}/repyability/timelines.py +123 -41
- repyability-0.13/repyability/utils/checks.py +167 -0
- repyability-0.13/repyability/utils/deprecation.py +190 -0
- repyability-0.13/repyability/utils/docs.py +48 -0
- repyability-0.13/repyability/utils/wrappers.py +161 -0
- {repyability-0.12 → repyability-0.13/repyability.egg-info}/PKG-INFO +21 -12
- {repyability-0.12 → repyability-0.13}/repyability.egg-info/SOURCES.txt +28 -2
- {repyability-0.12 → repyability-0.13}/repyability.egg-info/requires.txt +1 -1
- repyability-0.12/repyability/rbd/_bdd_kernel.py +0 -529
- repyability-0.12/repyability/rbd/_mean_lifetime.py +0 -211
- repyability-0.12/repyability/rbd/_sampling.py +0 -122
- repyability-0.12/repyability/rbd/_time_order.py +0 -287
- repyability-0.12/repyability/rbd/_timeline_runs.py +0 -772
- repyability-0.12/repyability/rbd/bdd.py +0 -587
- repyability-0.12/repyability/tests/seeded_event_loop.json +0 -763
- repyability-0.12/repyability/tests/test_bdd_compiled.py +0 -247
- repyability-0.12/repyability/tests/test_discounting.py +0 -95
- repyability-0.12/repyability/tests/test_docs_examples.py +0 -96
- repyability-0.12/repyability/tests/test_time_order.py +0 -226
- repyability-0.12/repyability/utils/checks.py +0 -60
- repyability-0.12/repyability/utils/deprecation.py +0 -74
- repyability-0.12/repyability/utils/wrappers.py +0 -87
- {repyability-0.12 → repyability-0.13}/LICENSE +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/demonstration.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/maintenance.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/py.typed +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/__init__.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_block_replacement.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_condition_replacement.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_crew_chain.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_differential.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_exact.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_hidden_life.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_spares.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/_standby_chain.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/min_path_sets.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/node_state.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/numerical_convolution.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/rbd_graph.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/redundancy_allocation.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/regression_node.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/repeated_standby_node.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/rbd/shards.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/__init__.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/conftest.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/repository.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_allocation_trains.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_api_docstrings.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_api_standardisation.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_bdd_core.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_bx_life.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_ccf.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_ccf_allocations.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_ccf_analyses.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_condition_based.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_condition_long_run.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_crew_chain.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_curve_points.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_demonstration_plans.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_differential_importance.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_fussell_vesely_exact.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_greeks.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_helper_classes.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_hidden_failures_any_life.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_imperfect_repair.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_importance_over_time.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_input_checks.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_inspection.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_joint_importance.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_model_utils.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_network.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_opportunistic_maintenance.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_packaging.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_papercuts.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_parameter_sensitivity.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_phased_mission.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rare_event.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_allocation.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_analytic_solvability.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_berge_cut_sets.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_exact_probability.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_exponential_standby.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_get_min_cut_sets.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_get_min_path_sets.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_hazard.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_importances.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_koon.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_misc.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_modular.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_non_repairable.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_numerical_convolution.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_repeated_standby.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_set_working_failed.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_sf.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_structure.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_switching_probability.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_redundancy_allocation.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_redundancy_front.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_redundancy_options.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_redundancy_strategies.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_regression_node.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_reliability_redundancy.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_accounting.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_ccf.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_metrics.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_sensitivity.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repeated_node.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_repeated_nodes.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_results.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_rng_reproducibility.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_simulation_validation.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_spares_block_and_tested.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_standby.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_startup.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_structural_importance.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_uncertainty.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_uncertainty_importance.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/tests/test_warm_standby.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/utils/json_io.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability/utils/vectors.py +0 -0
- {repyability-0.12 → repyability-0.13}/repyability.egg-info/dependency_links.txt +0 -0
- {repyability-0.12 → repyability-0.13}/repyability.egg-info/top_level.txt +0 -0
- {repyability-0.12 → repyability-0.13}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: repyability
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.13
|
|
4
4
|
Summary: Reliability engineering tools for Python
|
|
5
5
|
Author-email: derrynknife <derrynknife@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -26,7 +26,7 @@ License-File: LICENSE
|
|
|
26
26
|
Requires-Dist: numpy<3,>=2.0
|
|
27
27
|
Requires-Dist: scipy>=1.13
|
|
28
28
|
Requires-Dist: networkx>=3.0
|
|
29
|
-
Requires-Dist: surpyval>=0.
|
|
29
|
+
Requires-Dist: surpyval>=0.23
|
|
30
30
|
Requires-Dist: tqdm>=4.64
|
|
31
31
|
Provides-Extra: fast
|
|
32
32
|
Requires-Dist: numba>=0.60; extra == "fast"
|
|
@@ -60,8 +60,8 @@ taking already-fitted lifetime models (from
|
|
|
60
60
|
`sf`/`ff`) as its components:
|
|
61
61
|
|
|
62
62
|
- **Fault trees**: static fault trees (OR, AND and VOTE gates, repeated
|
|
63
|
-
events) evaluated exactly, with cut sets, importance
|
|
64
|
-
conversion to and from block diagrams.
|
|
63
|
+
events) evaluated exactly, with common-cause groups, cut sets, importance
|
|
64
|
+
measures and conversion to and from block diagrams.
|
|
65
65
|
- **Reliability**: exact system reliability, hazard and conditional survival;
|
|
66
66
|
the exact MTTF (or simulated, with confidence intervals); B*X* life;
|
|
67
67
|
uncertainty intervals on the reliability, MTTF, B*X* life and time to a
|
|
@@ -73,7 +73,8 @@ taking already-fitted lifetime models (from
|
|
|
73
73
|
landing), each with its own diagram over the same components: the exact
|
|
74
74
|
mission reliability and the chance of failing in each phase.
|
|
75
75
|
- **Testing**: demonstration test plans (the units, or the test time, that
|
|
76
|
-
demonstrate a reliability or an MTBF),
|
|
76
|
+
demonstrate a reliability or an MTBF), plans that keep both the
|
|
77
|
+
producer's and the consumer's risk, what a test demonstrated, and the
|
|
77
78
|
chance a design passes.
|
|
78
79
|
- **Importance**: Birnbaum, improvement potential, RAW, RRW, criticality,
|
|
79
80
|
Fussell–Vesely, structural importance and parameter sensitivity, on
|
|
@@ -88,9 +89,12 @@ taking already-fitted lifetime models (from
|
|
|
88
89
|
- **Live state**: reliability, remaining life and importance given each
|
|
89
90
|
component's current age, and covariate-dependent components.
|
|
90
91
|
- **Redundancy and dependence**: cold, warm and hot standby; repeated nodes;
|
|
91
|
-
load sharing; beta-factor and
|
|
92
|
+
load sharing; junctions (a vote point that never fails); beta-factor and
|
|
93
|
+
MGL common-cause groups, splitting a probability or a failure rate, in
|
|
94
|
+
block diagrams, repairable systems and fault trees.
|
|
92
95
|
- **Repairable systems**: exact long-run availability, failure frequency and
|
|
93
|
-
MUT/MDT/MTBF; exact availability over time and over a mission
|
|
96
|
+
MUT/MDT/MTBF; exact availability over time and over a mission, and the
|
|
97
|
+
unavailability to its own precision (a PFD of 1e-17); simulated
|
|
94
98
|
histories with criticality measures; shared repair crews, exact for
|
|
95
99
|
exponential components in the long run and numerical over time, with
|
|
96
100
|
their importance; repairable standby groups (a duty unit and its spares,
|
|
@@ -104,7 +108,8 @@ taking already-fitted lifetime models (from
|
|
|
104
108
|
probability of meeting a demand, and the production availability.
|
|
105
109
|
- **Spares**: how many spares each component uses over a horizon, for a
|
|
106
110
|
system or a fleet, and the stock that meets a fill rate or a stock-out
|
|
107
|
-
target for a replenishment lead time
|
|
111
|
+
target for a replenishment lead time, with interchangeable components'
|
|
112
|
+
spares pooled on one shelf.
|
|
108
113
|
- **Timelines**: up/down histories, from outage logs or simulated, with
|
|
109
114
|
their measures (time up, failures and who caused them, first failure);
|
|
110
115
|
merged as a diagram's structure, so a system's history follows from its
|
|
@@ -122,11 +127,15 @@ taking already-fitted lifetime models (from
|
|
|
122
127
|
maintenance of grouped components at each other's stops,
|
|
123
128
|
with its intervals chosen for a cost or availability target, hidden
|
|
124
129
|
failures found by periodic inspection, with the test intervals chosen for a
|
|
125
|
-
PFDavg target, the total cost of ownership,
|
|
126
|
-
|
|
130
|
+
PFDavg target, the total cost of ownership, discounted to a present
|
|
131
|
+
value from new or in the long run, optimal redundancy allocation (for the
|
|
132
|
+
lowest total cost of a repairable system, too, with whole trains given
|
|
133
|
+
copies together), reliability
|
|
127
134
|
allocation by the classic named methods (equal and ARINC-style
|
|
128
135
|
apportionment, minimum effort, cost-based), availability allocation to
|
|
129
136
|
MTTF and MTTR targets, and age-replacement and overhaul policies.
|
|
137
|
+
- **Saving**: diagrams to and from JSON, seeded results that repeat, and
|
|
138
|
+
every result as plain data (`to_dict()`, ready for `json.dumps`).
|
|
130
139
|
|
|
131
140
|
```python
|
|
132
141
|
import surpyval as surv
|
|
@@ -203,7 +212,7 @@ places, nested diagrams):
|
|
|
203
212
|
|---|---|---|
|
|
204
213
|
| **What you ask** | | |
|
|
205
214
|
| Sampled lifetimes or histories, and distributions or percentiles of an outcome over a window | Simulated (from new, or from the components' current states); each simulation's histories, the system's and its components', kept whole as timelines by `simulate_timelines` (from new) | Yes: the answer is a sample. Its mean over a window (failures, outages, downtime, cost, the capacity delivered) is exact, from new or from a state: `expected_events`, `expected_cost`, `mission_capacity`. |
|
|
206
|
-
| Comparing two designs (`compare`) |
|
|
215
|
+
| Comparing two designs (`compare`) | Exact where both designs' expected values are (their MTTFs; a repairable system's mission availability and expected cost), with no simulation (#236); otherwise, or on request (`method="simulate"`, `control_variate=False`), simulated with common random numbers | Only where a design's own values are simulated. |
|
|
207
216
|
| The uncertainty from fitted component parameters (`sf_uncertainty`, `mean_uncertainty`, `bx_life_uncertainty`, `time_to_reliability_uncertainty`; for a repairable system `mean_availability_uncertainty`, `point_availability_uncertainty`, `mission_availability_uncertainty`, `expected_cost_rate_uncertainty`) | Sampled over the parameters, randomly or quasi-randomly (`sampling="sobol"`), each draw exact or numerical as the diagram's own value is | Sampling is the method. |
|
|
208
217
|
| Small failure probabilities, with a node only simulations take | Rare-event simulation (`unreliability_interval`); `ff` refused | Only while the node has no reliability of its own: an exact diagram gives `ff` directly, to full precision however small (a numerical node, such as a cold-standby group of non-exponential units, to its own accuracy, about 1e-6). |
|
|
209
218
|
| **Components** | | |
|
|
@@ -214,7 +223,7 @@ places, nested diagrams):
|
|
|
214
223
|
| **Architecture and maintenance** | | |
|
|
215
224
|
| Phased missions and networks too large for their decision diagrams | Refused, pointing to `method="simulate"` | Only in practice: the diagrams grow with the phases' and the network's width rather than their paths, so meshed missions and networks are exact (a network grid of 100 nodes in a second and a half); one of 121 nodes passes the limit, `repyability.network.MAX_STATES`, which can be raised. |
|
|
216
225
|
| Block diagrams too meshed for their decision diagrams | Simulated (lifetimes, availability, cost and timelines, in Python); the exact and numerical analyses refused | Only in practice: the diagram grows with how wide the mesh is rather than with its paths, so most meshes are exact (a 10 × 10 grid in 0.04 seconds, a random mesh of 60 nodes and 345 links in 2); one of 70 nodes and 485 links passes the limit, `repyability.rbd.bdd.STEP_LIMIT`, which can be raised. |
|
|
217
|
-
| Common-cause groups in a repairable diagram | For exponential lives, tested or repaired: the long run, importance and the allocations exact (a beta-factor member's copies join its group, and the availability allocations keep the members' availability), the values over time from new numerical (the groups' Markov chains), and the simulations draw the shared causes, in Python. Members of other lives refused, and members held or started from a current state | Other lives: a shared cause has no one rate for members of different ages, so they need a model first. From a current state, no: the chains and the simulations could start from the members' states. |
|
|
226
|
+
| Common-cause groups in a repairable diagram | For exponential lives, tested or repaired: the long run, importance and the allocations exact (a beta-factor member's copies join its group, and the availability allocations keep the members' availability), and numerical where the members' tests and repairs take a fixed or an exponential time (#220); the values over time from new numerical (the groups' Markov chains), and the simulations draw the shared causes, in Python. Members of other lives refused, as are tests and repairs of other lengths, copies of members whose tests or repairs take time, the failure frequency where their tests do, and members held or started from a current state | Other lives: a shared cause has no one rate for members of different ages, so they need a model first. Tests and repairs of other lengths, no: the chain could follow them on a grid, as a single component's model does. From a current state, no: the chains and the simulations could start from the members' states. |
|
|
218
227
|
| Shared repair crews | For exponential lives and repairs, the long run and importance exact, and the values over time numerical (the same Markov chain, followed by uniformization), but the allocations; other lives simulated. The maintenance and test intervals are chosen as if every repair started at once on request (`assume_unlimited_crews=True`), for a plan to simulate with the crews | Other lives: yes, in general. |
|
|
219
228
|
| Standby groups (a duty unit and its spares, repaired) | For exponential units, the long run and importance exact, and the values over time numerical (the units' Markov chain, followed by uniformization); other units simulated | Other units: yes, in general. |
|
|
220
229
|
| Opportunistic maintenance (renewals at a group's stops) | Simulated | Yes: each member's renewals depend on the others' ages. |
|
|
@@ -13,8 +13,8 @@ taking already-fitted lifetime models (from
|
|
|
13
13
|
`sf`/`ff`) as its components:
|
|
14
14
|
|
|
15
15
|
- **Fault trees**: static fault trees (OR, AND and VOTE gates, repeated
|
|
16
|
-
events) evaluated exactly, with cut sets, importance
|
|
17
|
-
conversion to and from block diagrams.
|
|
16
|
+
events) evaluated exactly, with common-cause groups, cut sets, importance
|
|
17
|
+
measures and conversion to and from block diagrams.
|
|
18
18
|
- **Reliability**: exact system reliability, hazard and conditional survival;
|
|
19
19
|
the exact MTTF (or simulated, with confidence intervals); B*X* life;
|
|
20
20
|
uncertainty intervals on the reliability, MTTF, B*X* life and time to a
|
|
@@ -26,7 +26,8 @@ taking already-fitted lifetime models (from
|
|
|
26
26
|
landing), each with its own diagram over the same components: the exact
|
|
27
27
|
mission reliability and the chance of failing in each phase.
|
|
28
28
|
- **Testing**: demonstration test plans (the units, or the test time, that
|
|
29
|
-
demonstrate a reliability or an MTBF),
|
|
29
|
+
demonstrate a reliability or an MTBF), plans that keep both the
|
|
30
|
+
producer's and the consumer's risk, what a test demonstrated, and the
|
|
30
31
|
chance a design passes.
|
|
31
32
|
- **Importance**: Birnbaum, improvement potential, RAW, RRW, criticality,
|
|
32
33
|
Fussell–Vesely, structural importance and parameter sensitivity, on
|
|
@@ -41,9 +42,12 @@ taking already-fitted lifetime models (from
|
|
|
41
42
|
- **Live state**: reliability, remaining life and importance given each
|
|
42
43
|
component's current age, and covariate-dependent components.
|
|
43
44
|
- **Redundancy and dependence**: cold, warm and hot standby; repeated nodes;
|
|
44
|
-
load sharing; beta-factor and
|
|
45
|
+
load sharing; junctions (a vote point that never fails); beta-factor and
|
|
46
|
+
MGL common-cause groups, splitting a probability or a failure rate, in
|
|
47
|
+
block diagrams, repairable systems and fault trees.
|
|
45
48
|
- **Repairable systems**: exact long-run availability, failure frequency and
|
|
46
|
-
MUT/MDT/MTBF; exact availability over time and over a mission
|
|
49
|
+
MUT/MDT/MTBF; exact availability over time and over a mission, and the
|
|
50
|
+
unavailability to its own precision (a PFD of 1e-17); simulated
|
|
47
51
|
histories with criticality measures; shared repair crews, exact for
|
|
48
52
|
exponential components in the long run and numerical over time, with
|
|
49
53
|
their importance; repairable standby groups (a duty unit and its spares,
|
|
@@ -57,7 +61,8 @@ taking already-fitted lifetime models (from
|
|
|
57
61
|
probability of meeting a demand, and the production availability.
|
|
58
62
|
- **Spares**: how many spares each component uses over a horizon, for a
|
|
59
63
|
system or a fleet, and the stock that meets a fill rate or a stock-out
|
|
60
|
-
target for a replenishment lead time
|
|
64
|
+
target for a replenishment lead time, with interchangeable components'
|
|
65
|
+
spares pooled on one shelf.
|
|
61
66
|
- **Timelines**: up/down histories, from outage logs or simulated, with
|
|
62
67
|
their measures (time up, failures and who caused them, first failure);
|
|
63
68
|
merged as a diagram's structure, so a system's history follows from its
|
|
@@ -75,11 +80,15 @@ taking already-fitted lifetime models (from
|
|
|
75
80
|
maintenance of grouped components at each other's stops,
|
|
76
81
|
with its intervals chosen for a cost or availability target, hidden
|
|
77
82
|
failures found by periodic inspection, with the test intervals chosen for a
|
|
78
|
-
PFDavg target, the total cost of ownership,
|
|
79
|
-
|
|
83
|
+
PFDavg target, the total cost of ownership, discounted to a present
|
|
84
|
+
value from new or in the long run, optimal redundancy allocation (for the
|
|
85
|
+
lowest total cost of a repairable system, too, with whole trains given
|
|
86
|
+
copies together), reliability
|
|
80
87
|
allocation by the classic named methods (equal and ARINC-style
|
|
81
88
|
apportionment, minimum effort, cost-based), availability allocation to
|
|
82
89
|
MTTF and MTTR targets, and age-replacement and overhaul policies.
|
|
90
|
+
- **Saving**: diagrams to and from JSON, seeded results that repeat, and
|
|
91
|
+
every result as plain data (`to_dict()`, ready for `json.dumps`).
|
|
83
92
|
|
|
84
93
|
```python
|
|
85
94
|
import surpyval as surv
|
|
@@ -156,7 +165,7 @@ places, nested diagrams):
|
|
|
156
165
|
|---|---|---|
|
|
157
166
|
| **What you ask** | | |
|
|
158
167
|
| Sampled lifetimes or histories, and distributions or percentiles of an outcome over a window | Simulated (from new, or from the components' current states); each simulation's histories, the system's and its components', kept whole as timelines by `simulate_timelines` (from new) | Yes: the answer is a sample. Its mean over a window (failures, outages, downtime, cost, the capacity delivered) is exact, from new or from a state: `expected_events`, `expected_cost`, `mission_capacity`. |
|
|
159
|
-
| Comparing two designs (`compare`) |
|
|
168
|
+
| Comparing two designs (`compare`) | Exact where both designs' expected values are (their MTTFs; a repairable system's mission availability and expected cost), with no simulation (#236); otherwise, or on request (`method="simulate"`, `control_variate=False`), simulated with common random numbers | Only where a design's own values are simulated. |
|
|
160
169
|
| The uncertainty from fitted component parameters (`sf_uncertainty`, `mean_uncertainty`, `bx_life_uncertainty`, `time_to_reliability_uncertainty`; for a repairable system `mean_availability_uncertainty`, `point_availability_uncertainty`, `mission_availability_uncertainty`, `expected_cost_rate_uncertainty`) | Sampled over the parameters, randomly or quasi-randomly (`sampling="sobol"`), each draw exact or numerical as the diagram's own value is | Sampling is the method. |
|
|
161
170
|
| Small failure probabilities, with a node only simulations take | Rare-event simulation (`unreliability_interval`); `ff` refused | Only while the node has no reliability of its own: an exact diagram gives `ff` directly, to full precision however small (a numerical node, such as a cold-standby group of non-exponential units, to its own accuracy, about 1e-6). |
|
|
162
171
|
| **Components** | | |
|
|
@@ -167,7 +176,7 @@ places, nested diagrams):
|
|
|
167
176
|
| **Architecture and maintenance** | | |
|
|
168
177
|
| Phased missions and networks too large for their decision diagrams | Refused, pointing to `method="simulate"` | Only in practice: the diagrams grow with the phases' and the network's width rather than their paths, so meshed missions and networks are exact (a network grid of 100 nodes in a second and a half); one of 121 nodes passes the limit, `repyability.network.MAX_STATES`, which can be raised. |
|
|
169
178
|
| Block diagrams too meshed for their decision diagrams | Simulated (lifetimes, availability, cost and timelines, in Python); the exact and numerical analyses refused | Only in practice: the diagram grows with how wide the mesh is rather than with its paths, so most meshes are exact (a 10 × 10 grid in 0.04 seconds, a random mesh of 60 nodes and 345 links in 2); one of 70 nodes and 485 links passes the limit, `repyability.rbd.bdd.STEP_LIMIT`, which can be raised. |
|
|
170
|
-
| Common-cause groups in a repairable diagram | For exponential lives, tested or repaired: the long run, importance and the allocations exact (a beta-factor member's copies join its group, and the availability allocations keep the members' availability), the values over time from new numerical (the groups' Markov chains), and the simulations draw the shared causes, in Python. Members of other lives refused, and members held or started from a current state | Other lives: a shared cause has no one rate for members of different ages, so they need a model first. From a current state, no: the chains and the simulations could start from the members' states. |
|
|
179
|
+
| Common-cause groups in a repairable diagram | For exponential lives, tested or repaired: the long run, importance and the allocations exact (a beta-factor member's copies join its group, and the availability allocations keep the members' availability), and numerical where the members' tests and repairs take a fixed or an exponential time (#220); the values over time from new numerical (the groups' Markov chains), and the simulations draw the shared causes, in Python. Members of other lives refused, as are tests and repairs of other lengths, copies of members whose tests or repairs take time, the failure frequency where their tests do, and members held or started from a current state | Other lives: a shared cause has no one rate for members of different ages, so they need a model first. Tests and repairs of other lengths, no: the chain could follow them on a grid, as a single component's model does. From a current state, no: the chains and the simulations could start from the members' states. |
|
|
171
180
|
| Shared repair crews | For exponential lives and repairs, the long run and importance exact, and the values over time numerical (the same Markov chain, followed by uniformization), but the allocations; other lives simulated. The maintenance and test intervals are chosen as if every repair started at once on request (`assume_unlimited_crews=True`), for a plan to simulate with the crews | Other lives: yes, in general. |
|
|
172
181
|
| Standby groups (a duty unit and its spares, repaired) | For exponential units, the long run and importance exact, and the values over time numerical (the units' Markov chain, followed by uniformization); other units simulated | Other units: yes, in general. |
|
|
173
182
|
| Opportunistic maintenance (renewals at a group's stops) | Simulated | Yes: each member's renewals depend on the others' ages. |
|
|
@@ -44,10 +44,12 @@ dependencies = [
|
|
|
44
44
|
# to_dict/from_dict). A surpyval release reaches every fresh install at
|
|
45
45
|
# once, so the upstream workflow runs the tests against surpyval's
|
|
46
46
|
# development branch to show a break before it is released. CI also tests
|
|
47
|
-
# this minimum. 0.
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
|
|
47
|
+
# this minimum. 0.23 names the limited-failure proportion lfp_p (p goes
|
|
48
|
+
# in its next release), takes success_run's level as alpha_ci, and
|
|
49
|
+
# pickles its fits (for n_jobs' worker processes), as RePyability relies
|
|
50
|
+
# on; 0.22 named a distribution's parameters parameter_names and
|
|
51
|
+
# computes the Normal and LogNormal quantiles directly.
|
|
52
|
+
"surpyval>=0.23",
|
|
51
53
|
"tqdm>=4.64",
|
|
52
54
|
]
|
|
53
55
|
|
|
@@ -146,14 +148,14 @@ follow_imports = 'skip'
|
|
|
146
148
|
# Coverage
|
|
147
149
|
[tool.coverage.run]
|
|
148
150
|
source = ["repyability"]
|
|
149
|
-
# The compiled loop, decision diagram and
|
|
151
|
+
# The compiled loop, decision diagram and random streams' Philox run as
|
|
150
152
|
# machine code, which coverage cannot trace (their equivalence with the
|
|
151
|
-
# Python code
|
|
153
|
+
# Python code is tested instead).
|
|
152
154
|
omit = [
|
|
153
155
|
"*/tests/*",
|
|
154
156
|
"*/rbd/_kernel.py",
|
|
155
157
|
"*/rbd/_bdd_kernel.py",
|
|
156
|
-
"*/rbd/
|
|
158
|
+
"*/rbd/_philox_kernel.py",
|
|
157
159
|
]
|
|
158
160
|
|
|
159
161
|
[tool.coverage.report]
|
|
@@ -1,9 +1,31 @@
|
|
|
1
|
-
"""RePyability
|
|
1
|
+
"""RePyability: the reliability of systems, built from fitted component
|
|
2
|
+
models.
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
A system is a reliability block diagram over its components' lifetime
|
|
5
|
+
models (surpyval's fits, or anything with ``sf`` and ``ff``), worked out
|
|
6
|
+
exactly or numerically where it can be, and simulated on request:
|
|
5
7
|
|
|
6
|
-
|
|
8
|
+
- ``NonRepairableRBD``: reliability over time, the MTTF, B-lives,
|
|
9
|
+
importance and the Greeks, allocation, and uncertainty from fitted models.
|
|
10
|
+
- ``RepairableRBD``: availability (long run, over time and over a mission,
|
|
11
|
+
and the unavailability to its own precision), failures and costs,
|
|
12
|
+
maintenance, inspections, spares, repair crews, and simulated histories.
|
|
13
|
+
- ``FaultTree``, ``Network`` and ``PhasedMission``: the other ways to draw
|
|
14
|
+
a system; ``StandbyModel``, ``LoadSharingModel``, ``RepeatedNode`` and
|
|
15
|
+
``CCFGroup`` the dependencies within one.
|
|
16
|
+
- ``demonstration_plan`` and the other ``demonstration_*`` and ``mtbf_*``
|
|
17
|
+
functions: demonstration test planning.
|
|
18
|
+
|
|
19
|
+
Every class and function here is imported from the top-level package::
|
|
20
|
+
|
|
21
|
+
from repyability import NonRepairableRBD, RepairableRBD
|
|
22
|
+
|
|
23
|
+
Each analysis says whether it is exact, numerical, simulated or refused for
|
|
24
|
+
a diagram: ``rbd.analysis_routes()``. Each result class has ``to_dict()``,
|
|
25
|
+
for ``json.dumps``.
|
|
26
|
+
|
|
27
|
+
The user guide, the course and the API reference:
|
|
28
|
+
https://derrynknife.github.io/RePyability/
|
|
7
29
|
"""
|
|
8
30
|
|
|
9
31
|
from repyability._version import __version__
|
|
@@ -52,6 +74,7 @@ from repyability.rbd.results import (
|
|
|
52
74
|
ExpectedCost,
|
|
53
75
|
ExpectedEvents,
|
|
54
76
|
FailureCriticalityIndex,
|
|
77
|
+
Lever,
|
|
55
78
|
MaintenancePlan,
|
|
56
79
|
RateBreakdown,
|
|
57
80
|
RedundancyAllocation,
|
|
@@ -124,6 +147,7 @@ __all__ = [
|
|
|
124
147
|
"CostResult",
|
|
125
148
|
"ExpectedCost",
|
|
126
149
|
"ExpectedEvents",
|
|
150
|
+
"Lever",
|
|
127
151
|
"RedundancyAllocation",
|
|
128
152
|
"ReliabilityRedundancyAllocation",
|
|
129
153
|
"TotalCostAllocation",
|
|
@@ -145,3 +169,14 @@ __all__ = [
|
|
|
145
169
|
"SimulationChunk",
|
|
146
170
|
"run_shard",
|
|
147
171
|
]
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def _readable_help() -> None:
|
|
175
|
+
# The API reference's cross-references read as names in help() (#238).
|
|
176
|
+
from repyability.rbd.rbd import Pairs
|
|
177
|
+
from repyability.utils.docs import readable_docstrings
|
|
178
|
+
|
|
179
|
+
readable_docstrings([globals()[name] for name in __all__[1:]] + [Pairs])
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
_readable_help()
|