Skip to content

HARMONY-1837 Fix/relax dependency upper bounds#133

Open
flamingbear wants to merge 21 commits into
mainfrom
fix/relax-dependency-upper-bounds
Open

HARMONY-1837 Fix/relax dependency upper bounds#133
flamingbear wants to merge 21 commits into
mainfrom
fix/relax-dependency-upper-bounds

Conversation

@flamingbear

@flamingbear flamingbear commented Jun 3, 2026

Copy link
Copy Markdown
Member

Description

This PR pulls in the user contribution changes for #132

This will close #79 and HARMONY-1837

Code Changes:

  • Unpins top bounds on dependencies.
  • Adds new requirements-min.txt to test minimum requirements
  • Updates the workflow to test both latest and minimum requirements
  • adds an install-minimum to the Makefile to constrain the package install to the pinned values.

Workflow changes: Adds a notify_nightly_failure task that will post a message to a slack webhook. Right now that webhook is configured to an NSIDC channel that I will listen to, but I have requested an app be created in the NASA org that we can use to post to #dev-harmony-only

stark256-spec and others added 3 commits June 3, 2026 11:36
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 #79
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.
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 flamingbear requested review from owenlittlejohns and removed request for chris-durbin, indiejames and ygliuvt June 3, 2026 22:59
@flamingbear flamingbear changed the title Fix/relax dependency upper bounds HARMONY-1837 Fix/relax dependency upper bounds Jun 3, 2026
@flamingbear

Copy link
Copy Markdown
Member Author

I don't love the inline script for the notification. I'm going to put this back into draft and wait 'til I can focus on it a bit. maybe IP.

Comment thread harmony/request.py
# Handle WKT reading errors and invalid WKT strings
print(f"Invalid WKT: {e}")
return False
except (ShapelyError, NotImplementedError) as e:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was duplicated

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so, one is catching ValueError and this is catching a new NotImplementedError that was added to shapely in 2.0.7. (I thought I added a note somewhere else)

@flamingbear flamingbear marked this pull request as draft June 4, 2026 18:30
Comment on lines +22 to +23
- python-version: '3.13'
dependencies: 'minimum'

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will update when we drop support for 3.9 in #138

@flamingbear flamingbear marked this pull request as ready for review June 9, 2026 23:44
This was actually downloading files before.
Comment thread tests/test_client.py
Comment on lines +1399 to +1400
download_file_mock = mocker.Mock(side_effect=side_effect_func_for_download_file)
mocker.patch('harmony.client.Client._download_file', download_file_mock)

@flamingbear flamingbear Jun 10, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So when you run this locally it generated a file in /tmp/fake.tif that file was actually the login page for EDL or if you had a .netrc it was {"code":"harmony.NotFoundError","description":"Error: The requested page was not found."}%.

This should stop accessing live sites and get the tests to pass every time.

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

3 participants