Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
809 commits
Select commit Hold shift + click to select a range
b807b1d
Merge pull request #480 from DataIntegrationGroup/transfer-fix
jirhiker Feb 12, 2026
b00918b
update dependabot configuration for weekly dependency updates and add…
jirhiker Feb 12, 2026
14cf1be
Update .github/dependabot.yml
jirhiker Feb 12, 2026
161d907
Update .github/workflows/dependabot_automerge.yml
jirhiker Feb 12, 2026
dcf722f
enhance auto-merge workflow to prevent duplicate approvals by the bot
jirhiker Feb 12, 2026
a93f4b6
Update .github/workflows/dependabot_automerge.yml
jirhiker Feb 12, 2026
5794ffe
Update .github/dependabot.yml
jirhiker Feb 12, 2026
72cd4fb
Merge pull request #484 from DataIntegrationGroup/transfer-fix
jirhiker Feb 12, 2026
91d92c6
build(deps): bump py-actions/flake8 from 1 to 2
dependabot[bot] Feb 12, 2026
d8e0d27
build(deps): bump actions/github-script from 7 to 8
dependabot[bot] Feb 12, 2026
62cd5fa
build(deps): bump getsentry/action-release from 1 to 3
dependabot[bot] Feb 12, 2026
35366f3
build(deps): bump actions/setup-python from 5 to 6
dependabot[bot] Feb 12, 2026
d137791
build(deps): bump actions/checkout from 3 to 6
dependabot[bot] Feb 12, 2026
1aa486c
Merge pull request #485 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 12, 2026
9c6e00e
Merge pull request #486 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 12, 2026
037568b
Merge pull request #487 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 12, 2026
5978148
Merge pull request #488 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 12, 2026
815ca09
Merge pull request #489 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 12, 2026
909ec38
Merge pull request #433 from DataIntegrationGroup/dependabot/uv/pytho…
jirhiker Feb 12, 2026
12337b0
Merge pull request #398 from DataIntegrationGroup/dependabot/uv/filel…
jirhiker Feb 12, 2026
cff2955
Merge pull request #396 from DataIntegrationGroup/dependabot/uv/authl…
jirhiker Feb 12, 2026
9952f30
Merge pull request #395 from DataIntegrationGroup/dependabot/uv/pyasn…
jirhiker Feb 12, 2026
e6bb804
Merge pull request #368 from DataIntegrationGroup/dependabot/pip/file…
jirhiker Feb 12, 2026
e125ea8
build(deps): bump the uv-non-major group across 1 directory with 57 u…
dependabot[bot] Feb 12, 2026
c224633
feat: integrate Apitally middleware and update environment configurat…
jirhiker Feb 12, 2026
9da83d5
fix: correct variable name for Apitally client ID in middleware integ…
jirhiker Feb 12, 2026
ba4d4f2
fix: pin dependencies in pyproject.toml to specific versions
jirhiker Feb 12, 2026
64d7153
fix: update Apitally dependency specifications and add optional fasta…
jirhiker Feb 12, 2026
89b6b3f
fix: update environment variable handling in CI configurations and ma…
jirhiker Feb 12, 2026
67cb913
Merge pull request #497 from DataIntegrationGroup/api-tracking
jirhiker Feb 12, 2026
5f413ee
build(deps): bump pytest from 8.4.1 to 9.0.2
dependabot[bot] Feb 12, 2026
349d012
fix: update APITALLY_CLIENT_ID handling in CI configuration files
jirhiker Feb 12, 2026
da62def
Merge pull request #498 from DataIntegrationGroup/api-tracking
jirhiker Feb 12, 2026
1db1a48
Merge pull request #491 from DataIntegrationGroup/dependabot/uv/stagi…
jirhiker Feb 12, 2026
b423397
fix: update fastapi version and correct variable name for sample poin…
jirhiker Feb 13, 2026
2fd43f8
Merge pull request #499 from DataIntegrationGroup/transfer-fix
jirhiker Feb 13, 2026
5f8e22c
fix: update fastapi version and hash values in requirements.txt
jirhiker Feb 13, 2026
bea731d
Merge pull request #500 from DataIntegrationGroup/transfer-fix
jirhiker Feb 13, 2026
be78f15
fix: update transfer logic to use unique key for deduplication and up…
jirhiker Feb 13, 2026
ee62cea
Merge pull request #501 from DataIntegrationGroup/transfer-fix
jirhiker Feb 13, 2026
329e761
Harden jira codex PR workflow
jirhiker Feb 13, 2026
299dd34
Merge pull request #504 from DataIntegrationGroup/jira-automation
jirhiker Feb 13, 2026
10e0d55
Add black and flake8 dev deps and harden jira workflow
jirhiker Feb 13, 2026
be1b1f8
Update .github/workflows/jira_codex_pr.yml
jirhiker Feb 13, 2026
69803d5
Update pyproject.toml
jirhiker Feb 13, 2026
1c3d696
Merge pull request #505 from DataIntegrationGroup/jira-automation
jirhiker Feb 13, 2026
d5b61a4
Validate Jira base URL before API calls
jirhiker Feb 13, 2026
3c0db67
Merge pull request #506 from DataIntegrationGroup/jira-automation
jirhiker Feb 13, 2026
3f2a519
chore: update allowed Jira project keys and change base branch to sta…
jirhiker Feb 13, 2026
65e39b2
Merge pull request #507 from DataIntegrationGroup/jira-automation
jirhiker Feb 13, 2026
03e78a9
chore: update environment name in workflow and switch to vars for JIR…
jirhiker Feb 13, 2026
3a5157f
Handle Jira API base URL variants and 404 diagnostics
jirhiker Feb 13, 2026
0c558e1
chore: update environment name in workflow and switch to vars for JIR…
jirhiker Feb 13, 2026
d9aa272
chore: update environment name in workflow and switch to vars for JIR…
jirhiker Feb 13, 2026
941e722
chore: switch JIRA_BASE_URL to use workflow variables
jirhiker Feb 13, 2026
759ae95
Merge pull request #508 from DataIntegrationGroup/jira-automation
jirhiker Feb 13, 2026
27d7113
chore: update Jira API authentication to use bearer token
jirhiker Feb 13, 2026
c29c057
chore: update Jira API authentication to use email and API token
jirhiker Feb 13, 2026
583e637
Merge pull request #509 from DataIntegrationGroup/jira-automation
jirhiker Feb 13, 2026
386ebcf
chore: prepare Codex home directory and update API key parameter format
jirhiker Feb 13, 2026
7bbaa07
Merge pull request #510 from DataIntegrationGroup/jira-automation
jirhiker Feb 13, 2026
35a6e22
chore: add GitHub Action to create Jira issues on new GitHub issues
jirhiker Feb 13, 2026
e3456f5
Merge pull request #511 from DataIntegrationGroup/BDMS-557-Implement-…
jirhiker Feb 13, 2026
7150e0d
chore: enhance issue body formatting for Jira integration
jirhiker Feb 13, 2026
88fb202
Merge pull request #514 from DataIntegrationGroup/BDMS-557-Implement-…
jirhiker Feb 13, 2026
a9c4b1c
chore: fix issue body formatting in Jira integration for better reada…
jirhiker Feb 13, 2026
49c089e
Merge pull request #516 from DataIntegrationGroup/BDMS-557-Implement-…
jirhiker Feb 13, 2026
2b46439
chore: refactor transfer functions to improve point ID handling and l…
jirhiker Feb 15, 2026
f3dd80d
Merge pull request #518 from DataIntegrationGroup/transfer-fix
jirhiker Feb 15, 2026
caa1ad4
chore: enhance data quality mapping and handling in water levels tran…
jirhiker Feb 15, 2026
60ab167
chore: enhance error capturing for DataQuality mapping in water level…
jirhiker Feb 15, 2026
e02d2e1
Merge pull request #519 from DataIntegrationGroup/transfer-fix
jirhiker Feb 15, 2026
35b15e4
chore: build caches for Thing and owner contacts in water levels tran…
jirhiker Feb 15, 2026
95bfb60
Merge pull request #520 from DataIntegrationGroup/transfer-fix
jirhiker Feb 15, 2026
ee350ea
chore: update pydantic and pydantic-core versions, enhance phone numb…
jirhiker Feb 15, 2026
1936f9a
Formatting changes
jirhiker Feb 15, 2026
b93b00c
chore: update pydantic and pydantic-core versions, enhance phone numb…
jirhiker Feb 15, 2026
40fbe54
chore: update phone validation output format in CLI tests
jirhiker Feb 15, 2026
f70ec28
Formatting changes
jirhiker Feb 15, 2026
4c1156b
Update schemas/well_inventory.py
jirhiker Feb 15, 2026
783a6ab
Formatting changes
jirhiker Feb 15, 2026
9c06f8c
delete file
jirhiker Feb 15, 2026
70cc08c
Apply suggestions from code review
jirhiker Feb 15, 2026
06c2120
Formatting changes
jirhiker Feb 15, 2026
23ce228
chore: update pydantic and pydantic-core versions, enhance phone numb…
jirhiker Feb 15, 2026
d03b553
chore: update CSV validation scenarios and improve auto-generation lo…
jirhiker Feb 15, 2026
87d1315
Formatting changes
jirhiker Feb 15, 2026
f8496cf
chore: limit displayed validation errors to 10 and update output form…
jirhiker Feb 15, 2026
0a76f6b
feat: add theme support and improve validation output formatting in C…
jirhiker Feb 15, 2026
b822c6f
Formatting changes
jirhiker Feb 15, 2026
3b7c561
feat: add validation for missing well_name_point_id column in CSV pro…
jirhiker Feb 15, 2026
c9d1305
test: update test for blank well_name_point_id to auto-generate IDs
jirhiker Feb 15, 2026
6e895ca
test: update CSV test to include a valid row with a blank well_name_p…
jirhiker Feb 15, 2026
21ad925
feat: enhance CSV processing to handle duplicate contact names and or…
jirhiker Feb 15, 2026
7c081d4
Update services/well_inventory_csv.py
jirhiker Feb 15, 2026
9765313
Update tests/features/environment.py
jirhiker Feb 15, 2026
f5d9013
Update tests/test_cli_commands.py
jirhiker Feb 15, 2026
619f59f
refactor: rename step implementations for clarity and consistency
jirhiker Feb 15, 2026
95f1426
test: add test for handling multiple contacts with null organizations…
jirhiker Feb 15, 2026
81a324e
test: remove redundant test for handling multiple null organization c…
jirhiker Feb 15, 2026
1d6d697
test: streamline CSV upload tests for blank well_name_point_id and du…
jirhiker Feb 15, 2026
729faba
fix: update type hint for well_id parameter in _extract_autogen_prefi…
jirhiker Feb 15, 2026
f8ceb2c
fix: enhance error handling and validation reporting in CSV upload pr…
jirhiker Feb 16, 2026
26b20a8
build(deps): bump stefanzweifel/git-auto-commit-action
dependabot[bot] Feb 16, 2026
f323b39
build(deps): bump actions/github-script from 7 to 8
dependabot[bot] Feb 16, 2026
274b9a0
build(deps): bump actions/checkout from 4.3.1 to 6.0.2
dependabot[bot] Feb 16, 2026
a47249c
build(deps): bump google-github-actions/auth from 2 to 3
dependabot[bot] Feb 16, 2026
6c91d3d
build(deps): bump the uv-non-major group with 18 updates (#528)
dependabot[bot] Feb 16, 2026
bdc4338
Merge pull request #523 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 16, 2026
026fc11
Merge pull request #524 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 16, 2026
0090866
Merge pull request #525 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 16, 2026
efd2153
Merge pull request #526 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 16, 2026
c240553
build(deps): bump actions/setup-python from 5.6.0 to 6.2.0
dependabot[bot] Feb 16, 2026
229e624
Merge pull request #527 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 16, 2026
3c11d05
fix: improve error handling and logging for recording interval estima…
jirhiker Feb 16, 2026
5338013
fix: enhance autogen value handling with regex validation
jirhiker Feb 16, 2026
9f66270
Update services/well_inventory_csv.py
jirhiker Feb 16, 2026
41dd2e2
Update services/well_inventory_csv.py
jirhiker Feb 16, 2026
f37a852
Update transfers/well_transfer.py
jirhiker Feb 16, 2026
0daea1f
Update transfers/sensor_transfer.py
jirhiker Feb 16, 2026
ee8d8db
fix: correct logic for recording interval check in sensor_transfer.py
jirhiker Feb 16, 2026
d95904b
fix: remove unsupported pattern handling in well_inventory_csv.py
jirhiker Feb 16, 2026
6599c42
Merge pull request #521 from DataIntegrationGroup/well-inventory-csv-fix
jirhiker Feb 16, 2026
dcd49b4
fix: improve error handling and logging for recording interval estima…
jirhiker Feb 16, 2026
5b7df1b
Update services/well_inventory_csv.py
jirhiker Feb 16, 2026
19f8de1
Update services/well_inventory_csv.py
jirhiker Feb 16, 2026
b363ace
Update transfers/well_transfer.py
jirhiker Feb 16, 2026
7c6bab5
Update transfers/sensor_transfer.py
jirhiker Feb 16, 2026
066ab6a
fix: correct logic for recording interval check in sensor_transfer.py
jirhiker Feb 16, 2026
08c4beb
fix: remove unsupported pattern handling in well_inventory_csv.py
jirhiker Feb 16, 2026
8896bb6
fix: add imports for shapely and sqlalchemy to support database opera…
jirhiker Feb 16, 2026
db0dc8f
Merge pull request #531 from DataIntegrationGroup/transfer-fix-review…
jirhiker Feb 16, 2026
38771fc
fix well status
jirhiker Feb 16, 2026
04c943e
fix: add new well status term and normalize completion date handling
jirhiker Feb 16, 2026
02cfa3b
Update transfers/util.py
jirhiker Feb 16, 2026
81f24f5
Update core/lexicon.json
jirhiker Feb 16, 2026
1260784
fix: enhance completion date normalization to handle various input ty…
jirhiker Feb 16, 2026
52a94ec
fix: initialize test schema and update alembic configuration handling
jirhiker Feb 16, 2026
7b128dd
Merge pull request #532 from DataIntegrationGroup/transfer-fix-review…
jirhiker Feb 16, 2026
b5f84ad
fix: enhance name generation logic to use OwnerKey as fallback and up…
jirhiker Feb 17, 2026
727bea1
fix: enhance contact name generation logic to use OwnerKey as fallbac…
jirhiker Feb 17, 2026
596f37f
Merge pull request #534 from DataIntegrationGroup/BDMS-565-enhance-na…
marissafichera Feb 18, 2026
1d9fbc5
fix(db): remove unique constraint on MinorTraceChemistry table
ksmuczynski Feb 18, 2026
8c26bc1
fix(db): update import logic to use `nma_GlobalID` for MinorTraceChem…
ksmuczynski Feb 18, 2026
a5943d8
feat(migrations): new migration script to drop minor trace chemistry …
ksmuczynski Feb 19, 2026
64c23dd
Formatting changes
ksmuczynski Feb 19, 2026
835a372
Merge pull request #535 from DataIntegrationGroup/kas-bdms-574-remove…
jirhiker Feb 19, 2026
1195f1a
feat: add WellTransferResultsBuilder for summarizing well transfer ou…
jirhiker Feb 19, 2026
e8d8bf3
feat: implement TransferResultsBuilder and comparison specs for trans…
jirhiker Feb 20, 2026
cfb576e
Formatting changes
jirhiker Feb 20, 2026
2d4d8ff
feat(migrations): make NMA_SurfaceWaterData.thing_id nullable
jirhiker Feb 20, 2026
ba7881b
fix: enforce required thing_id for NMA_SurfaceWaterData and add valid…
jirhiker Feb 20, 2026
b4764b2
feat: add transfer-results command for generating transfer results su…
jirhiker Feb 20, 2026
3528718
Formatting changes
jirhiker Feb 20, 2026
fd7e243
feat: make various fields nullable and enhance data transfer handling
jirhiker Feb 22, 2026
41ff8de
Formatting changes
jirhiker Feb 22, 2026
a2baff6
feat: enable database drop and rebuild for unit tests
jirhiker Feb 22, 2026
d2f4f1f
feat: enhance data transfer handling by logging skipped records and u…
jirhiker Feb 22, 2026
e089b32
feat: update nullable fields in relaxed_constraints.md for MeasuringP…
jirhiker Feb 22, 2026
3e1e5cf
build(deps): bump actions/cache from 4 to 5
dependabot[bot] Feb 23, 2026
06eb923
build(deps): bump astral-sh/setup-uv from 4.2.0 to 7.3.0
dependabot[bot] Feb 23, 2026
f08b0a7
Merge pull request #538 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 23, 2026
c9cf672
feat: simplify location DataFrame caching by removing threading lock
jirhiker Feb 23, 2026
6064925
Merge pull request #539 from DataIntegrationGroup/dependabot/github_a…
jirhiker Feb 23, 2026
7824779
feat: add well smoke test command and enhance contact handling with m…
jirhiker Feb 23, 2026
1ef94a9
Merge pull request #537 from DataIntegrationGroup/BDMS-576-Verify-tha…
jirhiker Feb 23, 2026
9f20199
fix(transfers): handle missing MPHeight values during migration
ksmuczynski Feb 23, 2026
5be435f
fix(db): skip null measuring point history in property calculations
ksmuczynski Feb 23, 2026
7c0e920
Merge pull request #542 from DataIntegrationGroup/kas-nan-mpheights
jirhiker Feb 23, 2026
8f6212c
feat: update package versions in requirements.txt for compatibility a…
jirhiker Feb 24, 2026
cc3f904
Merge pull request #543 from DataIntegrationGroup/BDMS-576-Verify-tha…
jirhiker Feb 24, 2026
a440b55
feat: integrate pygeoapi for OGC API - Features endpoints and update …
jirhiker Feb 24, 2026
a427cd6
Formatting changes
jirhiker Feb 24, 2026
9bdaaca
Potential fix for code scanning alert no. 17: Clear-text storage of s…
jirhiker Feb 24, 2026
d96b6c1
Update core/pygeoapi.py
jirhiker Feb 24, 2026
04d05b5
feat: enhance pygeoapi configuration with new thing collections and s…
jirhiker Feb 24, 2026
2997de2
Formatting changes
jirhiker Feb 24, 2026
d635162
fix: update pygeoapi configuration to use environment variable for Po…
jirhiker Feb 24, 2026
a2e8f57
feat: create supporting views for pygeoapi OGC API integration
jirhiker Feb 25, 2026
87d1b9e
Formatting changes
jirhiker Feb 25, 2026
b7baeda
Update core/pygeoapi.py
jirhiker Feb 25, 2026
64eeb02
Update core/pygeoapi.py
jirhiker Feb 25, 2026
77968de
feat: update pygeoapi configuration to use environment variables for …
jirhiker Feb 25, 2026
7a51c38
feat(transfers): add permissions transfer functionality and update co…
jirhiker Feb 25, 2026
563d5d1
Merge pull request #546 from DataIntegrationGroup/transfer-fix-permis…
jirhiker Feb 25, 2026
de1ace4
feat(transfers): add permissions transfer functionality and update co…
jirhiker Feb 25, 2026
d4da8ff
feat: update pygeoapi supporting views and enhance thing collections …
jirhiker Feb 25, 2026
b356c7a
feat: update environment variable references for PostgreSQL settings …
jirhiker Feb 25, 2026
ffd30e4
Formatting changes
jirhiker Feb 25, 2026
9c74fac
feat: change views to materialized views for depth and TDS data in py…
jirhiker Feb 25, 2026
4923c1e
feat: refactor app initialization to import from main module
jirhiker Feb 25, 2026
2ad195f
feat: add refresh command for pygeoapi materialized views and schedul…
jirhiker Feb 25, 2026
9a5e01e
Formatting changes
jirhiker Feb 25, 2026
c8d6957
feat: enhance test workflow by adding database readiness checks and p…
jirhiker Feb 25, 2026
dc424cf
feat: add Dockerfile to set up PostGIS with pg_cron for scheduled tasks
jirhiker Feb 26, 2026
131f46e
Update alembic/versions/d5e6f7a8b9c0_create_pygeoapi_supporting_views.py
jirhiker Feb 26, 2026
d7d5880
Update db/initialization.py
jirhiker Feb 26, 2026
92e031c
Update core/pygeoapi.py
jirhiker Feb 26, 2026
9cae52a
Update alembic/versions/d5e6f7a8b9c0_create_pygeoapi_supporting_views.py
jirhiker Feb 26, 2026
36b5bb5
feat: update endpoint paths from /oapi to /ogcapi and improve pg_cron…
jirhiker Feb 26, 2026
b94c565
Formatting changes
jirhiker Feb 26, 2026
c8b31ce
feat: rename wells collection to water_wells for consistency
jirhiker Feb 26, 2026
627a27b
feat: ensure feature IDs are consistently treated as strings in tests
jirhiker Feb 26, 2026
42e93d2
Update cli/cli.py
jirhiker Feb 26, 2026
5e26ba3
Formatting changes
jirhiker Feb 26, 2026
c799ed5
feat: update API endpoint paths from /oapi to /ogcapi and set default…
jirhiker Feb 26, 2026
7c9bd47
feat: update OGC API endpoint path and add unique indexes for materia…
jirhiker Feb 26, 2026
2d40419
feat: enhance test for refreshing materialized views with execution o…
jirhiker Feb 26, 2026
c0c911a
Formatting changes
jirhiker Feb 26, 2026
2bb0032
feat: refactor test connection context management in CLI commands
jirhiker Feb 26, 2026
b3248ab
Update cli/cli.py
jirhiker Feb 26, 2026
41d16c1
Update tests/conftest.py
jirhiker Feb 26, 2026
32237e3
Merge pull request #545 from DataIntegrationGroup/jir-ogc
jirhiker Feb 26, 2026
b4a2841
feat: refactor location CTE for materialized views and enhance path v…
jirhiker Feb 26, 2026
9fc0b16
Update alembic/versions/d5e6f7a8b9c0_create_pygeoapi_supporting_views.py
jirhiker Feb 26, 2026
0ff7bcc
Merge pull request #547 from DataIntegrationGroup/jir-ogc
jirhiker Feb 26, 2026
ef96f7b
feat(core): add legacy site notes field to lexicon
ksmuczynski Feb 26, 2026
b533da4
feat(db, schemas): add support for legacy site notes
ksmuczynski Feb 26, 2026
a58fc75
feat(transfers): add support for legacy SiteNotes handling
ksmuczynski Feb 26, 2026
e6a8f21
fix(transfers): handle duplicate legacy SiteNotes with date context
ksmuczynski Feb 26, 2026
43852fe
feat: enhance refresh job scheduling with improved privilege handling…
jirhiker Feb 27, 2026
cf51d48
feat: handle internal error in pg_cron job unscheduling for better ro…
jirhiker Feb 27, 2026
2f97d25
Merge pull request #551 from DataIntegrationGroup/jir-ogc
jirhiker Feb 27, 2026
700dbdd
Merge pull request #550 from DataIntegrationGroup/kas-migrate-legacy-…
jirhiker Feb 27, 2026
f001b58
feat: update dotenv loading behavior to prevent overriding existing e…
jirhiker Feb 27, 2026
da45ae8
Merge pull request #552 from DataIntegrationGroup/jir-ogc
jirhiker Feb 27, 2026
2261484
feat: enable IAM authentication by default for Cloud SQL connections
jirhiker Feb 27, 2026
6df9112
Merge pull request #553 from DataIntegrationGroup/jir-ogc
jirhiker Feb 27, 2026
4ea1c80
feat: enhance database configuration handling for Cloud SQL with IAM …
jirhiker Feb 27, 2026
5c9b0c7
Merge pull request #554 from DataIntegrationGroup/jir-ogc
jirhiker Feb 27, 2026
c2f4b86
feat: enforce IAM authentication for Cloud SQL connections by removin…
jirhiker Feb 27, 2026
a3c260b
Merge pull request #555 from DataIntegrationGroup/jir-ogc
jirhiker Feb 27, 2026
2581f61
feat: disable default IAM authentication for Cloud SQL connections an…
jirhiker Feb 27, 2026
a4343ee
Merge pull request #556 from DataIntegrationGroup/jir-ogc
jirhiker Feb 27, 2026
1df8425
feat(core): add "Windmill" term to lexicon with category `well_pump_t…
ksmuczynski Feb 27, 2026
8c52924
Merge pull request #557 from DataIntegrationGroup/kas-add-windmill-as…
ksmuczynski Feb 27, 2026
19f016b
feat: remove unused PYGEOAPI environment variables and add PYGEOAPI_S…
jirhiker Feb 27, 2026
b830123
Merge pull request #559 from DataIntegrationGroup/jir-ogc
jirhiker Feb 27, 2026
9274d83
feat: add app.template.yaml for dynamic app configuration and update …
jirhiker Feb 27, 2026
8035735
Merge pull request #561 from DataIntegrationGroup/jir-ogc
jirhiker Feb 27, 2026
0c904f6
feat: update app.template.yaml to use block scalar for sensitive envi…
jirhiker Feb 27, 2026
b710200
Merge pull request #562 from DataIntegrationGroup/jir-ogc
jirhiker Feb 27, 2026
a4edbf7
fix: log BackfillResult outcomes and preserve tracebacks in orchestrator
kbighorse Feb 28, 2026
c77f598
fix: remove unused `as exc` binding
kbighorse Feb 28, 2026
982a63c
feat: optimize water level data transfer by implementing chunked depl…
jirhiker Feb 28, 2026
040e787
Merge pull request #574 from DataIntegrationGroup/BDMS-613-Complete-c…
jirhiker Feb 28, 2026
7895e8d
Merge pull request #569 from DataIntegrationGroup/fix/backfill-orches…
jirhiker Mar 2, 2026
75c2ddf
build(deps): bump astral-sh/setup-uv in the gha-minor-and-patch group…
dependabot[bot] Mar 2, 2026
e4cd4e3
fix: make pg_cron optional for local development
kbighorse Mar 2, 2026
31facf7
Merge pull request #577 from DataIntegrationGroup/fix/pg-cron-optional
jirhiker Mar 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ POSTGRES_USER=admin
POSTGRES_PASSWORD=password
POSTGRES_DB=ocotillo
POSTGRES_HOST=localhost
POSTGRES_PORT=54321
POSTGRES_PORT=5432

# Connection pool configuration for parallel transfers
# pool_size: number of persistent connections to maintain
Expand All @@ -20,6 +20,7 @@ TRANSFER_PARALLEL=1
TRANSFER_WELL_SCREENS=True
TRANSFER_SENSORS=True
TRANSFER_CONTACTS=True
TRANSFER_PERMISSIONS=True
TRANSFER_WATERLEVELS=True
TRANSFER_WATERLEVELS_PRESSURE=True
TRANSFER_WATERLEVELS_ACOUSTIC=True
Expand All @@ -46,6 +47,9 @@ MODE=development
# disable authentication (for development only)
AUTHENTIK_DISABLE_AUTHENTICATION=1

# erase and rebuild the database for step tests
REBUILD_DB=1

# authentik
AUTHENTIK_URL=
AUTHENTIK_CLIENT_ID=
Expand Down
34 changes: 34 additions & 0 deletions .github/app.template.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
service: ${SERVICE_NAME}
runtime: python313
entrypoint: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
instance_class: F4
service_account: "${CLOUD_SQL_USER}.gserviceaccount.com"
handlers:
- url: /.*
secure: always
script: auto
env_variables:
MODE: "production"
ENVIRONMENT: "${ENVIRONMENT}"
DB_DRIVER: "cloudsql"
CLOUD_SQL_INSTANCE_NAME: "${CLOUD_SQL_INSTANCE_NAME}"
CLOUD_SQL_DATABASE: "${CLOUD_SQL_DATABASE}"
CLOUD_SQL_USER: "${CLOUD_SQL_USER}"
PYGEOAPI_POSTGRES_DB: "${PYGEOAPI_POSTGRES_DB}"
PYGEOAPI_POSTGRES_USER: "${PYGEOAPI_POSTGRES_USER}"
PYGEOAPI_POSTGRES_HOST: "${PYGEOAPI_POSTGRES_HOST}"
PYGEOAPI_POSTGRES_PORT: "${PYGEOAPI_POSTGRES_PORT}"
PYGEOAPI_POSTGRES_PASSWORD: |-
${PYGEOAPI_POSTGRES_PASSWORD}
PYGEOAPI_SERVER_URL: "${PYGEOAPI_SERVER_URL}"
CLOUD_SQL_IAM_AUTH: "${CLOUD_SQL_IAM_AUTH}"
GCS_SERVICE_ACCOUNT_KEY: |-
${GCS_SERVICE_ACCOUNT_KEY}
GCS_BUCKET_NAME: "${GCS_BUCKET_NAME}"
AUTHENTIK_URL: "${AUTHENTIK_URL}"
AUTHENTIK_CLIENT_ID: "${AUTHENTIK_CLIENT_ID}"
AUTHENTIK_AUTHORIZE_URL: "${AUTHENTIK_AUTHORIZE_URL}"
AUTHENTIK_TOKEN_URL: "${AUTHENTIK_TOKEN_URL}"
SESSION_SECRET_KEY: |-
${SESSION_SECRET_KEY}
APITALLY_CLIENT_ID: "${APITALLY_CLIENT_ID}"
40 changes: 38 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,44 @@

version: 2
updates:
- package-ecosystem: "uv" # See documentation for possible values
directory: "/" # Location of package manifests
- package-ecosystem: "uv"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
timezone: "America/Denver"
target-branch: "staging"
open-pull-requests-limit: 5
rebase-strategy: "auto"
labels:
- "dependencies"
- "python"
groups:
uv-non-major:
patterns:
- "*"
update-types:
- "minor"
- "patch"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
timezone: "America/Denver"
target-branch: "staging"
open-pull-requests-limit: 5
rebase-strategy: "auto"
labels:
- "dependencies"
- "github-actions"
groups:
gha-minor-and-patch:
patterns:
- "*"
update-types:
- "minor"
- "patch"
62 changes: 33 additions & 29 deletions .github/workflows/CD_production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ jobs:

steps:
- name: Check out source repository
uses: actions/checkout@v4
uses: actions/checkout@v6.0.2
with:
fetch-depth: 0

- name: Install uv in container
uses: astral-sh/setup-uv@v6
uses: astral-sh/setup-uv@v7.3.1
with:
version: "latest"

Expand All @@ -33,7 +33,7 @@ jobs:
--output-file requirements.txt

- name: Authenticate to Google Cloud
uses: 'google-github-actions/auth@v2'
uses: 'google-github-actions/auth@v3'
with:
credentials_json: ${{ secrets.CLOUD_DEPLOY_SERVICE_ACCOUNT_KEY }}

Expand All @@ -47,33 +47,37 @@ jobs:
run: |
uv run alembic upgrade head

- name: Create app.yaml
- name: Ensure envsubst is available
run: |
cat <<EOF > app.yaml
service: ocotillo-api
runtime: python313
entrypoint: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
instance_class: F4
service_account: "${{ secrets.CLOUD_SQL_USER }}.gserviceaccount.com"
handlers:
- url: /.*
secure: always
script: auto
env_variables:
MODE: "production"
DB_DRIVER: "cloudsql"
CLOUD_SQL_INSTANCE_NAME: "${{ secrets.CLOUD_SQL_INSTANCE_NAME }}"
CLOUD_SQL_DATABASE: "${{ vars.CLOUD_SQL_DATABASE }}"
CLOUD_SQL_USER: "${{ secrets.CLOUD_SQL_USER }}"
CLOUD_SQL_IAM_AUTH: true
GCS_SERVICE_ACCOUNT_KEY: "${{ secrets.GCS_SERVICE_ACCOUNT_KEY }}"
GCS_BUCKET_NAME: "${{ vars.GCS_BUCKET_NAME }}"
AUTHENTIK_URL: "${{ vars.AUTHENTIK_URL }}"
AUTHENTIK_CLIENT_ID: "${{ vars.AUTHENTIK_CLIENT_ID }}"
AUTHENTIK_AUTHORIZE_URL: "${{ vars.AUTHENTIK_AUTHORIZE_URL }}"
AUTHENTIK_TOKEN_URL: "${{ vars.AUTHENTIK_TOKEN_URL }}"
SESSION_SECRET_KEY: "${{ secrets.SESSION_SECRET_KEY }}"
EOF
if ! command -v envsubst >/dev/null 2>&1; then
sudo apt-get update
sudo apt-get install -y gettext-base
fi

- name: Render app.yaml
env:
SERVICE_NAME: "ocotillo-api"
ENVIRONMENT: "production"
CLOUD_SQL_INSTANCE_NAME: "${{ secrets.CLOUD_SQL_INSTANCE_NAME }}"
CLOUD_SQL_DATABASE: "${{ vars.CLOUD_SQL_DATABASE }}"
CLOUD_SQL_USER: "${{ secrets.CLOUD_SQL_USER }}"
PYGEOAPI_POSTGRES_DB: "${{ vars.CLOUD_SQL_DATABASE }}"
PYGEOAPI_POSTGRES_USER: "${{ secrets.PYGEOAPI_POSTGRES_USER }}"
PYGEOAPI_POSTGRES_HOST: "${{ vars.PYGEOAPI_POSTGRES_HOST || '127.0.0.1' }}"
PYGEOAPI_POSTGRES_PORT: "${{ vars.PYGEOAPI_POSTGRES_PORT || '5432' }}"
PYGEOAPI_POSTGRES_PASSWORD: "${{ secrets.PYGEOAPI_POSTGRES_PASSWORD }}"
PYGEOAPI_SERVER_URL: "${{ vars.PYGEOAPI_SERVER_URL }}"
CLOUD_SQL_IAM_AUTH: "true"
GCS_SERVICE_ACCOUNT_KEY: "${{ secrets.GCS_SERVICE_ACCOUNT_KEY }}"
GCS_BUCKET_NAME: "${{ vars.GCS_BUCKET_NAME }}"
AUTHENTIK_URL: "${{ vars.AUTHENTIK_URL }}"
AUTHENTIK_CLIENT_ID: "${{ vars.AUTHENTIK_CLIENT_ID }}"
AUTHENTIK_AUTHORIZE_URL: "${{ vars.AUTHENTIK_AUTHORIZE_URL }}"
AUTHENTIK_TOKEN_URL: "${{ vars.AUTHENTIK_TOKEN_URL }}"
SESSION_SECRET_KEY: "${{ secrets.SESSION_SECRET_KEY }}"
APITALLY_CLIENT_ID: "${{ vars.APITALLY_CLIENT_ID }}"
run: |
envsubst < .github/app.template.yaml > app.yaml

- name: Deploy to Google Cloud
run: |
Expand Down
63 changes: 33 additions & 30 deletions .github/workflows/CD_staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ jobs:

steps:
- name: Check out source repository
uses: actions/checkout@v4
uses: actions/checkout@v6.0.2
with:
fetch-depth: 0

- name: Install uv in container
uses: astral-sh/setup-uv@v6
uses: astral-sh/setup-uv@v7.3.1
with:
version: "latest"

Expand All @@ -33,7 +33,7 @@ jobs:
--output-file requirements.txt

- name: Authenticate to Google Cloud
uses: 'google-github-actions/auth@v2'
uses: 'google-github-actions/auth@v3'
with:
credentials_json: ${{ secrets.CLOUD_DEPLOY_SERVICE_ACCOUNT_KEY }}

Expand All @@ -47,34 +47,37 @@ jobs:
run: |
uv run alembic upgrade head

# Uses Google Cloud Secret Manager to store secret credentials
- name: Create app.yaml
- name: Ensure envsubst is available
run: |
cat <<EOF > app.yaml
service: ocotillo-api-staging
runtime: python313
entrypoint: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
service_account: "${{ secrets.CLOUD_SQL_USER }}.gserviceaccount.com"
instance_class: F4
handlers:
- url: /.*
secure: always
script: auto
env_variables:
MODE: "production"
DB_DRIVER: "cloudsql"
CLOUD_SQL_INSTANCE_NAME: "${{ secrets.CLOUD_SQL_INSTANCE_NAME }}"
CLOUD_SQL_DATABASE: "${{ vars.CLOUD_SQL_DATABASE }}"
CLOUD_SQL_USER: "${{ secrets.CLOUD_SQL_USER }}"
CLOUD_SQL_IAM_AUTH: true
GCS_SERVICE_ACCOUNT_KEY: "${{ secrets.GCS_SERVICE_ACCOUNT_KEY }}"
GCS_BUCKET_NAME: "${{ vars.GCS_BUCKET_NAME }}"
AUTHENTIK_URL: "${{ vars.AUTHENTIK_URL }}"
AUTHENTIK_CLIENT_ID: "${{ vars.AUTHENTIK_CLIENT_ID }}"
AUTHENTIK_AUTHORIZE_URL: "${{ vars.AUTHENTIK_AUTHORIZE_URL }}"
AUTHENTIK_TOKEN_URL: "${{ vars.AUTHENTIK_TOKEN_URL }}"
SESSION_SECRET_KEY: "${{ secrets.SESSION_SECRET_KEY }}"
EOF
if ! command -v envsubst >/dev/null 2>&1; then
sudo apt-get update
sudo apt-get install -y gettext-base
fi

- name: Render app.yaml
env:
SERVICE_NAME: "ocotillo-api-staging"
ENVIRONMENT: "staging"
CLOUD_SQL_INSTANCE_NAME: "${{ secrets.CLOUD_SQL_INSTANCE_NAME }}"
CLOUD_SQL_DATABASE: "${{ vars.CLOUD_SQL_DATABASE }}"
CLOUD_SQL_USER: "${{ secrets.CLOUD_SQL_USER }}"
PYGEOAPI_POSTGRES_DB: "${{ vars.CLOUD_SQL_DATABASE }}"
PYGEOAPI_POSTGRES_USER: "${{ secrets.PYGEOAPI_POSTGRES_USER }}"
PYGEOAPI_POSTGRES_HOST: "${{ vars.PYGEOAPI_POSTGRES_HOST || '127.0.0.1' }}"
PYGEOAPI_POSTGRES_PORT: "${{ vars.PYGEOAPI_POSTGRES_PORT || '5432' }}"
PYGEOAPI_POSTGRES_PASSWORD: "${{ secrets.PYGEOAPI_POSTGRES_PASSWORD }}"
PYGEOAPI_SERVER_URL: "${{ vars.PYGEOAPI_SERVER_URL }}"
CLOUD_SQL_IAM_AUTH: "true"
GCS_SERVICE_ACCOUNT_KEY: "${{ secrets.GCS_SERVICE_ACCOUNT_KEY }}"
GCS_BUCKET_NAME: "${{ vars.GCS_BUCKET_NAME }}"
AUTHENTIK_URL: "${{ vars.AUTHENTIK_URL }}"
AUTHENTIK_CLIENT_ID: "${{ vars.AUTHENTIK_CLIENT_ID }}"
AUTHENTIK_AUTHORIZE_URL: "${{ vars.AUTHENTIK_AUTHORIZE_URL }}"
AUTHENTIK_TOKEN_URL: "${{ vars.AUTHENTIK_TOKEN_URL }}"
SESSION_SECRET_KEY: "${{ secrets.SESSION_SECRET_KEY }}"
APITALLY_CLIENT_ID: "${{ vars.APITALLY_CLIENT_ID }}"
run: |
envsubst < .github/app.template.yaml > app.yaml

- name: Deploy to Google Cloud
run: |
Expand Down
58 changes: 58 additions & 0 deletions .github/workflows/dependabot_automerge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Dependabot auto-merge

on:
pull_request:
types: [opened, reopened, synchronize, ready_for_review]

permissions:
contents: write
pull-requests: write

jobs:
automerge:
if: github.actor == 'dependabot[bot]' && github.event.pull_request.user.login == 'dependabot[bot]'
runs-on: ubuntu-latest

steps:
- name: Fetch Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}

# Auto-approve (only matters if your branch protection requires reviews)
- name: Approve PR
if: steps.metadata.outputs.update-type != 'version-update:semver-major'
uses: actions/github-script@v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { data: reviews } = await github.rest.pulls.listReviews({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
});

const alreadyApprovedByBot = reviews.some(
(review) =>
review.state === "APPROVED" &&
review.user?.login === "github-actions[bot]"
);

if (!alreadyApprovedByBot) {
await github.rest.pulls.createReview({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
event: "APPROVE",
});
}

# Enable GitHub auto-merge; it will merge once required checks (your Test Suite) are green
- name: Enable auto-merge (squash)
if: steps.metadata.outputs.update-type != 'version-update:semver-major'
uses: peter-evans/enable-pull-request-automerge@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
pull-request-number: ${{ github.event.pull_request.number }}
merge-method: squash
10 changes: 5 additions & 5 deletions .github/workflows/format_code.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out source repository
uses: actions/checkout@v4
uses: actions/checkout@v6.0.2
- name: Set up Python environment - 3.12
uses: actions/setup-python@v5
uses: actions/setup-python@v6.2.0
with:
python-version: "3.12"
cache: "pip"
- name: Run flake8
uses: py-actions/flake8@v1
uses: py-actions/flake8@v2
with:
ignore: "F401,E501"
args: "--exit-zero --select=E"
Expand All @@ -34,15 +34,15 @@ jobs:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6.0.2
with:
ref: ${{ github.head_ref }}
- uses: psf/black@stable
with:
options: "--verbose"

- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v4.1.2
uses: stefanzweifel/git-auto-commit-action@v7.1.0
with:
commit_message: Formatting changes
branch: ${{ github.head_ref }}
Loading