gea-program 0.41.0__tar.gz → 0.43.0__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 (331) hide show
  1. {gea_program-0.41.0 → gea_program-0.43.0}/PKG-INFO +28 -1
  2. {gea_program-0.41.0 → gea_program-0.43.0}/README.md +27 -0
  3. {gea_program-0.41.0 → gea_program-0.43.0}/gea/__init__.py +1 -1
  4. {gea_program-0.41.0 → gea_program-0.43.0}/gea/__main__.py +162 -0
  5. {gea_program-0.41.0 → gea_program-0.43.0}/gea/acceptance_tests.py +416 -1
  6. {gea_program-0.41.0 → gea_program-0.43.0}/gea/client_reports.py +5 -0
  7. {gea_program-0.41.0 → gea_program-0.43.0}/gea/declarations.py +52 -2
  8. gea_program-0.43.0/gea/dossier.py +369 -0
  9. gea_program-0.43.0/gea/dossier_verify.py +136 -0
  10. gea_program-0.43.0/gea/ed25519.py +131 -0
  11. {gea_program-0.41.0 → gea_program-0.43.0}/gea/files.py +3 -1
  12. {gea_program-0.41.0 → gea_program-0.43.0}/gea/fixtures/README.md +6 -0
  13. gea_program-0.43.0/gea/fixtures/comcat_mahoning_1990-2026.txt +22 -0
  14. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/declare.md +3 -3
  15. gea_program-0.43.0/gea/help/dossier.md +15 -0
  16. gea_program-0.43.0/gea/help/opseis.md +13 -0
  17. gea_program-0.43.0/gea/help/report-history.md +11 -0
  18. {gea_program-0.41.0 → gea_program-0.43.0}/gea/helplib.py +4 -1
  19. gea_program-0.43.0/gea/op_seismicity.py +625 -0
  20. gea_program-0.43.0/gea/reference/mahoning_example.json +48 -0
  21. gea_program-0.43.0/gea/reference/seismicity_protocols.json +95 -0
  22. gea_program-0.43.0/gea/report_history.py +148 -0
  23. {gea_program-0.41.0 → gea_program-0.43.0}/gea/service.py +80 -0
  24. {gea_program-0.41.0 → gea_program-0.43.0}/gea/web/app.html +123 -2
  25. {gea_program-0.41.0 → gea_program-0.43.0}/gea_program.egg-info/PKG-INFO +28 -1
  26. {gea_program-0.41.0 → gea_program-0.43.0}/gea_program.egg-info/SOURCES.txt +11 -0
  27. {gea_program-0.41.0 → gea_program-0.43.0}/pyproject.toml +1 -1
  28. {gea_program-0.41.0 → gea_program-0.43.0}/LICENSE +0 -0
  29. {gea_program-0.41.0 → gea_program-0.43.0}/gea/BENCH_TEST_PROTOCOL.md +0 -0
  30. {gea_program-0.41.0 → gea_program-0.43.0}/gea/accuracy_statement.py +0 -0
  31. {gea_program-0.41.0 → gea_program-0.43.0}/gea/alarm_engine.py +0 -0
  32. {gea_program-0.41.0 → gea_program-0.43.0}/gea/backup.py +0 -0
  33. {gea_program-0.41.0 → gea_program-0.43.0}/gea/bench.py +0 -0
  34. {gea_program-0.41.0 → gea_program-0.43.0}/gea/blind_harness.py +0 -0
  35. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
  36. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/acex_lomonosov_age_depth_model.txt +0 -0
  37. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/agassiz77_canada_temperature.csv +0 -0
  38. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/agassiz77_canada_temperature.provenance.json +0 -0
  39. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/barbados_110_consolidation.provenance.json +0 -0
  40. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/barbados_110_consolidation.txt +0 -0
  41. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/bengal_u1452_grain_size.provenance.json +0 -0
  42. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/bengal_u1452_grain_size.txt +0 -0
  43. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/blake_164_methane_isotopes.provenance.json +0 -0
  44. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/blake_164_methane_isotopes.txt +0 -0
  45. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
  46. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
  47. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/collingwood_1_28_ks_complete.las +0 -0
  48. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
  49. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/costa_rica_odp_friction_envelope.provenance.json +0 -0
  50. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/costa_rica_odp_friction_envelope.txt +0 -0
  51. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +0 -0
  52. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +0 -0
  53. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
  54. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/dsdp_504b_physical_properties.txt +0 -0
  55. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
  56. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/dsdp_504b_sound_velocity.txt +0 -0
  57. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/elgygytgyn_5011_turbidites.provenance.json +0 -0
  58. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/elgygytgyn_5011_turbidites.txt +0 -0
  59. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/epica_domec_co2_800kyr.provenance.json +0 -0
  60. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/epica_domec_co2_800kyr.txt +0 -0
  61. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/fram_909_organic_petrography.provenance.json +0 -0
  62. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/fram_909_organic_petrography.txt +0 -0
  63. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/gbr_325_coral_uth_ages.provenance.json +0 -0
  64. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/gbr_325_coral_uth_ages.txt +0 -0
  65. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/gisp2_greenland_temperature.csv +0 -0
  66. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/gisp2_greenland_temperature.provenance.json +0 -0
  67. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/gom_308_t2p_insitu.provenance.json +0 -0
  68. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/gom_308_t2p_insitu.txt +0 -0
  69. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/guaymas_385_dom_d13c.provenance.json +0 -0
  70. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/guaymas_385_dom_d13c.txt +0 -0
  71. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +0 -0
  72. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/hikurangi_u1520_friction_insitu.txt +0 -0
  73. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +0 -0
  74. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +0 -0
  75. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
  76. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/iodp_u1324_pore_pressure.txt +0 -0
  77. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/jfast_c0019_slow_slip_events.provenance.json +0 -0
  78. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/jfast_c0019_slow_slip_events.txt +0 -0
  79. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/kennetcook_2_p129_excerpt.las +0 -0
  80. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
  81. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_hb_bhgm_density.dat +0 -0
  82. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
  83. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +0 -0
  84. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_hb_complog_6020_excerpt.txt +0 -0
  85. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_hb_hlog246_temperature.dat +0 -0
  86. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
  87. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_hb_rockmech_compress.dat +0 -0
  88. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
  89. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
  90. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
  91. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_vb_rockmech_compress.dat +0 -0
  92. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
  93. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_vb_vlog251_temperature.dat +0 -0
  94. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
  95. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/l06_06_nl_survey.csv +0 -0
  96. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/l06_06_nl_survey.provenance.json +0 -0
  97. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/l07_01_nl_excerpt.las +0 -0
  98. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/l07_01_nl_excerpt.provenance.json +0 -0
  99. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +0 -0
  100. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/mariana_1200_serpentinite_geochem.txt +0 -0
  101. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/med_160_sapropels.provenance.json +0 -0
  102. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/med_160_sapropels.txt +0 -0
  103. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
  104. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/nankai_megasplay_shear_strength.txt +0 -0
  105. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
  106. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_1027b_thermal_conductivity.txt +0 -0
  107. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
  108. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_1027c_cork_temperature.txt +0 -0
  109. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
  110. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_1165b_thermal_conductivity.txt +0 -0
  111. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
  112. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
  113. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
  114. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
  115. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
  116. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
  117. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
  118. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
  119. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/peru_201_sulfate_reduction.provenance.json +0 -0
  120. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/peru_201_sulfate_reduction.txt +0 -0
  121. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/scorpio_e1_sa_excerpt.las +0 -0
  122. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
  123. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/sumatra_362_cohesion.provenance.json +0 -0
  124. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/sumatra_362_cohesion.txt +0 -0
  125. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/university_6_17_no1_tx_excerpt.las +0 -0
  126. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
  127. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ursa_308_xrd_mineralogy.provenance.json +0 -0
  128. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/ursa_308_xrd_mineralogy.txt +0 -0
  129. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/volve_15_9_19_sr_excerpt.las +0 -0
  130. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
  131. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
  132. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
  133. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/volve_f12_f14_production_excerpt.csv +0 -0
  134. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
  135. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/walvis_208_petm_carbonate.provenance.json +0 -0
  136. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/walvis_208_petm_carbonate.txt +0 -0
  137. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/woodlark_1109_rock_eval.provenance.json +0 -0
  138. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog/woodlark_1109_rock_eval.txt +0 -0
  139. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog_map.py +0 -0
  140. {gea_program-0.41.0 → gea_program-0.43.0}/gea/catalog_register.py +0 -0
  141. {gea_program-0.41.0 → gea_program-0.43.0}/gea/certificates.py +0 -0
  142. {gea_program-0.41.0 → gea_program-0.43.0}/gea/cli.py +0 -0
  143. {gea_program-0.41.0 → gea_program-0.43.0}/gea/config_versioning.py +0 -0
  144. {gea_program-0.41.0 → gea_program-0.43.0}/gea/conformance.py +0 -0
  145. {gea_program-0.41.0 → gea_program-0.43.0}/gea/control_room.py +0 -0
  146. {gea_program-0.41.0 → gea_program-0.43.0}/gea/correlation.py +0 -0
  147. {gea_program-0.41.0 → gea_program-0.43.0}/gea/dashboard.py +0 -0
  148. {gea_program-0.41.0 → gea_program-0.43.0}/gea/deviation.py +0 -0
  149. {gea_program-0.41.0 → gea_program-0.43.0}/gea/dlis.py +0 -0
  150. {gea_program-0.41.0 → gea_program-0.43.0}/gea/dnp3.py +0 -0
  151. {gea_program-0.41.0 → gea_program-0.43.0}/gea/doctor.py +0 -0
  152. {gea_program-0.41.0 → gea_program-0.43.0}/gea/downhole_engine.py +0 -0
  153. {gea_program-0.41.0 → gea_program-0.43.0}/gea/drift_monitor.py +0 -0
  154. {gea_program-0.41.0 → gea_program-0.43.0}/gea/drill_string.py +0 -0
  155. {gea_program-0.41.0 → gea_program-0.43.0}/gea/earth_model.py +0 -0
  156. {gea_program-0.41.0 → gea_program-0.43.0}/gea/economics.py +0 -0
  157. {gea_program-0.41.0 → gea_program-0.43.0}/gea/edr.py +0 -0
  158. {gea_program-0.41.0 → gea_program-0.43.0}/gea/elevation.py +0 -0
  159. {gea_program-0.41.0 → gea_program-0.43.0}/gea/etp.py +0 -0
  160. {gea_program-0.41.0 → gea_program-0.43.0}/gea/etp12_schemas.json +0 -0
  161. {gea_program-0.41.0 → gea_program-0.43.0}/gea/example_register_map.json +0 -0
  162. {gea_program-0.41.0 → gea_program-0.43.0}/gea/fat_sat.py +0 -0
  163. {gea_program-0.41.0 → gea_program-0.43.0}/gea/fixtures/comcat_delaware_basin_2026-09.txt +0 -0
  164. {gea_program-0.41.0 → gea_program-0.43.0}/gea/fixtures/comcat_youngstown_2011-2012.txt +0 -0
  165. {gea_program-0.41.0 → gea_program-0.43.0}/gea/fixtures/ne_110m_coastline.json +0 -0
  166. {gea_program-0.41.0 → gea_program-0.43.0}/gea/follower.py +0 -0
  167. {gea_program-0.41.0 → gea_program-0.43.0}/gea/forward_model.py +0 -0
  168. {gea_program-0.41.0 → gea_program-0.43.0}/gea/friction_priors.py +0 -0
  169. {gea_program-0.41.0 → gea_program-0.43.0}/gea/gamma.py +0 -0
  170. {gea_program-0.41.0 → gea_program-0.43.0}/gea/gauge_aging.py +0 -0
  171. {gea_program-0.41.0 → gea_program-0.43.0}/gea/gauge_specs.py +0 -0
  172. {gea_program-0.41.0 → gea_program-0.43.0}/gea/geodesy.py +0 -0
  173. {gea_program-0.41.0 → gea_program-0.43.0}/gea/gravity_reference.py +0 -0
  174. {gea_program-0.41.0 → gea_program-0.43.0}/gea/hartip.py +0 -0
  175. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/TESTER_GUIDE.md +0 -0
  176. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/alarms.md +0 -0
  177. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/audit-update.md +0 -0
  178. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/backup.md +0 -0
  179. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/catalog.md +0 -0
  180. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/charts.md +0 -0
  181. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/conformance.md +0 -0
  182. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/control-room.md +0 -0
  183. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/data-in.md +0 -0
  184. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/dlis.md +0 -0
  185. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/doctor.md +0 -0
  186. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/drift.md +0 -0
  187. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/drillstring.md +0 -0
  188. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/economics.md +0 -0
  189. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/edr.md +0 -0
  190. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/etp.md +0 -0
  191. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/field-ports.md +0 -0
  192. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/files.md +0 -0
  193. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/historian.md +0 -0
  194. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/instruments.md +0 -0
  195. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/interval.md +0 -0
  196. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/map.md +0 -0
  197. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/month-end.md +0 -0
  198. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/notifications.md +0 -0
  199. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/osdu.md +0 -0
  200. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/patches.md +0 -0
  201. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/penetrator.md +0 -0
  202. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/ppdm.md +0 -0
  203. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/quakeml.md +0 -0
  204. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/quality.md +0 -0
  205. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/seedlink.md +0 -0
  206. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/seismic.md +0 -0
  207. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/setup.md +0 -0
  208. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/simulation.md +0 -0
  209. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/site.md +0 -0
  210. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/sites.md +0 -0
  211. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/slip.md +0 -0
  212. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/soak.md +0 -0
  213. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/sra.md +0 -0
  214. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/start.md +0 -0
  215. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/structure.md +0 -0
  216. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/tools.md +0 -0
  217. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/transients.md +0 -0
  218. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/upkeep.md +0 -0
  219. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/vibration.md +0 -0
  220. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/well-report.md +0 -0
  221. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/well-tests.md +0 -0
  222. {gea_program-0.41.0 → gea_program-0.43.0}/gea/help/well3d.md +0 -0
  223. {gea_program-0.41.0 → gea_program-0.43.0}/gea/housekeeping.py +0 -0
  224. {gea_program-0.41.0 → gea_program-0.43.0}/gea/interval.py +0 -0
  225. {gea_program-0.41.0 → gea_program-0.43.0}/gea/inverse_engine.py +0 -0
  226. {gea_program-0.41.0 → gea_program-0.43.0}/gea/jobs.py +0 -0
  227. {gea_program-0.41.0 → gea_program-0.43.0}/gea/live_ports.py +0 -0
  228. {gea_program-0.41.0 → gea_program-0.43.0}/gea/loadtest.py +0 -0
  229. {gea_program-0.41.0 → gea_program-0.43.0}/gea/matplotlib_demo.py +0 -0
  230. {gea_program-0.41.0 → gea_program-0.43.0}/gea/modbus.py +0 -0
  231. {gea_program-0.41.0 → gea_program-0.43.0}/gea/modbus_rtu.py +0 -0
  232. {gea_program-0.41.0 → gea_program-0.43.0}/gea/model_card.py +0 -0
  233. {gea_program-0.41.0 → gea_program-0.43.0}/gea/month_end.py +0 -0
  234. {gea_program-0.41.0 → gea_program-0.43.0}/gea/mqtt_port.py +0 -0
  235. {gea_program-0.41.0 → gea_program-0.43.0}/gea/notify.py +0 -0
  236. {gea_program-0.41.0 → gea_program-0.43.0}/gea/opcua_port.py +0 -0
  237. {gea_program-0.41.0 → gea_program-0.43.0}/gea/operator_app.py +0 -0
  238. {gea_program-0.41.0 → gea_program-0.43.0}/gea/osdu.py +0 -0
  239. {gea_program-0.41.0 → gea_program-0.43.0}/gea/patches.py +0 -0
  240. {gea_program-0.41.0 → gea_program-0.43.0}/gea/penetrator.py +0 -0
  241. {gea_program-0.41.0 → gea_program-0.43.0}/gea/permits.py +0 -0
  242. {gea_program-0.41.0 → gea_program-0.43.0}/gea/piwebapi.py +0 -0
  243. {gea_program-0.41.0 → gea_program-0.43.0}/gea/ports.py +0 -0
  244. {gea_program-0.41.0 → gea_program-0.43.0}/gea/ppdm.py +0 -0
  245. {gea_program-0.41.0 → gea_program-0.43.0}/gea/profile_catalog.py +0 -0
  246. {gea_program-0.41.0 → gea_program-0.43.0}/gea/project.py +0 -0
  247. {gea_program-0.41.0 → gea_program-0.43.0}/gea/qt6_downhole_app.py +0 -0
  248. {gea_program-0.41.0 → gea_program-0.43.0}/gea/quakeml.py +0 -0
  249. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reconciler.py +0 -0
  250. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/IU_ANMO_10_BHZ_response.provenance.json +0 -0
  251. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/IU_ANMO_10_BHZ_response.xml +0 -0
  252. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/eia_henry_hub_daily.csv.gz +0 -0
  253. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/eia_prices.provenance.json +0 -0
  254. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/eia_wti_daily.csv.gz +0 -0
  255. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/libmseed_steim.provenance.json +0 -0
  256. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/libmseed_steim1_4096.mseed +0 -0
  257. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/libmseed_steim2_4096.mseed +0 -0
  258. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/libmseed_steim2_512.mseed +0 -0
  259. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/mud_motor_specs.json +0 -0
  260. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/penetrator_ratings.json +0 -0
  261. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/tool_sources.json +0 -0
  262. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/us_outline.json +0 -0
  263. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/us_outline.provenance.json +0 -0
  264. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_3d.provenance.json +0 -0
  265. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_f4_interpretation.las.gz +0 -0
  266. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_f4_logs.provenance.json +0 -0
  267. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_f4_lwd.las.gz +0 -0
  268. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_surfaces.json.gz +0 -0
  269. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_traj_F-10.xml.gz +0 -0
  270. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_traj_F-4.xml.gz +0 -0
  271. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_traj_F-5_12.25in.xml.gz +0 -0
  272. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_traj_F-5_17.5in.xml.gz +0 -0
  273. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_traj_F-5_36in.xml.gz +0 -0
  274. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_traj_F-5_8.5in.xml.gz +0 -0
  275. {gea_program-0.41.0 → gea_program-0.43.0}/gea/reference/volve_well_picks.csv.gz +0 -0
  276. {gea_program-0.41.0 → gea_program-0.43.0}/gea/rock_inventory.py +0 -0
  277. {gea_program-0.41.0 → gea_program-0.43.0}/gea/sample_record.py +0 -0
  278. {gea_program-0.41.0 → gea_program-0.43.0}/gea/sample_well_profile.csv +0 -0
  279. {gea_program-0.41.0 → gea_program-0.43.0}/gea/sbom.py +0 -0
  280. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seedlink.py +0 -0
  281. {gea_program-0.41.0 → gea_program-0.43.0}/gea/segy.py +0 -0
  282. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic.py +0 -0
  283. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_array.py +0 -0
  284. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_assoc.py +0 -0
  285. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_detect.py +0 -0
  286. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_film.py +0 -0
  287. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_harmonic.py +0 -0
  288. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_qc.py +0 -0
  289. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_response.py +0 -0
  290. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_signature.py +0 -0
  291. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_track.py +0 -0
  292. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_uncertainty.py +0 -0
  293. {gea_program-0.41.0 → gea_program-0.43.0}/gea/seismic_unlisted.py +0 -0
  294. {gea_program-0.41.0 → gea_program-0.43.0}/gea/sensor_swap.py +0 -0
  295. {gea_program-0.41.0 → gea_program-0.43.0}/gea/series_cache.py +0 -0
  296. {gea_program-0.41.0 → gea_program-0.43.0}/gea/service_life.py +0 -0
  297. {gea_program-0.41.0 → gea_program-0.43.0}/gea/setup_checklist.py +0 -0
  298. {gea_program-0.41.0 → gea_program-0.43.0}/gea/shapefile.py +0 -0
  299. {gea_program-0.41.0 → gea_program-0.43.0}/gea/shell.py +0 -0
  300. {gea_program-0.41.0 → gea_program-0.43.0}/gea/shut_in.py +0 -0
  301. {gea_program-0.41.0 → gea_program-0.43.0}/gea/simulation.py +0 -0
  302. {gea_program-0.41.0 → gea_program-0.43.0}/gea/site_map.py +0 -0
  303. {gea_program-0.41.0 → gea_program-0.43.0}/gea/sla_report.py +0 -0
  304. {gea_program-0.41.0 → gea_program-0.43.0}/gea/slip.py +0 -0
  305. {gea_program-0.41.0 → gea_program-0.43.0}/gea/soak.py +0 -0
  306. {gea_program-0.41.0 → gea_program-0.43.0}/gea/sra.py +0 -0
  307. {gea_program-0.41.0 → gea_program-0.43.0}/gea/store_forward.py +0 -0
  308. {gea_program-0.41.0 → gea_program-0.43.0}/gea/strata_join.py +0 -0
  309. {gea_program-0.41.0 → gea_program-0.43.0}/gea/structure.py +0 -0
  310. {gea_program-0.41.0 → gea_program-0.43.0}/gea/supervisor.py +0 -0
  311. {gea_program-0.41.0 → gea_program-0.43.0}/gea/survey_cmd.py +0 -0
  312. {gea_program-0.41.0 → gea_program-0.43.0}/gea/survey_view.py +0 -0
  313. {gea_program-0.41.0 → gea_program-0.43.0}/gea/telemetry.py +0 -0
  314. {gea_program-0.41.0 → gea_program-0.43.0}/gea/tool_catalog.py +0 -0
  315. {gea_program-0.41.0 → gea_program-0.43.0}/gea/tool_library.py +0 -0
  316. {gea_program-0.41.0 → gea_program-0.43.0}/gea/tool_taxonomy.py +0 -0
  317. {gea_program-0.41.0 → gea_program-0.43.0}/gea/transient.py +0 -0
  318. {gea_program-0.41.0 → gea_program-0.43.0}/gea/vibration.py +0 -0
  319. {gea_program-0.41.0 → gea_program-0.43.0}/gea/well3d.py +0 -0
  320. {gea_program-0.41.0 → gea_program-0.43.0}/gea/well_assembler.py +0 -0
  321. {gea_program-0.41.0 → gea_program-0.43.0}/gea/well_report.py +0 -0
  322. {gea_program-0.41.0 → gea_program-0.43.0}/gea/well_test_validation.py +0 -0
  323. {gea_program-0.41.0 → gea_program-0.43.0}/gea/wits0.py +0 -0
  324. {gea_program-0.41.0 → gea_program-0.43.0}/gea/witsml.py +0 -0
  325. {gea_program-0.41.0 → gea_program-0.43.0}/gea/workspace.py +0 -0
  326. {gea_program-0.41.0 → gea_program-0.43.0}/gea_program.egg-info/dependency_links.txt +0 -0
  327. {gea_program-0.41.0 → gea_program-0.43.0}/gea_program.egg-info/entry_points.txt +0 -0
  328. {gea_program-0.41.0 → gea_program-0.43.0}/gea_program.egg-info/requires.txt +0 -0
  329. {gea_program-0.41.0 → gea_program-0.43.0}/gea_program.egg-info/top_level.txt +0 -0
  330. {gea_program-0.41.0 → gea_program-0.43.0}/setup.cfg +0 -0
  331. {gea_program-0.41.0 → gea_program-0.43.0}/tests/test_acceptance.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gea-program
3
- Version: 0.41.0
3
+ Version: 0.43.0
4
4
  Summary: GEA-Program: downhole gauge monitoring - canonical measurement records, quality rules, drift evaluation with a re-fit change log, well-test validation, alarm management, model cards, store-and-forward, monthly SLA measurement, FAT/SAT protocols and a dashboard, generated from live objects in the client's reporting outline.
5
5
  Author: Daniel T. Murphy
6
6
  License: MPL-2.0
@@ -648,6 +648,33 @@ against it; `gea seedlink --config ... --hello` prints what a server says of
648
648
  itself; `gea help seedlink`. A TexNet station is served by EarthScope at
649
649
  `rtserve.iris.washington.edu:18000`, network `TX`.
650
650
 
651
+ ### Report history and the signed dossier
652
+
653
+ Every client report a workspace writes is kept, version by version, under
654
+ `reports\history\` with each file's SHA-256, so pressing a report button
655
+ again no longer loses the last one; the Reports tab lists every version.
656
+ The signed dossier puts a well's - or the pad's - reports, declarations,
657
+ audit log and source-record hashes in one zip, signed with the site's own
658
+ Ed25519 key (made on the site's machine, never sent anywhere), with a
659
+ checker inside that anyone can run with plain Python: VALID when the
660
+ signature and every file's hash hold, and inside the workspace a check that
661
+ the source records and the audit log still match what was signed.
662
+ `gea dossier`, `gea reports-history`, `gea help dossier`.
663
+
664
+ ### Operations and seismicity
665
+
666
+ The Operations & Seismicity tab sets each well's drilling, completion and
667
+ disposal windows against the earthquake catalogue around it: every event
668
+ within the screening distance by its distance and time, whether it fell
669
+ during an operation or in the months after, what the rig was doing when a
670
+ drilling record covers it, the level a regulator's protocol would reach
671
+ (British Columbia, Alberta, Oklahoma, Ohio, Texas, each with its
672
+ document), and the exact test of whether the rate near the well is higher
673
+ while it works than in the rest of the record. The Mahoning Valley, Ohio -
674
+ the 2011 Youngstown sequence against the Northstar 1 injection year, the
675
+ 2014 Poland Township events against a stimulation - ships as a worked
676
+ example from the public record. `gea seismicity`, `gea help opseis`.
677
+
651
678
  ### The declarations sheet
652
679
 
653
680
  Everything the operator declares about a pad comes in from one spreadsheet:
@@ -609,6 +609,33 @@ against it; `gea seedlink --config ... --hello` prints what a server says of
609
609
  itself; `gea help seedlink`. A TexNet station is served by EarthScope at
610
610
  `rtserve.iris.washington.edu:18000`, network `TX`.
611
611
 
612
+ ### Report history and the signed dossier
613
+
614
+ Every client report a workspace writes is kept, version by version, under
615
+ `reports\history\` with each file's SHA-256, so pressing a report button
616
+ again no longer loses the last one; the Reports tab lists every version.
617
+ The signed dossier puts a well's - or the pad's - reports, declarations,
618
+ audit log and source-record hashes in one zip, signed with the site's own
619
+ Ed25519 key (made on the site's machine, never sent anywhere), with a
620
+ checker inside that anyone can run with plain Python: VALID when the
621
+ signature and every file's hash hold, and inside the workspace a check that
622
+ the source records and the audit log still match what was signed.
623
+ `gea dossier`, `gea reports-history`, `gea help dossier`.
624
+
625
+ ### Operations and seismicity
626
+
627
+ The Operations & Seismicity tab sets each well's drilling, completion and
628
+ disposal windows against the earthquake catalogue around it: every event
629
+ within the screening distance by its distance and time, whether it fell
630
+ during an operation or in the months after, what the rig was doing when a
631
+ drilling record covers it, the level a regulator's protocol would reach
632
+ (British Columbia, Alberta, Oklahoma, Ohio, Texas, each with its
633
+ document), and the exact test of whether the rate near the well is higher
634
+ while it works than in the rest of the record. The Mahoning Valley, Ohio -
635
+ the 2011 Youngstown sequence against the Northstar 1 injection year, the
636
+ 2014 Poland Township events against a stimulation - ships as a worked
637
+ example from the public record. `gea seismicity`, `gea help opseis`.
638
+
612
639
  ### The declarations sheet
613
640
 
614
641
  Everything the operator declares about a pad comes in from one spreadsheet:
@@ -123,7 +123,7 @@ from .profile_catalog import (
123
123
  read_pangaea_txt,
124
124
  )
125
125
 
126
- __version__ = "0.41.0"
126
+ __version__ = "0.43.0"
127
127
  __all__ = [
128
128
  "aging_rate", "rate_psi_yr", "accuracy_psi",
129
129
  "Sensor", "SimulatorConfig", "DownholeEngine",
@@ -539,6 +539,52 @@ def main(argv=None) -> int:
539
539
  p_pn.add_argument("--actor", type=str, default="cli")
540
540
  p_pn.add_argument("--json", action="store_true")
541
541
 
542
+ p_os = sub.add_parser("seismicity", help="operations and seismicity: each well's drilling, completion and disposal windows against the earthquake catalogue around it - the events during and after each, the levels a regulator's protocol would reach, and the rate during operations against the rest of the record; the Mahoning Valley worked example")
543
+ p_os.add_argument("--workspace", type=str, default=None)
544
+ p_os.add_argument("--scene", type=str, default=None, choices=("workspace", "mahoning"), help="your wells (the default with --workspace) or the public worked example")
545
+ p_os.add_argument("--protocol", type=str, default=None, help="a protocol id (--protocols lists them)")
546
+ p_os.add_argument("--radius-km", type=float, default=None, help="the association radius (default 5 km)")
547
+ p_os.add_argument("--screen-km", type=float, default=None, help="the screening distance (default 20 km)")
548
+ p_os.add_argument("--post-days", type=float, default=None, help="the association window after an operation ends (default 90 days)")
549
+ p_os.add_argument("--mc", type=float, default=None, help="the completeness magnitude counted in the rate (default the catalogue's minimum)")
550
+ p_os.add_argument("--set", action="store_true", help="keep --protocol, --radius-km, --screen-km, --post-days and --mc as this workspace's settings")
551
+ p_os.add_argument("--protocols", action="store_true", help="list the protocols and their levels")
552
+ p_os.add_argument("--query", action="store_true", help="print the ComCat query for the workspace's wells (run it where the catalogue service is reachable)")
553
+ p_os.add_argument("--attach", type=str, default=None, help="a catalogue export to attach (with --start --end --min-magnitude --lat --lon --catalog-radius-km --source)")
554
+ p_os.add_argument("--start", type=str, default=None)
555
+ p_os.add_argument("--end", type=str, default=None)
556
+ p_os.add_argument("--min-magnitude", type=float, default=None)
557
+ p_os.add_argument("--lat", type=float, default=None)
558
+ p_os.add_argument("--lon", type=float, default=None)
559
+ p_os.add_argument("--catalog-radius-km", type=float, default=None)
560
+ p_os.add_argument("--source", type=str, default="")
561
+ p_os.add_argument("--declare-op", action="store_true", help="declare an operation window (with --well --kind --start [--end] --source)")
562
+ p_os.add_argument("--well", type=str, default=None)
563
+ p_os.add_argument("--kind", type=str, default=None, choices=("drilling", "completion", "disposal", "injection", "other"))
564
+ p_os.add_argument("--remove-op", type=str, default=None)
565
+ p_os.add_argument("--remove-catalog", type=str, default=None)
566
+ p_os.add_argument("--actor", type=str, default="cli")
567
+ p_os.add_argument("--json", action="store_true")
568
+
569
+ p_dz = sub.add_parser("dossier", help="the signed dossier: a well's (or the pad's) reports, declarations, audit log and source hashes in one zip, signed with the site's Ed25519 key, with a checker anyone can run without this program")
570
+ p_dz.add_argument("--workspace", type=str, default=None)
571
+ p_dz.add_argument("--well", type=str, default=None, help="a well; without it, the pad (every well and the site reports)")
572
+ p_dz.add_argument("--include-sources", action="store_true", help="embed the source records (by default they are listed by hash)")
573
+ p_dz.add_argument("--verify", type=str, default=None, help="a dossier to check (with --workspace, also against this site)")
574
+ p_dz.add_argument("--sources", type=str, default="", help="with --verify: a folder holding the source records to check against their hashes")
575
+ p_dz.add_argument("--key", action="store_true", help="print this site's signing key fingerprint")
576
+ p_dz.add_argument("--list", action="store_true", help="list the dossiers this site has signed")
577
+ p_dz.add_argument("--actor", type=str, default="cli")
578
+ p_dz.add_argument("--json", action="store_true")
579
+
580
+ p_rh = sub.add_parser("reports-history", help="every version of every client report this workspace has written, kept under reports/history; --prune keeps the newest N")
581
+ p_rh.add_argument("--workspace", type=str, required=True)
582
+ p_rh.add_argument("--family", type=str, default=None, help="e.g. wells/Well-1/well_report or pad_report")
583
+ p_rh.add_argument("--prune", action="store_true")
584
+ p_rh.add_argument("--keep", type=int, default=0)
585
+ p_rh.add_argument("--apply", action="store_true", help="with --prune: remove (without it, list what would go)")
586
+ p_rh.add_argument("--json", action="store_true")
587
+
542
588
  p_sm = sub.add_parser("simulation", help="the simulation in words: the scenes (Volve 15/9-F-4 with its logs and interpretation, Volve F-5 and F-10 on the survey clock, every drilling-recorder well), and what the record says at a depth (the Simulation tab replays it)")
543
589
  p_sm.add_argument("--workspace", type=str, default=None)
544
590
  p_sm.add_argument("--scene", type=str, default=None, help="e.g. volve-f4, or well:Well-30636033")
@@ -2144,6 +2190,122 @@ def main(argv=None) -> int:
2144
2190
  raise SystemExit(f"penetrator: {e.args[0] if e.args else e}")
2145
2191
  print(_json.dumps(p, default=str) if a.json else _PN.text(p))
2146
2192
  return 0
2193
+ elif a.cmd == "seismicity":
2194
+ import json as _json
2195
+ from . import op_seismicity as _OS
2196
+ from .cli import _safe_stdout
2197
+ from .workspace import Workspace, WorkspaceError
2198
+ _safe_stdout()
2199
+ if a.protocols:
2200
+ for p_ in _OS.protocols()["protocols"]:
2201
+ print(f"{p_['id']}: {p_['name']} - within {p_['radius_km'] if p_['radius_km'] is not None else 'the permit distance'} km of {p_['radius_from']}; covers {', '.join(p_['applies_to'])}")
2202
+ for lv in p_["levels"]:
2203
+ print(f" M {lv['m']:g}{' (' + lv['condition'] + ')' if lv.get('condition') else ''}: {lv['action']}")
2204
+ print(f" {p_['document']} - {p_['url']}{' (a secondary summary)' if p_['source_kind'] == 'secondary' else ''}")
2205
+ return 0
2206
+ ws = None
2207
+ if a.workspace:
2208
+ try:
2209
+ ws = Workspace(a.workspace)
2210
+ except WorkspaceError as e:
2211
+ raise SystemExit(f"seismicity: {e}")
2212
+ try:
2213
+ if a.attach:
2214
+ if ws is None:
2215
+ raise SystemExit("seismicity: --attach needs --workspace")
2216
+ with open(a.attach, "rb") as f:
2217
+ r = _OS.attach_catalog(ws, a.actor, os.path.basename(a.attach), f.read(), a.start, a.end, a.min_magnitude, a.lat, a.lon, a.catalog_radius_km, a.source)
2218
+ print(f"attached {r['file']}: {r['n_events']} event(s), {r['start']} to {r['end']}, M >= {r['min_magnitude']:g}")
2219
+ return 0
2220
+ if a.declare_op:
2221
+ if ws is None or not a.well or not a.kind:
2222
+ raise SystemExit("seismicity: --declare-op needs --workspace, --well and --kind")
2223
+ r = _OS.save_operation(ws, a.actor, a.well, a.kind, a.start, a.end, a.source)
2224
+ print(f"declared {r['id']}: {r['kind']} on {r['well_id']}, {r['start']} to {r['end'] or 'open'}")
2225
+ return 0
2226
+ if a.remove_op:
2227
+ _OS.remove_operation(ws, a.actor, a.remove_op); print(f"removed {a.remove_op}"); return 0
2228
+ if a.remove_catalog:
2229
+ _OS.remove_catalog(ws, a.actor, a.remove_catalog); print(f"removed {a.remove_catalog}"); return 0
2230
+ over = {k: v for k, v in (("protocol", a.protocol), ("radius_km", a.radius_km), ("screen_km", a.screen_km), ("post_days", a.post_days), ("mc", a.mc)) if v is not None}
2231
+ if a.set:
2232
+ if ws is None:
2233
+ raise SystemExit("seismicity: --set needs --workspace")
2234
+ s_ = _OS.set_settings(ws, a.actor, over.get("protocol"), over.get("radius_km"), over.get("screen_km"), over.get("post_days"), over.get("mc"))
2235
+ print("settings: " + ", ".join(f"{k} {v}" for k, v in s_.items()))
2236
+ return 0
2237
+ if over.get("protocol"):
2238
+ _OS.protocol(over["protocol"])
2239
+ r = _OS.page(ws, a.scene or ("workspace" if ws is not None else "mahoning"), over or None)
2240
+ except (ValueError, KeyError, OSError) as e:
2241
+ raise SystemExit(f"seismicity: {e.args[0] if e.args else e}")
2242
+ if a.query:
2243
+ q = r.get("query")
2244
+ print(q["url"] if q else "no well of the workspace has a surface position yet: declare one first")
2245
+ return 0
2246
+ print(_json.dumps(r, default=str) if a.json else _OS.text(r))
2247
+ return 0
2248
+ elif a.cmd == "dossier":
2249
+ import json as _json
2250
+ from . import dossier as _DZ
2251
+ from .cli import _safe_stdout
2252
+ from .workspace import Workspace, WorkspaceError
2253
+ _safe_stdout()
2254
+ ws = None
2255
+ if a.workspace:
2256
+ try:
2257
+ ws = Workspace(a.workspace)
2258
+ except WorkspaceError as e:
2259
+ raise SystemExit(f"dossier: {e}")
2260
+ if a.verify:
2261
+ r = _DZ.verify(a.verify, ws, a.sources)
2262
+ print(_json.dumps(r, default=str) if a.json else _DZ.text(r))
2263
+ return 0 if r["status"] == "VALID" else 1
2264
+ if ws is None:
2265
+ raise SystemExit("dossier: give --workspace (or --verify FILE)")
2266
+ if a.key:
2267
+ k = _DZ.key_info(ws)
2268
+ print(f"Ed25519 {k['fingerprint']} (public key {k['public_key']}, made {k['created_utc']})" if k else "no signing key yet: the first dossier makes one")
2269
+ return 0
2270
+ if a.list:
2271
+ for e in reversed(_DZ.ledger(ws)):
2272
+ print(f"{e['utc']} {e['dossier_id']} {e['display']:<24} {e['n_files']:>4} files {e['path']}")
2273
+ return 0
2274
+ try:
2275
+ e = _DZ.build(ws, a.actor, __version__, a.well, a.include_sources)
2276
+ except (KeyError, ValueError) as ex:
2277
+ raise SystemExit(f"dossier: {ex.args[0] if ex.args else ex}")
2278
+ print(f"signed {e['dossier_id']}: {e['display']}, {e['n_files']} file(s), {e['n_sources']} source record(s) {'embedded' if e['sources_embedded'] else 'by hash'}")
2279
+ print(f" {os.path.join(ws.reports_dir, e['path'])}")
2280
+ print(f" key fingerprint {e['fingerprint']}")
2281
+ return 0
2282
+ elif a.cmd == "reports-history":
2283
+ import json as _json
2284
+ from . import report_history as _RH
2285
+ from .cli import _safe_stdout
2286
+ from .workspace import Workspace, WorkspaceError
2287
+ _safe_stdout()
2288
+ try:
2289
+ ws = Workspace(a.workspace)
2290
+ except WorkspaceError as e:
2291
+ raise SystemExit(f"reports-history: {e}")
2292
+ if a.prune:
2293
+ if a.keep < 1:
2294
+ raise SystemExit("reports-history: --prune needs --keep N (at least 1)")
2295
+ r = _RH.prune(ws.reports_dir, a.keep, a.family, a.apply)
2296
+ print(f"{'removed' if r['applied'] else 'would remove'} {len(r['removed'])} version(s), {r['bytes_freed']:,} bytes" + ("" if r['applied'] else " - add --apply to remove them"))
2297
+ return 0
2298
+ sm = _RH.summary(ws.reports_dir)
2299
+ if a.json:
2300
+ print(_json.dumps(sm, default=str)); return 0
2301
+ print(f"{sm['n_versions']} version(s) of {len(sm['families'])} report(s), {sm['bytes']:,} bytes under {os.path.join(ws.reports_dir, 'history')}")
2302
+ for f_ in sm["families"]:
2303
+ if a.family and f_["family"] != a.family:
2304
+ continue
2305
+ print(f" {f_['family']}: {f_['n']} version(s)")
2306
+ for v in f_["versions"][: (50 if a.family else 3)]:
2307
+ print(f" {v['utc']} {v.get('report_id') or ''} reports/{v['dir']}")
2308
+ return 0
2147
2309
  elif a.cmd == "simulation":
2148
2310
  import json as _json
2149
2311
  from . import simulation as _SIM