Skip to content

MODFLOW-USGS/modflow-devtools

Repository files navigation

MODFLOW developer tools

CI Documentation Status GitHub contributors GitHub tag

PyPI License PyPI Status PyPI Format PyPI Version PyPI Versions

Anaconda License Anaconda Version Anaconda Updated

Python development tools for MODFLOW 6.

Use cases

This is a small toolkit for developing MODFLOW 6, FloPy, and related projects. It includes standalone utilities and optional Pytest extensions.

Utilities include:

  • a minimal GitHub API client for retrieving release information and downloading assets
  • a ZipFile subclass that preserves file permissions (workaround for Python #15795)
  • other release/distribution-related tools

Pytest features include:

  • --keep <path> tempdir fixtures for each scope
  • a --smoke test (abbrev. -S) CLI option shortcut
  • markers to skip test cases conditional on
    • operating system
    • Python packages installed
    • executables available on the PATH
  • test fixtures for example / test models in
    • MODFLOW-USGS/modflow6-examples
    • MODFLOW-USGS/modflow6-testmodels
    • MODFLOW-USGS/modflow6-largetestmodels

Requirements

Python3.8+, dependency-free, but pairs well with pytest and select plugins, e.g.

Installation

modflow-devtools is available on PyPI and can be installed with pip:

pip install modflow-devtools

Pytest, pytest plugins, and other testing-related dependencies can be installed with:

pip install "modflow-devtools[test]"

To install from source and set up a development environment please see the developer documentation.

To import pytest fixtures in a project consuming modflow-devtools, add the following to a test file or conftest.py file:

pytest_plugins = [ "modflow_devtools.fixtures" ]

Note: this must be a top-level conftest.py, which nested conftest.py files may then override or extend.

Documentation

Docs are available at modflow-devtools.readthedocs.io.

For more info on MODFLOW 6 see the USGS overview.