1[tox]
2# We want an envlist like
3# envlist = {py36,py37,pypy3}-{test}-{deps,mindeps}-{,mpi4py}-{,pre},nightly,docs,checkreadme,pre-commit
4# but we want to skip mpi and pre by default, so this envlist is below
5envlist = {py37,py38,py39,py310,pypy3}-{test}-{deps,mindeps},nightly,docs,apidocs,checkreadme,pre-commit,rever
6isolated_build = True
7
8[testenv]
9deps =
10    test: pytest
11    test: pytest-cov
12    test: pytest-mpi>=0.2
13
14    py37-deps: numpy>=1.14.5
15    py38-deps: numpy>=1.17.5
16    py39-deps: numpy>=1.19.3
17    py310-deps: numpy>=1.21.3
18
19    mindeps: oldest-supported-numpy
20
21    mpi4py: mpi4py>=3.0.2
22
23    tables-deps: tables>=3.4.4
24    tables-mindeps: tables==3.4.4
25
26# see pytest.ini for additional common options to pytest
27commands =
28    test: python -c "import sys; print('64 bit?', sys.maxsize > 2**32)"
29    test: python {toxinidir}/ci/fix_paths.py
30    test: python -c "from h5py.version import info; print(info)"
31    test-!mpi4py: python -m pytest --pyargs h5py --cov=h5py -rxXs --cov-config={toxinidir}/.coveragerc {posargs}
32    test-mpi4py: mpirun -n {env:MPI_N_PROCS:2} {envpython} -m pytest --pyargs h5py -rxXs --with-mpi {posargs}
33changedir =
34    test: {toxworkdir}
35passenv =
36    H5PY_SYSTEM_LZF
37    H5PY_TEST_CHECK_FILTERS
38    HDF5_DIR
39    HDF5_VERSION
40    HDF5_INCLUDEDIR
41    HDF5_LIBDIR
42    HDF5_PKGCONFIG_NAME
43    HDF5_MPI
44    MPI_N_PROCS
45    OMPI_* # used to configure OpenMPI
46    CC
47    ZLIB_ROOT
48whitelist_externals =
49    mpirun
50setenv =
51    COVERAGE_FILE={toxinidir}/.coverage_dir/coverage-{envname}
52# needed otherwise coverage cannot find the file when reporting
53
54pip_pre =
55    pre: True
56
57[testenv:nightly]
58pip_pre = True
59basepython = python3.8
60
61[testenv:docs]
62skip_install=True
63changedir=docs
64deps=
65    sphinx
66commands=
67    sphinx-build -W -b html -d {envtmpdir}/doctrees .  {envtmpdir}/html
68
69[testenv:apidocs]
70changedir=docs_api
71deps=
72    sphinx
73commands=
74    sphinx-build -W -b html -d {envtmpdir}/doctrees .  _build/html
75
76[testenv:checkreadme]
77skip_install=True
78deps=twine
79commands=
80    python setup.py sdist
81    twine check dist/*
82
83[testenv:pre-commit]
84skip_install=True
85deps=pre-commit
86passenv = HOMEPATH SSH_AUTH_SOCK
87commands=
88    pre-commit run --all-files
89
90[testenv:rever]
91skip_install=True
92deps=
93    re-ver
94    xonsh
95    lazyasd
96    ruamel.yaml
97commands=
98    rever check --activities version_bump,changelog
99