bmi-tester: Test Basic Model Interface implementations¶
The bmi-tester is a command-line utility and Python library for testing Basic Model Interface (BMI) implementations.
The bmi-tester requires Python 3. Additional dependencies can be found in the project’s requirements.txt file and can be installed using either pip or conda.
In addition to these requirements, the bmi-tester also requires the gimli.units package, which is a Python interface to the udunits2 C library, which is not available through pip but can be installed using conda.
If you are a developer of the bmi-tester you will also want to install additional dependencies for running the project’s tests to make sure that things are working as they should. These dependencies are listed in requirements-testing.txt and can all be install with either pip or conda.
To install, first create a new environment in which the project will be installed. This, although not necessary, will isolate the installation so that there won’t be conflicts with your base Python installation. This can be done with conda as,
$ conda create -n bmi-tester python=3 $ conda activate bmi-tester
The bmi-tester, and its dependencies, can most easily be installed with conda,
$ conda install bmi-tester -c conda-forge
After downloading the bmi-tester source code, run the following from the project’s top-level folder (the one that contains setup.py) to install into the current environment,
$ pip install -e .
You can access the bmi-tester from the command line with the bmi-test command. Use the –help option to get a brief description of the command line arguments,
$ bmi-test --help
The bmi-test command takes a single argument, the name of the entry point of the class that implements the BMI you would like to test. To demonstrate how this works, we will use the Hydrotrend model as an example. To install the Python BMI for Hydrotrend, use conda,
$ conda install pymt_hydrotrend -c conda-forge
Once installed, the following will test the BMI implementation for the Hydrotrend class,
$ bmi-test pymt_hydrotrend:Hydrotrend
The entry point is given as <model>:<class>. That is, in Python you would import the Hydrotrend class as,
>>> from pymt_hydrotrend import Hydrotrend