Skip to content

fix: remove upper bounds from runtime dependencies#132

Closed
stark256-spec wants to merge 3 commits into
nasa:mainfrom
stark256-spec:fix/relax-dependency-upper-bounds
Closed

fix: remove upper bounds from runtime dependencies#132
stark256-spec wants to merge 3 commits into
nasa:mainfrom
stark256-spec:fix/relax-dependency-upper-bounds

Conversation

@stark256-spec

Copy link
Copy Markdown

Summary

Fixes #79

Problem

All runtime dependencies in pyproject.toml used ~=X.Y.Z (compatible release) pins, which Python resolves as >=X.Y.Z, <X.Y+1. For a library like harmony-py that is installed into user environments alongside other packages, this creates unnecessary dependency conflicts whenever any transitive dependency requires a newer minor version of the same package.

Fix

Replace all ~= specifiers in [project.dependencies] with >= lower bounds, retaining only the minimum version known to work. The shapely <3 upper bound is also removed as no incompatibility with shapely 3.x has been identified.

Dev and docs optional dependencies are left unchanged as those are developer-controlled environments where tighter pins are acceptable.

Test plan

  • Existing test suite passes with relaxed bounds
  • No new import or runtime errors observed

harmony-py is a library installed into user environments alongside other
packages. Tight compatible-release pins like ~=1.1.0 (which resolves to
>=1.1.0,<1.2) block installation whenever any other package in the
environment requires a newer patch or minor release. This is a common
source of dependency conflicts reported by users.

Replace all ~= specifiers in [project.dependencies] with >= lower
bounds, keeping only the minimum version that is known to work.
The shapely <3 upper bound is also removed since no incompatibility
with shapely 3.x has been identified.

Fixes nasa#79
@flamingbear

Copy link
Copy Markdown
Member

I like this, but I'd like to make sure we're not going to run into any issues if we try to run with the latest versions available and keep up with that on a nightly basis. Can you make sure the build and tests actions run every night on this repo?

Adds a cron schedule (02:00 UTC daily) alongside the existing push/PR
triggers. This ensures the full test matrix runs against the latest
available versions of all dependencies every night, consistent with the
relaxed lower-bound pins introduced in this PR.
@stark256-spec

Copy link
Copy Markdown
Author

Added a nightly cron schedule (0 2 * * * — 02:00 UTC) to .github/workflows/tests.yml. The full Python matrix (3.9 → 3.13) will now run every night against whatever versions pip resolves, so any breakage from a new upstream release surfaces the same day.

https://github.com/shapely/shapely/releases/tag/2.0.7

Fixes crash when reading nonlinear geometry types (CircularString,
CompoundCurve, MultiCurve, CurvePolygon, MultiSurface) from WKB/WKT with GEOS
>= 3.13; these types are not yet supported in Shapely and now raise a
NotImplementedError
@flamingbear

Copy link
Copy Markdown
Member

This will keep your contribution but pull it into #133

@flamingbear

Copy link
Copy Markdown
Member

closing for parallel PR #133

@flamingbear flamingbear closed this Jun 3, 2026
@flamingbear flamingbear mentioned this pull request Jun 5, 2026
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Consider removing upper bounds from dependencies in setup.py

2 participants