From 265008e62c58ee8872579ea0f56cf7e7086536c9 Mon Sep 17 00:00:00 2001 From: oskaresparza Date: Wed, 5 Aug 2026 13:16:30 +0200 Subject: [PATCH 1/6] Trigger release workflow on push to main instead of version tags The release job now derives the tag/release name from pyproject.toml's version and fires on every push to main, so cutting a release no longer requires a separate manual git tag push. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/release.yml | 15 +++++++-------- README.md | 16 ++++++++-------- requirements.txt | 14 +++++++------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a14a5f1..ac0da4d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,8 +2,8 @@ name: Release on: push: - tags: - - "v*.*.*" + branches: + - main jobs: release: @@ -17,14 +17,11 @@ jobs: with: python-version: "3.12" - - name: Verify tag matches package version + - name: Read package version + id: version run: | - TAG_VERSION="${GITHUB_REF_NAME#v}" PKG_VERSION="$(python3 -c 'import tomllib; print(tomllib.load(open("pyproject.toml", "rb"))["project"]["version"])')" - if [ "$TAG_VERSION" != "$PKG_VERSION" ]; then - echo "Tag $GITHUB_REF_NAME does not match pyproject.toml version $PKG_VERSION" - exit 1 - fi + echo "version=$PKG_VERSION" >> "$GITHUB_OUTPUT" - name: Install build tool run: pip install build @@ -35,5 +32,7 @@ jobs: - name: Create GitHub release uses: softprops/action-gh-release@v2 with: + tag_name: v${{ steps.version.outputs.version }} + name: v${{ steps.version.outputs.version }} files: dist/* generate_release_notes: true diff --git a/README.md b/README.md index 038cd9f..a6e8f7a 100644 --- a/README.md +++ b/README.md @@ -41,14 +41,14 @@ pytest 1. Update `version` in `pyproject.toml` (e.g. `0.2.0`). 2. Commit and push to `main`. -3. Tag the commit and push the tag: - ```bash - git tag v0.2.0 - git push origin v0.2.0 - ``` -4. The `Release` GitHub Actions workflow builds the package and publishes a - GitHub Release for the tag, with notes auto-generated from merged PRs since - the previous release (categorized via `.github/release.yml`). +3. The `Release` GitHub Actions workflow runs on every push to `main`: it reads + the version from `pyproject.toml`, builds the package, and publishes a + `v0.2.0` GitHub Release (creating the matching tag automatically), with + notes auto-generated from merged PRs since the previous release + (categorized via `.github/release.yml`). + + Pushing to `main` without bumping the version re-publishes the release for + the current version with the latest build artifacts. ## Install in JupyterLab diff --git a/requirements.txt b/requirements.txt index 736e739..757dca0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ pandas>=2.2,<3 -pyarrow>=17,<22 # parquet writer + the Arrow types the ingest lane expects -openpyxl>=3.1,<4 # .xlsx reader — handles sparse cells correctly (see bathing_water/README.md) -xlrd>=2.0,<3 # legacy .xls, some older SDI deliveries -lxml>=5.2,<7 # ISO 19115-3 metadata records +pyarrow>=17 # parquet writer + the Arrow types the ingest lane expects +#openpyxl>=3.1,<4 # .xlsx reader — handles sparse cells correctly (see bathing_water/README.md) +#xlrd>=2.0,<3 # legacy .xls, some older SDI deliveries +#lxml>=5.2,<7 # ISO 19115-3 metadata records duckdb>=1.1,<2 # validate parquet with SQL before it ever leaves the machine # --- geometry: source encoding in, WKB out (see CLAUDE.md) ----------------- @@ -15,9 +15,9 @@ pyproj>=3.6,<4 # only where a reprojection is a deliberate, documen # --- acquire --------------------------------------------------------------- requests>=2.32,<3 -httpx>=0.28,<1 # also the dds_ingest dependency -beautifulsoup4>=4.12,<5 # SDI "direct download" is an HTML landing page, not a file -tqdm>=4.66,<5 +#httpx>=0.28,<1 # also the dds_ingest dependency +#beautifulsoup4>=4.12,<5 # SDI "direct download" is an HTML landing page, not a file +#tqdm>=4.66,<5 # --- build backend for the mounted dds_ingest source ----------------------- # Present so the entrypoint can install /opt/dds_ingest offline, with From 3fa8c7a494a6f7cea97680383bc0f4ae56c1845a Mon Sep 17 00:00:00 2001 From: oskaresparza Date: Thu, 6 Aug 2026 09:31:32 +0200 Subject: [PATCH 2/6] Re-enable openpyxl, xlrd, and lxml in requirements.txt Co-Authored-By: Claude Sonnet 5 --- requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 757dca0..fc8b389 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ pandas>=2.2,<3 pyarrow>=17 # parquet writer + the Arrow types the ingest lane expects -#openpyxl>=3.1,<4 # .xlsx reader — handles sparse cells correctly (see bathing_water/README.md) -#xlrd>=2.0,<3 # legacy .xls, some older SDI deliveries -#lxml>=5.2,<7 # ISO 19115-3 metadata records +openpyxl>=3.1,<4 # .xlsx reader — handles sparse cells correctly (see bathing_water/README.md) +xlrd>=2.0,<3 # legacy .xls, some older SDI deliveries +lxml>=5.2,<7 # ISO 19115-3 metadata records duckdb>=1.1,<2 # validate parquet with SQL before it ever leaves the machine # --- geometry: source encoding in, WKB out (see CLAUDE.md) ----------------- From 956c4175728ff8b2b98a8b633e18751a5a6701f8 Mon Sep 17 00:00:00 2001 From: oskaresparza Date: Thu, 6 Aug 2026 09:45:40 +0200 Subject: [PATCH 3/6] Comment out pyarrow in requirements.txt Co-Authored-By: Claude Sonnet 5 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fc8b389..b73a5b3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ pandas>=2.2,<3 -pyarrow>=17 # parquet writer + the Arrow types the ingest lane expects +#pyarrow>=17 # parquet writer + the Arrow types the ingest lane expects openpyxl>=3.1,<4 # .xlsx reader — handles sparse cells correctly (see bathing_water/README.md) xlrd>=2.0,<3 # legacy .xls, some older SDI deliveries lxml>=5.2,<7 # ISO 19115-3 metadata records From d736757395045f1eef576e6bfba7211c99b579d6 Mon Sep 17 00:00:00 2001 From: oskaresparza Date: Thu, 6 Aug 2026 09:51:55 +0200 Subject: [PATCH 4/6] Comment out pyarrow in pyproject.toml dependencies Keeps the package's actual install-time dependencies in sync with requirements.txt, where pyarrow was already disabled. Co-Authored-By: Claude Sonnet 5 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 12624a9..96d5cad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ requires-python = ">=3.10" authors = [{ name = "EEA Data Hub" }] dependencies = [ "pandas>=2.2,<3", - "pyarrow>=17,<22", # parquet writer + the Arrow types the ingest lane expects + # "pyarrow>=17,<22", # parquet writer + the Arrow types the ingest lane expects "openpyxl>=3.1,<4", # .xlsx reader — handles sparse cells correctly (see bathing_water/README.md) "xlrd>=2.0,<3", # legacy .xls, some older SDI deliveries "lxml>=5.2,<7", # ISO 19115-3 metadata records From aee7c0c27fc6c5c67052e1c26b733625837ff7ba Mon Sep 17 00:00:00 2001 From: oskaresparza Date: Thu, 6 Aug 2026 09:53:44 +0200 Subject: [PATCH 5/6] Comment out pandas in pyproject.toml dependencies Co-Authored-By: Claude Sonnet 5 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 96d5cad..15ba9dc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ readme = "README.md" requires-python = ">=3.10" authors = [{ name = "EEA Data Hub" }] dependencies = [ - "pandas>=2.2,<3", + #"pandas>=2.2,<3", # "pyarrow>=17,<22", # parquet writer + the Arrow types the ingest lane expects "openpyxl>=3.1,<4", # .xlsx reader — handles sparse cells correctly (see bathing_water/README.md) "xlrd>=2.0,<3", # legacy .xls, some older SDI deliveries From bd43ab7e79a77ecfceedac59d66a14d16bde0c9c Mon Sep 17 00:00:00 2001 From: oskaresparza Date: Thu, 6 Aug 2026 09:54:56 +0200 Subject: [PATCH 6/6] Comment out pandas in requirements.txt Co-Authored-By: Claude Sonnet 5 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b73a5b3..ac6dcba 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -pandas>=2.2,<3 +#pandas>=2.2,<3 #pyarrow>=17 # parquet writer + the Arrow types the ingest lane expects openpyxl>=3.1,<4 # .xlsx reader — handles sparse cells correctly (see bathing_water/README.md) xlrd>=2.0,<3 # legacy .xls, some older SDI deliveries