HARMONY-1837 Fix/relax dependency upper bounds#133
Conversation
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
We were testing twice.
|
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. |
| # Handle WKT reading errors and invalid WKT strings | ||
| print(f"Invalid WKT: {e}") | ||
| return False | ||
| except (ShapelyError, NotImplementedError) as e: |
There was a problem hiding this comment.
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)
This will test the install of the minimum and latest packages listed in the project.
| - python-version: '3.13' | ||
| dependencies: 'minimum' |
There was a problem hiding this comment.
This will update when we drop support for 3.9 in #138
This was actually downloading files before.
| download_file_mock = mocker.Mock(side_effect=side_effect_func_for_download_file) | ||
| mocker.patch('harmony.client.Client._download_file', download_file_mock) |
There was a problem hiding this comment.
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.
Description
This PR pulls in the user contribution changes for #132
This will close #79 and HARMONY-1837
Code Changes:
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