Skip to content

Commit 32f4af4

Browse files
committed
distinguish bmipy package and bmi specification versions
1 parent 6dacc71 commit 32f4af4

7 files changed

Lines changed: 777 additions & 744 deletions

File tree

‎CHANGES.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
### Added
77

8+
* Add `bmipy.bmi2_0` with `Bmi` and `BMI_VERSION` for explicit BMI 2.0 imports,
9+
while preserving existing package-level and `bmipy.bmi` imports.
810
* Add a changelog ([#72](https://github.com/csdms/bmipy/pull/72))
911
* Add `--docstring` / `--no-docstring` CLI options ([#45](https://github.com/csdms/bmipy/pull/45))
1012
* Add `width` option for generated code formatting ([#46](https://github.com/csdms/bmipy/pull/46))

‎README.md‎

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,33 @@ Python bindings for the CSDMS [Basic Model Interface](https://bmi.readthedocs.io
55
![[Python][pypi-link]][python-badge]
66
![[DOI][doi-link]][doi-badge]
77
![[Build Status][build-link]][build-badge]
8-
![[PyPI][pypi-link]][pypi-badge]
9-
![[Build Status][anaconda-link]][anaconda-badge]
8+
[![bmipy package version][pypi-badge]][pypi-link]
9+
[![BMI specification version][bmi-badge]][bmi-link]
1010

11-
[anaconda-badge]: https://anaconda.org/conda-forge/bmipy/badges/version.svg
12-
[anaconda-link]: https://anaconda.org/conda-forge/bmipy
1311
[build-badge]: https://github.com/csdms/bmi-python/actions/workflows/test.yml/badge.svg
1412
[build-link]: https://github.com/csdms/bmi-python/actions/workflows/test.yml
1513
[doi-badge]: https://zenodo.org/badge/179283861.svg
1614
[doi-link]: https://zenodo.org/badge/latestdoi/179283861
17-
[pypi-badge]: https://badge.fury.io/py/bmipy.svg
15+
[bmi-badge]: https://img.shields.io/badge/BMI_specification-2.0-blue
16+
[bmi-link]: https://github.com/csdms/bmi/releases/tag/v2.0
17+
[pypi-badge]: https://img.shields.io/pypi/v/bmipy?label=bmipy
1818
[pypi-link]: https://pypi.org/project/bmipy/
1919
[python-badge]: https://img.shields.io/pypi/pyversions/bmipy.svg
2020

21+
## Package and specification versions
22+
23+
Note that a new *bmipy* release does not necessarily change the supported BMI
24+
specification. You can check the package version independently of the interface
25+
specification version:
26+
27+
```python
28+
from bmipy import __version__
29+
from bmipy.bmi2_0 import BMI_VERSION
30+
31+
print(__version__) # bmipy package version
32+
print(BMI_VERSION) # Supported BMI specification
33+
```
34+
2135
## Install
2236

2337
Install *bmipy* with *pip*,
@@ -42,7 +56,7 @@ pip install git+https://github.com/csdms/bmi-python.git
4256
## Usage
4357

4458
```python
45-
from bmipy import Bmi
59+
from bmipy.bmi2_0 import Bmi
4660

4761

4862
class MyBmi(Bmi):
@@ -51,6 +65,10 @@ class MyBmi(Bmi):
5165
# Your implementation goes here
5266
```
5367

68+
The `bmipy.bmi2_0` module explicitly selects the BMI 2.0 specification.
69+
The existing `from bmipy import Bmi` and `from bmipy.bmi import Bmi` imports
70+
remain available for compatibility.
71+
5472
A complete sample implementation is given in the
5573
<https://github.com/csdms/bmi-example-python>
5674
repository.

‎src/bmipy/__init__.py‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from bmipy._stub import BmiStub
66
from bmipy._version import __version__
7-
from bmipy.bmi import Bmi
7+
from bmipy.bmi2_0 import BMI_VERSION
8+
from bmipy.bmi2_0 import Bmi
89

9-
__all__ = ["__version__", "Bmi", "BmiStub"]
10+
__all__ = ["__version__", "BMI_VERSION", "Bmi", "BmiStub"]

‎src/bmipy/_stub.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from typing import TYPE_CHECKING
44
from typing import Any
55

6-
from bmipy.bmi import Bmi
6+
from bmipy.bmi2_0 import Bmi
77

88
if TYPE_CHECKING:
99
import numpy as np

‎src/bmipy/_template.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from collections import OrderedDict
88
from collections import defaultdict
99

10-
from bmipy.bmi import Bmi
10+
from bmipy.bmi2_0 import Bmi
1111

1212
GROUPS = (
1313
("initialize", "initialize"),
@@ -47,7 +47,7 @@ def render(self, with_docstring: bool = True) -> str:
4747
import numpy as np
4848
from numpy.typing import NDArray
4949
50-
from bmipy.bmi import Bmi
50+
from bmipy.bmi2_0 import Bmi
5151
5252
5353
class {self._name}(Bmi):

0 commit comments

Comments
 (0)