From f31f84f26b21eda2fd160c32c2ab2657a91d351d Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Wed, 3 Apr 2024 22:18:35 -0400 Subject: [PATCH] ci: refactor pixi config and usages (#1703) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add version to pixi.toml * include doc/Doxyfile and pixi.toml in update_version.py * consolidate tasks * refactor custom install as pypi dependencies * remove branch filters from push trigger in commit.yml * update dev docs: keep conda language, tidying * ignore pixi beta feature warning in ci * restore vscode config to avoid breaking contributor workflow — when vscode python * supports pixi I think we can update the tasks to use "command": "${command:python.interpreterPath}" --- .build_rtd_docs/update_doxyfile_version.py | 14 - .github/actions/test-par/action.yml | 8 +- .github/common/compile_modflow6.bat | 6 +- .github/common/test_modflow6.bat | 2 +- .github/workflows/ci.yml | 70 ++-- .github/workflows/compilers.yml | 15 +- .github/workflows/docs.yml | 18 +- .github/workflows/large.yml | 15 +- .github/workflows/pixi_auto_update.yml | 6 +- .github/workflows/release.yml | 33 +- .github/workflows/release_dispatch.yml | 14 +- .vscode/README.md | 4 +- .vscode/build_vscode.py | 18 +- .vscode/run_python.cmd | 3 +- .vscode/run_python.sh | 5 +- CONTRIBUTING.md | 2 +- DEVELOPER.md | 42 +- distribution/update_version.py | 24 ++ pixi.lock | 446 ++++++++++++++++++--- pixi.toml | 71 ++-- 20 files changed, 565 insertions(+), 251 deletions(-) delete mode 100644 .build_rtd_docs/update_doxyfile_version.py diff --git a/.build_rtd_docs/update_doxyfile_version.py b/.build_rtd_docs/update_doxyfile_version.py deleted file mode 100644 index 8755cc54c9e..00000000000 --- a/.build_rtd_docs/update_doxyfile_version.py +++ /dev/null @@ -1,14 +0,0 @@ -import sys -import os -sys.path.insert(0, os.path.abspath(os.path.join("..", "doc"))) -from version import __version__ -print("Update the Doxyfile with the latest version number") -with open("Doxyfile", "r") as fp: - lines = fp.readlines() - -tag = "PROJECT_NUMBER" -with open("Doxyfile", "w") as fp: - for line in lines: - if tag in line: - line = '{} = "version {}"\n'.format(tag, __version__) - fp.write(line) diff --git a/.github/actions/test-par/action.yml b/.github/actions/test-par/action.yml index b68a6da3137..9ff0ad8dc98 100644 --- a/.github/actions/test-par/action.yml +++ b/.github/actions/test-par/action.yml @@ -51,9 +51,9 @@ runs: shell: bash working-directory: modflow6 run: | - pixi run setup-release-parallel builddir - pixi run install-build builddir - pixi run test-build builddir + pixi run setup -Dparallel=true builddir + pixi run build builddir + pixi run test builddir - name: Show Meson logs if: failure() @@ -78,4 +78,4 @@ runs: working-directory: modflow6 env: REPOS_PATH: ${{ github.workspace }} - run: pixi run autotest-parallel + run: pixi run autotest --parallel -k "test_par" diff --git a/.github/common/compile_modflow6.bat b/.github/common/compile_modflow6.bat index 179bbc01959..fa61f33885f 100644 --- a/.github/common/compile_modflow6.bat +++ b/.github/common/compile_modflow6.bat @@ -1,5 +1,5 @@ set FC=ifort cd "%GITHUB_WORKSPACE%\modflow6" -pixi run setup-release-parallel builddir -pixi run install-build builddir -pixi run test-build builddir +pixi run setup -Dparallel=true builddir +pixi run build builddir +pixi run test builddir diff --git a/.github/common/test_modflow6.bat b/.github/common/test_modflow6.bat index 68dcf45f727..1ea8626f126 100644 --- a/.github/common/test_modflow6.bat +++ b/.github/common/test_modflow6.bat @@ -1,4 +1,4 @@ cd "%GITHUB_WORKSPACE%\modflow6\autotest" where libpetsc.dll ldd ..\bin\mf6 -pixi run autotest-parallel +pixi run autotest --parallel -k "test_par" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ae52964dc0d..dcd7632e787 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,8 +1,6 @@ name: MODFLOW 6 continuous integration on: push: - branches: [master, develop, update/pixi-lock] - tags: ["*"] paths-ignore: - '**.md' - '**.pdf' @@ -40,6 +38,8 @@ on: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +env: + PIXI_BETA_WARNING_OFF: true jobs: lint: name: Check format @@ -84,17 +84,17 @@ jobs: pixi-version: "latest" - name: Meson setup - run: pixi run setup-strict builddir + run: pixi run setup -Dwerror=true builddir - name: Meson compile - run: pixi run compile-build builddir + run: pixi run build builddir - name: Show build log if: failure() run: cat builddir/meson-logs/meson-log.txt - name: Meson test - run: pixi run test-build builddir + run: pixi run test builddir smoke_test: name: Smoke test @@ -123,14 +123,11 @@ jobs: compiler: gcc version: ${{ env.FC_V }} - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Build test-drive working-directory: test-drive @@ -142,8 +139,8 @@ jobs: - name: Build modflow6 working-directory: modflow6 run: | - pixi run setup-release builddir - pixi run install-build builddir + pixi run setup builddir + pixi run build builddir - name: Show build log if: failure() @@ -152,7 +149,7 @@ jobs: - name: Unit test programs working-directory: modflow6 - run: pixi run test-build builddir + run: pixi run test builddir - name: Update flopy working-directory: modflow6 @@ -168,7 +165,7 @@ jobs: working-directory: modflow6 run: | if [ "${{ github.ref_name }}" == "master" ]; then - pixi run autotest-marker "not slow and not regression and not developmode" + pixi run autotest -m "not slow and not regression and not developmode" else pixi run autotest fi @@ -221,20 +218,17 @@ jobs: compiler: gcc version: ${{ env.FC_V }} - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - - name: Build modflow6 working-directory: modflow6 run: | - pixi run setup-release builddir - pixi run install-build builddir + pixi run setup builddir + pixi run build builddir - name: Show build log if: failure() @@ -243,7 +237,7 @@ jobs: - name: Unit test programs working-directory: modflow6 - run: pixi run test-build builddir + run: pixi run test builddir - name: Update flopy working-directory: modflow6 @@ -261,9 +255,9 @@ jobs: REPOS_PATH: ${{ github.workspace }} run: | if [ "${{ github.ref_name }}" == "master" ]; then - pixi run autotest-marker "not large and not developmode" + pixi run autotest -m "not large and not developmode" else - pixi run autotest-marker "not large" + pixi run autotest -m "not large" fi - name: Upload failed test output @@ -299,7 +293,7 @@ jobs: working-directory: modflow6 env: GITHUB_TOKEN: ${{ github.token }} - run: pixi run test-distribution + run: pixi run test-dist-scripts test_intel_fortran: name: Test intel fortran @@ -337,14 +331,11 @@ jobs: repository: MODFLOW-USGS/modflow6-examples path: modflow6-examples - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Setup ${{ env.FC }} ${{ env.FC_V }} uses: fortran-lang/setup-fortran@v1 @@ -359,8 +350,8 @@ jobs: - name: Build modflow6 working-directory: modflow6 run: | - pixi run setup-release builddir - pixi run install-build builddir + pixi run setup builddir + pixi run build builddir - name: Show build log if: failure() @@ -369,7 +360,7 @@ jobs: - name: Unit test programs working-directory: modflow6 - run: pixi run test-build builddir + run: pixi run test builddir - name: Update flopy working-directory: modflow6 @@ -387,9 +378,9 @@ jobs: REPOS_PATH: ${{ github.workspace }} run: | if [ "${{ github.ref_name }}" == "master" ]; then - pixi run autotest-marker "not large and not developmode" + pixi run autotest -m "not large and not developmode" else - pixi run autotest-marker "not large" + pixi run autotest -m "not large" fi - name: Upload failed test output @@ -403,7 +394,7 @@ jobs: working-directory: modflow6 env: GITHUB_TOKEN: ${{ github.token }} - run: pixi run test-distribution + run: pixi run test-dist-scripts parallel_test: name: Parallel testing @@ -427,14 +418,11 @@ jobs: with: path: modflow6 - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Test parallel MF6 if: runner.os != 'Windows' diff --git a/.github/workflows/compilers.yml b/.github/workflows/compilers.yml index bf73aa7d719..79220b01909 100644 --- a/.github/workflows/compilers.yml +++ b/.github/workflows/compilers.yml @@ -3,6 +3,8 @@ on: # workflow_dispatch trigger to start release via GitHub UI or CLI, see # https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow workflow_dispatch: +env: + PIXI_BETA_WARNING_OFF: true jobs: test: name: Test @@ -157,20 +159,17 @@ jobs: compiler: ${{ matrix.compiler}} version: ${{ matrix.version }} - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Build modflow6 working-directory: modflow6 run: | - pixi run setup-release builddir - pixi run install-build builddir + pixi run setup builddir + pixi run build builddir - name: Show build log if: failure() @@ -187,7 +186,7 @@ jobs: - name: Unit test programs if: success() working-directory: modflow6 - run: pixi run test-build builddir + run: pixi run test builddir - name: Create compile report if: success() || failure() diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d31b26d4e12..62884e7a075 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -12,6 +12,8 @@ on: paths-ignore: - '.github/workflows/release.yml' - '.hpc/**' +env: + PIXI_BETA_WARNING_OFF: true jobs: rtd_build: name: Build ReadTheDocs @@ -40,14 +42,11 @@ jobs: repository: MODFLOW-USGS/usgslatex path: usgslatex - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Install additional packages for Sphinx using pip working-directory: modflow6/.build_rtd_docs @@ -185,12 +184,10 @@ jobs: sudo apt-get update sudo apt-get install doxygen graphviz - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" - - - name: Setup pixi - run: pixi run install - name: Print python package versions run: pixi run pip list @@ -198,9 +195,6 @@ jobs: - name: update MODFLOW 6 version run: pixi run update-version - - name: update MODFLOW 6 version in Doxyfile - run: pixi run update-doxyfile-version - - name: run doxygen run: doxygen working-directory: ${{env.working-directory}} diff --git a/.github/workflows/large.yml b/.github/workflows/large.yml index a52b35b20c3..fd58cf75676 100644 --- a/.github/workflows/large.yml +++ b/.github/workflows/large.yml @@ -6,6 +6,8 @@ on: # workflow_dispatch trigger to run tests via GitHub UI or CLI, # see https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow workflow_dispatch: +env: + PIXI_BETA_WARNING_OFF: true jobs: # caching only necessary on Windows cache_ifort: @@ -64,14 +66,11 @@ jobs: repository: MODFLOW-USGS/modflow6-largetestmodels path: modflow6-largetestmodels - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Setup ${{ matrix.compiler }} ${{ matrix.version }} uses: fortran-lang/setup-fortran@v1 @@ -82,8 +81,8 @@ jobs: - name: Build modflow6 working-directory: modflow6 run: | - pixi run setup-release builddir - pixi run install-build builddir + pixi run setup builddir + pixi run build builddir - name: Get executables working-directory: modflow6 @@ -97,7 +96,7 @@ jobs: - name: Run tests working-directory: modflow6 - run: pixi run autotest-large + run: pixi run autotest -m "large" - name: Upload failed test output if: failure() diff --git a/.github/workflows/pixi_auto_update.yml b/.github/workflows/pixi_auto_update.yml index 0b909659944..200ae9da00b 100644 --- a/.github/workflows/pixi_auto_update.yml +++ b/.github/workflows/pixi_auto_update.yml @@ -1,19 +1,17 @@ name: Pixi auto update - on: schedule: # At 03:00 on day 3 of the month - cron: "0 3 3 * *" # on demand workflow_dispatch: - +env: + PIXI_BETA_WARNING_OFF: true jobs: auto-update: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} - uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 59b91e24e46..027117d9307 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,6 +54,8 @@ on: distname: description: 'Distribution name used for release' value: ${{ jobs.build.outputs.distname }} +env: + PIXI_BETA_WARNING_OFF: true jobs: build: name: Build binaries (${{ matrix.os }}, parallel=${{ matrix.parallel }}) @@ -96,14 +98,11 @@ jobs: path: modflow6 ref: ${{ inputs.branch }} - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Setup ${{ matrix.compiler }} ${{ matrix.version }} if: (!(runner.os == 'Windows' && matrix.parallel)) @@ -170,9 +169,9 @@ jobs: if: (!(runner.os == 'Windows' && matrix.parallel)) working-directory: modflow6 run: | - pixi run setup-release builddir - pixi run install-build builddir - pixi run test-build builddir + pixi run setup builddir + pixi run build builddir + pixi run test builddir - name: Check architecture (macOS) working-directory: modflow6/bin @@ -263,7 +262,7 @@ jobs: if [[ "${{ inputs.developmode }}" == "false" ]]; then markers="$markers and not developmode" fi - pixi run autotest-markers "$markers" + pixi run autotest -m "$markers" - name: Upload failed test output if: failure() @@ -301,7 +300,7 @@ jobs: working-directory: modflow6/distribution env: GITHUB_TOKEN: ${{ github.token }} - run: pixi run test-distribution + run: pixi run test-dist-scripts docs: name: Build docs @@ -344,14 +343,11 @@ jobs: working-directory: usgslatex/usgsLaTeX run: sudo ./install.sh --all-users - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Setup ${{ inputs.compiler_toolchain }} ${{ inputs.compiler_version }} uses: fortran-lang/setup-fortran@v1 @@ -507,14 +503,11 @@ jobs: repository: MODFLOW-USGS/modflow6-examples path: modflow6-examples - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Setup ${{ inputs.compiler_toolchain }} ${{ inputs.compiler_version }} uses: fortran-lang/setup-fortran@v1 diff --git a/.github/workflows/release_dispatch.yml b/.github/workflows/release_dispatch.yml index e889d1c2486..f033b38c84f 100644 --- a/.github/workflows/release_dispatch.yml +++ b/.github/workflows/release_dispatch.yml @@ -157,14 +157,11 @@ jobs: repository: ${{ github.repository_owner }}/modflow6 ref: ${{ github.ref }} - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Update version working-directory: distribution @@ -219,14 +216,11 @@ jobs: repository: ${{ github.repository_owner }}/modflow6 path: modflow6 - - uses: prefix-dev/setup-pixi@v0.5.1 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.5.1 with: pixi-version: "latest" manifest-path: "modflow6/pixi.toml" - - - name: Setup pixi - working-directory: modflow6 - run: pixi run install - name: Download artifacts uses: dawidd6/action-download-artifact@v3 diff --git a/.vscode/README.md b/.vscode/README.md index 93941be54b3..962fe1d07b2 100644 --- a/.vscode/README.md +++ b/.vscode/README.md @@ -41,10 +41,10 @@ In general, to determine the path of an installed tool in your environment run: - cmd: `where `, e.g. `where python` - PowerShell: `Get-Command ` e.g. `Get-Command fprettify` -1. Activate the pixi environment: +1. Activate the conda environment: ```bash -pixi shell +conda activate modflow6 ``` 2. Determine the path of `fortls` and `fprettify` diff --git a/.vscode/build_vscode.py b/.vscode/build_vscode.py index 654e70fca42..d222cc7c772 100644 --- a/.vscode/build_vscode.py +++ b/.vscode/build_vscode.py @@ -21,8 +21,22 @@ if args.action == "rebuild" and os.path.isdir(builddir): shutil.rmtree(builddir) +if args.buildtype == "release": + setup_flag = ["-Doptimization=2"] +elif args.buildtype == "debug": + setup_flag = ["-Ddebug=true", "-Doptimization=0"] + if not os.path.isdir(builddir): - command = ["pixi", "run", f"setup-{args.buildtype}", builddir, arg_parallel] + command = [ + "meson", + "setup", + builddir, + "--prefix", + os.getcwd(), + "--libdir", + "bin", + arg_parallel, + ] + setup_flag print("Run:", shlex.join(command)) subprocess.run( command, @@ -37,6 +51,6 @@ if os.path.isfile(path): os.remove(path) -command = ["pixi", "run", "install-build", builddir] +command = ["meson", "install", "-C", builddir] print("Run:", shlex.join(command)) subprocess.run(command, check=True) diff --git a/.vscode/run_python.cmd b/.vscode/run_python.cmd index 43318bc5015..87c6f3de58b 100644 --- a/.vscode/run_python.cmd +++ b/.vscode/run_python.cmd @@ -4,6 +4,7 @@ if "%3" == "ifort" ( call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" ) +call conda activate modflow6 rem run python script -pixi run python %1 %2 %3 %4 %5 %6 +python %1 %2 %3 %4 %5 %6 diff --git a/.vscode/run_python.sh b/.vscode/run_python.sh index 6977d7a2fe1..cbd3b27fcc9 100755 --- a/.vscode/run_python.sh +++ b/.vscode/run_python.sh @@ -5,5 +5,8 @@ then source /opt/intel/oneapi/setvars.sh fi +eval "$(conda shell.bash hook)" +conda activate modflow6 + # run python script -pixi run python $1 $2 $3 $4 $5 $6 +python $1 $2 $3 $4 $5 $6 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5845a06f4b6..0882133457c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -141,7 +141,7 @@ To ensure consistency throughout the source code, keep these rules in mind as yo ## Format Rules Fortran souce code format rules are met by running the -[fprettify formatter](https://github.com/pseewald/fprettify) while specifying the [MODFLOW 6 fprettify configuration](.fprettify.yaml). `fprettify` is included in the pixi environment and can be run on the command line or integrated into a [VSCode](.vscode/README.md) or Visual Studio environment. +[fprettify formatter](https://github.com/pseewald/fprettify) while specifying the [MODFLOW 6 fprettify configuration](.fprettify.yaml). `fprettify` is included in the conda and pixi environments and can be run on the command line or integrated into a [VSCode](.vscode/README.md) or Visual Studio environment. The configuration file reflects the current minimum standard for Fortran source formatting. The main goal, however, is consistent and readable Fortran source code and as such pay particular attention to consistency within and across files. As the formatting tool may at times shift code in unexpected ways, check for formatting consistency after running. diff --git a/DEVELOPER.md b/DEVELOPER.md index 61d5f3ec853..a8b194bef1d 100644 --- a/DEVELOPER.md +++ b/DEVELOPER.md @@ -179,12 +179,10 @@ The following tables are automatically generated by [a CI workflow](.github/work ### Python -Python 3.8+ is required to run MODFLOW 6 tests. Using Python from the pixi environment is recommended. -The installation docs can be found [here](https://pixi.sh). -After installing pixi, you can trigger the installation process as follows: +Python 3.8+ is required to run MODFLOW 6 tests. Using Python via Pixi is recommended. Pixi installation docs can be found [here](https://pixi.sh). After installing `pixi`, to set up an environment with all development dependencies, run: ``` -pixi run install +pixi install ``` #### Dependencies @@ -195,20 +193,21 @@ This project depends critically on a few Python packages for building, linting a - `fprettify` - `pymake` - `flopy` +- `modflow-devtools` -These are each described briefly below. The `pixi.toml` contains a number of other dependencies also required for various development tasks, but they are not described in detail here. +These are each described briefly below. These and a number of other dependencies are build-, test-, or release-time dependencies are included the Pixi environment `pixi.toml` as well as the Conda `environment.yml` file in this repository. ##### `meson` -[Meson](https://mesonbuild.com/index.html) is recommended for building MODFLOW 6 and is included in `pixi.toml`. It can also be [installed independently](https://mesonbuild.com/Getting-meson.html) — note that if you do so you will need to manually add the executable to the [PATH](https://en.wikipedia.org/wiki/PATH_(variable)). +[Meson](https://mesonbuild.com/index.html) is the recommended build system for MODFLOW 6. ##### `fprettify` -[`fprettify`](https://github.com/pseewald/fprettify) can be used to format Fortran source code and in combination with the [MODFLOW 6 fprettify configuration](.fprettify.yaml) establishes a contribution standard for properly formatted MODFLOW 6 Fortran source. This tool can be installed with `pip` or `conda` and used from the command line or integrated with a [VSCode](.vscode/README.md) or Visual Studio development environment. The `fprettify` package is included in the Pixi environment in `pixi.toml`. See [contribution guidelines](CONTRIBUTING.md) for additional information. +[`fprettify`](https://github.com/pseewald/fprettify) can be used to format Fortran source code and in combination with the [MODFLOW 6 fprettify configuration](.fprettify.yaml) establishes a contribution standard for properly formatted MODFLOW 6 Fortran source. This tool can be used from the command line or integrated with a [VSCode](.vscode/README.md) or Visual Studio development environment. See [contribution guidelines](CONTRIBUTING.md) for additional information. ##### `mfpymake` -The `mfpymake` package can build MODFLOW 6 and related programs and artifacts (e.g. makefiles), and is used in particular by the `distribution/build_makefiles.py` script. `mfpymake` is included in `pixi.toml`. To install separately, follow the instructions as explained on the README of the [repository](https://github.com/modflowpy/pymake). The README also demonstrates basic usage. +The `mfpymake` package can build MODFLOW 6 and related programs and artifacts (e.g. makefiles), and is used in particular by the `distribution/build_makefiles.py` script. ##### `flopy` @@ -218,7 +217,7 @@ Like MODFLOW 6, `flopy` is modular — for each MODFLOW 6 package there is g ##### `modflow-devtools` -The tests use a set of shared fixtures and utilities provided by the [`modflow-devtools`](https://github.com/MODFLOW-USGS/modflow-devtools) package. This package is included in the Pixi environment in `pixi.toml`. +The tests use a set of shared fixtures and utilities provided by the [`modflow-devtools`](https://github.com/MODFLOW-USGS/modflow-devtools) package. ### Optional tools @@ -259,7 +258,7 @@ git remote add upstream https://github.com/MODFLOW-USGS/modflow6.git ## Building -Meson is the recommended build tool for MODFLOW 6. [Meson](https://mesonbuild.com/Getting-meson.html) must be installed and on your [PATH](https://en.wikipedia.org/wiki/PATH_(variable)). Creating and activating the Pixi environment `pixi.toml` should be sufficient for this. +Meson is the recommended build tool for MODFLOW 6. [Meson](https://mesonbuild.com/Getting-meson.html) must be installed and on your [PATH](https://en.wikipedia.org/wiki/PATH_(variable)). Creating and activating the provided Pixi or Conda environment should be sufficient for this. Meson build configuration files are provided for MODFLOW 6, for the ZONEBUDGET and MODFLOW 2005 to 6 converter utility programs, and for Fortran unit tests (see [Testing](#testing) section below). @@ -272,36 +271,29 @@ To build MODFLOW 6, first configure the build directory. Depending on which task you use, meson will configure a debug or release build. Setup a debug build: -```shell -pixi run setup-debug builddir -``` -Or alternatively, setup a release build ```shell -pixi run setup-release builddir +pixi run setup -Ddebug=true -Doptimization=0 builddir ``` -Compile MODFLOW 6 by executing: - +Or alternatively, setup a release build ```shell -pixi run compile-build builddir +pixi run setup builddir ``` -In order to run the tests the binaries have to be installed: +Compile MODFLOW 6 and install binaries to the `bin` folder by executing: ```shell -pixi run install-build builddir +pixi run build builddir ``` -The binaries can then be found in the `bin` folder. `meson install` also triggers a compilation if necessary, so executing `meson install` is enough to get up-to-date binaries in the `bin` folder. - **Note:** If using Visual Studio Code, you can use tasks as described [here](.vscode/README.md) to automate the above. ## Testing MODFLOW 6 unit tests are written in Fortran with [`test-drive`](https://github.com/fortran-lang/test-drive). -MODFLOW 6 integration tests are written in Python with [`pytest`](https://docs.pytest.org/en/7.1.x/). Integration testing dependencies are included in the Pixi environment `pixi.toml`. +MODFLOW 6 integration tests are written in Python with [`pytest`](https://docs.pytest.org/en/7.1.x/). Integration testing dependencies are included in Pixi and Conda environments. **Note:** the entire test suite should pass before a pull request is submitted. Tests run in GitHub Actions CI and a PR can only be merged with passing tests. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for more information. @@ -392,14 +384,14 @@ MODFLOW 6 has two kinds of tests: Fortran unit tests, driven with Meson, and Pyt Unit tests must be run from the project root. To run unit tests in verbose mode: ```shell -pixi run test-build builddir +pixi run test builddir ``` Unit tests can be selected by module name (as listed in `autotest/tester.f90`). For instance, to test the `ArrayHandlersModule`: ```shell -pixi run test-build builddir --verbose ArrayHandlers +pixi run test builddir --verbose ArrayHandlers ``` To run a test module in the `gdb` debugger, just add the `--gdb` flag to the test command. diff --git a/distribution/update_version.py b/distribution/update_version.py index 282c53593b4..7f1cd33f8f0 100755 --- a/distribution/update_version.py +++ b/distribution/update_version.py @@ -316,6 +316,28 @@ def update_codejson(version: Version, timestamp: datetime, approved: bool = Fals log_update(path, version) +def update_doxyfile(version: Version): + path = project_root_path / ".build_rtd_docs" / "Doxyfile" + lines = open(path, "r").readlines() + tag = "PROJECT_NUMBER" + with open(path, "w") as fp: + for line in lines: + if tag in line: + line = f'{tag} = "version {version}"\n' + fp.write(line) + + +def update_pixi(version: Version): + path = project_root_path / "pixi.toml" + lines = open(path, "r").readlines() + tag = "version =" + with open(path, "w") as fp: + for line in lines: + if tag in line: + line = f'{tag} "{version}"\n' + fp.write(line) + + def update_version( version: Version = None, timestamp: datetime = datetime.now(), @@ -345,6 +367,8 @@ def update_version( update_readme_and_disclaimer(version, approved) update_citation_cff(version, timestamp) update_codejson(version, timestamp, approved) + update_doxyfile(version) + update_pixi(version) finally: lock_path.unlink(missing_ok=True) diff --git a/pixi.lock b/pixi.lock index adf4f04e1ca..d12811c8759 100644 --- a/pixi.lock +++ b/pixi.lock @@ -136,6 +136,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mfpymake-1.2.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.4-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -155,7 +156,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-ha41ecd1_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.43-hcad00b1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.2.0-py39had0adad_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py39h90c7501_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda @@ -229,6 +230,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda + - pypi: git+https://github.com/modflowpy/flopy.git@4c44cb0d9d6ef02c092938dad943cdb8285f82a7 + - pypi: git+https://github.com/MODFLOW-USGS/modflow-devtools.git@e65c4d3304f0230345d6f1d4d8f911e0c2eb7c64 + - pypi: git+https://github.com/MODFLOW-USGS/modflowapi.git@c6811fded7d832506c8bf98cef9ffffa31e2da3b osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h1d18e73_1.tar.bz2 @@ -325,6 +329,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mfpymake-1.2.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.3-pyhd8ed1ab_0.conda @@ -339,7 +344,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.50.14-h19c1c8a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.43-h0ad2156_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.2.0-py39hdd30358_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.3.0-py39h9dabb2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda @@ -391,6 +396,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.13-h8a1eda9_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.5-h829000d_0.conda + - pypi: git+https://github.com/modflowpy/flopy.git@4c44cb0d9d6ef02c092938dad943cdb8285f82a7 + - pypi: git+https://github.com/MODFLOW-USGS/modflow-devtools.git@e65c4d3304f0230345d6f1d4d8f911e0c2eb7c64 + - pypi: git+https://github.com/MODFLOW-USGS/modflowapi.git@c6811fded7d832506c8bf98cef9ffffa31e2da3b osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hcb7b3dd_1.tar.bz2 @@ -487,6 +495,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mfpymake-1.2.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.3-pyhd8ed1ab_0.conda @@ -501,7 +510,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.50.14-hcf40dda_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.43-h26f9a81_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.2.0-py39h755f0b7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py39h3352c98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda @@ -553,6 +562,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.2.13-h53f4e23_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.5-h4f39d0f_0.conda + - pypi: git+https://github.com/modflowpy/flopy.git@4c44cb0d9d6ef02c092938dad943cdb8285f82a7 + - pypi: git+https://github.com/MODFLOW-USGS/modflow-devtools.git@e65c4d3304f0230345d6f1d4d8f911e0c2eb7c64 + - pypi: git+https://github.com/MODFLOW-USGS/modflowapi.git@c6811fded7d832506c8bf98cef9ffffa31e2da3b win-64: - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda @@ -607,7 +619,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.0.0-h57928b3_49841.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.1.0-h57928b3_964.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda @@ -654,6 +666,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mfpymake-1.2.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.0.0-h66d3029_49657.conda - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 @@ -669,7 +682,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.50.14-h07c897b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.43-h17e33f8_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.2.0-py39h368b509_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.3.0-py39h9ee4981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda @@ -742,6 +755,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.2.13-hcfcfb64_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.5-h12be248_0.conda + - pypi: git+https://github.com/modflowpy/flopy.git@4c44cb0d9d6ef02c092938dad943cdb8285f82a7 + - pypi: git+https://github.com/MODFLOW-USGS/modflow-devtools.git@e65c4d3304f0230345d6f1d4d8f911e0c2eb7c64 + - pypi: git+https://github.com/MODFLOW-USGS/modflowapi.git@c6811fded7d832506c8bf98cef9ffffa31e2da3b packages: - kind: conda name: _libgcc_mutex @@ -800,6 +816,8 @@ packages: - python license: MIT license_family: MIT + purls: + - pkg:pypi/appdirs size: 12840 timestamp: 1603108499239 - kind: conda @@ -885,6 +903,8 @@ packages: - python >=3.7 license: MIT license_family: MIT + purls: + - pkg:pypi/attrs size: 54582 timestamp: 1704011393776 - kind: conda @@ -1443,6 +1463,8 @@ packages: - python >=3.7 license: MIT license_family: MIT + purls: + - pkg:pypi/charset-normalizer size: 46597 timestamp: 1698833765762 - kind: conda @@ -1459,6 +1481,8 @@ packages: - python >=3.8 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/click size: 84437 timestamp: 1692311973840 - kind: conda @@ -1476,6 +1500,8 @@ packages: - python >=3.8 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/click size: 85051 timestamp: 1692312207348 - kind: conda @@ -1491,6 +1517,8 @@ packages: - python >=3.7 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/colorama size: 25170 timestamp: 1666700778190 - kind: conda @@ -1506,6 +1534,8 @@ packages: - python >=3.5 license: MIT license_family: MIT + purls: + - pkg:pypi/configargparse size: 39491 timestamp: 1690138171226 - kind: conda @@ -1525,6 +1555,8 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/contourpy size: 185949 timestamp: 1699042094923 - kind: conda @@ -1543,6 +1575,8 @@ packages: - python_abi 3.9.* *_cp39 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/contourpy size: 230650 timestamp: 1699041727321 - kind: conda @@ -1561,6 +1595,8 @@ packages: - python_abi 3.9.* *_cp39 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/contourpy size: 237856 timestamp: 1699042102939 - kind: conda @@ -1580,6 +1616,8 @@ packages: - python_abi 3.9.* *_cp39 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/contourpy size: 223476 timestamp: 1699042196671 - kind: conda @@ -1595,6 +1633,8 @@ packages: - python >=3.8 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/cycler size: 13458 timestamp: 1696677888423 - kind: conda @@ -1627,6 +1667,8 @@ packages: - python >=3.7 license: MIT license_family: MIT + purls: + - pkg:pypi/editables size: 10988 timestamp: 1705857085102 - kind: conda @@ -1642,6 +1684,8 @@ packages: depends: - python >=3.7 license: MIT and PSF-2.0 + purls: + - pkg:pypi/exceptiongroup size: 20551 timestamp: 1704921321122 - kind: conda @@ -1657,6 +1701,8 @@ packages: - python >=3.7 license: MIT license_family: MIT + purls: + - pkg:pypi/execnet size: 36534 timestamp: 1688933537234 - kind: conda @@ -1728,6 +1774,8 @@ packages: depends: - python >=3.7 license: Unlicense + purls: + - pkg:pypi/filelock size: 15611 timestamp: 1711394721380 - kind: conda @@ -1743,8 +1791,62 @@ packages: - python >=3.6 license: Apache-2.0 license_family: Apache + purls: + - pkg:pypi/flaky size: 22156 timestamp: 1710293112378 +- kind: pypi + name: flopy + version: 3.7.0.dev0 + url: git+https://github.com/modflowpy/flopy.git@4c44cb0d9d6ef02c092938dad943cdb8285f82a7 + requires_dist: + - numpy <2.0.0, >=1.15.0 + - matplotlib >=1.4.0 + - pandas >=2.0.0 + - flopy[doc,lint,optional,test] ; extra == 'dev' + - flopy[optional] ; extra == 'doc' + - ipython[kernel] ; extra == 'doc' + - jupytext ; extra == 'doc' + - myst-parser ; extra == 'doc' + - nbconvert <7.14.0 ; extra == 'doc' + - nbsphinx ; extra == 'doc' + - pyyaml ; extra == 'doc' + - rtds-action ; extra == 'doc' + - sphinx ==7.1.2 ; extra == 'doc' + - sphinx-rtd-theme >=1 ; extra == 'doc' + - cffconvert ; extra == 'lint' + - ruff ; extra == 'lint' + - affine ; extra == 'optional' + - descartes ; extra == 'optional' + - fiona ; extra == 'optional' + - geojson ; extra == 'optional' + - geopandas ; extra == 'optional' + - imageio ; extra == 'optional' + - netcdf4 ; extra == 'optional' + - pyproj ; extra == 'optional' + - pyshp ; extra == 'optional' + - pyvista ; extra == 'optional' + - rasterio ; extra == 'optional' + - rasterstats ; extra == 'optional' + - scipy ; extra == 'optional' + - shapely >=1.8 ; extra == 'optional' + - vtk ; extra == 'optional' + - xmipy ; extra == 'optional' + - pymetis ; platform_system != 'Windows' and extra == 'optional' + - flopy[lint] ; extra == 'test' + - coverage ; extra == 'test' + - flaky ; extra == 'test' + - filelock ; extra == 'test' + - jupyter ; extra == 'test' + - jupytext ; extra == 'test' + - modflow-devtools ; extra == 'test' + - pytest !=8.1.0 ; extra == 'test' + - pytest-benchmark ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-dotenv ; extra == 'test' + - pytest-xdist ; extra == 'test' + - virtualenv ; extra == 'test' + requires_python: '>=3.8' - kind: conda name: font-ttf-dejavu-sans-mono version: '2.37' @@ -1918,6 +2020,8 @@ packages: - unicodedata2 >=14.0.0 license: MIT license_family: MIT + purls: + - pkg:pypi/fonttools size: 2180527 timestamp: 1710865966262 - kind: conda @@ -1936,6 +2040,8 @@ packages: - unicodedata2 >=14.0.0 license: MIT license_family: MIT + purls: + - pkg:pypi/fonttools size: 2218023 timestamp: 1710866172054 - kind: conda @@ -1957,6 +2063,8 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT + purls: + - pkg:pypi/fonttools size: 1877377 timestamp: 1710866233893 - kind: conda @@ -1976,6 +2084,8 @@ packages: - unicodedata2 >=14.0.0 license: MIT license_family: MIT + purls: + - pkg:pypi/fonttools size: 2287520 timestamp: 1710865721782 - kind: conda @@ -2920,6 +3030,8 @@ packages: - trove-classifiers license: MIT license_family: MIT + purls: + - pkg:pypi/hatchling size: 62671 timestamp: 1711286880652 - kind: conda @@ -2990,6 +3102,8 @@ packages: - python >=3.6 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/idna size: 50124 timestamp: 1701027126206 - kind: conda @@ -3040,6 +3154,8 @@ packages: - importlib-resources >=6.4.0,<6.4.1.0a0 license: Apache-2.0 license_family: APACHE + purls: + - pkg:pypi/importlib-resources size: 33056 timestamp: 1711041009039 - kind: conda @@ -3055,21 +3171,23 @@ packages: - python >=3.7 license: MIT license_family: MIT + purls: + - pkg:pypi/iniconfig size: 11101 timestamp: 1673103208955 - kind: conda name: intel-openmp - version: 2024.0.0 - build: h57928b3_49841 - build_number: 49841 + version: 2024.1.0 + build: h57928b3_964 + build_number: 964 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.0.0-h57928b3_49841.conda - sha256: 6ee8eb9080bb3268654e015dd17ad79d0c1ea98b2eee6b928ecd27f01d6b38e8 - md5: e3255c8cdaf1d52f15816d1970f9c77a + url: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.1.0-h57928b3_964.conda + sha256: bea54e995cd79b0961ded5f0d6d1b8a55513283ccda74cedb3421a3764f7d679 + md5: 30ebb9fd99666d8b8675fcee541a09f3 license: LicenseRef-ProprietaryIntel license_family: Proprietary - size: 2325424 - timestamp: 1706182537883 + size: 1616281 + timestamp: 1712153179165 - kind: conda name: jinja2 version: 3.1.3 @@ -3084,6 +3202,8 @@ packages: - python >=3.7 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/jinja2 size: 111589 timestamp: 1704967140287 - kind: conda @@ -3122,6 +3242,8 @@ packages: - referencing >=0.31.0 license: MIT license_family: MIT + purls: + - pkg:pypi/jsonschema-specifications size: 16431 timestamp: 1703778502971 - kind: conda @@ -3213,6 +3335,8 @@ packages: - toml license: MIT license_family: MIT + purls: + - pkg:pypi/jupytext size: 102909 timestamp: 1705172248226 - kind: conda @@ -3245,6 +3369,8 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/kiwisolver size: 55660 timestamp: 1695380433980 - kind: conda @@ -3263,6 +3389,8 @@ packages: - python_abi 3.9.* *_cp39 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/kiwisolver size: 73457 timestamp: 1695380118523 - kind: conda @@ -3280,6 +3408,8 @@ packages: - python_abi 3.9.* *_cp39 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/kiwisolver size: 60498 timestamp: 1695380322018 - kind: conda @@ -3298,6 +3428,8 @@ packages: - python_abi 3.9.* *_cp39 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/kiwisolver size: 62080 timestamp: 1695380521068 - kind: conda @@ -5806,6 +5938,8 @@ packages: - python >=3.8 license: MIT license_family: MIT + purls: + - pkg:pypi/markdown-it-py size: 64356 timestamp: 1686175179621 - kind: conda @@ -5824,6 +5958,8 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/markupsafe size: 23827 timestamp: 1706900341193 - kind: conda @@ -5841,6 +5977,8 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/markupsafe size: 23107 timestamp: 1706900243497 - kind: conda @@ -5861,6 +5999,8 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/markupsafe size: 26856 timestamp: 1706900665492 - kind: conda @@ -5879,6 +6019,8 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/markupsafe size: 24314 timestamp: 1706900151453 - kind: conda @@ -5979,6 +6121,8 @@ packages: - python_abi 3.9.* *_cp39 license: PSF-2.0 license_family: PSF + purls: + - pkg:pypi/matplotlib size: 6910833 timestamp: 1708027042126 - kind: conda @@ -6009,6 +6153,8 @@ packages: - python_abi 3.9.* *_cp39 license: PSF-2.0 license_family: PSF + purls: + - pkg:pypi/matplotlib size: 6825567 timestamp: 1708027174151 - kind: conda @@ -6040,6 +6186,8 @@ packages: - tk >=8.6.13,<8.7.0a0 license: PSF-2.0 license_family: PSF + purls: + - pkg:pypi/matplotlib size: 6931092 timestamp: 1708026713643 - kind: conda @@ -6071,6 +6219,8 @@ packages: - vc14_runtime >=14.29.30139 license: PSF-2.0 license_family: PSF + purls: + - pkg:pypi/matplotlib size: 6754973 timestamp: 1708027177507 - kind: conda @@ -6087,6 +6237,8 @@ packages: - python >=3.8 license: MIT license_family: MIT + purls: + - pkg:pypi/mdit-py-plugins size: 41197 timestamp: 1686175527330 - kind: conda @@ -6102,6 +6254,8 @@ packages: - python >=3.6 license: MIT license_family: MIT + purls: + - pkg:pypi/mdurl size: 14680 timestamp: 1704317789138 - kind: conda @@ -6121,6 +6275,28 @@ packages: license_family: APACHE size: 628242 timestamp: 1700451735019 +- kind: conda + name: mfpymake + version: 1.2.9 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mfpymake-1.2.9-pyhd8ed1ab_0.conda + sha256: 2fcd9fe875010d94c4b74ea45f0a25a91f46527b9b5f4a29875194c0b33d6a70 + md5: b34f31d00ff11d8baa25cda984196e1e + depends: + - meson + - networkx >=2.6.3 + - ninja + - numpy + - pydotplus + - python >=3.8 + - requests + license: CC0-1.0 + purls: + - pkg:pypi/mfpymake + size: 59409 + timestamp: 1707761286555 - kind: conda name: mkl version: 2024.0.0 @@ -6137,6 +6313,44 @@ packages: license_family: Proprietary size: 108505947 timestamp: 1701973497498 +- kind: pypi + name: modflow-devtools + version: 1.5.0.dev0 + url: git+https://github.com/MODFLOW-USGS/modflow-devtools.git@e65c4d3304f0230345d6f1d4d8f911e0c2eb7c64 + requires_dist: + - sphinx ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - myst-parser ; extra == 'docs' + - ruff ; extra == 'lint' + - modflow-devtools[lint] ; extra == 'test' + - coverage ; extra == 'test' + - flaky ; extra == 'test' + - filelock ; extra == 'test' + - meson !=0.63.0 ; extra == 'test' + - ninja ; extra == 'test' + - numpy ; extra == 'test' + - pytest !=8.1.0 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-dotenv ; extra == 'test' + - pytest-xdist ; extra == 'test' + - pyyaml ; extra == 'test' + requires_python: '>=3.8' +- kind: pypi + name: modflowapi + version: 0.3.0.dev0 + url: git+https://github.com/MODFLOW-USGS/modflowapi.git@c6811fded7d832506c8bf98cef9ffffa31e2da3b + requires_dist: + - numpy <2.0.0 + - pandas + - xmipy + - modflowapi[lint,test] ; extra == 'dev' + - ruff ; extra == 'lint' + - filelock ; extra == 'test' + - modflow-devtools ; extra == 'test' + - pytest !=8.1.0 ; extra == 'test' + - pytest-order ; extra == 'test' + - pytest-xdist ; extra == 'test' + requires_python: '>=3.9' - kind: conda name: mpg123 version: 1.32.4 @@ -6191,6 +6405,8 @@ packages: - python >=3.5 license: MIT license_family: MIT + purls: + - pkg:pypi/mypy-extensions size: 10492 timestamp: 1675543414256 - kind: conda @@ -6247,6 +6463,8 @@ packages: - traitlets >=5.1 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/nbformat size: 100844 timestamp: 1710502340495 - kind: conda @@ -6302,6 +6520,8 @@ packages: - pandas >=1.4 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/networkx size: 1149552 timestamp: 1698504905258 - kind: conda @@ -6416,6 +6636,8 @@ packages: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/numpy size: 6481665 timestamp: 1707226262838 - kind: conda @@ -6438,6 +6660,8 @@ packages: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/numpy size: 7039431 timestamp: 1707225726227 - kind: conda @@ -6460,6 +6684,8 @@ packages: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/numpy size: 5492058 timestamp: 1707226364958 - kind: conda @@ -6483,6 +6709,8 @@ packages: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/numpy size: 5920615 timestamp: 1707226471242 - kind: conda @@ -6641,6 +6869,8 @@ packages: - python >=3.8 license: Apache-2.0 license_family: APACHE + purls: + - pkg:pypi/packaging size: 49832 timestamp: 1710076089469 - kind: conda @@ -6825,6 +7055,8 @@ packages: - python >=3.7 license: MPL-2.0 license_family: MOZILLA + purls: + - pkg:pypi/pathspec size: 41173 timestamp: 1702250135032 - kind: conda @@ -6893,12 +7125,12 @@ packages: timestamp: 1708118050286 - kind: conda name: pillow - version: 10.2.0 - build: py39h368b509_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pillow-10.2.0-py39h368b509_0.conda - sha256: fc08925521c8839ace0b0b62f37757ab95d3934c63bb6b7da10c1f10917be002 - md5: 706d6e5bbc4b5d2ac7b8a6077319294d + version: 10.3.0 + build: py39h3352c98_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py39h3352c98_0.conda + sha256: ec1a6fed0b5e114c79ecdbe195f1a1c9ace94ccb61379e59781afb68cba0f463 + md5: ae81c249c46d2c8e37770a72f7568aaa depends: - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 @@ -6907,72 +7139,69 @@ packages: - libwebp-base >=1.3.2,<2.0a0 - libxcb >=1.15,<1.16.0a0 - libzlib >=1.2.13,<1.3.0a0 - - openjpeg >=2.5.0,<3.0a0 + - openjpeg >=2.5.2,<3.0a0 - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython - python_abi 3.9.* *_cp39 - tk >=8.6.13,<8.7.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: HPND - size: 42054784 - timestamp: 1704252779681 + size: 40576213 + timestamp: 1712155121473 - kind: conda name: pillow - version: 10.2.0 - build: py39h755f0b7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.2.0-py39h755f0b7_0.conda - sha256: 0e91b5467c3994760832fca4a45ed084853061b5c42a8015da4e19fed7e5b7aa - md5: 9309cdb83d6c1617a58e57b61c556105 + version: 10.3.0 + build: py39h90c7501_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py39h90c7501_0.conda + sha256: 1fa684d3f431f98a3e10f972025fc63fc81882e775059b358f5ff58cc46a951d + md5: 1e3b6af9592be71ce19f0a6aae05d97b depends: - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.7.0a0 - libwebp-base >=1.3.2,<2.0a0 - libxcb >=1.15,<1.16.0a0 - libzlib >=1.2.13,<1.3.0a0 - - openjpeg >=2.5.0,<3.0a0 + - openjpeg >=2.5.2,<3.0a0 - python >=3.9,<3.10.0a0 - - python >=3.9,<3.10.0a0 *_cpython - python_abi 3.9.* *_cp39 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41621811 - timestamp: 1704252739541 + size: 42433427 + timestamp: 1712154625243 - kind: conda name: pillow - version: 10.2.0 - build: py39had0adad_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.2.0-py39had0adad_0.conda - sha256: 6936d54f9830ac66bee7b26187eb2297d80febe110e978cd9ae6a54e62ec6aaf - md5: 2972754dc054bb079d1d121918b5126f + version: 10.3.0 + build: py39h9dabb2a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.3.0-py39h9dabb2a_0.conda + sha256: b2478cf4fc318a1be5b3287bf426b34d0b2cc2b0cb7a435e6ad7f9637c8e5f53 + md5: e385068c9511542eff20422f7e799064 depends: - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.7.0a0 - libwebp-base >=1.3.2,<2.0a0 - libxcb >=1.15,<1.16.0a0 - libzlib >=1.2.13,<1.3.0a0 - - openjpeg >=2.5.0,<3.0a0 + - openjpeg >=2.5.2,<3.0a0 - python >=3.9,<3.10.0a0 - python_abi 3.9.* *_cp39 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41860107 - timestamp: 1704252210593 + size: 42224219 + timestamp: 1712154790265 - kind: conda name: pillow - version: 10.2.0 - build: py39hdd30358_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.2.0-py39hdd30358_0.conda - sha256: 70d5e8c36b1ac538d212816474594cf87aaa0c2e8f98308e952357df1b6b1c4f - md5: 38aef4e0b3355d32485cd4a199296a5b + version: 10.3.0 + build: py39h9ee4981_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pillow-10.3.0-py39h9ee4981_0.conda + sha256: 06e75a5a56d104dee181ef9e0dd78fd0998ee7f9cf6a1ee56308ecf035236404 + md5: 6d69d57c41867acc162ef0205a8efaef depends: - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 @@ -6981,13 +7210,16 @@ packages: - libwebp-base >=1.3.2,<2.0a0 - libxcb >=1.15,<1.16.0a0 - libzlib >=1.2.13,<1.3.0a0 - - openjpeg >=2.5.0,<3.0a0 + - openjpeg >=2.5.2,<3.0a0 - python >=3.9,<3.10.0a0 - python_abi 3.9.* *_cp39 - tk >=8.6.13,<8.7.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: HPND - size: 41418500 - timestamp: 1704252471264 + size: 42541715 + timestamp: 1712155039095 - kind: conda name: pip version: '24.0' @@ -7003,6 +7235,8 @@ packages: - wheel license: MIT license_family: MIT + purls: + - pkg:pypi/pip size: 1398245 timestamp: 1706960660581 - kind: conda @@ -7077,6 +7311,8 @@ packages: depends: - python >=3.6 license: MIT AND PSF-2.0 + purls: + - pkg:pypi/pkgutil-resolve-name size: 10778 timestamp: 1694617398467 - kind: conda @@ -7092,6 +7328,8 @@ packages: - python >=3.8 license: MIT license_family: MIT + purls: + - pkg:pypi/platformdirs size: 20210 timestamp: 1706713564353 - kind: conda @@ -7107,6 +7345,8 @@ packages: - python >=3.8 license: MIT license_family: MIT + purls: + - pkg:pypi/pluggy size: 23384 timestamp: 1706116931972 - kind: conda @@ -7123,6 +7363,8 @@ packages: - python license: BSD 3-clause license_family: BSD + purls: + - pkg:pypi/ply size: 44837 timestamp: 1530963184592 - kind: conda @@ -7228,6 +7470,8 @@ packages: - python >=3.7 license: MIT license_family: MIT + purls: + - pkg:pypi/py-cpuinfo size: 24947 timestamp: 1666774595872 - kind: conda @@ -7246,6 +7490,8 @@ packages: - python >=3.6 license: MIT license_family: MIT + purls: + - pkg:pypi/pydotplus size: 24847 timestamp: 1622588237763 - kind: conda @@ -7261,6 +7507,8 @@ packages: - python >=3.6 license: MIT license_family: MIT + purls: + - pkg:pypi/pyparsing size: 89455 timestamp: 1709721146886 - kind: conda @@ -7282,6 +7530,8 @@ packages: - sip >=6.7.11,<6.8.0a0 license: GPL-3.0-only license_family: GPL + purls: + - pkg:pypi/pyqt5 size: 5227659 timestamp: 1695420723753 - kind: conda @@ -7304,6 +7554,8 @@ packages: - vc14_runtime >=14.29.30139 license: GPL-3.0-only license_family: GPL + purls: + - pkg:pypi/pyqt5 size: 3876568 timestamp: 1695421679054 - kind: conda @@ -7380,6 +7632,8 @@ packages: - win_inet_pton license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/pysocks size: 19348 timestamp: 1661605138291 - kind: conda @@ -7397,6 +7651,8 @@ packages: - python >=3.8 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/pysocks size: 18981 timestamp: 1661604969727 - kind: conda @@ -7420,6 +7676,8 @@ packages: - pytest-faulthandler >=2 license: MIT license_family: MIT + purls: + - pkg:pypi/pytest size: 255523 timestamp: 1709992719691 - kind: conda @@ -7437,6 +7695,8 @@ packages: - python >=3.5 license: BSD-2-Clause license_family: BSD + purls: + - pkg:pypi/pytest-benchmark size: 39571 timestamp: 1666782598879 - kind: conda @@ -7454,6 +7714,8 @@ packages: - python-dotenv >=0.9.1 license: MIT license_family: MIT + purls: + - pkg:pypi/pytest-dotenv size: 7383 timestamp: 1606859705188 - kind: conda @@ -7470,6 +7732,8 @@ packages: - python >=3.6 license: MIT license_family: MIT + purls: + - pkg:pypi/pytest-order size: 15851 timestamp: 1641771678634 - kind: conda @@ -7489,6 +7753,8 @@ packages: - psutil >=3.0 license: MIT license_family: MIT + purls: + - pkg:pypi/pytest-xdist size: 36516 timestamp: 1700593072448 - kind: conda @@ -7606,6 +7872,8 @@ packages: - six >=1.5 license: Apache-2.0 license_family: APACHE + purls: + - pkg:pypi/python-dateutil size: 222742 timestamp: 1709299922152 - kind: conda @@ -7636,6 +7904,8 @@ packages: - python >=3.3 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/fastjsonschema size: 225250 timestamp: 1703781171097 - kind: conda @@ -7651,6 +7921,8 @@ packages: - python >=3.6 license: Apache-2.0 license_family: APACHE + purls: + - pkg:pypi/tzdata size: 144024 timestamp: 1707747742930 - kind: conda @@ -7726,6 +7998,8 @@ packages: - python >=3.7 license: MIT license_family: MIT + purls: + - pkg:pypi/pytz size: 188538 timestamp: 1706886944988 - kind: conda @@ -7972,6 +8246,8 @@ packages: - rpds-py >=0.7.0 license: MIT license_family: MIT + purls: + - pkg:pypi/referencing size: 42071 timestamp: 1710763821612 - kind: conda @@ -7993,6 +8269,8 @@ packages: - chardet >=3.0.2,<6 license: Apache-2.0 license_family: APACHE + purls: + - pkg:pypi/requests size: 56690 timestamp: 1684774408600 - kind: conda @@ -8011,6 +8289,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT + purls: + - pkg:pypi/rpds-py size: 292859 timestamp: 1707923214688 - kind: conda @@ -8027,6 +8307,8 @@ packages: - python_abi 3.9.* *_cp39 license: MIT license_family: MIT + purls: + - pkg:pypi/rpds-py size: 915925 timestamp: 1707923007058 - kind: conda @@ -8044,6 +8326,8 @@ packages: - __osx >=10.12 license: MIT license_family: MIT + purls: + - pkg:pypi/rpds-py size: 300083 timestamp: 1707923366326 - kind: conda @@ -8062,6 +8346,8 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT + purls: + - pkg:pypi/rpds-py size: 202481 timestamp: 1707923894221 - kind: conda @@ -8177,6 +8463,8 @@ packages: - python >=3.8 license: MIT license_family: MIT + purls: + - pkg:pypi/setuptools size: 471183 timestamp: 1710344615844 - kind: conda @@ -8194,6 +8482,8 @@ packages: - python_abi 3.9.* *_cp39 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/shapely size: 449167 timestamp: 1708368412520 - kind: conda @@ -8214,6 +8504,8 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/shapely size: 450564 timestamp: 1708368463948 - kind: conda @@ -8232,6 +8524,8 @@ packages: - python_abi 3.9.* *_cp39 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/shapely size: 479182 timestamp: 1708368191201 - kind: conda @@ -8250,6 +8544,8 @@ packages: - python_abi 3.9.* *_cp39 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/shapely size: 446351 timestamp: 1708368614890 - kind: conda @@ -8270,6 +8566,8 @@ packages: - tomli license: GPL-3.0-only license_family: GPL + purls: + - pkg:pypi/sip size: 491742 timestamp: 1697300599649 - kind: conda @@ -8291,6 +8589,8 @@ packages: - vc14_runtime >=14.29.30139 license: GPL-3.0-only license_family: GPL + purls: + - pkg:pypi/sip size: 502390 timestamp: 1697300934198 - kind: conda @@ -8306,6 +8606,8 @@ packages: - python license: MIT license_family: MIT + purls: + - pkg:pypi/six size: 14259 timestamp: 1620240338595 - kind: conda @@ -8402,6 +8704,8 @@ packages: - python >=2.7 license: MIT license_family: MIT + purls: + - pkg:pypi/toml size: 18433 timestamp: 1604308660817 - kind: conda @@ -8417,6 +8721,8 @@ packages: - python >=3.7 license: MIT license_family: MIT + purls: + - pkg:pypi/tomli size: 15940 timestamp: 1644342331069 - kind: conda @@ -8433,6 +8739,8 @@ packages: - python_abi 3.9.* *_cp39 license: Apache-2.0 license_family: Apache + purls: + - pkg:pypi/tornado size: 641216 timestamp: 1708363746873 - kind: conda @@ -8448,6 +8756,8 @@ packages: - python_abi 3.9.* *_cp39 license: Apache-2.0 license_family: Apache + purls: + - pkg:pypi/tornado size: 641481 timestamp: 1708363543532 - kind: conda @@ -8466,6 +8776,8 @@ packages: - vc14_runtime >=14.29.30139 license: Apache-2.0 license_family: Apache + purls: + - pkg:pypi/tornado size: 644981 timestamp: 1708363806202 - kind: conda @@ -8482,6 +8794,8 @@ packages: - python_abi 3.9.* *_cp39 license: Apache-2.0 license_family: Apache + purls: + - pkg:pypi/tornado size: 639959 timestamp: 1708363320529 - kind: conda @@ -8497,6 +8811,8 @@ packages: - python >=3.8 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/traitlets size: 110288 timestamp: 1710254564088 - kind: conda @@ -8512,6 +8828,8 @@ packages: - python >=3.7 license: Apache-2.0 license_family: Apache + purls: + - pkg:pypi/trove-classifiers size: 18393 timestamp: 1711440195159 - kind: conda @@ -8527,6 +8845,8 @@ packages: - python >=3.8 license: PSF-2.0 license_family: PSF + purls: + - pkg:pypi/typing-extensions size: 37018 timestamp: 1708904796013 - kind: conda @@ -8569,6 +8889,8 @@ packages: - python_abi 3.9.* *_cp39 license: Apache-2.0 license_family: Apache + purls: + - pkg:pypi/unicodedata2 size: 376309 timestamp: 1695848358752 - kind: conda @@ -8587,6 +8909,8 @@ packages: - vc14_runtime >=14.29.30139 license: Apache-2.0 license_family: Apache + purls: + - pkg:pypi/unicodedata2 size: 373257 timestamp: 1695848310896 - kind: conda @@ -8603,6 +8927,8 @@ packages: - python_abi 3.9.* *_cp39 license: Apache-2.0 license_family: Apache + purls: + - pkg:pypi/unicodedata2 size: 373822 timestamp: 1695848128416 - kind: conda @@ -8618,6 +8944,8 @@ packages: - python_abi 3.9.* *_cp39 license: Apache-2.0 license_family: Apache + purls: + - pkg:pypi/unicodedata2 size: 369843 timestamp: 1695848310939 - kind: conda @@ -8635,6 +8963,8 @@ packages: - python >=3.7 license: MIT license_family: MIT + purls: + - pkg:pypi/urllib3 size: 94669 timestamp: 1708239595549 - kind: conda @@ -8700,6 +9030,8 @@ packages: - python >=3.8 license: MIT license_family: MIT + purls: + - pkg:pypi/wheel size: 57963 timestamp: 1711546009410 - kind: conda @@ -8716,6 +9048,8 @@ packages: - __win - python >=3.6 license: PUBLIC-DOMAIN + purls: + - pkg:pypi/win-inet-pton size: 8191 timestamp: 1667051294134 - kind: conda @@ -8830,6 +9164,8 @@ packages: - numpy - python >=3.8 license: CC0-1.0 + purls: + - pkg:pypi/xmipy size: 18460 timestamp: 1681486998644 - kind: conda @@ -9366,6 +9702,8 @@ packages: - python >=3.8 license: MIT license_family: MIT + purls: + - pkg:pypi/zipp size: 18954 timestamp: 1695255262261 - kind: conda diff --git a/pixi.toml b/pixi.toml index 88227d2033d..766b352a163 100644 --- a/pixi.toml +++ b/pixi.toml @@ -2,46 +2,7 @@ name = "modflow6" channels = ["conda-forge"] platforms = ["win-64", "linux-64", "osx-arm64", "osx-64"] - -[tasks] -# Install -install-flopy = "pip install --no-build-isolation --no-deps --disable-pip-version-check git+https://github.com/modflowpy/flopy.git" -install-pymake = "pip install --no-build-isolation --no-deps --disable-pip-version-check git+https://github.com/modflowpy/pymake.git" -install-modflowapi = "pip install --no-build-isolation --no-deps --disable-pip-version-check git+https://github.com/MODFLOW-USGS/modflowapi.git" -install-modflow-devtools = "pip install --no-build-isolation --no-deps --disable-pip-version-check git+https://github.com/MODFLOW-USGS/modflow-devtools.git" -install = { depends_on = [ - "install-flopy", - "install-pymake", - "install-modflowapi", - "install-modflow-devtools", -] } - -# Utils -fortran-format-check = "python .github/common/fortran_format_check.py" -msvs-vfproj-check = "python .github/common/msvs_vfproj_check.py" -update-flopy = { cmd = "python update_flopy.py", cwd = "autotest" } -update-version = { cmd = "python update_version.py", cwd = "distribution" } -update-doxyfile-version = { cmd = "python update_doxyfile_version.py", cwd = ".build_rtd_docs" } -get-exes = { cmd = "pytest -v --durations 0 get_exes.py", cwd = "autotest" } -build-makefiles = "python build_makefiles.py" -deprecations = { cmd = "python deprecations.py", cwd = "doc/mf6io/mf6ivar" } -benchmark = { cmd = "python benchmark.py", cwd = "distribution" } -mk-folder-struct = { cmd = "python mk_folder_struct.py", cwd = "doc/ReleaseNotes" } - -# CI -setup-strict = "meson setup -Ddebug=false -Dwerror=true" -setup-debug = "meson setup -Doptimization=0 --prefix=$(pwd) --libdir=bin" -setup-release = "meson setup -Ddebug=false --prefix=$(pwd) --libdir=bin" -setup-release-parallel = "meson setup -Ddebug=false -Dparallel=true --prefix=$(pwd) --libdir=bin" -compile-build = "meson compile -C" -install-build = "meson install -C" -test-build = "meson test --verbose --no-rebuild -C" -test-distribution = { cmd = "pytest -v --durations 0", cwd = "distribution" } -autotest = { cmd = "pytest -v -n auto --durations 0 --keep-failed .failed", cwd = "autotest" } -autotest-marker = { cmd = "pytest -v -n auto --durations 0 --keep-failed .failed -m", cwd = "autotest" } -autotest-parallel = { cmd = "pytest -v -n auto --parallel --durations 0 -k \"test_par\" --keep-failed .failed", cwd = "autotest" } -autotest-large = { cmd = "pytest -v -n auto --durations 0 test_largetestmodels.py --keep-failed .failed", cwd = "autotest" } -sphinx = { cmd = "make html", cwd = ".build_rtd_docs" } +version = "6.5.0.dev2" [dependencies] appdirs = "*" @@ -53,6 +14,7 @@ hatchling = "*" jupytext = "*" matplotlib = "*" meson = "1.3.0" +mfpymake = "*" networkx = "*" ninja = "*" numpy = "*" @@ -70,3 +32,32 @@ requests = "*" scipy = "*" shapely = "*" xmipy = "*" + +[pypi-dependencies] +flopy = { git = "https://github.com/modflowpy/flopy.git" } +modflowapi = { git = "https://github.com/MODFLOW-USGS/modflowapi.git" } +modflow-devtools = { git = "https://github.com/MODFLOW-USGS/modflow-devtools.git" } + +[tasks] +# format +fortran-format-check = "python .github/common/fortran_format_check.py" +msvs-vfproj-check = "python .github/common/msvs_vfproj_check.py" + +# build/test +setup = "meson setup --prefix=$(pwd) --libdir=bin" +build = "meson install -C" +test = "meson test --verbose --no-rebuild -C" +update-flopy = { cmd = "python update_flopy.py", cwd = "autotest" } +get-exes = { cmd = "pytest -v --durations 0 get_exes.py", cwd = "autotest" } +autotest = { cmd = "pytest -v -n auto --durations 0 --keep-failed .failed", cwd = "autotest" } + +# dist/docs +benchmark = { cmd = "python benchmark.py", cwd = "distribution" } +build-docs = { cmd = "python build_docs.py", cwd = "distribution" } +build-dist = { cmd = "python build_dist.py", cwd = "distribution" } +build-makefiles = { cmd = "python build_makefiles.py", cwd = "distribution" } +test-dist-scripts = { cmd = "pytest -v --durations 0", cwd = "distribution" } +update-version = { cmd = "python update_version.py", cwd = "distribution" } +mk-folder-struct = { cmd = "python mk_folder_struct.py", cwd = "doc/ReleaseNotes" } +deprecations = { cmd = "python deprecations.py", cwd = "doc/mf6io/mf6ivar" } +sphinx = { cmd = "make html", cwd = ".build_rtd_docs" } \ No newline at end of file