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.
Files changed (261) hide show
  1. {repyability-0.12/repyability.egg-info → repyability-0.13}/PKG-INFO +21 -12
  2. {repyability-0.12 → repyability-0.13}/README.md +19 -10
  3. {repyability-0.12 → repyability-0.13}/pyproject.toml +9 -7
  4. {repyability-0.12 → repyability-0.13}/repyability/__init__.py +39 -4
  5. {repyability-0.12 → repyability-0.13}/repyability/_version.py +1 -1
  6. {repyability-0.12 → repyability-0.13}/repyability/fault_tree.py +168 -95
  7. {repyability-0.12 → repyability-0.13}/repyability/network.py +44 -24
  8. {repyability-0.12 → repyability-0.13}/repyability/non_repairable.py +50 -14
  9. repyability-0.13/repyability/rbd/_bdd_kernel.py +183 -0
  10. {repyability-0.12 → repyability-0.13}/repyability/rbd/_ccf_chain.py +428 -83
  11. repyability-0.13/repyability/rbd/_ccf_modules.py +1123 -0
  12. {repyability-0.12 → repyability-0.13}/repyability/rbd/_chain_transient.py +10 -0
  13. {repyability-0.12 → repyability-0.13}/repyability/rbd/_compiled.py +100 -82
  14. {repyability-0.12 → repyability-0.13}/repyability/rbd/_conditional.py +74 -24
  15. {repyability-0.12 → repyability-0.13}/repyability/rbd/_dependent_lifetimes.py +5 -4
  16. {repyability-0.12 → repyability-0.13}/repyability/rbd/_hidden_tests.py +43 -14
  17. {repyability-0.12 → repyability-0.13}/repyability/rbd/_importance_time.py +41 -48
  18. {repyability-0.12 → repyability-0.13}/repyability/rbd/_kernel.py +609 -1226
  19. repyability-0.13/repyability/rbd/_mean_lifetime.py +327 -0
  20. {repyability-0.12 → repyability-0.13}/repyability/rbd/_model_utils.py +17 -33
  21. {repyability-0.12 → repyability-0.13}/repyability/rbd/_montecarlo.py +16 -35
  22. {repyability-0.12 → repyability-0.13}/repyability/rbd/_ordered_bdd.py +6 -0
  23. repyability-0.13/repyability/rbd/_philox.py +67 -0
  24. repyability-0.13/repyability/rbd/_philox_kernel.py +44 -0
  25. {repyability-0.12 → repyability-0.13}/repyability/rbd/_point_availability.py +239 -33
  26. {repyability-0.12 → repyability-0.13}/repyability/rbd/_quadrature.py +1 -1
  27. {repyability-0.12 → repyability-0.13}/repyability/rbd/_rates.py +16 -2
  28. {repyability-0.12 → repyability-0.13}/repyability/rbd/_repairable_uncertainty.py +190 -64
  29. repyability-0.13/repyability/rbd/_sampling.py +288 -0
  30. {repyability-0.12 → repyability-0.13}/repyability/rbd/_sensitivity.py +323 -34
  31. {repyability-0.12 → repyability-0.13}/repyability/rbd/_streams.py +67 -44
  32. repyability-0.13/repyability/rbd/_timeline_runs.py +399 -0
  33. repyability-0.13/repyability/rbd/bdd.py +720 -0
  34. {repyability-0.12 → repyability-0.13}/repyability/rbd/capacity.py +10 -2
  35. {repyability-0.12 → repyability-0.13}/repyability/rbd/ccf.py +168 -39
  36. {repyability-0.12 → repyability-0.13}/repyability/rbd/chunks.py +2 -0
  37. {repyability-0.12 → repyability-0.13}/repyability/rbd/degrading_node.py +27 -8
  38. {repyability-0.12 → repyability-0.13}/repyability/rbd/engines.py +5 -3
  39. {repyability-0.12 → repyability-0.13}/repyability/rbd/helper_classes.py +37 -6
  40. {repyability-0.12 → repyability-0.13}/repyability/rbd/load_sharing_node.py +33 -31
  41. {repyability-0.12 → repyability-0.13}/repyability/rbd/modular.py +87 -93
  42. {repyability-0.12 → repyability-0.13}/repyability/rbd/non_repairable_rbd.py +630 -215
  43. {repyability-0.12 → repyability-0.13}/repyability/rbd/phased_mission.py +2 -0
  44. {repyability-0.12 → repyability-0.13}/repyability/rbd/rare_event.py +5 -2
  45. {repyability-0.12 → repyability-0.13}/repyability/rbd/rbd.py +189 -35
  46. {repyability-0.12 → repyability-0.13}/repyability/rbd/repairable_rbd.py +2566 -911
  47. {repyability-0.12 → repyability-0.13}/repyability/rbd/repeated_node.py +6 -2
  48. {repyability-0.12 → repyability-0.13}/repyability/rbd/results.py +588 -172
  49. {repyability-0.12 → repyability-0.13}/repyability/rbd/routes.py +17 -0
  50. {repyability-0.12 → repyability-0.13}/repyability/rbd/serialisation.py +16 -14
  51. {repyability-0.12 → repyability-0.13}/repyability/rbd/shannon.py +147 -39
  52. {repyability-0.12 → repyability-0.13}/repyability/rbd/standby_node.py +78 -34
  53. {repyability-0.12 → repyability-0.13}/repyability/rbd/uncertainty.py +24 -1
  54. {repyability-0.12 → repyability-0.13}/repyability/repairable.py +5 -3
  55. repyability-0.13/repyability/tests/_bdd_cases.py +239 -0
  56. repyability-0.13/repyability/tests/bdd_records.json +30363 -0
  57. repyability-0.13/repyability/tests/catalogue.py +600 -0
  58. {repyability-0.12 → repyability-0.13}/repyability/tests/keyed_draws.py +18 -14
  59. repyability-0.13/repyability/tests/seeded_event_loop.json +763 -0
  60. {repyability-0.12 → repyability-0.13}/repyability/tests/test_analysis_routes.py +185 -391
  61. {repyability-0.12 → repyability-0.13}/repyability/tests/test_api_consistency.py +9 -7
  62. {repyability-0.12 → repyability-0.13}/repyability/tests/test_availability_allocation.py +1 -4
  63. repyability-0.13/repyability/tests/test_bdd_records.py +102 -0
  64. {repyability-0.12 → repyability-0.13}/repyability/tests/test_block_replacement.py +1 -2
  65. repyability-0.13/repyability/tests/test_call_forms.py +158 -0
  66. {repyability-0.12 → repyability-0.13}/repyability/tests/test_capacity.py +25 -7
  67. {repyability-0.12 → repyability-0.13}/repyability/tests/test_capacity_over_time.py +3 -3
  68. {repyability-0.12 → repyability-0.13}/repyability/tests/test_capacity_simulation.py +2 -2
  69. repyability-0.13/repyability/tests/test_catalogue.py +419 -0
  70. {repyability-0.12 → repyability-0.13}/repyability/tests/test_ccf_lifetime.py +7 -3
  71. repyability-0.13/repyability/tests/test_ccf_modules.py +319 -0
  72. {repyability-0.12 → repyability-0.13}/repyability/tests/test_ccf_over_time.py +36 -18
  73. repyability-0.13/repyability/tests/test_ccf_repairable_modules.py +487 -0
  74. repyability-0.13/repyability/tests/test_ccf_timed.py +225 -0
  75. {repyability-0.12 → repyability-0.13}/repyability/tests/test_chains_over_time.py +2 -2
  76. {repyability-0.12 → repyability-0.13}/repyability/tests/test_condition_over_time.py +1 -1
  77. {repyability-0.12 → repyability-0.13}/repyability/tests/test_condition_replacement.py +11 -8
  78. {repyability-0.12 → repyability-0.13}/repyability/tests/test_conditional.py +100 -0
  79. {repyability-0.12 → repyability-0.13}/repyability/tests/test_control_variate.py +10 -6
  80. {repyability-0.12 → repyability-0.13}/repyability/tests/test_demonstration.py +3 -7
  81. {repyability-0.12 → repyability-0.13}/repyability/tests/test_dependent_lifetimes.py +1 -2
  82. repyability-0.13/repyability/tests/test_discounting.py +250 -0
  83. repyability-0.13/repyability/tests/test_docs_examples.py +253 -0
  84. {repyability-0.12 → repyability-0.13}/repyability/tests/test_engine_plugins.py +0 -2
  85. repyability-0.13/repyability/tests/test_evaluation_costs.py +347 -0
  86. {repyability-0.12 → repyability-0.13}/repyability/tests/test_exact_mttf.py +2 -3
  87. {repyability-0.12 → repyability-0.13}/repyability/tests/test_expected_window.py +8 -8
  88. {repyability-0.12 → repyability-0.13}/repyability/tests/test_fault_tree.py +21 -16
  89. {repyability-0.12 → repyability-0.13}/repyability/tests/test_fitted_models_in_parallel.py +5 -12
  90. repyability-0.13/repyability/tests/test_help.py +53 -0
  91. {repyability-0.12 → repyability-0.13}/repyability/tests/test_hidden_failures_timed.py +32 -5
  92. {repyability-0.12 → repyability-0.13}/repyability/tests/test_inspection_offsets.py +66 -15
  93. {repyability-0.12 → repyability-0.13}/repyability/tests/test_intervals_with_crews.py +6 -4
  94. {repyability-0.12 → repyability-0.13}/repyability/tests/test_junctions.py +22 -1
  95. repyability-0.13/repyability/tests/test_levers.py +364 -0
  96. {repyability-0.12 → repyability-0.13}/repyability/tests/test_limited_failure_population.py +22 -29
  97. {repyability-0.12 → repyability-0.13}/repyability/tests/test_load_sharing.py +4 -1
  98. {repyability-0.12 → repyability-0.13}/repyability/tests/test_maintenance_intervals.py +55 -1
  99. {repyability-0.12 → repyability-0.13}/repyability/tests/test_meshed_structures.py +1 -1
  100. repyability-0.13/repyability/tests/test_messages.py +375 -0
  101. repyability-0.13/repyability/tests/test_mixture_lives.py +207 -0
  102. {repyability-0.12 → repyability-0.13}/repyability/tests/test_monte_carlo.py +100 -34
  103. {repyability-0.12 → repyability-0.13}/repyability/tests/test_non_repairable.py +3 -4
  104. repyability-0.13/repyability/tests/test_one_expected_value.py +184 -0
  105. {repyability-0.12 → repyability-0.13}/repyability/tests/test_performance_equivalence.py +36 -7
  106. {repyability-0.12 → repyability-0.13}/repyability/tests/test_point_availability.py +58 -7
  107. {repyability-0.12 → repyability-0.13}/repyability/tests/test_preventive_maintenance.py +1 -1
  108. {repyability-0.12 → repyability-0.13}/repyability/tests/test_quadrature.py +7 -7
  109. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rates.py +69 -5
  110. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_imperfect_repair.py +1 -2
  111. repyability-0.13/repyability/tests/test_refused_inputs.py +281 -0
  112. {repyability-0.12 → repyability-0.13}/repyability/tests/test_removed_in_0_12.py +7 -22
  113. repyability-0.13/repyability/tests/test_removed_in_0_13.py +52 -0
  114. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repair_crews.py +3 -1
  115. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_cost.py +10 -5
  116. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_rbd.py +1 -1
  117. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_standby.py +5 -3
  118. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_uncertainty.py +7 -1
  119. repyability-0.13/repyability/tests/test_result_objects.py +233 -0
  120. repyability-0.13/repyability/tests/test_safety_edges.py +131 -0
  121. {repyability-0.12 → repyability-0.13}/repyability/tests/test_serialisation.py +1 -2
  122. {repyability-0.12 → repyability-0.13}/repyability/tests/test_shards.py +1 -1
  123. {repyability-0.12 → repyability-0.13}/repyability/tests/test_simulation_chunks.py +71 -1
  124. {repyability-0.12 → repyability-0.13}/repyability/tests/test_simulation_engines.py +55 -62
  125. {repyability-0.12 → repyability-0.13}/repyability/tests/test_small_probabilities.py +1 -2
  126. {repyability-0.12 → repyability-0.13}/repyability/tests/test_spares.py +10 -5
  127. {repyability-0.12 → repyability-0.13}/repyability/tests/test_staggered_and_partial_tests.py +25 -6
  128. {repyability-0.12 → repyability-0.13}/repyability/tests/test_start_from_state.py +11 -6
  129. repyability-0.13/repyability/tests/test_streams.py +79 -0
  130. {repyability-0.12 → repyability-0.13}/repyability/tests/test_structure_messages.py +81 -0
  131. repyability-0.13/repyability/tests/test_threads.py +130 -0
  132. repyability-0.13/repyability/tests/test_time_order.py +178 -0
  133. {repyability-0.12 → repyability-0.13}/repyability/tests/test_timelines.py +20 -61
  134. {repyability-0.12 → repyability-0.13}/repyability/tests/test_total_cost.py +21 -1
  135. repyability-0.13/repyability/tests/test_unavailability.py +130 -0
  136. repyability-0.13/repyability/tests/test_uncertainty_arrays.py +113 -0
  137. repyability-0.13/repyability/tests/test_uncertainty_sharing.py +115 -0
  138. {repyability-0.12 → repyability-0.13}/repyability/timelines.py +123 -41
  139. repyability-0.13/repyability/utils/checks.py +167 -0
  140. repyability-0.13/repyability/utils/deprecation.py +190 -0
  141. repyability-0.13/repyability/utils/docs.py +48 -0
  142. repyability-0.13/repyability/utils/wrappers.py +161 -0
  143. {repyability-0.12 → repyability-0.13/repyability.egg-info}/PKG-INFO +21 -12
  144. {repyability-0.12 → repyability-0.13}/repyability.egg-info/SOURCES.txt +28 -2
  145. {repyability-0.12 → repyability-0.13}/repyability.egg-info/requires.txt +1 -1
  146. repyability-0.12/repyability/rbd/_bdd_kernel.py +0 -529
  147. repyability-0.12/repyability/rbd/_mean_lifetime.py +0 -211
  148. repyability-0.12/repyability/rbd/_sampling.py +0 -122
  149. repyability-0.12/repyability/rbd/_time_order.py +0 -287
  150. repyability-0.12/repyability/rbd/_timeline_runs.py +0 -772
  151. repyability-0.12/repyability/rbd/bdd.py +0 -587
  152. repyability-0.12/repyability/tests/seeded_event_loop.json +0 -763
  153. repyability-0.12/repyability/tests/test_bdd_compiled.py +0 -247
  154. repyability-0.12/repyability/tests/test_discounting.py +0 -95
  155. repyability-0.12/repyability/tests/test_docs_examples.py +0 -96
  156. repyability-0.12/repyability/tests/test_time_order.py +0 -226
  157. repyability-0.12/repyability/utils/checks.py +0 -60
  158. repyability-0.12/repyability/utils/deprecation.py +0 -74
  159. repyability-0.12/repyability/utils/wrappers.py +0 -87
  160. {repyability-0.12 → repyability-0.13}/LICENSE +0 -0
  161. {repyability-0.12 → repyability-0.13}/repyability/demonstration.py +0 -0
  162. {repyability-0.12 → repyability-0.13}/repyability/maintenance.py +0 -0
  163. {repyability-0.12 → repyability-0.13}/repyability/py.typed +0 -0
  164. {repyability-0.12 → repyability-0.13}/repyability/rbd/__init__.py +0 -0
  165. {repyability-0.12 → repyability-0.13}/repyability/rbd/_block_replacement.py +0 -0
  166. {repyability-0.12 → repyability-0.13}/repyability/rbd/_condition_replacement.py +0 -0
  167. {repyability-0.12 → repyability-0.13}/repyability/rbd/_crew_chain.py +0 -0
  168. {repyability-0.12 → repyability-0.13}/repyability/rbd/_differential.py +0 -0
  169. {repyability-0.12 → repyability-0.13}/repyability/rbd/_exact.py +0 -0
  170. {repyability-0.12 → repyability-0.13}/repyability/rbd/_hidden_life.py +0 -0
  171. {repyability-0.12 → repyability-0.13}/repyability/rbd/_spares.py +0 -0
  172. {repyability-0.12 → repyability-0.13}/repyability/rbd/_standby_chain.py +0 -0
  173. {repyability-0.12 → repyability-0.13}/repyability/rbd/min_path_sets.py +0 -0
  174. {repyability-0.12 → repyability-0.13}/repyability/rbd/node_state.py +0 -0
  175. {repyability-0.12 → repyability-0.13}/repyability/rbd/numerical_convolution.py +0 -0
  176. {repyability-0.12 → repyability-0.13}/repyability/rbd/rbd_graph.py +0 -0
  177. {repyability-0.12 → repyability-0.13}/repyability/rbd/redundancy_allocation.py +0 -0
  178. {repyability-0.12 → repyability-0.13}/repyability/rbd/regression_node.py +0 -0
  179. {repyability-0.12 → repyability-0.13}/repyability/rbd/repeated_standby_node.py +0 -0
  180. {repyability-0.12 → repyability-0.13}/repyability/rbd/shards.py +0 -0
  181. {repyability-0.12 → repyability-0.13}/repyability/tests/__init__.py +0 -0
  182. {repyability-0.12 → repyability-0.13}/repyability/tests/conftest.py +0 -0
  183. {repyability-0.12 → repyability-0.13}/repyability/tests/repository.py +0 -0
  184. {repyability-0.12 → repyability-0.13}/repyability/tests/test_allocation_trains.py +0 -0
  185. {repyability-0.12 → repyability-0.13}/repyability/tests/test_api_docstrings.py +0 -0
  186. {repyability-0.12 → repyability-0.13}/repyability/tests/test_api_standardisation.py +0 -0
  187. {repyability-0.12 → repyability-0.13}/repyability/tests/test_bdd_core.py +0 -0
  188. {repyability-0.12 → repyability-0.13}/repyability/tests/test_bx_life.py +0 -0
  189. {repyability-0.12 → repyability-0.13}/repyability/tests/test_ccf.py +0 -0
  190. {repyability-0.12 → repyability-0.13}/repyability/tests/test_ccf_allocations.py +0 -0
  191. {repyability-0.12 → repyability-0.13}/repyability/tests/test_ccf_analyses.py +0 -0
  192. {repyability-0.12 → repyability-0.13}/repyability/tests/test_condition_based.py +0 -0
  193. {repyability-0.12 → repyability-0.13}/repyability/tests/test_condition_long_run.py +0 -0
  194. {repyability-0.12 → repyability-0.13}/repyability/tests/test_crew_chain.py +0 -0
  195. {repyability-0.12 → repyability-0.13}/repyability/tests/test_curve_points.py +0 -0
  196. {repyability-0.12 → repyability-0.13}/repyability/tests/test_demonstration_plans.py +0 -0
  197. {repyability-0.12 → repyability-0.13}/repyability/tests/test_differential_importance.py +0 -0
  198. {repyability-0.12 → repyability-0.13}/repyability/tests/test_fussell_vesely_exact.py +0 -0
  199. {repyability-0.12 → repyability-0.13}/repyability/tests/test_greeks.py +0 -0
  200. {repyability-0.12 → repyability-0.13}/repyability/tests/test_helper_classes.py +0 -0
  201. {repyability-0.12 → repyability-0.13}/repyability/tests/test_hidden_failures_any_life.py +0 -0
  202. {repyability-0.12 → repyability-0.13}/repyability/tests/test_imperfect_repair.py +0 -0
  203. {repyability-0.12 → repyability-0.13}/repyability/tests/test_importance_over_time.py +0 -0
  204. {repyability-0.12 → repyability-0.13}/repyability/tests/test_input_checks.py +0 -0
  205. {repyability-0.12 → repyability-0.13}/repyability/tests/test_inspection.py +0 -0
  206. {repyability-0.12 → repyability-0.13}/repyability/tests/test_joint_importance.py +0 -0
  207. {repyability-0.12 → repyability-0.13}/repyability/tests/test_model_utils.py +0 -0
  208. {repyability-0.12 → repyability-0.13}/repyability/tests/test_network.py +0 -0
  209. {repyability-0.12 → repyability-0.13}/repyability/tests/test_opportunistic_maintenance.py +0 -0
  210. {repyability-0.12 → repyability-0.13}/repyability/tests/test_packaging.py +0 -0
  211. {repyability-0.12 → repyability-0.13}/repyability/tests/test_papercuts.py +0 -0
  212. {repyability-0.12 → repyability-0.13}/repyability/tests/test_parameter_sensitivity.py +0 -0
  213. {repyability-0.12 → repyability-0.13}/repyability/tests/test_phased_mission.py +0 -0
  214. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rare_event.py +0 -0
  215. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_allocation.py +0 -0
  216. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_analytic_solvability.py +0 -0
  217. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_berge_cut_sets.py +0 -0
  218. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_exact_probability.py +0 -0
  219. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_exponential_standby.py +0 -0
  220. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_get_min_cut_sets.py +0 -0
  221. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_get_min_path_sets.py +0 -0
  222. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_hazard.py +0 -0
  223. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_importances.py +0 -0
  224. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_koon.py +0 -0
  225. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_misc.py +0 -0
  226. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_modular.py +0 -0
  227. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_non_repairable.py +0 -0
  228. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_numerical_convolution.py +0 -0
  229. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_repeated_standby.py +0 -0
  230. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_set_working_failed.py +0 -0
  231. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_sf.py +0 -0
  232. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_structure.py +0 -0
  233. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rbd_switching_probability.py +0 -0
  234. {repyability-0.12 → repyability-0.13}/repyability/tests/test_redundancy_allocation.py +0 -0
  235. {repyability-0.12 → repyability-0.13}/repyability/tests/test_redundancy_front.py +0 -0
  236. {repyability-0.12 → repyability-0.13}/repyability/tests/test_redundancy_options.py +0 -0
  237. {repyability-0.12 → repyability-0.13}/repyability/tests/test_redundancy_strategies.py +0 -0
  238. {repyability-0.12 → repyability-0.13}/repyability/tests/test_regression_node.py +0 -0
  239. {repyability-0.12 → repyability-0.13}/repyability/tests/test_reliability_redundancy.py +0 -0
  240. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable.py +0 -0
  241. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_accounting.py +0 -0
  242. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_ccf.py +0 -0
  243. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_metrics.py +0 -0
  244. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repairable_sensitivity.py +0 -0
  245. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repeated_node.py +0 -0
  246. {repyability-0.12 → repyability-0.13}/repyability/tests/test_repeated_nodes.py +0 -0
  247. {repyability-0.12 → repyability-0.13}/repyability/tests/test_results.py +0 -0
  248. {repyability-0.12 → repyability-0.13}/repyability/tests/test_rng_reproducibility.py +0 -0
  249. {repyability-0.12 → repyability-0.13}/repyability/tests/test_simulation_validation.py +0 -0
  250. {repyability-0.12 → repyability-0.13}/repyability/tests/test_spares_block_and_tested.py +0 -0
  251. {repyability-0.12 → repyability-0.13}/repyability/tests/test_standby.py +0 -0
  252. {repyability-0.12 → repyability-0.13}/repyability/tests/test_startup.py +0 -0
  253. {repyability-0.12 → repyability-0.13}/repyability/tests/test_structural_importance.py +0 -0
  254. {repyability-0.12 → repyability-0.13}/repyability/tests/test_uncertainty.py +0 -0
  255. {repyability-0.12 → repyability-0.13}/repyability/tests/test_uncertainty_importance.py +0 -0
  256. {repyability-0.12 → repyability-0.13}/repyability/tests/test_warm_standby.py +0 -0
  257. {repyability-0.12 → repyability-0.13}/repyability/utils/json_io.py +0 -0
  258. {repyability-0.12 → repyability-0.13}/repyability/utils/vectors.py +0 -0
  259. {repyability-0.12 → repyability-0.13}/repyability.egg-info/dependency_links.txt +0 -0
  260. {repyability-0.12 → repyability-0.13}/repyability.egg-info/top_level.txt +0 -0
  261. {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.12
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.22
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 measures and
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), what a test demonstrated, and the
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 MGL common-cause groups.
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; simulated
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, optimal redundancy allocation
126
- (for the lowest total cost of a repairable system, too), reliability
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`) | Simulated, with common random numbers | No, where both are exact: compare their exact values. |
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 measures and
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), what a test demonstrated, and the
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 MGL common-cause groups.
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; simulated
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, optimal redundancy allocation
79
- (for the lowest total cost of a repairable system, too), reliability
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`) | Simulated, with common random numbers | No, where both are exact: compare their exact values. |
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.22 names a distribution's parameters parameter_names
48
- # (param_names goes in 0.23), and computes the Normal and LogNormal
49
- # quantiles directly, as RePyability relies on.
50
- "surpyval>=0.22",
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 sorting of a run's changes run as
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, and with numpy's sorting, is tested instead).
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/_time_order.py",
158
+ "*/rbd/_philox_kernel.py",
157
159
  ]
158
160
 
159
161
  [tool.coverage.report]
@@ -1,9 +1,31 @@
1
- """RePyability — reliability engineering tools for Python.
1
+ """RePyability: the reliability of systems, built from fitted component
2
+ models.
2
3
 
3
- The most commonly used classes are re-exported here so they can be imported
4
- directly from the top-level package, e.g.::
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
- from repyability import NonRepairableRBD, StandbyModel
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()
@@ -5,4 +5,4 @@ Kept deliberately free of imports so the build backend can read
5
5
  dependencies) via ``[tool.setuptools.dynamic]`` in ``pyproject.toml``.
6
6
  """
7
7
 
8
- __version__ = "0.12"
8
+ __version__ = "0.13"