gea-program 0.44.0__tar.gz → 0.46.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.44.0/gea_program.egg-info → gea_program-0.46.0}/PKG-INFO +28 -1
- {gea_program-0.44.0 → gea_program-0.46.0}/README.md +27 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/__init__.py +1 -1
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/__main__.py +117 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/acceptance_tests.py +433 -1
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/client_reports.py +15 -1
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/dossier.py +134 -17
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/dossier_verify.py +49 -2
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/dossier.md +3 -1
- gea_program-0.46.0/gea/help/invoice-check.md +15 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/opseis.md +2 -2
- gea_program-0.46.0/gea/help/pad-summary.md +13 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/report-history.md +2 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/helplib.py +3 -1
- gea_program-0.46.0/gea/invoice_check.py +786 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/notify.py +6 -1
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/op_seismicity.py +109 -5
- gea_program-0.46.0/gea/pad_summary.py +305 -0
- gea_program-0.46.0/gea/pdf_report.py +532 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_watch.py +10 -5
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/service.py +51 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/web/app.html +47 -5
- {gea_program-0.44.0 → gea_program-0.46.0/gea_program.egg-info}/PKG-INFO +28 -1
- {gea_program-0.44.0 → gea_program-0.46.0}/gea_program.egg-info/SOURCES.txt +5 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/pyproject.toml +1 -1
- {gea_program-0.44.0 → gea_program-0.46.0}/LICENSE +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/BENCH_TEST_PROTOCOL.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/accuracy_statement.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/alarm_engine.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/alerts.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/backup.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/bench.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/blind_harness.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/acex_lomonosov_age_depth_model.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/acex_lomonosov_age_depth_model.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/agassiz77_canada_temperature.csv +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/agassiz77_canada_temperature.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/barbados_110_consolidation.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/barbados_110_consolidation.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/bengal_u1452_grain_size.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/bengal_u1452_grain_size.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/blake_164_methane_isotopes.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/blake_164_methane_isotopes.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/chicxulub_m0077a_pwave_velocity.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/collingwood_1_28_ks_complete.las +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/collingwood_1_28_ks_complete.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/costa_rica_odp_friction_envelope.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/costa_rica_odp_friction_envelope.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/dsdp_504b_physical_properties.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/dsdp_504b_physical_properties.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/dsdp_504b_sound_velocity.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/dsdp_504b_sound_velocity.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/elgygytgyn_5011_turbidites.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/elgygytgyn_5011_turbidites.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/epica_domec_co2_800kyr.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/epica_domec_co2_800kyr.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/fram_909_organic_petrography.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/fram_909_organic_petrography.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/gbr_325_coral_uth_ages.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/gbr_325_coral_uth_ages.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/gisp2_greenland_temperature.csv +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/gisp2_greenland_temperature.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/gom_308_t2p_insitu.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/gom_308_t2p_insitu.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/guaymas_385_dom_d13c.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/guaymas_385_dom_d13c.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/hikurangi_u1520_friction_insitu.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/iodp_u1324_pore_pressure.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/iodp_u1324_pore_pressure.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/jfast_c0019_slow_slip_events.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/jfast_c0019_slow_slip_events.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/kennetcook_2_p129_excerpt.las +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/kennetcook_2_p129_excerpt.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_hb_bhgm_density.dat +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_hb_bhgm_density.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_hb_complog_6020_excerpt.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_hb_hlog246_temperature.dat +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_hb_hlog246_temperature.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_hb_rockmech_compress.dat +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_hb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_vb_rockmech_compress.dat +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_vb_rockmech_compress.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_vb_vlog251_temperature.dat +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ktb_vb_vlog251_temperature.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/l06_06_nl_survey.csv +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/l06_06_nl_survey.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/l07_01_nl_excerpt.las +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/l07_01_nl_excerpt.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/mariana_1200_serpentinite_geochem.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/med_160_sapropels.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/med_160_sapropels.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/nankai_megasplay_shear_strength.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/nankai_megasplay_shear_strength.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_1027b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_1027b_thermal_conductivity.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_1027c_cork_temperature.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_1027c_cork_temperature.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_1165b_thermal_conductivity.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_1165b_thermal_conductivity.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_1274a_mantle_peridotite_mad.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_504b_dike_elastic_moduli.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_504b_leg137_borehole_fluids.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/odp_735b_gabbro_elastic_moduli.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/peru_201_sulfate_reduction.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/peru_201_sulfate_reduction.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/scorpio_e1_sa_excerpt.las +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/scorpio_e1_sa_excerpt.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/sumatra_362_cohesion.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/sumatra_362_cohesion.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/university_6_17_no1_tx_excerpt.las +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ursa_308_xrd_mineralogy.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/ursa_308_xrd_mineralogy.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/volve_15_9_19_sr_excerpt.las +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/volve_15_9_19a_core_excerpt.csv +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/volve_f12_f14_production_excerpt.csv +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/volve_f12_f14_production_excerpt.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/walvis_208_petm_carbonate.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/walvis_208_petm_carbonate.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/woodlark_1109_rock_eval.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog/woodlark_1109_rock_eval.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog_map.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/catalog_register.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/certificates.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/cli.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/config_versioning.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/conformance.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/control_room.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/correlation.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/dashboard.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/declarations.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/deviation.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/dlis.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/dnp3.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/doctor.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/downhole_engine.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/drift_monitor.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/drill_string.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/earth_model.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/economics.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/ed25519.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/edr.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/elevation.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/etp.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/etp12_schemas.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/example_register_map.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/fat_sat.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/files.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/fixtures/README.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/fixtures/comcat_delaware_basin_2026-09.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/fixtures/comcat_mahoning_1990-2026.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/fixtures/comcat_youngstown_2011-2012.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/fixtures/ne_110m_coastline.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/follower.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/forward_model.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/friction_priors.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/gamma.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/gauge_aging.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/gauge_specs.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/geodesy.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/gravity_reference.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/hartip.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/TESTER_GUIDE.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/alarms.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/alerts.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/audit-update.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/backup.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/catalog.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/charts.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/conformance.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/control-room.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/data-in.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/declare.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/dlis.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/doctor.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/drift.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/drillstring.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/economics.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/edr.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/etp.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/field-ports.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/files.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/historian.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/instruments.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/interval.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/map.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/month-end.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/notifications.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/osdu.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/patches.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/penetrator.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/ppdm.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/quakeml.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/quality.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/seedlink.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/seismic.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/setup.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/simulation.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/site.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/sites.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/slip.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/soak.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/sra.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/start.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/structure.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/tools.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/transients.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/upkeep.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/vibration.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/well-report.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/well-tests.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/help/well3d.md +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/housekeeping.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/interval.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/inverse_engine.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/jobs.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/live_ports.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/loadtest.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/matplotlib_demo.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/modbus.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/modbus_rtu.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/model_card.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/month_end.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/mqtt_port.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/opcua_port.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/operator_app.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/osdu.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/patches.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/penetrator.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/permits.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/piwebapi.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/ports.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/ppdm.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/profile_catalog.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/project.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/qt6_downhole_app.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/quakeml.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reconciler.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/IU_ANMO_10_BHZ_response.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/IU_ANMO_10_BHZ_response.xml +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/eia_henry_hub_daily.csv.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/eia_prices.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/eia_wti_daily.csv.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/libmseed_steim.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/libmseed_steim1_4096.mseed +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/libmseed_steim2_4096.mseed +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/libmseed_steim2_512.mseed +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/mahoning_example.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/mud_motor_specs.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/penetrator_ratings.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/seismicity_protocols.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/tool_sources.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/us_outline.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/us_outline.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_3d.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_f4_interpretation.las.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_f4_logs.provenance.json +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_f4_lwd.las.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_surfaces.json.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_traj_F-10.xml.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_traj_F-4.xml.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_traj_F-5_12.25in.xml.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_traj_F-5_17.5in.xml.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_traj_F-5_36in.xml.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_traj_F-5_8.5in.xml.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/reference/volve_well_picks.csv.gz +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/report_history.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/rock_inventory.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/sample_record.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/sample_well_profile.csv +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/sbom.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seedlink.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/segy.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_array.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_assoc.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_detect.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_film.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_harmonic.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_qc.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_response.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_signature.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_track.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_uncertainty.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/seismic_unlisted.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/sensor_swap.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/series_cache.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/service_life.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/setup_checklist.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/shapefile.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/shell.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/shut_in.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/simulation.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/site_map.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/sla_report.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/slip.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/soak.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/sra.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/store_forward.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/strata_join.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/structure.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/supervisor.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/survey_cmd.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/survey_view.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/telemetry.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/tool_catalog.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/tool_library.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/tool_taxonomy.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/transient.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/vibration.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/well3d.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/well_assembler.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/well_report.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/well_test_validation.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/wits0.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/witsml.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea/workspace.py +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea_program.egg-info/dependency_links.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea_program.egg-info/entry_points.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea_program.egg-info/requires.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/gea_program.egg-info/top_level.txt +0 -0
- {gea_program-0.44.0 → gea_program-0.46.0}/setup.cfg +0 -0
- {gea_program-0.44.0 → gea_program-0.46.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.46.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
|
+
### The invoice cross-check
|
|
652
|
+
|
|
653
|
+
The drilling contractor's daywork invoice, day by day, against the daily
|
|
654
|
+
drilling reports and the drilling record, at the contract's terms as the
|
|
655
|
+
operator declares them: hours billed against hours reported, standby billed
|
|
656
|
+
at the operating rate, rig repair past the allowance, a trip or a circulation
|
|
657
|
+
the recorder never saw, a depth or footage overstated, an amount that is not
|
|
658
|
+
quantity times price, a day billed with no report. Each day AGREES, is in
|
|
659
|
+
QUESTION or DIFFERS, with the dollars in question and the line each comes
|
|
660
|
+
from; a client report with its PDF. The **Invoice check** tab, `gea
|
|
661
|
+
invoice-check`, `gea help invoice-check`.
|
|
662
|
+
|
|
663
|
+
### The lateral, the printable reports, the daily summary and the key
|
|
664
|
+
|
|
665
|
+
An earthquake near a well with a directional survey is measured from the
|
|
666
|
+
nearest point of its lateral, not from the pad - with the measured depth
|
|
667
|
+
there and the distance to the hypocentre - so a protocol radius is read
|
|
668
|
+
against the well bore a regulator means. Every client report is also
|
|
669
|
+
written as a PDF beside its HTML (the drawings redrawn, long tables
|
|
670
|
+
continued across pages) and kept in report history. Each morning the
|
|
671
|
+
program writes a one-page pad summary - what changed, what is due, what is
|
|
672
|
+
still missing - and sends it through the notification rules (`gea
|
|
673
|
+
pad-summary`). The dossier signing key can be retired and replaced: the old
|
|
674
|
+
key signs the hand-over, earlier dossiers still check out, and later ones
|
|
675
|
+
carry the rotation so a client can follow it (`gea dossier --rotate-key`).
|
|
676
|
+
`gea help pad-summary`.
|
|
677
|
+
|
|
651
678
|
### The earthquake watch and the alerts
|
|
652
679
|
|
|
653
680
|
While a well operates, the program reads the USGS earthquake catalogue
|
|
@@ -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
|
+
### The invoice cross-check
|
|
613
|
+
|
|
614
|
+
The drilling contractor's daywork invoice, day by day, against the daily
|
|
615
|
+
drilling reports and the drilling record, at the contract's terms as the
|
|
616
|
+
operator declares them: hours billed against hours reported, standby billed
|
|
617
|
+
at the operating rate, rig repair past the allowance, a trip or a circulation
|
|
618
|
+
the recorder never saw, a depth or footage overstated, an amount that is not
|
|
619
|
+
quantity times price, a day billed with no report. Each day AGREES, is in
|
|
620
|
+
QUESTION or DIFFERS, with the dollars in question and the line each comes
|
|
621
|
+
from; a client report with its PDF. The **Invoice check** tab, `gea
|
|
622
|
+
invoice-check`, `gea help invoice-check`.
|
|
623
|
+
|
|
624
|
+
### The lateral, the printable reports, the daily summary and the key
|
|
625
|
+
|
|
626
|
+
An earthquake near a well with a directional survey is measured from the
|
|
627
|
+
nearest point of its lateral, not from the pad - with the measured depth
|
|
628
|
+
there and the distance to the hypocentre - so a protocol radius is read
|
|
629
|
+
against the well bore a regulator means. Every client report is also
|
|
630
|
+
written as a PDF beside its HTML (the drawings redrawn, long tables
|
|
631
|
+
continued across pages) and kept in report history. Each morning the
|
|
632
|
+
program writes a one-page pad summary - what changed, what is due, what is
|
|
633
|
+
still missing - and sends it through the notification rules (`gea
|
|
634
|
+
pad-summary`). The dossier signing key can be retired and replaced: the old
|
|
635
|
+
key signs the hand-over, earlier dossiers still check out, and later ones
|
|
636
|
+
carry the rotation so a client can follow it (`gea dossier --rotate-key`).
|
|
637
|
+
`gea help pad-summary`.
|
|
638
|
+
|
|
612
639
|
### The earthquake watch and the alerts
|
|
613
640
|
|
|
614
641
|
While a well operates, the program reads the USGS earthquake catalogue
|
|
@@ -584,9 +584,39 @@ def main(argv=None) -> int:
|
|
|
584
584
|
p_dz.add_argument("--sources", type=str, default="", help="with --verify: a folder holding the source records to check against their hashes")
|
|
585
585
|
p_dz.add_argument("--key", action="store_true", help="print this site's signing key fingerprint")
|
|
586
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")
|
|
587
590
|
p_dz.add_argument("--actor", type=str, default="cli")
|
|
588
591
|
p_dz.add_argument("--json", action="store_true")
|
|
589
592
|
|
|
593
|
+
p_iv = sub.add_parser("invoice-check", help="the drilling contractor's daywork invoice, day by day, against the daily drilling reports and the drilling record, at the contract's terms")
|
|
594
|
+
p_iv.add_argument("--workspace", type=str, default=None)
|
|
595
|
+
p_iv.add_argument("--well", type=str, default=None)
|
|
596
|
+
p_iv.add_argument("--template", type=str, default=None, choices=["ddr", "invoice"], help="print the headings a file needs")
|
|
597
|
+
p_iv.add_argument("--attach-ddr", type=str, default=None, help="a daily drilling report (CSV)")
|
|
598
|
+
p_iv.add_argument("--attach-invoice", type=str, default=None, help="an invoice (CSV)")
|
|
599
|
+
p_iv.add_argument("--source", type=str, default="", help="with --attach-*: where the file came from")
|
|
600
|
+
p_iv.add_argument("--terms-source", type=str, default=None, help="declare the contract's terms: where they came from")
|
|
601
|
+
p_iv.add_argument("--day-start", type=str, default="06:00")
|
|
602
|
+
p_iv.add_argument("--report-date", type=str, default="start", choices=["start", "end"])
|
|
603
|
+
for k_ in ("operating", "standby", "repair", "moving", "force-majeure"):
|
|
604
|
+
p_iv.add_argument(f"--{k_}", type=float, default=None, help=f"the {k_.replace('-', ' ')} day rate, USD")
|
|
605
|
+
p_iv.add_argument("--repair-hours-job", type=float, default=None)
|
|
606
|
+
p_iv.add_argument("--repair-hours-month", type=float, default=None)
|
|
607
|
+
p_iv.add_argument("--write", action="store_true", help="write the client report")
|
|
608
|
+
p_iv.add_argument("--actor", type=str, default="cli")
|
|
609
|
+
p_iv.add_argument("--json", action="store_true")
|
|
610
|
+
|
|
611
|
+
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")
|
|
612
|
+
p_ps.add_argument("--workspace", type=str, required=True)
|
|
613
|
+
p_ps.add_argument("--send", action="store_true", help="also hand it to the notification rules (the event pad.summary)")
|
|
614
|
+
p_ps.add_argument("--at", type=str, default=None, help="the daily time the service writes it, HH:MM UTC")
|
|
615
|
+
p_ps.add_argument("--on", action="store_true", help="the service writes it each day")
|
|
616
|
+
p_ps.add_argument("--off", action="store_true", help="the service does not")
|
|
617
|
+
p_ps.add_argument("--actor", type=str, default="cli")
|
|
618
|
+
p_ps.add_argument("--json", action="store_true")
|
|
619
|
+
|
|
590
620
|
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")
|
|
591
621
|
p_rh.add_argument("--workspace", type=str, required=True)
|
|
592
622
|
p_rh.add_argument("--family", type=str, default=None, help="e.g. wells/Well-1/well_report or pad_report")
|
|
@@ -2297,6 +2327,23 @@ def main(argv=None) -> int:
|
|
|
2297
2327
|
k = _DZ.key_info(ws)
|
|
2298
2328
|
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")
|
|
2299
2329
|
return 0
|
|
2330
|
+
if a.rotate_key:
|
|
2331
|
+
try:
|
|
2332
|
+
r_ = _DZ.rotate_key(ws, a.actor, a.reason)
|
|
2333
|
+
except ValueError as ex:
|
|
2334
|
+
raise SystemExit(f"dossier: {ex}")
|
|
2335
|
+
print(f"retired {r_['old']['fingerprint']}; the new key is {r_['new']['fingerprint']}")
|
|
2336
|
+
print(" the rotation is signed by both keys and rides in every later dossier; give the new fingerprint to your clients")
|
|
2337
|
+
return 0
|
|
2338
|
+
if a.key_history:
|
|
2339
|
+
h_ = _DZ.key_history(ws)
|
|
2340
|
+
if a.json:
|
|
2341
|
+
print(_json.dumps(h_, default=str)); return 0
|
|
2342
|
+
for k in h_["keys"]:
|
|
2343
|
+
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"))
|
|
2344
|
+
if not h_["keys"]:
|
|
2345
|
+
print("no key history yet")
|
|
2346
|
+
return 0
|
|
2300
2347
|
if a.list:
|
|
2301
2348
|
for e in reversed(_DZ.ledger(ws)):
|
|
2302
2349
|
print(f"{e['utc']} {e['dossier_id']} {e['display']:<24} {e['n_files']:>4} files {e['path']}")
|
|
@@ -2309,6 +2356,76 @@ def main(argv=None) -> int:
|
|
|
2309
2356
|
print(f" {os.path.join(ws.reports_dir, e['path'])}")
|
|
2310
2357
|
print(f" key fingerprint {e['fingerprint']}")
|
|
2311
2358
|
return 0
|
|
2359
|
+
elif a.cmd == "invoice-check":
|
|
2360
|
+
import json as _json
|
|
2361
|
+
from . import invoice_check as _IC
|
|
2362
|
+
from .cli import _safe_stdout
|
|
2363
|
+
from .workspace import Workspace, WorkspaceError
|
|
2364
|
+
_safe_stdout()
|
|
2365
|
+
if a.template:
|
|
2366
|
+
print(_IC.template(a.template), end="")
|
|
2367
|
+
return 0
|
|
2368
|
+
if not a.workspace:
|
|
2369
|
+
raise SystemExit("invoice-check: give --workspace C:\\site (or --template ddr)")
|
|
2370
|
+
try:
|
|
2371
|
+
ws = Workspace(a.workspace)
|
|
2372
|
+
if a.terms_source is not None:
|
|
2373
|
+
t_ = _IC.set_terms(ws, a.actor, a.terms_source, a.day_start, a.report_date,
|
|
2374
|
+
{"operating": a.operating, "standby": a.standby, "repair": a.repair, "moving": a.moving, "force_majeure": a.force_majeure},
|
|
2375
|
+
a.repair_hours_job, a.repair_hours_month)
|
|
2376
|
+
print("terms kept: " + ", ".join(f"{k} {v:,.2f} USD/day" for k, v in t_["rates_usd_per_day"].items()) + f"; report day from {t_['day_start']}")
|
|
2377
|
+
return 0
|
|
2378
|
+
wid = a.well or (ws.wells()[0]["id"] if ws.wells() else None)
|
|
2379
|
+
if wid is None:
|
|
2380
|
+
raise SystemExit("invoice-check: the workspace has no wells")
|
|
2381
|
+
for kind, f_ in (("ddr", a.attach_ddr), ("invoice", a.attach_invoice)):
|
|
2382
|
+
if f_:
|
|
2383
|
+
with open(f_, "rb") as fh:
|
|
2384
|
+
r_ = _IC.attach(ws, a.actor, wid, kind, os.path.basename(f_), fh.read(), a.source)
|
|
2385
|
+
print(f"attached {r_['name']}: {r_['lines']} line(s)" + (f", {len(r_['errors'])} not read" if r_['errors'] else ""))
|
|
2386
|
+
if a.attach_ddr or a.attach_invoice:
|
|
2387
|
+
return 0
|
|
2388
|
+
if a.write:
|
|
2389
|
+
r_ = _IC.write_report(ws, wid, __version__, a.actor)
|
|
2390
|
+
print(f"wrote {r_['report_id']} ({r_['status']}): {r_['paths']['html']}")
|
|
2391
|
+
if r_['paths'].get('pdf'):
|
|
2392
|
+
print(f" printable: {r_['paths']['pdf']}")
|
|
2393
|
+
return 0
|
|
2394
|
+
r = _IC.check(ws, wid)
|
|
2395
|
+
except (KeyError, ValueError, OSError, WorkspaceError) as e:
|
|
2396
|
+
raise SystemExit(f"invoice-check: {e.args[0] if e.args else e}")
|
|
2397
|
+
print(_json.dumps(r, default=str) if a.json else _IC.text(r))
|
|
2398
|
+
return 0
|
|
2399
|
+
elif a.cmd == "pad-summary":
|
|
2400
|
+
import json as _json
|
|
2401
|
+
from . import pad_summary as _PS
|
|
2402
|
+
from .cli import _safe_stdout
|
|
2403
|
+
from .notify import Notifier
|
|
2404
|
+
from .workspace import Workspace, WorkspaceError
|
|
2405
|
+
_safe_stdout()
|
|
2406
|
+
try:
|
|
2407
|
+
ws = Workspace(a.workspace)
|
|
2408
|
+
except WorkspaceError as e:
|
|
2409
|
+
raise SystemExit(f"pad-summary: {e}")
|
|
2410
|
+
if a.at or a.on or a.off:
|
|
2411
|
+
try:
|
|
2412
|
+
s_ = _PS.set_settings(ws, a.actor, enabled=(True if a.on else False if a.off else None), at=a.at)
|
|
2413
|
+
except ValueError as e:
|
|
2414
|
+
raise SystemExit(f"pad-summary: {e}")
|
|
2415
|
+
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'}")
|
|
2416
|
+
return 0
|
|
2417
|
+
n_ = None
|
|
2418
|
+
if a.send:
|
|
2419
|
+
n_ = Notifier(ws.path); n_.reload()
|
|
2420
|
+
r = _PS.write(ws, __version__, a.actor, n_, send=bool(a.send))
|
|
2421
|
+
if a.json:
|
|
2422
|
+
print(_json.dumps(r, default=str)); return 0
|
|
2423
|
+
print(f"wrote {r['report_id']} (since {r['since']}): {r['paths']['html']}")
|
|
2424
|
+
if r['paths'].get('pdf'):
|
|
2425
|
+
print(f" printable: {r['paths']['pdf']}")
|
|
2426
|
+
if a.send:
|
|
2427
|
+
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'}")
|
|
2428
|
+
return 0
|
|
2312
2429
|
elif a.cmd == "reports-history":
|
|
2313
2430
|
import json as _json
|
|
2314
2431
|
from . import report_history as _RH
|