gea-program 0.40.0__tar.gz → 0.42.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 (325) hide show
  1. {gea_program-0.40.0 → gea_program-0.42.0}/PKG-INFO +40 -3
  2. {gea_program-0.40.0 → gea_program-0.42.0}/README.md +39 -2
  3. {gea_program-0.40.0 → gea_program-0.42.0}/gea/__init__.py +1 -1
  4. {gea_program-0.40.0 → gea_program-0.42.0}/gea/__main__.py +152 -0
  5. {gea_program-0.40.0 → gea_program-0.42.0}/gea/acceptance_tests.py +470 -5
  6. gea_program-0.42.0/gea/declarations.py +672 -0
  7. {gea_program-0.40.0 → gea_program-0.42.0}/gea/fixtures/README.md +6 -0
  8. gea_program-0.42.0/gea/fixtures/comcat_mahoning_1990-2026.txt +22 -0
  9. gea_program-0.42.0/gea/help/declare.md +13 -0
  10. gea_program-0.42.0/gea/help/opseis.md +13 -0
  11. gea_program-0.42.0/gea/help/penetrator.md +15 -0
  12. {gea_program-0.40.0 → gea_program-0.42.0}/gea/helplib.py +4 -1
  13. gea_program-0.42.0/gea/op_seismicity.py +625 -0
  14. gea_program-0.42.0/gea/penetrator.py +520 -0
  15. gea_program-0.42.0/gea/reference/mahoning_example.json +48 -0
  16. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/mud_motor_specs.json +52 -2
  17. gea_program-0.42.0/gea/reference/penetrator_ratings.json +75 -0
  18. gea_program-0.42.0/gea/reference/seismicity_protocols.json +95 -0
  19. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/tool_sources.json +21 -0
  20. {gea_program-0.40.0 → gea_program-0.42.0}/gea/service.py +74 -0
  21. {gea_program-0.40.0 → gea_program-0.42.0}/gea/tool_taxonomy.py +10 -1
  22. {gea_program-0.40.0 → gea_program-0.42.0}/gea/web/app.html +174 -2
  23. {gea_program-0.40.0 → gea_program-0.42.0}/gea_program.egg-info/PKG-INFO +40 -3
  24. {gea_program-0.40.0 → gea_program-0.42.0}/gea_program.egg-info/SOURCES.txt +10 -0
  25. {gea_program-0.40.0 → gea_program-0.42.0}/pyproject.toml +1 -1
  26. {gea_program-0.40.0 → gea_program-0.42.0}/LICENSE +0 -0
  27. {gea_program-0.40.0 → gea_program-0.42.0}/gea/BENCH_TEST_PROTOCOL.md +0 -0
  28. {gea_program-0.40.0 → gea_program-0.42.0}/gea/accuracy_statement.py +0 -0
  29. {gea_program-0.40.0 → gea_program-0.42.0}/gea/alarm_engine.py +0 -0
  30. {gea_program-0.40.0 → gea_program-0.42.0}/gea/backup.py +0 -0
  31. {gea_program-0.40.0 → gea_program-0.42.0}/gea/bench.py +0 -0
  32. {gea_program-0.40.0 → gea_program-0.42.0}/gea/blind_harness.py +0 -0
  33. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
  34. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/acex_lomonosov_age_depth_model.txt +0 -0
  35. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/agassiz77_canada_temperature.csv +0 -0
  36. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/agassiz77_canada_temperature.provenance.json +0 -0
  37. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/barbados_110_consolidation.provenance.json +0 -0
  38. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/barbados_110_consolidation.txt +0 -0
  39. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/bengal_u1452_grain_size.provenance.json +0 -0
  40. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/bengal_u1452_grain_size.txt +0 -0
  41. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/blake_164_methane_isotopes.provenance.json +0 -0
  42. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/blake_164_methane_isotopes.txt +0 -0
  43. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
  44. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
  45. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/collingwood_1_28_ks_complete.las +0 -0
  46. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
  47. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/costa_rica_odp_friction_envelope.provenance.json +0 -0
  48. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/costa_rica_odp_friction_envelope.txt +0 -0
  49. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +0 -0
  50. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +0 -0
  51. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
  52. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/dsdp_504b_physical_properties.txt +0 -0
  53. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
  54. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/dsdp_504b_sound_velocity.txt +0 -0
  55. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/elgygytgyn_5011_turbidites.provenance.json +0 -0
  56. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/elgygytgyn_5011_turbidites.txt +0 -0
  57. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/epica_domec_co2_800kyr.provenance.json +0 -0
  58. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/epica_domec_co2_800kyr.txt +0 -0
  59. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/fram_909_organic_petrography.provenance.json +0 -0
  60. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/fram_909_organic_petrography.txt +0 -0
  61. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/gbr_325_coral_uth_ages.provenance.json +0 -0
  62. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/gbr_325_coral_uth_ages.txt +0 -0
  63. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/gisp2_greenland_temperature.csv +0 -0
  64. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/gisp2_greenland_temperature.provenance.json +0 -0
  65. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/gom_308_t2p_insitu.provenance.json +0 -0
  66. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/gom_308_t2p_insitu.txt +0 -0
  67. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/guaymas_385_dom_d13c.provenance.json +0 -0
  68. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/guaymas_385_dom_d13c.txt +0 -0
  69. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +0 -0
  70. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/hikurangi_u1520_friction_insitu.txt +0 -0
  71. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +0 -0
  72. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +0 -0
  73. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
  74. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/iodp_u1324_pore_pressure.txt +0 -0
  75. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/jfast_c0019_slow_slip_events.provenance.json +0 -0
  76. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/jfast_c0019_slow_slip_events.txt +0 -0
  77. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/kennetcook_2_p129_excerpt.las +0 -0
  78. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
  79. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_hb_bhgm_density.dat +0 -0
  80. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
  81. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +0 -0
  82. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_hb_complog_6020_excerpt.txt +0 -0
  83. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_hb_hlog246_temperature.dat +0 -0
  84. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
  85. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_hb_rockmech_compress.dat +0 -0
  86. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
  87. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
  88. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
  89. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_vb_rockmech_compress.dat +0 -0
  90. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
  91. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_vb_vlog251_temperature.dat +0 -0
  92. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
  93. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/l06_06_nl_survey.csv +0 -0
  94. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/l06_06_nl_survey.provenance.json +0 -0
  95. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/l07_01_nl_excerpt.las +0 -0
  96. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/l07_01_nl_excerpt.provenance.json +0 -0
  97. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +0 -0
  98. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/mariana_1200_serpentinite_geochem.txt +0 -0
  99. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/med_160_sapropels.provenance.json +0 -0
  100. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/med_160_sapropels.txt +0 -0
  101. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
  102. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/nankai_megasplay_shear_strength.txt +0 -0
  103. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
  104. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_1027b_thermal_conductivity.txt +0 -0
  105. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
  106. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_1027c_cork_temperature.txt +0 -0
  107. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
  108. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_1165b_thermal_conductivity.txt +0 -0
  109. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
  110. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
  111. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
  112. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
  113. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
  114. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
  115. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
  116. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
  117. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/peru_201_sulfate_reduction.provenance.json +0 -0
  118. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/peru_201_sulfate_reduction.txt +0 -0
  119. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/scorpio_e1_sa_excerpt.las +0 -0
  120. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
  121. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/sumatra_362_cohesion.provenance.json +0 -0
  122. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/sumatra_362_cohesion.txt +0 -0
  123. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/university_6_17_no1_tx_excerpt.las +0 -0
  124. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
  125. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ursa_308_xrd_mineralogy.provenance.json +0 -0
  126. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/ursa_308_xrd_mineralogy.txt +0 -0
  127. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/volve_15_9_19_sr_excerpt.las +0 -0
  128. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
  129. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
  130. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
  131. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/volve_f12_f14_production_excerpt.csv +0 -0
  132. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
  133. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/walvis_208_petm_carbonate.provenance.json +0 -0
  134. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/walvis_208_petm_carbonate.txt +0 -0
  135. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/woodlark_1109_rock_eval.provenance.json +0 -0
  136. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog/woodlark_1109_rock_eval.txt +0 -0
  137. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog_map.py +0 -0
  138. {gea_program-0.40.0 → gea_program-0.42.0}/gea/catalog_register.py +0 -0
  139. {gea_program-0.40.0 → gea_program-0.42.0}/gea/certificates.py +0 -0
  140. {gea_program-0.40.0 → gea_program-0.42.0}/gea/cli.py +0 -0
  141. {gea_program-0.40.0 → gea_program-0.42.0}/gea/client_reports.py +0 -0
  142. {gea_program-0.40.0 → gea_program-0.42.0}/gea/config_versioning.py +0 -0
  143. {gea_program-0.40.0 → gea_program-0.42.0}/gea/conformance.py +0 -0
  144. {gea_program-0.40.0 → gea_program-0.42.0}/gea/control_room.py +0 -0
  145. {gea_program-0.40.0 → gea_program-0.42.0}/gea/correlation.py +0 -0
  146. {gea_program-0.40.0 → gea_program-0.42.0}/gea/dashboard.py +0 -0
  147. {gea_program-0.40.0 → gea_program-0.42.0}/gea/deviation.py +0 -0
  148. {gea_program-0.40.0 → gea_program-0.42.0}/gea/dlis.py +0 -0
  149. {gea_program-0.40.0 → gea_program-0.42.0}/gea/dnp3.py +0 -0
  150. {gea_program-0.40.0 → gea_program-0.42.0}/gea/doctor.py +0 -0
  151. {gea_program-0.40.0 → gea_program-0.42.0}/gea/downhole_engine.py +0 -0
  152. {gea_program-0.40.0 → gea_program-0.42.0}/gea/drift_monitor.py +0 -0
  153. {gea_program-0.40.0 → gea_program-0.42.0}/gea/drill_string.py +0 -0
  154. {gea_program-0.40.0 → gea_program-0.42.0}/gea/earth_model.py +0 -0
  155. {gea_program-0.40.0 → gea_program-0.42.0}/gea/economics.py +0 -0
  156. {gea_program-0.40.0 → gea_program-0.42.0}/gea/edr.py +0 -0
  157. {gea_program-0.40.0 → gea_program-0.42.0}/gea/elevation.py +0 -0
  158. {gea_program-0.40.0 → gea_program-0.42.0}/gea/etp.py +0 -0
  159. {gea_program-0.40.0 → gea_program-0.42.0}/gea/etp12_schemas.json +0 -0
  160. {gea_program-0.40.0 → gea_program-0.42.0}/gea/example_register_map.json +0 -0
  161. {gea_program-0.40.0 → gea_program-0.42.0}/gea/fat_sat.py +0 -0
  162. {gea_program-0.40.0 → gea_program-0.42.0}/gea/files.py +0 -0
  163. {gea_program-0.40.0 → gea_program-0.42.0}/gea/fixtures/comcat_delaware_basin_2026-09.txt +0 -0
  164. {gea_program-0.40.0 → gea_program-0.42.0}/gea/fixtures/comcat_youngstown_2011-2012.txt +0 -0
  165. {gea_program-0.40.0 → gea_program-0.42.0}/gea/fixtures/ne_110m_coastline.json +0 -0
  166. {gea_program-0.40.0 → gea_program-0.42.0}/gea/follower.py +0 -0
  167. {gea_program-0.40.0 → gea_program-0.42.0}/gea/forward_model.py +0 -0
  168. {gea_program-0.40.0 → gea_program-0.42.0}/gea/friction_priors.py +0 -0
  169. {gea_program-0.40.0 → gea_program-0.42.0}/gea/gamma.py +0 -0
  170. {gea_program-0.40.0 → gea_program-0.42.0}/gea/gauge_aging.py +0 -0
  171. {gea_program-0.40.0 → gea_program-0.42.0}/gea/gauge_specs.py +0 -0
  172. {gea_program-0.40.0 → gea_program-0.42.0}/gea/geodesy.py +0 -0
  173. {gea_program-0.40.0 → gea_program-0.42.0}/gea/gravity_reference.py +0 -0
  174. {gea_program-0.40.0 → gea_program-0.42.0}/gea/hartip.py +0 -0
  175. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/TESTER_GUIDE.md +0 -0
  176. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/alarms.md +0 -0
  177. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/audit-update.md +0 -0
  178. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/backup.md +0 -0
  179. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/catalog.md +0 -0
  180. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/charts.md +0 -0
  181. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/conformance.md +0 -0
  182. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/control-room.md +0 -0
  183. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/data-in.md +0 -0
  184. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/dlis.md +0 -0
  185. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/doctor.md +0 -0
  186. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/drift.md +0 -0
  187. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/drillstring.md +0 -0
  188. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/economics.md +0 -0
  189. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/edr.md +0 -0
  190. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/etp.md +0 -0
  191. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/field-ports.md +0 -0
  192. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/files.md +0 -0
  193. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/historian.md +0 -0
  194. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/instruments.md +0 -0
  195. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/interval.md +0 -0
  196. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/map.md +0 -0
  197. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/month-end.md +0 -0
  198. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/notifications.md +0 -0
  199. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/osdu.md +0 -0
  200. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/patches.md +0 -0
  201. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/ppdm.md +0 -0
  202. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/quakeml.md +0 -0
  203. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/quality.md +0 -0
  204. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/seedlink.md +0 -0
  205. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/seismic.md +0 -0
  206. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/setup.md +0 -0
  207. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/simulation.md +0 -0
  208. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/site.md +0 -0
  209. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/sites.md +0 -0
  210. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/slip.md +0 -0
  211. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/soak.md +0 -0
  212. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/sra.md +0 -0
  213. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/start.md +0 -0
  214. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/structure.md +0 -0
  215. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/tools.md +0 -0
  216. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/transients.md +0 -0
  217. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/upkeep.md +0 -0
  218. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/vibration.md +0 -0
  219. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/well-report.md +0 -0
  220. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/well-tests.md +0 -0
  221. {gea_program-0.40.0 → gea_program-0.42.0}/gea/help/well3d.md +0 -0
  222. {gea_program-0.40.0 → gea_program-0.42.0}/gea/housekeeping.py +0 -0
  223. {gea_program-0.40.0 → gea_program-0.42.0}/gea/interval.py +0 -0
  224. {gea_program-0.40.0 → gea_program-0.42.0}/gea/inverse_engine.py +0 -0
  225. {gea_program-0.40.0 → gea_program-0.42.0}/gea/jobs.py +0 -0
  226. {gea_program-0.40.0 → gea_program-0.42.0}/gea/live_ports.py +0 -0
  227. {gea_program-0.40.0 → gea_program-0.42.0}/gea/loadtest.py +0 -0
  228. {gea_program-0.40.0 → gea_program-0.42.0}/gea/matplotlib_demo.py +0 -0
  229. {gea_program-0.40.0 → gea_program-0.42.0}/gea/modbus.py +0 -0
  230. {gea_program-0.40.0 → gea_program-0.42.0}/gea/modbus_rtu.py +0 -0
  231. {gea_program-0.40.0 → gea_program-0.42.0}/gea/model_card.py +0 -0
  232. {gea_program-0.40.0 → gea_program-0.42.0}/gea/month_end.py +0 -0
  233. {gea_program-0.40.0 → gea_program-0.42.0}/gea/mqtt_port.py +0 -0
  234. {gea_program-0.40.0 → gea_program-0.42.0}/gea/notify.py +0 -0
  235. {gea_program-0.40.0 → gea_program-0.42.0}/gea/opcua_port.py +0 -0
  236. {gea_program-0.40.0 → gea_program-0.42.0}/gea/operator_app.py +0 -0
  237. {gea_program-0.40.0 → gea_program-0.42.0}/gea/osdu.py +0 -0
  238. {gea_program-0.40.0 → gea_program-0.42.0}/gea/patches.py +0 -0
  239. {gea_program-0.40.0 → gea_program-0.42.0}/gea/permits.py +0 -0
  240. {gea_program-0.40.0 → gea_program-0.42.0}/gea/piwebapi.py +0 -0
  241. {gea_program-0.40.0 → gea_program-0.42.0}/gea/ports.py +0 -0
  242. {gea_program-0.40.0 → gea_program-0.42.0}/gea/ppdm.py +0 -0
  243. {gea_program-0.40.0 → gea_program-0.42.0}/gea/profile_catalog.py +0 -0
  244. {gea_program-0.40.0 → gea_program-0.42.0}/gea/project.py +0 -0
  245. {gea_program-0.40.0 → gea_program-0.42.0}/gea/qt6_downhole_app.py +0 -0
  246. {gea_program-0.40.0 → gea_program-0.42.0}/gea/quakeml.py +0 -0
  247. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reconciler.py +0 -0
  248. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/IU_ANMO_10_BHZ_response.provenance.json +0 -0
  249. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/IU_ANMO_10_BHZ_response.xml +0 -0
  250. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/eia_henry_hub_daily.csv.gz +0 -0
  251. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/eia_prices.provenance.json +0 -0
  252. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/eia_wti_daily.csv.gz +0 -0
  253. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/libmseed_steim.provenance.json +0 -0
  254. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/libmseed_steim1_4096.mseed +0 -0
  255. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/libmseed_steim2_4096.mseed +0 -0
  256. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/libmseed_steim2_512.mseed +0 -0
  257. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/us_outline.json +0 -0
  258. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/us_outline.provenance.json +0 -0
  259. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_3d.provenance.json +0 -0
  260. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_f4_interpretation.las.gz +0 -0
  261. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_f4_logs.provenance.json +0 -0
  262. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_f4_lwd.las.gz +0 -0
  263. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_surfaces.json.gz +0 -0
  264. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_traj_F-10.xml.gz +0 -0
  265. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_traj_F-4.xml.gz +0 -0
  266. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_traj_F-5_12.25in.xml.gz +0 -0
  267. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_traj_F-5_17.5in.xml.gz +0 -0
  268. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_traj_F-5_36in.xml.gz +0 -0
  269. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_traj_F-5_8.5in.xml.gz +0 -0
  270. {gea_program-0.40.0 → gea_program-0.42.0}/gea/reference/volve_well_picks.csv.gz +0 -0
  271. {gea_program-0.40.0 → gea_program-0.42.0}/gea/rock_inventory.py +0 -0
  272. {gea_program-0.40.0 → gea_program-0.42.0}/gea/sample_record.py +0 -0
  273. {gea_program-0.40.0 → gea_program-0.42.0}/gea/sample_well_profile.csv +0 -0
  274. {gea_program-0.40.0 → gea_program-0.42.0}/gea/sbom.py +0 -0
  275. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seedlink.py +0 -0
  276. {gea_program-0.40.0 → gea_program-0.42.0}/gea/segy.py +0 -0
  277. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic.py +0 -0
  278. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_array.py +0 -0
  279. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_assoc.py +0 -0
  280. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_detect.py +0 -0
  281. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_film.py +0 -0
  282. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_harmonic.py +0 -0
  283. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_qc.py +0 -0
  284. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_response.py +0 -0
  285. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_signature.py +0 -0
  286. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_track.py +0 -0
  287. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_uncertainty.py +0 -0
  288. {gea_program-0.40.0 → gea_program-0.42.0}/gea/seismic_unlisted.py +0 -0
  289. {gea_program-0.40.0 → gea_program-0.42.0}/gea/sensor_swap.py +0 -0
  290. {gea_program-0.40.0 → gea_program-0.42.0}/gea/series_cache.py +0 -0
  291. {gea_program-0.40.0 → gea_program-0.42.0}/gea/service_life.py +0 -0
  292. {gea_program-0.40.0 → gea_program-0.42.0}/gea/setup_checklist.py +0 -0
  293. {gea_program-0.40.0 → gea_program-0.42.0}/gea/shapefile.py +0 -0
  294. {gea_program-0.40.0 → gea_program-0.42.0}/gea/shell.py +0 -0
  295. {gea_program-0.40.0 → gea_program-0.42.0}/gea/shut_in.py +0 -0
  296. {gea_program-0.40.0 → gea_program-0.42.0}/gea/simulation.py +0 -0
  297. {gea_program-0.40.0 → gea_program-0.42.0}/gea/site_map.py +0 -0
  298. {gea_program-0.40.0 → gea_program-0.42.0}/gea/sla_report.py +0 -0
  299. {gea_program-0.40.0 → gea_program-0.42.0}/gea/slip.py +0 -0
  300. {gea_program-0.40.0 → gea_program-0.42.0}/gea/soak.py +0 -0
  301. {gea_program-0.40.0 → gea_program-0.42.0}/gea/sra.py +0 -0
  302. {gea_program-0.40.0 → gea_program-0.42.0}/gea/store_forward.py +0 -0
  303. {gea_program-0.40.0 → gea_program-0.42.0}/gea/strata_join.py +0 -0
  304. {gea_program-0.40.0 → gea_program-0.42.0}/gea/structure.py +0 -0
  305. {gea_program-0.40.0 → gea_program-0.42.0}/gea/supervisor.py +0 -0
  306. {gea_program-0.40.0 → gea_program-0.42.0}/gea/survey_cmd.py +0 -0
  307. {gea_program-0.40.0 → gea_program-0.42.0}/gea/survey_view.py +0 -0
  308. {gea_program-0.40.0 → gea_program-0.42.0}/gea/telemetry.py +0 -0
  309. {gea_program-0.40.0 → gea_program-0.42.0}/gea/tool_catalog.py +0 -0
  310. {gea_program-0.40.0 → gea_program-0.42.0}/gea/tool_library.py +0 -0
  311. {gea_program-0.40.0 → gea_program-0.42.0}/gea/transient.py +0 -0
  312. {gea_program-0.40.0 → gea_program-0.42.0}/gea/vibration.py +0 -0
  313. {gea_program-0.40.0 → gea_program-0.42.0}/gea/well3d.py +0 -0
  314. {gea_program-0.40.0 → gea_program-0.42.0}/gea/well_assembler.py +0 -0
  315. {gea_program-0.40.0 → gea_program-0.42.0}/gea/well_report.py +0 -0
  316. {gea_program-0.40.0 → gea_program-0.42.0}/gea/well_test_validation.py +0 -0
  317. {gea_program-0.40.0 → gea_program-0.42.0}/gea/wits0.py +0 -0
  318. {gea_program-0.40.0 → gea_program-0.42.0}/gea/witsml.py +0 -0
  319. {gea_program-0.40.0 → gea_program-0.42.0}/gea/workspace.py +0 -0
  320. {gea_program-0.40.0 → gea_program-0.42.0}/gea_program.egg-info/dependency_links.txt +0 -0
  321. {gea_program-0.40.0 → gea_program-0.42.0}/gea_program.egg-info/entry_points.txt +0 -0
  322. {gea_program-0.40.0 → gea_program-0.42.0}/gea_program.egg-info/requires.txt +0 -0
  323. {gea_program-0.40.0 → gea_program-0.42.0}/gea_program.egg-info/top_level.txt +0 -0
  324. {gea_program-0.40.0 → gea_program-0.42.0}/setup.cfg +0 -0
  325. {gea_program-0.40.0 → gea_program-0.42.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.40.0
3
+ Version: 0.42.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,43 @@ 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
+ ### Operations and seismicity
652
+
653
+ The Operations & Seismicity tab sets each well's drilling, completion and
654
+ disposal windows against the earthquake catalogue around it: every event
655
+ within the screening distance by its distance and time, whether it fell
656
+ during an operation or in the months after, what the rig was doing when a
657
+ drilling record covers it, the level a regulator's protocol would reach
658
+ (British Columbia, Alberta, Oklahoma, Ohio, Texas, each with its
659
+ document), and the exact test of whether the rate near the well is higher
660
+ while it works than in the rest of the record. The Mahoning Valley, Ohio -
661
+ the 2011 Youngstown sequence against the Northstar 1 injection year, the
662
+ 2014 Poland Township events against a stimulation - ships as a worked
663
+ example from the public record. `gea seismicity`, `gea help opseis`.
664
+
665
+ ### The declarations sheet
666
+
667
+ Everything the operator declares about a pad comes in from one spreadsheet:
668
+ each well's API number, position and reference elevation, its directional
669
+ survey, the day rates, one-off costs and AFE, the fleet, the drill-string
670
+ runs and their components, and the ESP penetrator and drive. Every row is
671
+ checked against the workspace and planned NEW, CHANGE or SAME before
672
+ anything is written; one error and nothing is. The sheet the program writes
673
+ for a workspace is already filled with what is declared, so a site fills in
674
+ the blanks. On the Setup tab, or `gea declare --template`, `gea declare
675
+ --file`, `gea help declare`.
676
+
677
+ ### Completion - the ESP wellhead penetrator
678
+
679
+ The Completion tab keeps each ESP well's penetrator installation record -
680
+ the installer and their certification, the motor, the gauge distance, the
681
+ insulation readings, the void test - and checks the well's ESP drive, motor
682
+ nameplate and wellhead against the penetrator's ratings as its maker's
683
+ document prints them, one line each: voltage, current, frequency, phases,
684
+ hazardous area, gas group, temperature class, ambient range and altitude.
685
+ It carries the permanent magnet motor safety note with its sources.
686
+ `gea penetrator`, `gea help penetrator`.
687
+
651
688
  ### Drill string
652
689
 
653
690
  The Drill String tab holds each run's string from the bit up - drawn as a
@@ -657,7 +694,7 @@ its declared service interval. The downhole motor tracker charts the
657
694
  differential against the maker's limits, the stalls, the motor's and the
658
695
  bit's speed and a torque estimate, and judges the motor's stability from
659
696
  the slow oscillations of the torque and the differential, block by block.
660
- The tool catalogue carries 41 downhole motors with the maker's figures.
697
+ The tool catalogue carries 43 downhole motors with the maker's figures.
661
698
  `gea drillstring`, `gea tools --action motors`, `gea help drillstring`.
662
699
 
663
700
  ### Simulation
@@ -785,7 +822,7 @@ library**: every class of downhole tool in use across the industry - bits
785
822
  and hole openers, motors and rotary steerable systems, MWD and LWD, the drill
786
823
  string and its subs, casing and cementing equipment, completion and
787
824
  artificial lift, wireline and cased-hole tools, fishing and milling, test
788
- tools - ninety-six classes in nine categories. Point at a tool, or Tab to
825
+ tools - ninety-seven classes in nine categories. Point at a tool, or Tab to
789
826
  it, for a one-line description; click, tap or press Enter for its tutorial:
790
827
  what it is, where it runs, how it works, what it shows in the data, what to
791
828
  watch, and what this program does with it, with the published figures
@@ -609,6 +609,43 @@ 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
+ ### Operations and seismicity
613
+
614
+ The Operations & Seismicity tab sets each well's drilling, completion and
615
+ disposal windows against the earthquake catalogue around it: every event
616
+ within the screening distance by its distance and time, whether it fell
617
+ during an operation or in the months after, what the rig was doing when a
618
+ drilling record covers it, the level a regulator's protocol would reach
619
+ (British Columbia, Alberta, Oklahoma, Ohio, Texas, each with its
620
+ document), and the exact test of whether the rate near the well is higher
621
+ while it works than in the rest of the record. The Mahoning Valley, Ohio -
622
+ the 2011 Youngstown sequence against the Northstar 1 injection year, the
623
+ 2014 Poland Township events against a stimulation - ships as a worked
624
+ example from the public record. `gea seismicity`, `gea help opseis`.
625
+
626
+ ### The declarations sheet
627
+
628
+ Everything the operator declares about a pad comes in from one spreadsheet:
629
+ each well's API number, position and reference elevation, its directional
630
+ survey, the day rates, one-off costs and AFE, the fleet, the drill-string
631
+ runs and their components, and the ESP penetrator and drive. Every row is
632
+ checked against the workspace and planned NEW, CHANGE or SAME before
633
+ anything is written; one error and nothing is. The sheet the program writes
634
+ for a workspace is already filled with what is declared, so a site fills in
635
+ the blanks. On the Setup tab, or `gea declare --template`, `gea declare
636
+ --file`, `gea help declare`.
637
+
638
+ ### Completion - the ESP wellhead penetrator
639
+
640
+ The Completion tab keeps each ESP well's penetrator installation record -
641
+ the installer and their certification, the motor, the gauge distance, the
642
+ insulation readings, the void test - and checks the well's ESP drive, motor
643
+ nameplate and wellhead against the penetrator's ratings as its maker's
644
+ document prints them, one line each: voltage, current, frequency, phases,
645
+ hazardous area, gas group, temperature class, ambient range and altitude.
646
+ It carries the permanent magnet motor safety note with its sources.
647
+ `gea penetrator`, `gea help penetrator`.
648
+
612
649
  ### Drill string
613
650
 
614
651
  The Drill String tab holds each run's string from the bit up - drawn as a
@@ -618,7 +655,7 @@ its declared service interval. The downhole motor tracker charts the
618
655
  differential against the maker's limits, the stalls, the motor's and the
619
656
  bit's speed and a torque estimate, and judges the motor's stability from
620
657
  the slow oscillations of the torque and the differential, block by block.
621
- The tool catalogue carries 41 downhole motors with the maker's figures.
658
+ The tool catalogue carries 43 downhole motors with the maker's figures.
622
659
  `gea drillstring`, `gea tools --action motors`, `gea help drillstring`.
623
660
 
624
661
  ### Simulation
@@ -746,7 +783,7 @@ library**: every class of downhole tool in use across the industry - bits
746
783
  and hole openers, motors and rotary steerable systems, MWD and LWD, the drill
747
784
  string and its subs, casing and cementing equipment, completion and
748
785
  artificial lift, wireline and cased-hole tools, fishing and milling, test
749
- tools - ninety-six classes in nine categories. Point at a tool, or Tab to
786
+ tools - ninety-seven classes in nine categories. Point at a tool, or Tab to
750
787
  it, for a one-line description; click, tap or press Enter for its tutorial:
751
788
  what it is, where it runs, how it works, what it shows in the data, what to
752
789
  watch, and what this program does with it, with the published figures
@@ -123,7 +123,7 @@ from .profile_catalog import (
123
123
  read_pangaea_txt,
124
124
  )
125
125
 
126
- __version__ = "0.40.0"
126
+ __version__ = "0.42.0"
127
127
  __all__ = [
128
128
  "aging_rate", "rate_psi_yr", "accuracy_psi",
129
129
  "Sensor", "SimulatorConfig", "DownholeEngine",
@@ -524,6 +524,48 @@ def main(argv=None) -> int:
524
524
  p_ds.add_argument("--actor", type=str, default="cli")
525
525
  p_ds.add_argument("--json", action="store_true")
526
526
 
527
+ p_dc = sub.add_parser("declare", help="the declarations sheet: wells' identity, position and elevation, surveys, rates, items and AFEs, fleet tools, drill-string runs, ESP penetrators and drives - one CSV, checked against the workspace before anything is written")
528
+ p_dc.add_argument("--workspace", type=str, required=True)
529
+ p_dc.add_argument("--file", type=str, default=None, help="the sheet (CSV); every row is planned NEW, CHANGE or SAME and nothing is written without --apply")
530
+ p_dc.add_argument("--apply", action="store_true", help="write the NEW and CHANGE rows (only when the sheet has no error)")
531
+ p_dc.add_argument("--template", type=str, default=None, help="write the sheet for this workspace, filled with what is already declared, to this path")
532
+ p_dc.add_argument("--actor", type=str, default="cli")
533
+ p_dc.add_argument("--json", action="store_true")
534
+
535
+ p_pn = sub.add_parser("penetrator", help="the ESP wellhead penetrator: the penetrators the program knows with their ratings, the permanent magnet motor safety note, and each well's installation record and drive checked against the ratings")
536
+ p_pn.add_argument("--workspace", type=str, default=None)
537
+ p_pn.add_argument("--well", type=str, default=None)
538
+ p_pn.add_argument("--remove", type=str, default=None, choices=("install", "drive"), help="remove the well's installation record or its drive")
539
+ p_pn.add_argument("--actor", type=str, default="cli")
540
+ p_pn.add_argument("--json", action="store_true")
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
+
527
569
  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)")
528
570
  p_sm.add_argument("--workspace", type=str, default=None)
529
571
  p_sm.add_argument("--scene", type=str, default=None, help="e.g. volve-f4, or well:Well-30636033")
@@ -2074,6 +2116,116 @@ def main(argv=None) -> int:
2074
2116
  raise SystemExit(f"drillstring: {e.args[0] if e.args else e}")
2075
2117
  print(_json.dumps(p, default=str) if a.json else _DS.text(p))
2076
2118
  return 0
2119
+ elif a.cmd == "declare":
2120
+ import json as _json
2121
+ from . import declarations as _DC
2122
+ from .cli import _safe_stdout
2123
+ from .workspace import Workspace, WorkspaceError
2124
+ _safe_stdout()
2125
+ try:
2126
+ ws = Workspace(a.workspace)
2127
+ except WorkspaceError as e:
2128
+ raise SystemExit(f"declare: {e}")
2129
+ if a.template:
2130
+ with open(a.template, "w", encoding="utf-8", newline="") as f:
2131
+ f.write(_DC.template(ws))
2132
+ print(f"wrote {a.template}: fill in the blanks, then gea declare --workspace {a.workspace} --file {a.template}")
2133
+ return 0
2134
+ if not a.file:
2135
+ raise SystemExit("declare: give --file <sheet.csv> (or --template <out.csv> to start one)")
2136
+ try:
2137
+ with open(a.file, encoding="utf-8-sig") as f:
2138
+ text_ = f.read()
2139
+ except OSError as e:
2140
+ raise SystemExit(f"declare: {e}")
2141
+ p = _DC.apply(ws, text_, a.actor, os.path.dirname(os.path.abspath(a.file)), write=a.apply)
2142
+ print(_json.dumps(p, default=str) if a.json else _DC.text(p))
2143
+ return 1 if p["errors"] else 0
2144
+ elif a.cmd == "penetrator":
2145
+ import json as _json
2146
+ from . import penetrator as _PN
2147
+ from .cli import _safe_stdout
2148
+ from .workspace import Workspace, WorkspaceError
2149
+ _safe_stdout()
2150
+ ws = None
2151
+ if a.workspace:
2152
+ try:
2153
+ ws = Workspace(a.workspace)
2154
+ except WorkspaceError as e:
2155
+ raise SystemExit(f"penetrator: {e}")
2156
+ try:
2157
+ if a.remove:
2158
+ if ws is None or not a.well:
2159
+ raise SystemExit("penetrator: --remove needs --workspace and --well")
2160
+ _PN.remove(ws, a.actor, a.well, a.remove)
2161
+ print(f"removed the {a.remove} record of {a.well}")
2162
+ return 0
2163
+ if a.well:
2164
+ if ws is None:
2165
+ raise SystemExit("penetrator: --well needs --workspace")
2166
+ c = _PN.check(ws, a.well)
2167
+ print(_json.dumps(c, default=str) if a.json else _PN.text_check(c))
2168
+ return 0
2169
+ p = _PN.page(ws)
2170
+ except (ValueError, KeyError, OSError) as e:
2171
+ raise SystemExit(f"penetrator: {e.args[0] if e.args else e}")
2172
+ print(_json.dumps(p, default=str) if a.json else _PN.text(p))
2173
+ return 0
2174
+ elif a.cmd == "seismicity":
2175
+ import json as _json
2176
+ from . import op_seismicity as _OS
2177
+ from .cli import _safe_stdout
2178
+ from .workspace import Workspace, WorkspaceError
2179
+ _safe_stdout()
2180
+ if a.protocols:
2181
+ for p_ in _OS.protocols()["protocols"]:
2182
+ 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'])}")
2183
+ for lv in p_["levels"]:
2184
+ print(f" M {lv['m']:g}{' (' + lv['condition'] + ')' if lv.get('condition') else ''}: {lv['action']}")
2185
+ print(f" {p_['document']} - {p_['url']}{' (a secondary summary)' if p_['source_kind'] == 'secondary' else ''}")
2186
+ return 0
2187
+ ws = None
2188
+ if a.workspace:
2189
+ try:
2190
+ ws = Workspace(a.workspace)
2191
+ except WorkspaceError as e:
2192
+ raise SystemExit(f"seismicity: {e}")
2193
+ try:
2194
+ if a.attach:
2195
+ if ws is None:
2196
+ raise SystemExit("seismicity: --attach needs --workspace")
2197
+ with open(a.attach, "rb") as f:
2198
+ 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)
2199
+ print(f"attached {r['file']}: {r['n_events']} event(s), {r['start']} to {r['end']}, M >= {r['min_magnitude']:g}")
2200
+ return 0
2201
+ if a.declare_op:
2202
+ if ws is None or not a.well or not a.kind:
2203
+ raise SystemExit("seismicity: --declare-op needs --workspace, --well and --kind")
2204
+ r = _OS.save_operation(ws, a.actor, a.well, a.kind, a.start, a.end, a.source)
2205
+ print(f"declared {r['id']}: {r['kind']} on {r['well_id']}, {r['start']} to {r['end'] or 'open'}")
2206
+ return 0
2207
+ if a.remove_op:
2208
+ _OS.remove_operation(ws, a.actor, a.remove_op); print(f"removed {a.remove_op}"); return 0
2209
+ if a.remove_catalog:
2210
+ _OS.remove_catalog(ws, a.actor, a.remove_catalog); print(f"removed {a.remove_catalog}"); return 0
2211
+ 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}
2212
+ if a.set:
2213
+ if ws is None:
2214
+ raise SystemExit("seismicity: --set needs --workspace")
2215
+ 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"))
2216
+ print("settings: " + ", ".join(f"{k} {v}" for k, v in s_.items()))
2217
+ return 0
2218
+ if over.get("protocol"):
2219
+ _OS.protocol(over["protocol"])
2220
+ r = _OS.page(ws, a.scene or ("workspace" if ws is not None else "mahoning"), over or None)
2221
+ except (ValueError, KeyError, OSError) as e:
2222
+ raise SystemExit(f"seismicity: {e.args[0] if e.args else e}")
2223
+ if a.query:
2224
+ q = r.get("query")
2225
+ print(q["url"] if q else "no well of the workspace has a surface position yet: declare one first")
2226
+ return 0
2227
+ print(_json.dumps(r, default=str) if a.json else _OS.text(r))
2228
+ return 0
2077
2229
  elif a.cmd == "simulation":
2078
2230
  import json as _json
2079
2231
  from . import simulation as _SIM