Skip to content

Release 3.9.2 #2450

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 33 commits into from
Feb 11, 2025
Merged

Release 3.9.2 #2450

merged 33 commits into from
Feb 11, 2025

Conversation

github-actions[bot]
Copy link
Contributor

FloPy 3.9.2

The release can be approved by merging this pull request into master. This will trigger a final job to publish the release to PyPI.

wpbonelli and others added 30 commits December 20, 2024 08:42
Following PRT's expectation of model coordinates, convert to model coords by default if the grid has georef info. Add `global_xy` option to disable this and emit global coords. Default is False.

Note: method does get slow when it has to do the vertices conversion for lots of points. This can undoubtedly be optimized by first computing vertices in model coordinates or something along those lines. But I figured that was outside the scope for this PR.
* add support for empty fmi package
* add support for buy package mapping
* add autotest
This should fix the failing optional dependency CI tests. There are still failures afflicting the main CI tests, to be fixed shortly.
The upload-artifact action stopped uploading "hidden" files (any file whose path contains a leading "." in some element).
Ruff 0.9 changed some defaults, rerun the formatter.
Test compatibility of the MF6 code generation mechanism with various MF6 versions in a CI job, rather than a pytest script. I think we can just run it daily, since the develop branch is tested on commit. Before this there was a CI issue which may have been related to invoking pip in a subprocess, which this now avoids.
…Windows (#2408)

This PR aims to address a behavior change in shutil.which (in Windows) introduced in python/cpython#127035.

For more context, in test_run_model_exe_rel_path, the mf6 executable is copied to a relative path, ../bin/mf6 (without extension). Within the test, shutil.which is used to locate the executable path. However, with the new changes in shutil.which, by default, it would only search for the path with an extension in PATHEXT, excluding paths without extension.
Add extra_pkgs kwarg, which updates the mfnam_packages dictionary.
The `environment.yml` was missing a few optional/developer dependencies we've recently added to `pyproject.toml`. Bring the former into sync with the latter (and list packages in the same order).

With luck, conda will eventually be able to consume `pyproject.toml` files, and we can remove `environment.yml`. More info at issue 10633 on the conda repo (not linking to avoid the crossref showing up there).

There were some old pycharm cell format comments in the notebook scripts which jupytext didn't like, remove them.

This should close #2253. To avoid similar situations in the future, don't skip notebooks due to missing dependencies in CI. We did this for convenient local testing, so tests can run without all optional dependencies, but CI should be strict.
…oat() (#2421)

Minor cleanup. Use properties instead of attributes. Deprecate set_float() and replace usages with precision setter.
Exclude it from the smoke tests
Trialing uv to close #2416. Pixi is probably preferable, but for now, there is a blocker that I don't see a way around*. It's easy enough to switch once we are ready, and this gives us several CI benefits immediately:

- faster
- locked dependencies

I left the rtd.yml and examples.yml workflows untouched for two reasons:

- the model splitter needs pymetis, which is available for windows from conda-forge but not pypi
- the pypi vtk for windows crashed on one of the notebooks

These can be switched from micromamba to pixi later on, at which point we can consolidate on pixi for everything?

*Pixi has no way to tell uv to prerelease=allow, which is currently necessary because VTK has no valid 9.4+ official distribution for ARM macs on PyPI at the moment. I'd hoped PyPI dependencies could be overridden by conda dependencies, but pixi still tries (and fails) to solve them all for PyPI even if add them to pixi.tool.dependencies.
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 7 to 8.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](dawidd6/action-download-artifact@v7...v8)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Since these are given to change, it seems sufficient to raise (as we do) if a corresponding asset doesn't exist.
* update Mf6Splitter: Add support for groundwater energy model
* fix(split_multi_model): zero pad `model_labels` formatting string for creating exchanges
* fixes issue where "multi-models" cannot be split if there are 10 or more new model domains in the splitting mask
…2431)

Previously failed with shutil.SameFileError if you tried to regenerate classes using the existing set of DFNs e.g.

python -m flopy.mf6.utils.generate_classes --dfnpath flopy/mf6/data/dfn --no-backup

Now it will work.
Since exporting a transient array looks the same as exporting a normal array, I removed that cell. And commented out 2 more write statements that were each taking a while.
Following up on #2424. We probably want to be aware of dependency issues asap so we can set constraints. Locked deps seem more appropriate for applications than libraries.
* Update(ModelTime): refactor ModelTime and add features
* refactor call signature to accept perlen, nstp, and tsmult as parameters
* added methods:
   - `set_start_datetime()`: allows user to set/reset the start_datetime
   - `set_time_units()`: allows user to set/reset the time_units
   - `timeunits_from_user_input()`: uses fuzzy string logic to parse user supplied time units
   - `datetime_from_user_input()`: converts many types of datetime representation to a standard datetime object
   - `get_totim()`: allows user to get the totim value at the end of a stress period or stress period/time step combination
   - `get_datetime()`: allows user to get the datetime value at the end of a stress period or stress period/time step combination
   - `intersect()`: method that allows for time intersection. Method accepts datetime representations or totim and returns either the zero based stress period or the stress period and time step combination

* added testing for ModelTime
* updated FloPy model classes for ModelTime changes

* Linting

* Update NetCdf for ModelTime changes

* add get_datetime_string() method to ModelTime to format ISO 8601 compliant date times

* Remove TemporalReference, replaced functionality with ModelTime

* commit test_copy and test_usg updates

* First pass of changes to ModelTime for review comments

* Refactors `set` methods to property setters and added a `datetimes` property to get a list of datetimes at the end of each time step

* updates to ModelTime based on review comments

*update test_model_splitter

* Update modeltime.py

manually add new modeltime.py

* Update test_modeltime.py

manually add new version of test_modeltime.py

* update ModelTime and start_datetime call in mbase

* linting

* fix spelling

* Add skip rule for test_modeltime to spell checker, as code tests purposely misspelled unit names

* Update typing in doc-strings
This PR does the following:

- Changes the build backend from setuptools to hatch's hatchling. Why?
  - While both are PyPA projects, setuptools has some odd legacy concepts like MANIFEST.in and egg-info directories, that are not used with modern builds. It's an old system that is primarily maintained to maintain legacy behaviour and not to embrace modern enhancements.
  - Hatchling is a common and modern build backend, e.g. demonstrated as a default in guidelines. New features and plugins are actively developed for hatch and hatchling by Python core developers.
- Use the hatch-fancy-pypi-readme plug-in to stitch content for the documentation in PyPI. (There is more potential to this plug-in, such as amending changelog info from each release). See preview via uvx hatch project metadata readme.
- Remove the 'build' optional dependency (or extra), as this a prerequisite only for packaging builds, not an optional dependency. Builds can happen using several methods, e.g. python3 -m build or uv build or uvx hatch build etc.

I've done some comparisons of the sdist (.tar.gz) and bdist (.whl) outputs, and the contents are nearly identical.
@wpbonelli wpbonelli marked this pull request as ready for review February 11, 2025 01:33
@wpbonelli wpbonelli merged commit cfc5a94 into master Feb 11, 2025
1 check 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.

6 participants