Skip to content

Release/4.0.0#541

Merged
dhinckley-creare merged 240 commits intomainfrom
release/4.0.0
Feb 9, 2026
Merged

Release/4.0.0#541
dhinckley-creare merged 240 commits intomainfrom
release/4.0.0

Conversation

@dhinckley-creare
Copy link
Copy Markdown
Collaborator

Merging fixes from release branch into main for formal tagged release

dhinckley-creare and others added 19 commits January 20, 2026 09:29
Co-authored-by: mpu-creare <mpu-creare@users.noreply.github.com>
… version of zarr to setup. added missing webob dependency to setup
…et_data to prevent inadvertent writing attempts. changed exception catching in utils _get_from_url.
…ource to use slice coordinate_index_type to avoid incompatibility with numpy type.
…cache clearing function. Removed DiskCacheMixin. Removed lazy loading of pydap because of xarray pydap.__spec__ interaction. Fixed missing source_coordinates usage in interpolation_manager._fix_coordinates_for_none_interp.
@dhinckley-creare
Copy link
Copy Markdown
Collaborator Author

@mpu-creare As far as I can tell, although the change log was updated, the 4.0.0 changes (hash_cache, zarr_cache, etc) never made their way to main before now.

So, should this still be the 4.0.0 tagged release because it is the first of this new form or, because this effort did follow a different effort that considered itself 4.0.0, should this be a 4.1.0 release?

@mpu-creare
Copy link
Copy Markdown
Contributor

Since we don't have a 4.0.0 tag at all, this should be the first 4.0.0 release.

Copy link
Copy Markdown
Contributor

@mpu-creare mpu-creare left a comment

Choose a reason for hiding this comment

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

Again, I have a few minor comments. Mostly to clean things up. I think it's probably worth fixing the unit test that changed.

podpac.utils.clear_cache
podpac.utils.cached_property
podpac.utils.NoCacheMixin
podpac.utils.DiskCacheMixin
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.

Need to remove this from the api docs.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I don't see this line in the release branch.

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.

As far as I can tell, podpac.utils.DiskCacheMixin remains in this file?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Ah, I thought you were pointing out the NoCacheMix (I saw the highlighting in the diff and mistook it for a github highlight thing). Removed

try:
expires = np.datetime64(expires).item()
except:
except Exception:
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.

I'd love to catch a more specific exception... I also would have loved a comment about why it's ok to pass

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

From some brief testing, it seems failures here are always ValueErrors (I couldn't fashion a string that failed in any other way).

The catches just passing the value through is handled by the last isinstance check, which throws an error is a string went un-converted. I think a try-pass was adopted to handle the multiple different string parsing methods (because there are 2 that both fail via error, the try-pass avoids annoying case logic).

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.

Please add a comment so we don't have to figure this out again in the future.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Is the one on line 46 sufficient or does it need more background?

class TestHeterogenousInterpolation(object):
class TestHeterogenousInterpolation(
object
): # I don't think heterogeneou interpolation works with current .interpolate() scheme.
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.

replying to the commented code -- the fact that the unit test works implies that heterogenous still works?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

It seems so.

nodes being automatically interpolated on `eval`. Now users have to create `Interpolation` nodes explicitly. To make the transition smoother, we added a convenience function `Node.interpolate` that will add an `Interpolation` node to the pipeline, restoring the original functionality.

### Features
* Added the `ZarrCache`. This node enables partial caching of nodes based on the source's coordinate. This means you can
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.

Did we miss anything here? Should we mention the code refactor to reduce cognitive complexity? Anything else that's new? Bugfixes, etc.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I added the 1 new bugfix and 1 new breaking change of which I'm aware.

Most of the changes in the PR come from a previous effort that didn't make its way to a full formal/tagged release.

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Feb 9, 2026

@dhinckley-creare dhinckley-creare merged commit c761c7c into main Feb 9, 2026
6 checks passed
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.

7 participants