gea-program 0.43.0__tar.gz → 0.45.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.
- {gea_program-0.43.0 → gea_program-0.45.0}/PKG-INFO +30 -1
- {gea_program-0.43.0 → gea_program-0.45.0}/README.md +29 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/__init__.py +1 -1
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/__main__.py +113 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/acceptance_tests.py +497 -1
- gea_program-0.45.0/gea/alerts.py +177 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/client_reports.py +15 -1
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/dossier.py +134 -17
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/dossier_verify.py +49 -2
- gea_program-0.45.0/gea/help/alerts.md +17 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/dossier.md +3 -1
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/notifications.md +1 -1
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/opseis.md +4 -2
- gea_program-0.45.0/gea/help/pad-summary.md +13 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/report-history.md +2 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/helplib.py +2 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/notify.py +27 -2
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/op_seismicity.py +116 -5
- gea_program-0.45.0/gea/pad_summary.py +305 -0
- gea_program-0.45.0/gea/pdf_report.py +532 -0
- gea_program-0.45.0/gea/seismic_watch.py +341 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/service.py +42 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/web/app.html +38 -4
- {gea_program-0.43.0 → gea_program-0.45.0}/gea_program.egg-info/PKG-INFO +30 -1
- {gea_program-0.43.0 → gea_program-0.45.0}/gea_program.egg-info/SOURCES.txt +6 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/pyproject.toml +1 -1
- {gea_program-0.43.0 → gea_program-0.45.0}/LICENSE +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/BENCH_TEST_PROTOCOL.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/accuracy_statement.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/alarm_engine.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/backup.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/bench.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/blind_harness.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/acex_lomonosov_age_depth_model.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/agassiz77_canada_temperature.csv +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/agassiz77_canada_temperature.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/barbados_110_consolidation.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/barbados_110_consolidation.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/bengal_u1452_grain_size.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/bengal_u1452_grain_size.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/blake_164_methane_isotopes.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/blake_164_methane_isotopes.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/collingwood_1_28_ks_complete.las +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/costa_rica_odp_friction_envelope.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/costa_rica_odp_friction_envelope.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/dsdp_504b_physical_properties.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/dsdp_504b_sound_velocity.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/elgygytgyn_5011_turbidites.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/elgygytgyn_5011_turbidites.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/epica_domec_co2_800kyr.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/epica_domec_co2_800kyr.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/fram_909_organic_petrography.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/fram_909_organic_petrography.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/gbr_325_coral_uth_ages.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/gbr_325_coral_uth_ages.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/gisp2_greenland_temperature.csv +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/gisp2_greenland_temperature.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/gom_308_t2p_insitu.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/gom_308_t2p_insitu.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/guaymas_385_dom_d13c.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/guaymas_385_dom_d13c.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/hikurangi_u1520_friction_insitu.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/iodp_u1324_pore_pressure.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/jfast_c0019_slow_slip_events.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/jfast_c0019_slow_slip_events.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/kennetcook_2_p129_excerpt.las +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_hb_bhgm_density.dat +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_hb_complog_6020_excerpt.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_hb_hlog246_temperature.dat +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_hb_rockmech_compress.dat +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_vb_rockmech_compress.dat +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_vb_vlog251_temperature.dat +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/l06_06_nl_survey.csv +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/l06_06_nl_survey.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/l07_01_nl_excerpt.las +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/l07_01_nl_excerpt.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/mariana_1200_serpentinite_geochem.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/med_160_sapropels.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/med_160_sapropels.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/nankai_megasplay_shear_strength.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_1027b_thermal_conductivity.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_1027c_cork_temperature.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_1165b_thermal_conductivity.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/peru_201_sulfate_reduction.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/peru_201_sulfate_reduction.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/scorpio_e1_sa_excerpt.las +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/sumatra_362_cohesion.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/sumatra_362_cohesion.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/university_6_17_no1_tx_excerpt.las +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ursa_308_xrd_mineralogy.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/ursa_308_xrd_mineralogy.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/volve_15_9_19_sr_excerpt.las +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/volve_f12_f14_production_excerpt.csv +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/walvis_208_petm_carbonate.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/walvis_208_petm_carbonate.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/woodlark_1109_rock_eval.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog/woodlark_1109_rock_eval.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog_map.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/catalog_register.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/certificates.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/cli.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/config_versioning.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/conformance.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/control_room.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/correlation.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/dashboard.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/declarations.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/deviation.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/dlis.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/dnp3.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/doctor.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/downhole_engine.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/drift_monitor.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/drill_string.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/earth_model.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/economics.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/ed25519.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/edr.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/elevation.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/etp.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/etp12_schemas.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/example_register_map.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/fat_sat.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/files.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/fixtures/README.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/fixtures/comcat_delaware_basin_2026-09.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/fixtures/comcat_mahoning_1990-2026.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/fixtures/comcat_youngstown_2011-2012.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/fixtures/ne_110m_coastline.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/follower.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/forward_model.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/friction_priors.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/gamma.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/gauge_aging.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/gauge_specs.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/geodesy.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/gravity_reference.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/hartip.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/TESTER_GUIDE.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/alarms.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/audit-update.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/backup.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/catalog.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/charts.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/conformance.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/control-room.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/data-in.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/declare.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/dlis.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/doctor.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/drift.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/drillstring.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/economics.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/edr.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/etp.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/field-ports.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/files.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/historian.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/instruments.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/interval.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/map.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/month-end.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/osdu.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/patches.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/penetrator.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/ppdm.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/quakeml.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/quality.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/seedlink.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/seismic.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/setup.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/simulation.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/site.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/sites.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/slip.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/soak.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/sra.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/start.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/structure.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/tools.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/transients.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/upkeep.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/vibration.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/well-report.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/well-tests.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/help/well3d.md +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/housekeeping.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/interval.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/inverse_engine.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/jobs.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/live_ports.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/loadtest.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/matplotlib_demo.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/modbus.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/modbus_rtu.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/model_card.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/month_end.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/mqtt_port.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/opcua_port.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/operator_app.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/osdu.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/patches.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/penetrator.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/permits.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/piwebapi.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/ports.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/ppdm.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/profile_catalog.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/project.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/qt6_downhole_app.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/quakeml.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reconciler.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/IU_ANMO_10_BHZ_response.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/IU_ANMO_10_BHZ_response.xml +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/eia_henry_hub_daily.csv.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/eia_prices.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/eia_wti_daily.csv.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/libmseed_steim.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/libmseed_steim1_4096.mseed +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/libmseed_steim2_4096.mseed +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/libmseed_steim2_512.mseed +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/mahoning_example.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/mud_motor_specs.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/penetrator_ratings.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/seismicity_protocols.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/tool_sources.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/us_outline.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/us_outline.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_3d.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_f4_interpretation.las.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_f4_logs.provenance.json +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_f4_lwd.las.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_surfaces.json.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_traj_F-10.xml.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_traj_F-4.xml.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_traj_F-5_12.25in.xml.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_traj_F-5_17.5in.xml.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_traj_F-5_36in.xml.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_traj_F-5_8.5in.xml.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/reference/volve_well_picks.csv.gz +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/report_history.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/rock_inventory.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/sample_record.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/sample_well_profile.csv +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/sbom.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seedlink.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/segy.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_array.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_assoc.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_detect.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_film.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_harmonic.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_qc.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_response.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_signature.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_track.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_uncertainty.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/seismic_unlisted.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/sensor_swap.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/series_cache.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/service_life.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/setup_checklist.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/shapefile.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/shell.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/shut_in.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/simulation.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/site_map.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/sla_report.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/slip.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/soak.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/sra.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/store_forward.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/strata_join.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/structure.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/supervisor.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/survey_cmd.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/survey_view.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/telemetry.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/tool_catalog.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/tool_library.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/tool_taxonomy.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/transient.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/vibration.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/well3d.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/well_assembler.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/well_report.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/well_test_validation.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/wits0.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/witsml.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea/workspace.py +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea_program.egg-info/dependency_links.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea_program.egg-info/entry_points.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea_program.egg-info/requires.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/gea_program.egg-info/top_level.txt +0 -0
- {gea_program-0.43.0 → gea_program-0.45.0}/setup.cfg +0 -0
- {gea_program-0.43.0 → gea_program-0.45.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.
|
|
3
|
+
Version: 0.45.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,35 @@ 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
|
+
### The lateral, the printable reports, the daily summary and the key
|
|
652
|
+
|
|
653
|
+
An earthquake near a well with a directional survey is measured from the
|
|
654
|
+
nearest point of its lateral, not from the pad - with the measured depth
|
|
655
|
+
there and the distance to the hypocentre - so a protocol radius is read
|
|
656
|
+
against the well bore a regulator means. Every client report is also
|
|
657
|
+
written as a PDF beside its HTML (the drawings redrawn, long tables
|
|
658
|
+
continued across pages) and kept in report history. Each morning the
|
|
659
|
+
program writes a one-page pad summary - what changed, what is due, what is
|
|
660
|
+
still missing - and sends it through the notification rules (`gea
|
|
661
|
+
pad-summary`). The dossier signing key can be retired and replaced: the old
|
|
662
|
+
key signs the hand-over, earlier dossiers still check out, and later ones
|
|
663
|
+
carry the rotation so a client can follow it (`gea dossier --rotate-key`).
|
|
664
|
+
`gea help pad-summary`.
|
|
665
|
+
|
|
666
|
+
### The earthquake watch and the alerts
|
|
667
|
+
|
|
668
|
+
While a well operates, the program reads the USGS earthquake catalogue
|
|
669
|
+
every few minutes from the site's machine - the real-time feed USGS asks
|
|
670
|
+
automated programs to use, and the catalogue service for any gap - and
|
|
671
|
+
raises an alert when an earthquake near the well reaches the chosen
|
|
672
|
+
regulator's protocol level; a revision to a higher level is a new alert,
|
|
673
|
+
and a watch that cannot reach the catalogue says so. The same alerts cover
|
|
674
|
+
what nobody watches by hand: a component's service interval used up, a
|
|
675
|
+
penetrator check outside its rating, a signed dossier the workspace no
|
|
676
|
+
longer matches. Every alert is listed on the Alarms tab and sent through
|
|
677
|
+
the notification rules (email or a webhook). `gea seismicity --watch-once`,
|
|
678
|
+
`gea alerts`, `gea help alerts`.
|
|
679
|
+
|
|
651
680
|
### Report history and the signed dossier
|
|
652
681
|
|
|
653
682
|
Every client report a workspace writes is kept, version by version, under
|
|
@@ -609,6 +609,35 @@ 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
|
+
### The lateral, the printable reports, the daily summary and the key
|
|
613
|
+
|
|
614
|
+
An earthquake near a well with a directional survey is measured from the
|
|
615
|
+
nearest point of its lateral, not from the pad - with the measured depth
|
|
616
|
+
there and the distance to the hypocentre - so a protocol radius is read
|
|
617
|
+
against the well bore a regulator means. Every client report is also
|
|
618
|
+
written as a PDF beside its HTML (the drawings redrawn, long tables
|
|
619
|
+
continued across pages) and kept in report history. Each morning the
|
|
620
|
+
program writes a one-page pad summary - what changed, what is due, what is
|
|
621
|
+
still missing - and sends it through the notification rules (`gea
|
|
622
|
+
pad-summary`). The dossier signing key can be retired and replaced: the old
|
|
623
|
+
key signs the hand-over, earlier dossiers still check out, and later ones
|
|
624
|
+
carry the rotation so a client can follow it (`gea dossier --rotate-key`).
|
|
625
|
+
`gea help pad-summary`.
|
|
626
|
+
|
|
627
|
+
### The earthquake watch and the alerts
|
|
628
|
+
|
|
629
|
+
While a well operates, the program reads the USGS earthquake catalogue
|
|
630
|
+
every few minutes from the site's machine - the real-time feed USGS asks
|
|
631
|
+
automated programs to use, and the catalogue service for any gap - and
|
|
632
|
+
raises an alert when an earthquake near the well reaches the chosen
|
|
633
|
+
regulator's protocol level; a revision to a higher level is a new alert,
|
|
634
|
+
and a watch that cannot reach the catalogue says so. The same alerts cover
|
|
635
|
+
what nobody watches by hand: a component's service interval used up, a
|
|
636
|
+
penetrator check outside its rating, a signed dossier the workspace no
|
|
637
|
+
longer matches. Every alert is listed on the Alarms tab and sent through
|
|
638
|
+
the notification rules (email or a webhook). `gea seismicity --watch-once`,
|
|
639
|
+
`gea alerts`, `gea help alerts`.
|
|
640
|
+
|
|
612
641
|
### Report history and the signed dossier
|
|
613
642
|
|
|
614
643
|
Every client report a workspace writes is kept, version by version, under
|
|
@@ -563,9 +563,19 @@ def main(argv=None) -> int:
|
|
|
563
563
|
p_os.add_argument("--kind", type=str, default=None, choices=("drilling", "completion", "disposal", "injection", "other"))
|
|
564
564
|
p_os.add_argument("--remove-op", type=str, default=None)
|
|
565
565
|
p_os.add_argument("--remove-catalog", type=str, default=None)
|
|
566
|
+
p_os.add_argument("--watch", type=str, default=None, choices=("on", "off"), help="turn the live earthquake watch on or off")
|
|
567
|
+
p_os.add_argument("--watch-every", type=float, default=None, help="the watch's interval in minutes (default 5)")
|
|
568
|
+
p_os.add_argument("--watch-mode", type=str, default=None, choices=("operations", "always"), help="poll only while an operation is under way (default), or always")
|
|
569
|
+
p_os.add_argument("--watch-once", action="store_true", help="poll the USGS catalogue now, from this machine, and say what came back")
|
|
566
570
|
p_os.add_argument("--actor", type=str, default="cli")
|
|
567
571
|
p_os.add_argument("--json", action="store_true")
|
|
568
572
|
|
|
573
|
+
p_al = sub.add_parser("alerts", help="the program's alerts: earthquakes near operating wells and the protocol levels they reach, the earthquake watch going quiet, components due for service, penetrator checks outside their ratings, dossiers the workspace no longer matches")
|
|
574
|
+
p_al.add_argument("--workspace", type=str, required=True)
|
|
575
|
+
p_al.add_argument("--check", action="store_true", help="check the motors, penetrators and dossiers now, sending what began or cleared through the notification rules")
|
|
576
|
+
p_al.add_argument("-n", type=int, default=30)
|
|
577
|
+
p_al.add_argument("--json", action="store_true")
|
|
578
|
+
|
|
569
579
|
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
580
|
p_dz.add_argument("--workspace", type=str, default=None)
|
|
571
581
|
p_dz.add_argument("--well", type=str, default=None, help="a well; without it, the pad (every well and the site reports)")
|
|
@@ -574,9 +584,21 @@ def main(argv=None) -> int:
|
|
|
574
584
|
p_dz.add_argument("--sources", type=str, default="", help="with --verify: a folder holding the source records to check against their hashes")
|
|
575
585
|
p_dz.add_argument("--key", action="store_true", help="print this site's signing key fingerprint")
|
|
576
586
|
p_dz.add_argument("--list", action="store_true", help="list the dossiers this site has signed")
|
|
587
|
+
p_dz.add_argument("--rotate-key", action="store_true", help="retire this site's signing key and start a new one, signed over by the old (give --reason)")
|
|
588
|
+
p_dz.add_argument("--reason", type=str, default="", help="with --rotate-key: why the key is retired")
|
|
589
|
+
p_dz.add_argument("--key-history", action="store_true", help="the site's keys, current and retired, and the rotations between them")
|
|
577
590
|
p_dz.add_argument("--actor", type=str, default="cli")
|
|
578
591
|
p_dz.add_argument("--json", action="store_true")
|
|
579
592
|
|
|
593
|
+
p_ps = sub.add_parser("pad-summary", help="the daily pad summary: what changed since the last one, what is due, what is still missing - one page, kept in report history; the service writes it each day and sends it through the notification rules")
|
|
594
|
+
p_ps.add_argument("--workspace", type=str, required=True)
|
|
595
|
+
p_ps.add_argument("--send", action="store_true", help="also hand it to the notification rules (the event pad.summary)")
|
|
596
|
+
p_ps.add_argument("--at", type=str, default=None, help="the daily time the service writes it, HH:MM UTC")
|
|
597
|
+
p_ps.add_argument("--on", action="store_true", help="the service writes it each day")
|
|
598
|
+
p_ps.add_argument("--off", action="store_true", help="the service does not")
|
|
599
|
+
p_ps.add_argument("--actor", type=str, default="cli")
|
|
600
|
+
p_ps.add_argument("--json", action="store_true")
|
|
601
|
+
|
|
580
602
|
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
603
|
p_rh.add_argument("--workspace", type=str, required=True)
|
|
582
604
|
p_rh.add_argument("--family", type=str, default=None, help="e.g. wells/Well-1/well_report or pad_report")
|
|
@@ -2225,6 +2247,26 @@ def main(argv=None) -> int:
|
|
|
2225
2247
|
return 0
|
|
2226
2248
|
if a.remove_op:
|
|
2227
2249
|
_OS.remove_operation(ws, a.actor, a.remove_op); print(f"removed {a.remove_op}"); return 0
|
|
2250
|
+
if a.watch or a.watch_every is not None or a.watch_mode or a.watch_once:
|
|
2251
|
+
from . import seismic_watch as _SW
|
|
2252
|
+
if ws is None:
|
|
2253
|
+
raise SystemExit("seismicity: the watch needs --workspace")
|
|
2254
|
+
if a.watch or a.watch_every is not None or a.watch_mode:
|
|
2255
|
+
_SW.set_settings(ws, a.actor, None if a.watch is None else a.watch == "on", a.watch_mode, a.watch_every)
|
|
2256
|
+
if a.watch_once:
|
|
2257
|
+
from .notify import Notifier
|
|
2258
|
+
n_ = Notifier(ws.path); n_.reload()
|
|
2259
|
+
r_ = _SW.poll(ws, n_, force=True)
|
|
2260
|
+
if r_.get("ok"):
|
|
2261
|
+
print(f"reached the catalogue ({r_['how']}): {r_['in_circle']} earthquake(s) in the watch circle, {r_['new']} new; {len(r_['alerts'])} alert(s)")
|
|
2262
|
+
for al_ in r_["alerts"]:
|
|
2263
|
+
print(f" {al_['event']}: {al_.get('detail', '')}")
|
|
2264
|
+
else:
|
|
2265
|
+
print(f"did not reach the catalogue: {r_.get('error') or r_.get('why')}")
|
|
2266
|
+
st_ = _SW.status(ws)
|
|
2267
|
+
print(f"watch: {st_['state']} - every {st_['settings']['every_min']:g} min, {st_['settings']['mode']}; last good poll {st_['last_ok_utc'] or 'never'}"
|
|
2268
|
+
+ (f"; last error {st_['last_error']}" if st_.get('last_error') else ""))
|
|
2269
|
+
return 0 if (not a.watch_once or r_.get("ok")) else 1
|
|
2228
2270
|
if a.remove_catalog:
|
|
2229
2271
|
_OS.remove_catalog(ws, a.actor, a.remove_catalog); print(f"removed {a.remove_catalog}"); return 0
|
|
2230
2272
|
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}
|
|
@@ -2267,6 +2309,23 @@ def main(argv=None) -> int:
|
|
|
2267
2309
|
k = _DZ.key_info(ws)
|
|
2268
2310
|
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
2311
|
return 0
|
|
2312
|
+
if a.rotate_key:
|
|
2313
|
+
try:
|
|
2314
|
+
r_ = _DZ.rotate_key(ws, a.actor, a.reason)
|
|
2315
|
+
except ValueError as ex:
|
|
2316
|
+
raise SystemExit(f"dossier: {ex}")
|
|
2317
|
+
print(f"retired {r_['old']['fingerprint']}; the new key is {r_['new']['fingerprint']}")
|
|
2318
|
+
print(" the rotation is signed by both keys and rides in every later dossier; give the new fingerprint to your clients")
|
|
2319
|
+
return 0
|
|
2320
|
+
if a.key_history:
|
|
2321
|
+
h_ = _DZ.key_history(ws)
|
|
2322
|
+
if a.json:
|
|
2323
|
+
print(_json.dumps(h_, default=str)); return 0
|
|
2324
|
+
for k in h_["keys"]:
|
|
2325
|
+
print(f"{k['fingerprint']} made {k.get('created_utc') or '?'} " + (f"retired {k['retired_utc']} ({k.get('reason', '')}) -> {k.get('successor')}" if k.get("retired_utc") else "CURRENT"))
|
|
2326
|
+
if not h_["keys"]:
|
|
2327
|
+
print("no key history yet")
|
|
2328
|
+
return 0
|
|
2270
2329
|
if a.list:
|
|
2271
2330
|
for e in reversed(_DZ.ledger(ws)):
|
|
2272
2331
|
print(f"{e['utc']} {e['dossier_id']} {e['display']:<24} {e['n_files']:>4} files {e['path']}")
|
|
@@ -2279,6 +2338,36 @@ def main(argv=None) -> int:
|
|
|
2279
2338
|
print(f" {os.path.join(ws.reports_dir, e['path'])}")
|
|
2280
2339
|
print(f" key fingerprint {e['fingerprint']}")
|
|
2281
2340
|
return 0
|
|
2341
|
+
elif a.cmd == "pad-summary":
|
|
2342
|
+
import json as _json
|
|
2343
|
+
from . import pad_summary as _PS
|
|
2344
|
+
from .cli import _safe_stdout
|
|
2345
|
+
from .notify import Notifier
|
|
2346
|
+
from .workspace import Workspace, WorkspaceError
|
|
2347
|
+
_safe_stdout()
|
|
2348
|
+
try:
|
|
2349
|
+
ws = Workspace(a.workspace)
|
|
2350
|
+
except WorkspaceError as e:
|
|
2351
|
+
raise SystemExit(f"pad-summary: {e}")
|
|
2352
|
+
if a.at or a.on or a.off:
|
|
2353
|
+
try:
|
|
2354
|
+
s_ = _PS.set_settings(ws, a.actor, enabled=(True if a.on else False if a.off else None), at=a.at)
|
|
2355
|
+
except ValueError as e:
|
|
2356
|
+
raise SystemExit(f"pad-summary: {e}")
|
|
2357
|
+
print(f"daily pad summary {'on' if s_['enabled'] else 'off'} at {s_['at']} UTC, sent through the notification rules: {'yes' if s_['send'] else 'no'}")
|
|
2358
|
+
return 0
|
|
2359
|
+
n_ = None
|
|
2360
|
+
if a.send:
|
|
2361
|
+
n_ = Notifier(ws.path); n_.reload()
|
|
2362
|
+
r = _PS.write(ws, __version__, a.actor, n_, send=bool(a.send))
|
|
2363
|
+
if a.json:
|
|
2364
|
+
print(_json.dumps(r, default=str)); return 0
|
|
2365
|
+
print(f"wrote {r['report_id']} (since {r['since']}): {r['paths']['html']}")
|
|
2366
|
+
if r['paths'].get('pdf'):
|
|
2367
|
+
print(f" printable: {r['paths']['pdf']}")
|
|
2368
|
+
if a.send:
|
|
2369
|
+
print(f" sent: {', '.join(str(d['channel']) + (' ok' if d['ok'] else ' FAILED') for d in r['delivered']) or 'no notification rule for pad.summary'}")
|
|
2370
|
+
return 0
|
|
2282
2371
|
elif a.cmd == "reports-history":
|
|
2283
2372
|
import json as _json
|
|
2284
2373
|
from . import report_history as _RH
|
|
@@ -2306,6 +2395,30 @@ def main(argv=None) -> int:
|
|
|
2306
2395
|
for v in f_["versions"][: (50 if a.family else 3)]:
|
|
2307
2396
|
print(f" {v['utc']} {v.get('report_id') or ''} reports/{v['dir']}")
|
|
2308
2397
|
return 0
|
|
2398
|
+
elif a.cmd == "alerts":
|
|
2399
|
+
import json as _json
|
|
2400
|
+
from . import alerts as _AL
|
|
2401
|
+
from .cli import _safe_stdout
|
|
2402
|
+
from .notify import Notifier
|
|
2403
|
+
from .workspace import Workspace, WorkspaceError
|
|
2404
|
+
_safe_stdout()
|
|
2405
|
+
try:
|
|
2406
|
+
ws = Workspace(a.workspace)
|
|
2407
|
+
except WorkspaceError as e:
|
|
2408
|
+
raise SystemExit(f"alerts: {e}")
|
|
2409
|
+
if a.check:
|
|
2410
|
+
n_ = Notifier(ws.path); n_.reload()
|
|
2411
|
+
r_ = _AL.check_conditions(ws, n_, force=True)
|
|
2412
|
+
print(f"checked: {len(r_)} alert(s) raised or cleared")
|
|
2413
|
+
rows = _AL.recent(ws, a.n)
|
|
2414
|
+
if a.json:
|
|
2415
|
+
print(_json.dumps(rows, default=str)); return 0
|
|
2416
|
+
for r in rows:
|
|
2417
|
+
sent = ", ".join(f"{d['channel']}{'' if d['ok'] else ' (failed)'}" for d in r.get("delivered") or []) or "no channel set up"
|
|
2418
|
+
print(f"{r['utc']} {r['event']:<20} {r.get('well') or '':<16} {r.get('detail', '')} [{sent}]")
|
|
2419
|
+
if not rows:
|
|
2420
|
+
print("no alerts yet")
|
|
2421
|
+
return 0
|
|
2309
2422
|
elif a.cmd == "simulation":
|
|
2310
2423
|
import json as _json
|
|
2311
2424
|
from . import simulation as _SIM
|