summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam J. Stewart <ajstewart426@gmail.com>2020-12-16 17:15:03 -0600
committerGitHub <noreply@github.com>2020-12-16 15:15:03 -0800
commit826cd07cf7bef7d610103516943b0ef73ab459ad (patch)
treebdde5bcf9c1ee4051c54c05f07dadb9088906fdf
parentcd496a20e97ab339c2f75093e098b3e2fde521a2 (diff)
downloadspack-826cd07cf7bef7d610103516943b0ef73ab459ad.tar.gz
spack-826cd07cf7bef7d610103516943b0ef73ab459ad.tar.bz2
spack-826cd07cf7bef7d610103516943b0ef73ab459ad.tar.xz
spack-826cd07cf7bef7d610103516943b0ef73ab459ad.zip
PythonPackage: add import module smoke tests (#20023)
-rw-r--r--lib/spack/docs/build_systems/pythonpackage.rst91
-rw-r--r--lib/spack/docs/build_systems/sippackage.rst31
-rw-r--r--lib/spack/spack/build_systems/python.py111
-rw-r--r--lib/spack/spack/build_systems/sip.py19
-rw-r--r--lib/spack/spack/package.py2
-rw-r--r--var/spack/repos/builtin/packages/aws-parallelcluster/package.py4
-rw-r--r--var/spack/repos/builtin/packages/gdal/package.py19
-rw-r--r--var/spack/repos/builtin/packages/mercurial/package.py7
-rw-r--r--var/spack/repos/builtin/packages/py-accimage/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-adb-enhanced/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-aenum/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-aiohttp-cors/package.py19
-rw-r--r--var/spack/repos/builtin/packages/py-alabaster/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-apipkg/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-appdirs/package.py10
-rw-r--r--var/spack/repos/builtin/packages/py-archspec/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-argon2-cffi/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-args/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-arrow/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-asteval/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-astor/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-astropy/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-atomicwrites/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-attrs/package.py10
-rw-r--r--var/spack/repos/builtin/packages/py-awesome-slugify/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-azure-cli-core/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-azure-cli-telemetry/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-azure-cli/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-babel/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-basis-set-exchange/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-black/package.py13
-rw-r--r--var/spack/repos/builtin/packages/py-blis/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-blosc/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-boto3/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-botocore/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-bottleneck/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-brian2/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-cairocffi/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-cartopy/package.py11
-rw-r--r--var/spack/repos/builtin/packages/py-certifi/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-cffi/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-chardet/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-cloudpickle/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-cmocean/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-codecov/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-counter/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-cvxopt/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-cvxpy/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-cython/package.py10
-rw-r--r--var/spack/repos/builtin/packages/py-dask/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-dateparser/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-deeptools/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-diskcache/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-docopt/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-docutils/package.py11
-rw-r--r--var/spack/repos/builtin/packages/py-dxchange/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-dxfile/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-easybuild-framework/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-ecdsa/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-ecos/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-edffile/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-elephant/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-entrypoints/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-filemagic/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-fiona/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-fiscalyear/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-fisher/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-freezegun/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-fsspec/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-funcsigs/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-future/package.py26
-rw-r--r--var/spack/repos/builtin/packages/py-gee-asset-manager/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-geeadd/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-geoalchemy2/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-geopandas/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-google-api-core/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-gpustat/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-graphviz/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-grequests/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-h5py/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-h5sh/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-hacking/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-horovod/package.py59
-rw-r--r--var/spack/repos/builtin/packages/py-htmlgen/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-humanize/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-hypothesis/package.py8
-rw-r--r--var/spack/repos/builtin/packages/py-imagesize/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-iminuit/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-importlib-metadata/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-intervaltree/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-ipykernel/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-ipython/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-ipywidgets/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-isort/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-jinja2/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-jmespath/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-jupyterlab-server/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-jupyterlab/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-kmodes/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-latexcodec/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-linecache2/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-locket/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-logilab-common/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-luigi/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-mako/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-markupsafe/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-matplotlib/package.py17
-rw-r--r--var/spack/repos/builtin/packages/py-mccabe/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-merlin/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-mock/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-more-itertools/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-msal-extensions/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-mypy/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-nose/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-numpy/package.py25
-rw-r--r--var/spack/repos/builtin/packages/py-oauthlib/package.py9
-rw-r--r--var/spack/repos/builtin/packages/py-olefile/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-openslide-python/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-opt-einsum/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-ordereddict/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-oset/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-overpy/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-packaging/package.py10
-rw-r--r--var/spack/repos/builtin/packages/py-pandas/package.py29
-rw-r--r--var/spack/repos/builtin/packages/py-parso/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-partd/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pathlib2/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-patsy/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pbr/package.py16
-rw-r--r--var/spack/repos/builtin/packages/py-pep8/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pillow/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-pkgconfig/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-pkginfo/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-planet/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-pluggy/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-preshed/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-projectq/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-prometheus-client/package.py12
-rw-r--r--var/spack/repos/builtin/packages/py-psutil/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-py/package.py9
-rw-r--r--var/spack/repos/builtin/packages/py-py2cairo/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-py4j/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-pyarrow/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-pybind11/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-pybtex-docutils/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pybtex/package.py12
-rw-r--r--var/spack/repos/builtin/packages/py-pycparser/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pycuda/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pydotplus/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-pygments/package.py9
-rw-r--r--var/spack/repos/builtin/packages/py-pyinstrument-cext/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-pyinstrument/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-pyjwt/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-pykml/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-pynn/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pyparsing/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pyprecice/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-pyproj/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-pyqt4/package.py7
-rw-r--r--var/spack/repos/builtin/packages/py-pyqt5/package.py8
-rw-r--r--var/spack/repos/builtin/packages/py-pysocks/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pytest-httpbin/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-pytest-isort/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-pytest-pep8/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pytest-runner/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pytest/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-python-dateutil/package.py14
-rw-r--r--var/spack/repos/builtin/packages/py-python-swiftclient/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-python-utils/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pytz/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pywavelets/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pyyaml/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pyzmq/package.py14
-rw-r--r--var/spack/repos/builtin/packages/py-qsymm/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-qtconsole/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-rasterio/package.py8
-rw-r--r--var/spack/repos/builtin/packages/py-readme-renderer/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-requests-mock/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-requests-oauthlib/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-requests/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-robotframework/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-rsa/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-s3transfer/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-scandir/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-scikit-learn/package.py19
-rw-r--r--var/spack/repos/builtin/packages/py-scikit-optimize/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-scipy/package.py31
-rw-r--r--var/spack/repos/builtin/packages/py-setuptools-scm/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-setuptools/package.py25
-rw-r--r--var/spack/repos/builtin/packages/py-shapely/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-six/package.py10
-rw-r--r--var/spack/repos/builtin/packages/py-snowballstemmer/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-spdlog/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-spefile/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-sphinx/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-sphinxcontrib-applehelp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-sphinxcontrib-devhelp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-sphinxcontrib-htmlhelp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-sphinxcontrib-jsmath/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-sphinxcontrib-qthelp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-sphinxcontrib-serializinghtml/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py10
-rw-r--r--var/spack/repos/builtin/packages/py-sqlalchemy/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-srsly/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-statsmodels/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-tables/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-tatsu/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-tensorflow/package.py14
-rw-r--r--var/spack/repos/builtin/packages/py-testrepository/package.py8
-rw-r--r--var/spack/repos/builtin/packages/py-theano/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-thinc/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-threadpoolctl/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-tifffile/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-tomopy/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-toolz/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-torch/package.py37
-rw-r--r--var/spack/repos/builtin/packages/py-torchvision/package.py7
-rw-r--r--var/spack/repos/builtin/packages/py-tpot/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-tqdm/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-traceback2/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-traitlets/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-typing/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-update-checker/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-urllib3/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-usgs/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-vermin/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-wand/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-wasabi/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-werkzeug/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-wheel/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-wub/package.py8
-rw-r--r--var/spack/repos/builtin/packages/py-wxmplot/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-wxpython/package.py12
-rw-r--r--var/spack/repos/builtin/packages/py-yahmm/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-zope-event/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-zope-interface/package.py7
-rw-r--r--var/spack/repos/builtin/packages/python/package.py21
241 files changed, 335 insertions, 1046 deletions
diff --git a/lib/spack/docs/build_systems/pythonpackage.rst b/lib/spack/docs/build_systems/pythonpackage.rst
index ef06725e01..de92595efa 100644
--- a/lib/spack/docs/build_systems/pythonpackage.rst
+++ b/lib/spack/docs/build_systems/pythonpackage.rst
@@ -90,7 +90,7 @@ Instead of using the ``PythonPackage`` base class, you should extend
the ``Package`` base class and implement the following custom installation
procedure:
-.. code-block::
+.. code-block:: python
def install(self, spec, prefix):
pip = which('pip')
@@ -255,7 +255,7 @@ Many packages are hosted on PyPI, but are developed on GitHub or another
version control systems. The tarball can be downloaded from either
location, but PyPI is preferred for the following reasons:
-#. PyPI contains the bare minimum of files to install the package.
+#. PyPI contains the bare minimum number of files needed to install the package.
You may notice that the tarball you download from PyPI does not
have the same checksum as the tarball you download from GitHub.
@@ -292,19 +292,6 @@ location, but PyPI is preferred for the following reasons:
PyPI is nice because it makes it physically impossible to
re-release the same version of a package with a different checksum.
-There are some reasons to prefer downloading from GitHub:
-
-#. The GitHub tarball may contain unit tests.
-
- As previously mentioned, the PyPI tarball contains the bare minimum
- of files to install the package. Unless explicitly specified by the
- developers, it will not contain development files like unit tests.
- If you desire to run the unit tests during installation, you should
- use the GitHub tarball instead.
-
-If you really want to run these unit tests, no one will stop you from
-submitting a PR for a new package that downloads from GitHub.
-
^^^^^^^^^^^^^^^^^^^^^^^^^
Build system dependencies
^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -569,7 +556,8 @@ If the package uses ``setuptools``, check for the following clues:
These are packages that are required to run the unit tests for the
package. These dependencies can be specified using the
- ``type='test'`` dependency type.
+ ``type='test'`` dependency type. However, the PyPI tarballs rarely
+ contain unit tests, so there is usually no reason to add these.
In the root directory of the package, you may notice a
``requirements.txt`` file. It may look like this file contains a list
@@ -625,7 +613,8 @@ add run-time dependencies if they aren't needed, so you need to
determine whether or not setuptools is needed. Grep the installation
directory for any files containing a reference to ``setuptools`` or
``pkg_resources``. Both modules come from ``py-setuptools``.
-``pkg_resources`` is particularly common in scripts in ``prefix/bin``.
+``pkg_resources`` is particularly common in scripts found in
+``prefix/bin``.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Passing arguments to setup.py
@@ -699,48 +688,64 @@ a "package" is a directory containing files like:
foo/baz.py
-whereas a "module" is a single Python file. Since ``find_packages``
-only returns packages, you'll have to determine the correct module
-names yourself. You can now add these packages and modules to the
-package like so:
+whereas a "module" is a single Python file.
+
+The ``PythonPackage`` base class automatically detects these module
+names for you. If, for whatever reason, the module names detected
+are wrong, you can provide the names yourself by overriding
+``import_modules`` like so:
.. code-block:: python
import_modules = ['six']
-When you run ``spack install --test=root py-six``, Spack will attempt
-to import the ``six`` module after installation.
+Sometimes the list of module names to import depends on how the
+package was built. For example, the ``py-pyyaml`` package has a
+``+libyaml`` variant that enables the build of a faster optimized
+version of the library. If the user chooses ``~libyaml``, only the
+``yaml`` library will be importable. If the user chooses ``+libyaml``,
+both the ``yaml`` and ``yaml.cyaml`` libraries will be available.
+This can be expressed like so:
+
+.. code-block:: python
+
+ @property
+ def import_modules(self):
+ modules = ['yaml']
+
+ if '+libyaml' in self.spec:
+ modules.append('yaml.cyaml')
-These tests most often catch missing dependencies and non-RPATHed
+ return modules
+
+
+These tests often catch missing dependencies and non-RPATHed
libraries. Make sure not to add modules/packages containing the word
-"test", as these likely won't end up in installation directory.
+"test", as these likely won't end up in the installation directory,
+or may require test dependencies like pytest to be installed.
+
+These tests can be triggered by running ``spack install --test=root``
+or by running ``spack test run`` after the installation has finished.
""""""""""
Unit tests
""""""""""
The package you want to install may come with additional unit tests.
-By default, Spack runs:
-
-.. code-block:: console
-
- $ python setup.py test
-
-
-if it detects that the ``setup.py`` file supports a ``test`` phase.
-You can add additional build-time or install-time tests by overriding
-``test`` or adding a custom install-time test function. For example,
-``py-numpy`` adds:
+You can add additional build-time or install-time tests by adding
+additional testing functions. For example, ``py-numpy`` adds:
.. code-block:: python
- install_time_test_callbacks = ['install_test', 'import_module_test']
-
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
def install_test(self):
- with working_dir('..'):
- python('-c', 'import numpy; numpy.test("full", verbose=2)')
+ with working_dir('spack-test', create=True):
+ python('-c', 'import numpy; numpy.test("full", verbose=2)')
+
+These tests can be triggered by running ``spack install --test=root``.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Setup file in a sub-directory
@@ -781,7 +786,7 @@ PythonPackage vs. packages that use Python
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There are many packages that make use of Python, but packages that depend
-on Python are not necessarily ``PythonPackages``.
+on Python are not necessarily ``PythonPackage``'s.
"""""""""""""""""""""""
Choosing a build system
@@ -878,8 +883,8 @@ and ``pip`` may be a perfectly valid alternative to using Spack. The
main advantage of Spack over ``pip`` is its ability to compile
non-Python dependencies. It can also build cythonized versions of a
package or link to an optimized BLAS/LAPACK library like MKL,
-resulting in calculations that run orders of magnitude faster.
-Spack does not offer a significant advantage to other python-management
+resulting in calculations that run orders of magnitudes faster.
+Spack does not offer a significant advantage over other python-management
systems for installing and using tools like flake8 and sphinx.
But if you need packages with non-Python dependencies like
numpy and scipy, Spack will be very valuable to you.
diff --git a/lib/spack/docs/build_systems/sippackage.rst b/lib/spack/docs/build_systems/sippackage.rst
index ddf9a26ab9..c636d856d2 100644
--- a/lib/spack/docs/build_systems/sippackage.rst
+++ b/lib/spack/docs/build_systems/sippackage.rst
@@ -93,10 +93,17 @@ in the site-packages directory:
$ python
>>> import setuptools
>>> setuptools.find_packages()
- ['QtPy5']
+ [
+ 'PyQt5', 'PyQt5.QtCore', 'PyQt5.QtGui', 'PyQt5.QtHelp',
+ 'PyQt5.QtMultimedia', 'PyQt5.QtMultimediaWidgets', 'PyQt5.QtNetwork',
+ 'PyQt5.QtOpenGL', 'PyQt5.QtPrintSupport', 'PyQt5.QtQml',
+ 'PyQt5.QtQuick', 'PyQt5.QtSvg', 'PyQt5.QtTest', 'PyQt5.QtWebChannel',
+ 'PyQt5.QtWebSockets', 'PyQt5.QtWidgets', 'PyQt5.QtXml',
+ 'PyQt5.QtXmlPatterns'
+ ]
-Large, complex packages like ``QtPy5`` will return a long list of
+Large, complex packages like ``py-pyqt5`` will return a long list of
packages, while other packages may return an empty list. These packages
only install a single ``foo.py`` file. In Python packaging lingo,
a "package" is a directory containing files like:
@@ -108,21 +115,25 @@ a "package" is a directory containing files like:
foo/baz.py
-whereas a "module" is a single Python file. Since ``find_packages``
-only returns packages, you'll have to determine the correct module
-names yourself. You can now add these packages and modules to the
-package like so:
+whereas a "module" is a single Python file.
+
+The ``SIPPackage`` base class automatically detects these module
+names for you. If, for whatever reason, the module names detected
+are wrong, you can provide the names yourself by overriding
+``import_modules`` like so:
.. code-block:: python
import_modules = ['PyQt5']
-When you run ``spack install --test=root py-pyqt5``, Spack will attempt
-to import the ``PyQt5`` module after installation.
+These tests often catch missing dependencies and non-RPATHed
+libraries. Make sure not to add modules/packages containing the word
+"test", as these likely won't end up in the installation directory,
+or may require test dependencies like pytest to be installed.
-These tests most often catch missing dependencies and non-RPATHed
-libraries.
+These tests can be triggered by running ``spack install --test=root``
+or by running ``spack test run`` after the installation has finished.
^^^^^^^^^^^^^^^^^^^^^^
External documentation
diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py
index 76159d88a1..87bc7e5135 100644
--- a/lib/spack/spack/build_systems/python.py
+++ b/lib/spack/spack/build_systems/python.py
@@ -10,8 +10,9 @@ from spack.directives import depends_on, extends
from spack.package import PackageBase, run_after
from llnl.util.filesystem import (working_dir, get_filetype, filter_file,
- path_contains_subdirectory, same_path)
+ path_contains_subdirectory, same_path, find)
from llnl.util.lang import match_predicate
+import llnl.util.tty as tty
class PythonPackage(PackageBase):
@@ -74,25 +75,12 @@ class PythonPackage(PackageBase):
# Default phases
phases = ['build', 'install']
- # Name of modules that the Python package provides
- # This is used to test whether or not the installation succeeded
- # These names generally come from running:
- #
- # >>> import setuptools
- # >>> setuptools.find_packages()
- #
- # in the source tarball directory
- import_modules = []
-
# To be used in UI queries that require to know which
# build-system class we are using
build_system_class = 'PythonPackage'
- #: Callback names for build-time test
- build_time_test_callbacks = ['build_test']
-
#: Callback names for install-time test
- install_time_test_callbacks = ['import_module_test']
+ install_time_test_callbacks = ['test']
extends('python')
@@ -100,6 +88,45 @@ class PythonPackage(PackageBase):
py_namespace = None
+ @property
+ def import_modules(self):
+ """Names of modules that the Python package provides.
+
+ These are used to test whether or not the installation succeeded.
+ These names generally come from running:
+
+ .. code-block:: python
+
+ >> import setuptools
+ >> setuptools.find_packages()
+
+ in the source tarball directory. If the module names are incorrectly
+ detected, this property can be overridden by the package.
+
+ Returns:
+ list: list of strings of module names
+ """
+ modules = []
+
+ # Python libraries may be installed in lib or lib64
+ # See issues #18520 and #17126
+ for lib in ['lib', 'lib64']:
+ root = os.path.join(self.prefix, lib, 'python{0}'.format(
+ self.spec['python'].version.up_to(2)), 'site-packages')
+ # Some Python libraries are packages: collections of modules
+ # distributed in directories containing __init__.py files
+ for path in find(root, '__init__.py', recursive=True):
+ modules.append(path.replace(root + os.sep, '', 1).replace(
+ os.sep + '__init__.py', '').replace('/', '.'))
+ # Some Python libraries are modules: individual *.py files
+ # found in the site-packages directory
+ for path in find(root, '*.py', recursive=False):
+ modules.append(path.replace(root + os.sep, '', 1).replace(
+ '.py', '').replace('/', '.'))
+
+ tty.debug('Detected the following modules: {0}'.format(modules))
+ return modules
+
def setup_file(self):
"""Returns the name of the setup file to use."""
return 'setup.py'
@@ -118,27 +145,6 @@ class PythonPackage(PackageBase):
with working_dir(self.build_directory):
self.python('-s', setup, '--no-user-cfg', *args, **kwargs)
- def _setup_command_available(self, command):
- """Determines whether or not a setup.py command exists.
-
- Args:
- command (str): The command to look for
-
- Returns:
- bool: True if the command is found, else False
- """
- kwargs = {
- 'output': os.devnull,
- 'error': os.devnull,
- 'fail_on_error': False
- }
-
- python = inspect.getmodule(self).python
- setup = self.setup_file()
-
- python('-s', setup, '--no-user-cfg', command, '--help', **kwargs)
- return python.returncode == 0
-
# The following phases and their descriptions come from:
# $ python setup.py --help-commands
@@ -359,33 +365,16 @@ class PythonPackage(PackageBase):
# Testing
- def build_test(self):
- """Run unit tests after in-place build.
-
- These tests are only run if the package actually has a 'test' command.
- """
- if self._setup_command_available('test'):
- args = self.test_args(self.spec, self.prefix)
-
- self.setup_py('test', *args)
-
- def test_args(self, spec, prefix):
- """Arguments to pass to test."""
- return []
-
- run_after('build')(PackageBase._run_default_build_time_test_callbacks)
-
- def import_module_test(self):
- """Attempts to import the module that was just installed.
-
- This test is only run if the package overrides
- :py:attr:`import_modules` with a list of module names."""
+ def test(self):
+ """Attempts to import modules of the installed package."""
# Make sure we are importing the installed modules,
- # not the ones in the current directory
- with working_dir('spack-test', create=True):
- for module in self.import_modules:
- self.python('-c', 'import {0}'.format(module))
+ # not the ones in the source directory
+ for module in self.import_modules:
+ self.run_test(inspect.getmodule(self).python.path,
+ ['-c', 'import {0}'.format(module)],
+ purpose='checking import of {0}'.format(module),
+ work_dir='spack-test')
run_after('install')(PackageBase._run_default_install_time_test_callbacks)
diff --git a/lib/spack/spack/build_systems/sip.py b/lib/spack/spack/build_systems/sip.py
index f814ef1837..e4c283881d 100644
--- a/lib/spack/spack/build_systems/sip.py
+++ b/lib/spack/spack/build_systems/sip.py
@@ -4,11 +4,12 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import inspect
+import os
from llnl.util.filesystem import working_dir, join_path
+from spack.build_systems.python import PythonPackage
from spack.directives import depends_on, extends
from spack.package import PackageBase, run_after
-import os
class SIPPackage(PackageBase):
@@ -36,13 +37,15 @@ class SIPPackage(PackageBase):
sip_module = 'sip'
#: Callback names for install-time test
- install_time_test_callbacks = ['import_module_test']
+ install_time_test_callbacks = ['test']
extends('python')
depends_on('qt')
depends_on('py-sip')
+ import_modules = PythonPackage.import_modules
+
def python(self, *args, **kwargs):
"""The python ``Executable``."""
inspect.getmodule(self).python(*args, **kwargs)
@@ -98,17 +101,7 @@ class SIPPackage(PackageBase):
# Testing
- def import_module_test(self):
- """Attempts to import the module that was just installed.
-
- This test is only run if the package overrides
- :py:attr:`import_modules` with a list of module names."""
-
- # Make sure we are importing the installed modules,
- # not the ones in the current directory
- with working_dir('spack-test', create=True):
- for module in self.import_modules:
- self.python('-c', 'import {0}'.format(module))
+ test = PythonPackage.test
run_after('install')(PackageBase._run_default_install_time_test_callbacks)
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index de394e2d45..531f4aadee 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -1761,7 +1761,7 @@ class PackageBase(six.with_metaclass(PackageMeta, PackageViewMixin, object)):
work_dir (str or None): path to the smoke test directory
"""
wdir = '.' if work_dir is None else work_dir
- with fsys.working_dir(wdir):
+ with fsys.working_dir(wdir, create=True):
try:
runner = which(exe)
if runner is None and skip_missing:
diff --git a/var/spack/repos/builtin/packages/aws-parallelcluster/package.py b/var/spack/repos/builtin/packages/aws-parallelcluster/package.py
index e970fee0e5..4f69548a45 100644
--- a/var/spack/repos/builtin/packages/aws-parallelcluster/package.py
+++ b/var/spack/repos/builtin/packages/aws-parallelcluster/package.py
@@ -18,10 +18,6 @@ class AwsParallelcluster(PythonPackage):
'sean-smith', 'demartinofra', 'enrico-usai', 'lukeseawalker', 'rexcsn',
'ddeidda', 'tilne'
]
- import_modules = [
- 'pcluster', 'awsbatch', 'pcluster.dcv', 'pcluster.configure',
- 'pcluster.config', 'pcluster.networking'
- ]
version('2.10.0', sha256='a7a27871b4f54cb913b0c1233e675131e9b2099549af0840d32c36b7e91b104b')
version('2.9.1', sha256='12dc22286cd447a16931f1f8619bdd47d4543fd0de7905d52b6c6f83ff9db8a3')
diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py
index a6f1dfd909..fc56128269 100644
--- a/var/spack/repos/builtin/packages/gdal/package.py
+++ b/var/spack/repos/builtin/packages/gdal/package.py
@@ -21,11 +21,6 @@ class Gdal(AutotoolsPackage):
maintainers = ['adamjstewart']
- import_modules = [
- 'osgeo', 'osgeo.gdal', 'osgeo.ogr', 'osgeo.osr',
- 'osgeo.gdal_array', 'osgeo.gdalconst'
- ]
-
version('3.2.0', sha256='b051f852600ffdf07e337a7f15673da23f9201a9dbb482bd513756a3e5a196a6')
version('3.1.4', sha256='7b82486f71c71cec61f9b237116212ce18ef6b90f068cbbf9f7de4fc50b576a8')
version('3.1.3', sha256='161cf55371a143826f1d76ce566db1f0a666496eeb4371aed78b1642f219d51d')
@@ -170,6 +165,8 @@ class Gdal(AutotoolsPackage):
executables = ['^gdal-config$']
+ import_modules = PythonPackage.import_modules
+
@classmethod
def determine_version(cls, exe):
return Executable(exe)('--version', output=str, error=str).rstrip()
@@ -554,15 +551,11 @@ class Gdal(AutotoolsPackage):
install('*.jar', prefix)
@run_after('install')
- @on_package_attributes(run_tests=True)
- def import_module_test(self):
- if '+python' in self.spec:
- with working_dir('spack-test', create=True):
- for module in self.import_modules:
- python('-c', 'import {0}'.format(module))
-
- @run_after('install')
def darwin_fix(self):
# The shared library is not installed correctly on Darwin; fix this
if 'platform=darwin' in self.spec:
fix_darwin_install_name(self.prefix.lib)
+
+ def test(self):
+ if '+python' in self.spec:
+ PythonPackage.test(self)
diff --git a/var/spack/repos/builtin/packages/mercurial/package.py b/var/spack/repos/builtin/packages/mercurial/package.py
index 620ef19bdb..84d8b9ebfd 100644
--- a/var/spack/repos/builtin/packages/mercurial/package.py
+++ b/var/spack/repos/builtin/packages/mercurial/package.py
@@ -13,13 +13,6 @@ class Mercurial(PythonPackage):
homepage = "https://www.mercurial-scm.org"
url = "https://www.mercurial-scm.org/release/mercurial-5.3.tar.gz"
- import_modules = [
- 'hgext', 'hgext3rd', 'mercurial', 'hgext.convert', 'hgext.fsmonitor',
- 'hgext.highlight', 'hgext.largefiles', 'hgext.zeroconf',
- 'hgext.fsmonitor.pywatchman', 'mercurial.hgweb',
- 'mercurial.httpclient', 'mercurial.pure'
- ]
-
version('5.3', sha256='e57ff61d6b67695149dd451922b40aa455ab02e01711806a131a1e95c544f9b9')
version('5.1.2', sha256='15af0b090b23649e0e53621a88dde97b55a734d7cb08b77d3df284db70d44e2e')
version('5.1.1', sha256='35fc8ba5e0379c1b3affa2757e83fb0509e8ac314cbd9f1fd133cf265d16e49f')
diff --git a/var/spack/repos/builtin/packages/py-accimage/package.py b/var/spack/repos/builtin/packages/py-accimage/package.py
index 3ef812704c..a22c3631ee 100644
--- a/var/spack/repos/builtin/packages/py-accimage/package.py
+++ b/var/spack/repos/builtin/packages/py-accimage/package.py
@@ -22,6 +22,8 @@ class PyAccimage(PythonPackage):
depends_on('py-numpy', type='test')
depends_on('py-imageio', type='test')
- def test(self):
+ @run_after('build')
+ @on_package_attributes(run_tests=True)
+ def build_test(self):
pytest = which('pytest')
pytest('test.py')
diff --git a/var/spack/repos/builtin/packages/py-adb-enhanced/package.py b/var/spack/repos/builtin/packages/py-adb-enhanced/package.py
index 92eff9a04a..f1e830e9c1 100644
--- a/var/spack/repos/builtin/packages/py-adb-enhanced/package.py
+++ b/var/spack/repos/builtin/packages/py-adb-enhanced/package.py
@@ -25,4 +25,3 @@ class PyAdbEnhanced(PythonPackage):
depends_on('py-future', type=('build', 'run'))
depends_on('py-psutil', type=('build', 'run'))
depends_on('py-asyncio', type=('build', 'run'))
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-aenum/package.py b/var/spack/repos/builtin/packages/py-aenum/package.py
index 3fa4c63a80..fb275c7891 100644
--- a/var/spack/repos/builtin/packages/py-aenum/package.py
+++ b/var/spack/repos/builtin/packages/py-aenum/package.py
@@ -13,8 +13,6 @@ class PyAenum(PythonPackage):
homepage = "https://bitbucket.org/stoneleaf/aenum"
url = "https://pypi.io/packages/source/a/aenum/aenum-2.1.2.tar.gz"
- import_modules = ['aenum']
-
version('2.1.2', sha256='a3208e4b28db3a7b232ff69b934aef2ea1bf27286d9978e1e597d46f490e4687')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-aiohttp-cors/package.py b/var/spack/repos/builtin/packages/py-aiohttp-cors/package.py
new file mode 100644
index 0000000000..8d4dd2f7d1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-aiohttp-cors/package.py
@@ -0,0 +1,19 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+
+class PyAiohttpCors(PythonPackage):
+ """aiohttp_cors library implements Cross Origin Resource Sharing (CORS)
+ support for aiohttp asyncio-powered asynchronous HTTP server."""
+
+ homepage = "https://github.com/aio-libs/aiohttp-cors"
+ url = "https://pypi.io/packages/source/a/aiohttp_cors/aiohttp-cors-0.7.0.tar.gz"
+
+ version('0.7.0', sha256='4d39c6d7100fd9764ed1caf8cebf0eb01bf5e3f24e2e073fda6234bc48b19f5d')
+
+ depends_on('python@3.4.1:', type=('build', 'run'))
+ depends_on('py-setuptools@20.8.1:', type='build')
+ depends_on('py-aiohttp@1.1:', type=('build', 'run'))
+ depends_on('py-typing', when='^python@:3.4', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-alabaster/package.py b/var/spack/repos/builtin/packages/py-alabaster/package.py
index 5d623519b7..65ed9f89b6 100644
--- a/var/spack/repos/builtin/packages/py-alabaster/package.py
+++ b/var/spack/repos/builtin/packages/py-alabaster/package.py
@@ -13,11 +13,8 @@ class PyAlabaster(PythonPackage):
homepage = "https://alabaster.readthedocs.io/"
url = "https://pypi.io/packages/source/a/alabaster/alabaster-0.7.10.tar.gz"
- import_modules = ['alabaster']
-
version('0.7.12', sha256='a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02')
version('0.7.10', sha256='37cdcb9e9954ed60912ebc1ca12a9d12178c26637abdf124e3cde2341c257fe0')
version('0.7.9', sha256='47afd43b08a4ecaa45e3496e139a193ce364571e7e10c6a87ca1a4c57eb7ea08')
depends_on('py-setuptools', type='build')
- depends_on('py-pygments', type='test')
diff --git a/var/spack/repos/builtin/packages/py-apipkg/package.py b/var/spack/repos/builtin/packages/py-apipkg/package.py
index 6799ad8f26..f5812df50d 100644
--- a/var/spack/repos/builtin/packages/py-apipkg/package.py
+++ b/var/spack/repos/builtin/packages/py-apipkg/package.py
@@ -18,5 +18,3 @@ class PyApipkg(PythonPackage):
depends_on('py-setuptools@30.3.0:', type='build')
depends_on('py-setuptools-scm', type='build')
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
- depends_on('py-py', type='test')
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-appdirs/package.py b/var/spack/repos/builtin/packages/py-appdirs/package.py
index 29b6c4f85b..87e3bba0e7 100644
--- a/var/spack/repos/builtin/packages/py-appdirs/package.py
+++ b/var/spack/repos/builtin/packages/py-appdirs/package.py
@@ -13,16 +13,8 @@ class PyAppdirs(PythonPackage):
homepage = "https://github.com/ActiveState/appdirs"
url = "https://pypi.io/packages/source/a/appdirs/appdirs-1.4.3.tar.gz"
- import_modules = ['appdirs']
-
version('1.4.3', sha256='9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92')
version('1.4.0', sha256='8fc245efb4387a4e3e0ac8ebcc704582df7d72ff6a42a53f5600bbb18fdaadc5')
patch('setuptools-import.patch', when='@:1.4.0')
-
- # Newer versions of setuptools require appdirs. Although setuptools is an
- # optional dependency of appdirs, if it is not found, setup.py will
- # fallback on distutils.core instead. Don't add a setuptools dependency
- # or we won't be able to bootstrap setuptools.
-
- # depends_on('py-setuptools', type='build')
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-archspec/package.py b/var/spack/repos/builtin/packages/py-archspec/package.py
index 54aaea8037..be8ffe331a 100644
--- a/var/spack/repos/builtin/packages/py-archspec/package.py
+++ b/var/spack/repos/builtin/packages/py-archspec/package.py
@@ -12,8 +12,6 @@ class PyArchspec(PythonPackage):
maintainers = ['alalazo']
- import_modules = ['archspec']
-
version('0.1.1', sha256='34bafad493b41208857232e21776216d716de37ab051a6a4a1cc1653f7e26423')
depends_on('python@2.7:2.8,3.5:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-argon2-cffi/package.py b/var/spack/repos/builtin/packages/py-argon2-cffi/package.py
index 954c86331c..e799949e13 100644
--- a/var/spack/repos/builtin/packages/py-argon2-cffi/package.py
+++ b/var/spack/repos/builtin/packages/py-argon2-cffi/package.py
@@ -16,6 +16,3 @@ class PyArgon2Cffi(PythonPackage):
depends_on('py-cffi@1.0.0:', type=('build', 'run'))
depends_on('py-six', type=('build', 'run'))
depends_on('py-enum34', when='^python@:3.3', type=('build', 'run'))
- depends_on('py-coverage@5.0.2:+toml', type='test')
- depends_on('py-hypothesis', type='test')
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-args/package.py b/var/spack/repos/builtin/packages/py-args/package.py
index 08364481e8..d425a06e24 100644
--- a/var/spack/repos/builtin/packages/py-args/package.py
+++ b/var/spack/repos/builtin/packages/py-args/package.py
@@ -15,4 +15,3 @@ class PyArgs(PythonPackage):
version('0.1.0', sha256='a785b8d837625e9b61c39108532d95b85274acd679693b71ebb5156848fcf814')
depends_on('py-setuptools', type='build')
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-arrow/package.py b/var/spack/repos/builtin/packages/py-arrow/package.py
index 32a9885f8f..cfc62140c5 100644
--- a/var/spack/repos/builtin/packages/py-arrow/package.py
+++ b/var/spack/repos/builtin/packages/py-arrow/package.py
@@ -25,6 +25,3 @@ class PyArrow(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-backports-functools-lru-cache@1.2.1:', type=('build', 'run'), when='^python@2.7:2.8')
depends_on('py-python-dateutil', type=('build', 'run'))
- depends_on('py-chai', type='test')
- depends_on('py-mock', type='test')
- depends_on('py-pytz@2019.0:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-asteval/package.py b/var/spack/repos/builtin/packages/py-asteval/package.py
index 4f80a22789..7392c3d296 100644
--- a/var/spack/repos/builtin/packages/py-asteval/package.py
+++ b/var/spack/repos/builtin/packages/py-asteval/package.py
@@ -16,4 +16,3 @@ class PyAsteval(PythonPackage):
depends_on('python@3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-astor/package.py b/var/spack/repos/builtin/packages/py-astor/package.py
index 38c77c5196..97ecb71956 100644
--- a/var/spack/repos/builtin/packages/py-astor/package.py
+++ b/var/spack/repos/builtin/packages/py-astor/package.py
@@ -18,8 +18,6 @@ class PyAstor(PythonPackage):
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
- depends_on('py-nose', type='test')
- depends_on('py-astunparse', type='test')
# Build fails with newer versions of setuptools
# https://github.com/berkerpeksag/astor/issues/162
diff --git a/var/spack/repos/builtin/packages/py-astropy/package.py b/var/spack/repos/builtin/packages/py-astropy/package.py
index 6e5dc8282b..38501cf3e0 100644
--- a/var/spack/repos/builtin/packages/py-astropy/package.py
+++ b/var/spack/repos/builtin/packages/py-astropy/package.py
@@ -15,8 +15,6 @@ class PyAstropy(PythonPackage):
homepage = 'https://astropy.org/'
url = 'https://pypi.io/packages/source/a/astropy/astropy-4.0.1.post1.tar.gz'
- install_time_test_callbacks = ['install_test', 'import_module_test']
-
version('4.0.1.post1', sha256='5c304a6c1845ca426e7bc319412b0363fccb4928cb4ba59298acd1918eec44b5')
version('3.2.1', sha256='706c0457789c78285e5464a5a336f5f0b058d646d60f4e5f5ba1f7d5bf424b28')
version('2.0.14', sha256='618807068609a4d8aeb403a07624e9984f566adc0dc0f5d6b477c3658f31aeb6')
@@ -87,6 +85,8 @@ class PyAstropy(PythonPackage):
return args
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
def install_test(self):
with working_dir('spack-test', create=True):
python('-c', 'import astropy; astropy.test()')
diff --git a/var/spack/repos/builtin/packages/py-atomicwrites/package.py b/var/spack/repos/builtin/packages/py-atomicwrites/package.py
index de8ec7788b..7ef16004c3 100644
--- a/var/spack/repos/builtin/packages/py-atomicwrites/package.py
+++ b/var/spack/repos/builtin/packages/py-atomicwrites/package.py
@@ -12,8 +12,6 @@ class PyAtomicwrites(PythonPackage):
homepage = "https://github.com/untitaker/python-atomicwrites"
url = "https://pypi.io/packages/source/a/atomicwrites/atomicwrites-1.3.0.tar.gz"
- import_modules = ['atomicwrites']
-
version('1.3.0', sha256='75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6')
version('1.1.5', sha256='240831ea22da9ab882b551b31d4225591e5e447a68c5e188db5b89ca1d487585')
diff --git a/var/spack/repos/builtin/packages/py-attrs/package.py b/var/spack/repos/builtin/packages/py-attrs/package.py
index cdb3d490c5..6a17ec7fc6 100644
--- a/var/spack/repos/builtin/packages/py-attrs/package.py
+++ b/var/spack/repos/builtin/packages/py-attrs/package.py
@@ -12,8 +12,6 @@ class PyAttrs(PythonPackage):
homepage = "http://attrs.org/"
url = "https://pypi.io/packages/source/a/attrs/attrs-20.3.0.tar.gz"
- import_modules = ['attr']
-
version('20.3.0', sha256='832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700')
version('20.2.0', sha256='26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594')
version('20.1.0', sha256='0ef97238856430dcf9228e07f316aefc17e8939fc8507e18c6501b761ef1a42a')
@@ -25,11 +23,3 @@ class PyAttrs(PythonPackage):
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- depends_on('py-coverage', type='test')
- depends_on('py-hypothesis', type='test')
- depends_on('py-pympler', type='test')
- depends_on('py-pytest', type='test')
- depends_on('py-pytest@4.3.0:', type='test', when='@19.3.0:')
- depends_on('py-six', type='test')
- depends_on('py-zope-interface', type='test')
diff --git a/var/spack/repos/builtin/packages/py-awesome-slugify/package.py b/var/spack/repos/builtin/packages/py-awesome-slugify/package.py
index 2d8ac680e4..5348236a0f 100644
--- a/var/spack/repos/builtin/packages/py-awesome-slugify/package.py
+++ b/var/spack/repos/builtin/packages/py-awesome-slugify/package.py
@@ -18,4 +18,3 @@ class PyAwesomeSlugify(PythonPackage):
depends_on('py-regex', type=('build', 'run'))
depends_on('py-unidecode@0.04.14:0.04.99', type=('build', 'run'))
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-azure-cli-core/package.py b/var/spack/repos/builtin/packages/py-azure-cli-core/package.py
index 07e520c530..adaeb282e1 100644
--- a/var/spack/repos/builtin/packages/py-azure-cli-core/package.py
+++ b/var/spack/repos/builtin/packages/py-azure-cli-core/package.py
@@ -36,4 +36,3 @@ class PyAzureCliCore(PythonPackage):
depends_on('py-ndg-httpsclient', when='^python@:2.7.8', type=('build', 'run'))
depends_on('py-pyasn1', when='^python@:2.7.8', type=('build', 'run'))
depends_on('py-futures', when='^python@:2', type=('build', 'run'))
- depends_on('py-mock', type='test')
diff --git a/var/spack/repos/builtin/packages/py-azure-cli-telemetry/package.py b/var/spack/repos/builtin/packages/py-azure-cli-telemetry/package.py
index bb379686be..18f8cb5591 100644
--- a/var/spack/repos/builtin/packages/py-azure-cli-telemetry/package.py
+++ b/var/spack/repos/builtin/packages/py-azure-cli-telemetry/package.py
@@ -15,4 +15,3 @@ class PyAzureCliTelemetry(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-applicationinsights@0.11.1:0.11.999', type=('build', 'run'))
depends_on('py-portalocker@1.2:1.999', type=('build', 'run'))
- depends_on('py-mock', type='test')
diff --git a/var/spack/repos/builtin/packages/py-azure-cli/package.py b/var/spack/repos/builtin/packages/py-azure-cli/package.py
index faa09d1cfd..44017651e7 100644
--- a/var/spack/repos/builtin/packages/py-azure-cli/package.py
+++ b/var/spack/repos/builtin/packages/py-azure-cli/package.py
@@ -99,4 +99,3 @@ class PyAzureCli(PythonPackage):
depends_on('py-xmltodict@0.12:0.999', type=('build', 'run'))
depends_on('py-javaproperties@0.5.1', type=('build', 'run'))
depends_on('py-jsondiff@1.2.0', type=('build', 'run'))
- depends_on('py-mock@4.0:4.999', type='test')
diff --git a/var/spack/repos/builtin/packages/py-babel/package.py b/var/spack/repos/builtin/packages/py-babel/package.py
index f95746fe8f..13bf99a07b 100644
--- a/var/spack/repos/builtin/packages/py-babel/package.py
+++ b/var/spack/repos/builtin/packages/py-babel/package.py
@@ -14,8 +14,6 @@ class PyBabel(PythonPackage):
homepage = "http://babel.pocoo.org/en/latest/"
url = "https://pypi.io/packages/source/B/Babel/Babel-2.7.0.tar.gz"
- import_modules = ['babel', 'babel.localtime', 'babel.messages']
-
version('2.7.0', sha256='e86135ae101e31e2c8ec20a4e0c5220f4eed12487d5cf3f78be7e98d3a57fc28')
version('2.6.0', sha256='8cba50f48c529ca3fa18cf81fa9403be176d374ac4d60738b839122dfaaa3d23')
version('2.4.0', sha256='8c98f5e5f8f5f088571f2c6bd88d530e331cbbcb95a7311a0db69d3dca7ec563')
@@ -24,5 +22,3 @@ class PyBabel(PythonPackage):
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type=('build', 'run'))
depends_on('py-pytz@2015.7:', type=('build', 'run'))
- depends_on('py-pytest', type='test')
- depends_on('py-freezegun', type='test')
diff --git a/var/spack/repos/builtin/packages/py-basis-set-exchange/package.py b/var/spack/repos/builtin/packages/py-basis-set-exchange/package.py
index 92cd2b6d72..03bc8b99ca 100644
--- a/var/spack/repos/builtin/packages/py-basis-set-exchange/package.py
+++ b/var/spack/repos/builtin/packages/py-basis-set-exchange/package.py
@@ -29,5 +29,3 @@ class PyBasisSetExchange(PythonPackage):
depends_on('py-jsonschema', type=('build', 'run'))
depends_on('py-setuptools', type='build')
depends_on('python@3:', type=('build', 'run'))
- depends_on('py-pytest@4.0:', type='test')
- depends_on('py-pytest-cov', type='test')
diff --git a/var/spack/repos/builtin/packages/py-black/package.py b/var/spack/repos/builtin/packages/py-black/package.py
index 913b2592c8..52f1867867 100644
--- a/var/spack/repos/builtin/packages/py-black/package.py
+++ b/var/spack/repos/builtin/packages/py-black/package.py
@@ -18,6 +18,8 @@ class PyBlack(PythonPackage):
version('19.3b0', sha256='68950ffd4d9169716bcb8719a56c07a2f4485354fec061cdd5910aa07369731c')
version('18.9b0', sha256='e030a9a28f542debc08acceb273f228ac422798e5215ba2a791a6ddeaaca22a5')
+ variant('d', default=False, description='enable blackd HTTP server')
+
depends_on('python@3.6.0:')
# Needs setuptools at runtime so that `import pkg_resources` succeeds
# See #8843 and #8689 for examples of setuptools added as a runtime dep
@@ -28,3 +30,14 @@ class PyBlack(PythonPackage):
depends_on('py-click@6.5:', type=('build', 'run'))
depends_on('py-appdirs', type=('build', 'run'))
depends_on('py-toml@0.9.4:', type=('build', 'run'))
+ depends_on('py-aiohttp@3.3.2:', when='+d', type=('build', 'run'))
+ depends_on('py-aiohttp-cors', when='+d', type=('build', 'run'))
+
+ @property
+ def import_modules(self):
+ modules = ['blib2to3', 'blib2to3.pgen2', 'black']
+
+ if '+d' in self.spec:
+ modules.append('blackd')
+
+ return modules
diff --git a/var/spack/repos/builtin/packages/py-blis/package.py b/var/spack/repos/builtin/packages/py-blis/package.py
index ce7f6c4c65..74ea43690b 100644
--- a/var/spack/repos/builtin/packages/py-blis/package.py
+++ b/var/spack/repos/builtin/packages/py-blis/package.py
@@ -15,4 +15,3 @@ class PyBlis(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-numpy@1.15:', type=('build', 'run'))
- depends_on('py-hypothesis', type='test')
diff --git a/var/spack/repos/builtin/packages/py-blosc/package.py b/var/spack/repos/builtin/packages/py-blosc/package.py
index da185302ff..8e6badf99f 100644
--- a/var/spack/repos/builtin/packages/py-blosc/package.py
+++ b/var/spack/repos/builtin/packages/py-blosc/package.py
@@ -19,5 +19,3 @@ class PyBlosc(PythonPackage):
depends_on('python@3.6:', type=('build', 'run'))
depends_on('py-scikit-build', type='build')
# depends_on('c-blosc') # shipped internally
- depends_on('py-numpy', type='test')
- depends_on('py-psutil', type='test')
diff --git a/var/spack/repos/builtin/packages/py-boto3/package.py b/var/spack/repos/builtin/packages/py-boto3/package.py
index e31d3b8110..0daa62be81 100644
--- a/var/spack/repos/builtin/packages/py-boto3/package.py
+++ b/var/spack/repos/builtin/packages/py-boto3/package.py
@@ -12,11 +12,6 @@ class PyBoto3(PythonPackage):
homepage = "https://github.com/boto/boto3"
url = "https://pypi.io/packages/source/b/boto3/boto3-1.10.44.tar.gz"
- import_modules = [
- 'boto3', 'boto3.s3', 'boto3.resources', 'boto3.dynamodb',
- 'boto3.docs', 'boto3.ec2'
- ]
-
version('1.10.44', sha256='adc0c0269bd65967fd528d7cd826304f381d40d94f2bf2b09f58167e5ac05d86')
version('1.10.38', sha256='6cdb063b2ae5ac7b93ded6b6b17e3da1325b32232d5ff56e6800018d4786bba6')
version('1.9.169', sha256='9d8bd0ca309b01265793b7e8d7b88c1df439737d77c8725988f0277bbf58d169')
diff --git a/var/spack/repos/builtin/packages/py-botocore/package.py b/var/spack/repos/builtin/packages/py-botocore/package.py
index 7b05bf0c72..fe0f738a34 100644
--- a/var/spack/repos/builtin/packages/py-botocore/package.py
+++ b/var/spack/repos/builtin/packages/py-botocore/package.py
@@ -12,8 +12,6 @@ class PyBotocore(PythonPackage):
homepage = "https://github.com/boto/botocore"
url = "https://pypi.io/packages/source/b/botocore/botocore-1.13.44.tar.gz"
- import_modules = ['botocore']
-
version('1.13.44', sha256='a4409008c32a3305b9c469c5cc92edb5b79d6fcbf6f56fe126886b545f0a4f3f')
version('1.13.38', sha256='15766a367f39dba9de3c6296aaa7da31030f08a0117fd12685e7df682d8acee2')
version('1.12.169', sha256='25b44c3253b5ed1c9093efb57ffca440c5099a2d62fa793e8b6c52e72f54b01e')
@@ -28,5 +26,3 @@ class PyBotocore(PythonPackage):
depends_on('py-urllib3@1.20:1.25', type=('build', 'run'))
depends_on('py-urllib3@1.20:1.23', type=('build', 'run'), when='^python@2.6.0:2.6.999')
depends_on('py-urllib3@1.20:1.22', type=('build', 'run'), when='^python@3.3.0:3.3.999')
- depends_on('py-mock', type='test')
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-bottleneck/package.py b/var/spack/repos/builtin/packages/py-bottleneck/package.py
index 8870b3197c..9bd5adb5f5 100644
--- a/var/spack/repos/builtin/packages/py-bottleneck/package.py
+++ b/var/spack/repos/builtin/packages/py-bottleneck/package.py
@@ -16,4 +16,3 @@ class PyBottleneck(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-numpy', type=('build', 'run'))
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-brian2/package.py b/var/spack/repos/builtin/packages/py-brian2/package.py
index 0e7a7bf31d..849ffca005 100644
--- a/var/spack/repos/builtin/packages/py-brian2/package.py
+++ b/var/spack/repos/builtin/packages/py-brian2/package.py
@@ -26,7 +26,6 @@ class PyBrian2(PythonPackage):
depends_on('py-jinja2@2.7:', type=('build', 'run'))
depends_on('py-setuptools@21:', type=('build', 'run'))
depends_on('py-sphinx@1.5:', type=('build', 'run'), when='+docs')
- depends_on('py-nose@1.0:', type='test')
def build_args(self, spec, prefix):
return ['--with-cython']
diff --git a/var/spack/repos/builtin/packages/py-cairocffi/package.py b/var/spack/repos/builtin/packages/py-cairocffi/package.py
index d4cf1ca37c..1fd2a95fbb 100644
--- a/var/spack/repos/builtin/packages/py-cairocffi/package.py
+++ b/var/spack/repos/builtin/packages/py-cairocffi/package.py
@@ -14,14 +14,9 @@ class PyCairocffi(PythonPackage):
homepage = "https://github.com/Kozea/cairocffi"
url = "https://pypi.io/packages/source/c/cairocffi/cairocffi-1.0.2.tar.gz"
- import_modules = ['cairocffi']
version('1.0.2', sha256='01ac51ae12c4324ca5809ce270f9dd1b67f5166fe63bd3e497e9ea3ca91946ff')
depends_on('python@3.5:', type=('build', 'run'))
depends_on('py-setuptools@39.2.0:', type='build')
depends_on('py-cffi@1.1.0:', type=('build', 'run'))
- depends_on('py-pytest-runner', type='test')
- depends_on('py-pytest-cov', type='test')
- depends_on('py-pytest-flake8', type='test')
- depends_on('py-pytest-isort', type='test')
diff --git a/var/spack/repos/builtin/packages/py-cartopy/package.py b/var/spack/repos/builtin/packages/py-cartopy/package.py
index 1d19b4da2d..8eebd1fb2b 100644
--- a/var/spack/repos/builtin/packages/py-cartopy/package.py
+++ b/var/spack/repos/builtin/packages/py-cartopy/package.py
@@ -13,10 +13,6 @@ class PyCartopy(PythonPackage):
url = "https://github.com/SciTools/cartopy/archive/v0.18.0.tar.gz"
maintainers = ['adamjstewart']
- import_modules = [
- 'cartopy', 'cartopy.sphinxext', 'cartopy.io', 'cartopy.geodesic',
- 'cartopy.examples', 'cartopy.mpl', 'cartopy.feature',
- ]
version('0.18.0', sha256='493ced4698361ffabec1a213d2b711dc836117242c304f3b93f5406182fd8bc2')
version('0.17.0', sha256='137642e63952404ec0841fa0333ad14c58fbbf19cca2a5ac6a38498c4b4998fb')
@@ -48,11 +44,6 @@ class PyCartopy(PythonPackage):
depends_on('pil@1.7.8:', type=('build', 'run'), when='+plotting')
depends_on('py-scipy@0.10:', type=('build', 'run'), when='+plotting')
- # Testing dependencies
- depends_on('py-filelock', type='test')
- depends_on('py-mock@1.0.1:', type='test')
- depends_on('py-pytest@3.0.0:', type='test')
-
patch('proj6.patch', when='@0.17.0')
phases = ['build_ext', 'install']
@@ -74,8 +65,6 @@ class PyCartopy(PythonPackage):
return args
# Tests need to be re-added since `phases` was overridden
- run_after('build_ext')(
- PythonPackage._run_default_build_time_test_callbacks)
run_after('install')(
PythonPackage._run_default_install_time_test_callbacks)
run_after('install')(PythonPackage.sanity_check_prefix)
diff --git a/var/spack/repos/builtin/packages/py-certifi/package.py b/var/spack/repos/builtin/packages/py-certifi/package.py
index 033ac47a88..78c70cff3f 100644
--- a/var/spack/repos/builtin/packages/py-certifi/package.py
+++ b/var/spack/repos/builtin/packages/py-certifi/package.py
@@ -14,8 +14,6 @@ class PyCertifi(PythonPackage):
homepage = "http://certifi.io/"
url = "https://pypi.io/packages/source/c/certifi/certifi-2020.6.20.tar.gz"
- import_modules = ['certifi']
-
version('2020.6.20', sha256='5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3')
version('2019.9.11', sha256='e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50')
version('2019.6.16', sha256='945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695')
diff --git a/var/spack/repos/builtin/packages/py-cffi/package.py b/var/spack/repos/builtin/packages/py-cffi/package.py
index f333c73ffa..74168d93ab 100644
--- a/var/spack/repos/builtin/packages/py-cffi/package.py
+++ b/var/spack/repos/builtin/packages/py-cffi/package.py
@@ -13,8 +13,6 @@ class PyCffi(PythonPackage):
homepage = "https://cffi.readthedocs.io/en/latest/"
url = "https://pypi.io/packages/source/c/cffi/cffi-1.13.0.tar.gz"
- import_modules = ['cffi']
-
version('1.14.3', sha256='f92f789e4f9241cd262ad7a555ca2c648a98178a953af117ef7fad46aa1d5591')
version('1.13.0', sha256='8fe230f612c18af1df6f348d02d682fe2c28ca0a6c3856c99599cdacae7cf226')
version('1.12.2', sha256='e113878a446c6228669144ae8a56e268c91b7f1fafae927adc4879d9849e0ea7')
@@ -27,8 +25,6 @@ class PyCffi(PythonPackage):
depends_on('py-pycparser', type=('build', 'run'))
depends_on('py-pycparser@2.19:', when='^python@:2.6', type=('build', 'run'))
depends_on('libffi')
- depends_on('py-py', type='test')
- depends_on('py-pytest', type='test')
def setup_build_environment(self, env):
# This sets the compiler (and flags) that distutils will use
diff --git a/var/spack/repos/builtin/packages/py-chardet/package.py b/var/spack/repos/builtin/packages/py-chardet/package.py
index 8cd829597d..ba24e728d7 100644
--- a/var/spack/repos/builtin/packages/py-chardet/package.py
+++ b/var/spack/repos/builtin/packages/py-chardet/package.py
@@ -18,5 +18,3 @@ class PyChardet(PythonPackage):
depends_on('py-setuptools', type=('build', 'run'))
depends_on('py-pytest-runner', type='build')
- depends_on('py-pytest', type='test')
- depends_on('py-hypothesis', type='test')
diff --git a/var/spack/repos/builtin/packages/py-cloudpickle/package.py b/var/spack/repos/builtin/packages/py-cloudpickle/package.py
index 0f7e525290..6d55d6c8f1 100644
--- a/var/spack/repos/builtin/packages/py-cloudpickle/package.py
+++ b/var/spack/repos/builtin/packages/py-cloudpickle/package.py
@@ -12,13 +12,7 @@ class PyCloudpickle(PythonPackage):
homepage = "https://github.com/cloudpipe/cloudpickle"
url = "https://pypi.io/packages/source/c/cloudpickle/cloudpickle-0.5.2.tar.gz"
- import_modules = ['cloudpickle']
-
version('1.2.1', sha256='603244e0f552b72a267d47a7d9b347b27a3430f58a0536037a290e7e0e212ecf')
version('0.5.2', sha256='b0e63dd89ed5285171a570186751bc9b84493675e99e12789e9a5dc5490ef554')
depends_on('py-setuptools', type='build')
-
- def build_test(self):
- # PyPI tarball does not come with unit tests
- pass
diff --git a/var/spack/repos/builtin/packages/py-cmocean/package.py b/var/spack/repos/builtin/packages/py-cmocean/package.py
index aca64870cc..6094fb381f 100644
--- a/var/spack/repos/builtin/packages/py-cmocean/package.py
+++ b/var/spack/repos/builtin/packages/py-cmocean/package.py
@@ -15,4 +15,3 @@ class PyCmocean(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-matplotlib', type=('build', 'run'))
depends_on('py-numpy', type=('build', 'run'))
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-codecov/package.py b/var/spack/repos/builtin/packages/py-codecov/package.py
index afced5c19b..73510ac184 100644
--- a/var/spack/repos/builtin/packages/py-codecov/package.py
+++ b/var/spack/repos/builtin/packages/py-codecov/package.py
@@ -12,13 +12,9 @@ class PyCodecov(PythonPackage):
homepage = "https://github.com/codecov/codecov-python"
url = "https://pypi.io/packages/source/c/codecov/codecov-2.0.15.tar.gz"
- import_modules = ['codecov']
-
version('2.0.15', sha256='8ed8b7c6791010d359baed66f84f061bba5bd41174bf324c31311e8737602788')
depends_on('py-setuptools', type=('build', 'run'))
depends_on('py-requests@2.7.9:', type=('build', 'run'))
depends_on('py-coverage', type=('build', 'run'))
depends_on('py-argparse', when='^python@:2.6', type=('build', 'run'))
- depends_on('py-unittest2', type='test')
- depends_on('py-linecache2', type='test')
diff --git a/var/spack/repos/builtin/packages/py-counter/package.py b/var/spack/repos/builtin/packages/py-counter/package.py
index f751818caa..7f0e7ffe91 100644
--- a/var/spack/repos/builtin/packages/py-counter/package.py
+++ b/var/spack/repos/builtin/packages/py-counter/package.py
@@ -10,8 +10,6 @@ class PyCounter(PythonPackage):
"""Counter package defines the "counter.Counter" class similar to
bags or multisets in other languages."""
- import_modules = ['counter']
-
homepage = "https://github.com/KelSolaar/Counter"
url = "https://pypi.io/packages/source/C/Counter/Counter-1.0.0.tar.gz"
diff --git a/var/spack/repos/builtin/packages/py-cvxopt/package.py b/var/spack/repos/builtin/packages/py-cvxopt/package.py
index 1cc1a932c1..930a40385f 100644
--- a/var/spack/repos/builtin/packages/py-cvxopt/package.py
+++ b/var/spack/repos/builtin/packages/py-cvxopt/package.py
@@ -13,8 +13,6 @@ class PyCvxopt(PythonPackage):
homepage = "http://cvxopt.org/"
url = "https://pypi.io/packages/source/c/cvxopt/cvxopt-1.1.9.tar.gz"
- import_modules = ['cvxopt']
-
version('1.2.5', sha256='94ec8c36bd6628a11de9014346692daeeef99b3b7bae28cef30c7490bbcb2d72')
version('1.1.9', sha256='8f157e7397158812cabd340b68546f1baa55a486ed0aad8bc26877593dc2983d')
diff --git a/var/spack/repos/builtin/packages/py-cvxpy/package.py b/var/spack/repos/builtin/packages/py-cvxpy/package.py
index 68b82e8a59..0b0abad4cf 100644
--- a/var/spack/repos/builtin/packages/py-cvxpy/package.py
+++ b/var/spack/repos/builtin/packages/py-cvxpy/package.py
@@ -16,13 +16,10 @@ class PyCvxpy(PythonPackage):
version('1.0.25', sha256='8535529ddb807067b0d59661dce1d9a6ddb2a218398a38ea7772328ad8a6ea13')
depends_on('py-setuptools', type='build')
- depends_on('py-nose', type='test')
-
depends_on('py-numpy@1.15:', type=('build', 'run'))
depends_on('py-scipy@1.1.0:', type=('build', 'run'))
depends_on('py-ecos@2:', type=('build', 'run'))
depends_on('py-scs@1.1.3:', type=('build', 'run'))
depends_on('py-osqp@0.4.1', type=('build', 'run'))
-
depends_on('py-multiprocess', type=('build', 'run'))
depends_on('py-six', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-cython/package.py b/var/spack/repos/builtin/packages/py-cython/package.py
index 2dd532be2f..c37cf1f54a 100644
--- a/var/spack/repos/builtin/packages/py-cython/package.py
+++ b/var/spack/repos/builtin/packages/py-cython/package.py
@@ -12,14 +12,6 @@ class PyCython(PythonPackage):
homepage = "https://pypi.python.org/pypi/cython"
url = "https://pypi.io/packages/source/c/cython/Cython-0.29.21.tar.gz"
- import_modules = [
- 'cython', 'Cython', 'Cython.Build', 'Cython.Compiler',
- 'Cython.Runtime', 'Cython.Distutils', 'Cython.Debugger',
- 'Cython.Debugger.Tests', 'Cython.Plex', 'Cython.Tests',
- 'Cython.Build.Tests', 'Cython.Compiler.Tests', 'Cython.Utility',
- 'Cython.Tempita', 'pyximport',
- ]
-
version('0.29.21', sha256='e57acb89bd55943c8d8bf813763d20b9099cc7165c0f16b707631a7654be9cad')
version('0.29.16', sha256='232755284f942cbb3b43a06cd85974ef3c970a021aef19b5243c03ee2b08fa05')
version('0.29.15', sha256='60d859e1efa5cc80436d58aecd3718ff2e74b987db0518376046adedba97ac30')
@@ -47,6 +39,8 @@ class PyCython(PythonPackage):
"""Returns the Cython command"""
return Executable(self.prefix.bin.cython)
+ @run_after('build')
+ @on_package_attributes(run_tests=True)
def build_test(self):
# Warning: full suite of unit tests takes a very long time
python('runtests.py', '-j', str(make_jobs))
diff --git a/var/spack/repos/builtin/packages/py-dask/package.py b/var/spack/repos/builtin/packages/py-dask/package.py
index b6f3a07f10..96744de758 100644
--- a/var/spack/repos/builtin/packages/py-dask/package.py
+++ b/var/spack/repos/builtin/packages/py-dask/package.py
@@ -38,9 +38,6 @@ class PyDask(PythonPackage):
depends_on('python@3.6:', type=('build', 'run'), when='@2.7.0:')
depends_on('py-setuptools', type='build')
- depends_on('py-pytest@3.1.0:', type='test')
- depends_on('py-requests', type='test')
- depends_on('py-pytest-runner', type='test')
# Requirements for dask.array
depends_on('py-numpy@1.10.4:', type=('build', 'run'), when='+array')
diff --git a/var/spack/repos/builtin/packages/py-dateparser/package.py b/var/spack/repos/builtin/packages/py-dateparser/package.py
index 5d233e6377..cc0ac18a8a 100644
--- a/var/spack/repos/builtin/packages/py-dateparser/package.py
+++ b/var/spack/repos/builtin/packages/py-dateparser/package.py
@@ -26,8 +26,3 @@ class PyDateparser(PythonPackage):
depends_on('py-ruamel-yaml', type=('build', 'run'), when='+calendars')
depends_on('py-convertdate', type=('build', 'run'), when='+calendars')
depends_on('py-jdatetime', type=('build', 'run'), when='+calendars')
- depends_on('py-mock', type='test')
- depends_on('py-nose', type='test')
- depends_on('py-parameterized', type='test')
- depends_on('py-six', type='test')
- depends_on('py-coverage', type='test')
diff --git a/var/spack/repos/builtin/packages/py-deeptools/package.py b/var/spack/repos/builtin/packages/py-deeptools/package.py
index 35103a5e5d..8ce9e1519e 100644
--- a/var/spack/repos/builtin/packages/py-deeptools/package.py
+++ b/var/spack/repos/builtin/packages/py-deeptools/package.py
@@ -30,8 +30,6 @@ class PyDeeptools(PythonPackage):
depends_on('py-plotly@2.0.0:', type=('build', 'run'))
depends_on('py-deeptoolsintervals@0.1.8:', type=('build', 'run'))
- depends_on('py-nose', type='test')
-
def patch(self):
# Add nosetest hook for "python setup.py test" argument.
filter_file(r'^setup\(',
diff --git a/var/spack/repos/builtin/packages/py-diskcache/package.py b/var/spack/repos/builtin/packages/py-diskcache/package.py
index 042183cdf3..8e8f76326b 100644
--- a/var/spack/repos/builtin/packages/py-diskcache/package.py
+++ b/var/spack/repos/builtin/packages/py-diskcache/package.py
@@ -13,4 +13,3 @@ class PyDiskcache(PythonPackage):
version('4.1.0', sha256='bcee5a59f9c264e2809e58d01be6569a3bbb1e36a1e0fb83f7ef9b2075f95ce0')
depends_on('py-setuptools', type='build')
- depends_on('py-tox', type='test')
diff --git a/var/spack/repos/builtin/packages/py-docopt/package.py b/var/spack/repos/builtin/packages/py-docopt/package.py
index ce0dcd40ad..02bea78e7a 100644
--- a/var/spack/repos/builtin/packages/py-docopt/package.py
+++ b/var/spack/repos/builtin/packages/py-docopt/package.py
@@ -12,8 +12,6 @@ class PyDocopt(PythonPackage):
homepage = "http://docopt.org/"
url = "https://pypi.io/packages/source/d/docopt/docopt-0.6.2.tar.gz"
- import_modules = ['docopt']
-
version('0.6.2', sha256='49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-docutils/package.py b/var/spack/repos/builtin/packages/py-docutils/package.py
index 07b0da2534..4ff1d4252e 100644
--- a/var/spack/repos/builtin/packages/py-docutils/package.py
+++ b/var/spack/repos/builtin/packages/py-docutils/package.py
@@ -17,17 +17,6 @@ class PyDocutils(PythonPackage):
homepage = "http://docutils.sourceforge.net/"
url = "https://pypi.io/packages/source/d/docutils/docutils-0.15.2.tar.gz"
- import_modules = [
- 'docutils', 'docutils.languages', 'docutils.parsers',
- 'docutils.readers', 'docutils.transforms', 'docutils.utils',
- 'docutils.writers', 'docutils.parsers.rst',
- 'docutils.parsers.rst.directives', 'docutils.parsers.rst.languages',
- 'docutils.utils.math', 'docutils.writers.html4css1',
- 'docutils.writers.html5_polyglot', 'docutils.writers.latex2e',
- 'docutils.writers.odf_odt', 'docutils.writers.pep_html',
- 'docutils.writers.s5_html', 'docutils.writers.xetex'
- ]
-
version('0.15.2', sha256='a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99')
version('0.14', sha256='51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274')
version('0.13.1', sha256='718c0f5fb677be0f34b781e04241c4067cbd9327b66bdd8e763201130f5175be')
diff --git a/var/spack/repos/builtin/packages/py-dxchange/package.py b/var/spack/repos/builtin/packages/py-dxchange/package.py
index be0a23916c..5a96d68bdc 100644
--- a/var/spack/repos/builtin/packages/py-dxchange/package.py
+++ b/var/spack/repos/builtin/packages/py-dxchange/package.py
@@ -14,8 +14,6 @@ class PyDxchange(PythonPackage):
homepage = "https://github.com/data-exchange/dxchange"
url = "https://github.com/data-exchange/dxchange/archive/v0.1.2.tar.gz"
- import_modules = ['dxchange']
-
version('0.1.2', sha256='d005b036b6323d0dffd5944c3da0b8a90496d96277654e72b53717058dd5fd87')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-dxfile/package.py b/var/spack/repos/builtin/packages/py-dxfile/package.py
index aa7eac9d91..27066291c7 100644
--- a/var/spack/repos/builtin/packages/py-dxfile/package.py
+++ b/var/spack/repos/builtin/packages/py-dxfile/package.py
@@ -13,8 +13,6 @@ class PyDxfile(PythonPackage):
homepage = "https://github.com/data-exchange/dxfile"
url = "https://github.com/data-exchange/dxfile/archive/v0.4.tar.gz"
- import_modules = ['dxfile']
-
version('0.4', sha256='b7729eebdc7c99a66a8b339fc10019aa8565e02bd12708540fb3f47935f004c7')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py
index 9096f62708..e283fd825b 100644
--- a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py
+++ b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py
@@ -22,6 +22,3 @@ class PyEasybuildFramework(PythonPackage):
depends_on('python@2.6:2.8,3.5:', when='@4:', type=('build', 'run'))
depends_on('py-setuptools', when='@:3', type=('build', 'run'))
depends_on('py-vsc-base@2.5.4:', when='@2.9:3', type='run')
-
- # Only required for tests (python -O -m test.framework.suite)
- depends_on('py-vsc-install', when='@:3', type='test')
diff --git a/var/spack/repos/builtin/packages/py-ecdsa/package.py b/var/spack/repos/builtin/packages/py-ecdsa/package.py
index 2401b9bd27..0ba06e98fb 100644
--- a/var/spack/repos/builtin/packages/py-ecdsa/package.py
+++ b/var/spack/repos/builtin/packages/py-ecdsa/package.py
@@ -18,4 +18,3 @@ class PyEcdsa(PythonPackage):
depends_on('python@2.6:2.8,3.3:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
depends_on('py-six@1.9.0:', type=('build', 'run'))
- depends_on('openssl', type='test')
diff --git a/var/spack/repos/builtin/packages/py-ecos/package.py b/var/spack/repos/builtin/packages/py-ecos/package.py
index 84e3bcd9eb..97ce50b68c 100644
--- a/var/spack/repos/builtin/packages/py-ecos/package.py
+++ b/var/spack/repos/builtin/packages/py-ecos/package.py
@@ -16,6 +16,5 @@ class PyEcos(PythonPackage):
version('2.0.7.post1', sha256='83e90f42b3f32e2a93f255c3cfad2da78dbd859119e93844c45d2fca20bdc758')
depends_on('py-setuptools', type='build')
- depends_on('py-nose', type='test')
depends_on('py-numpy@1.6:', type=('build', 'run'))
depends_on('py-scipy@0.9:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-edffile/package.py b/var/spack/repos/builtin/packages/py-edffile/package.py
index ab4a9f9ed9..d902b922b1 100644
--- a/var/spack/repos/builtin/packages/py-edffile/package.py
+++ b/var/spack/repos/builtin/packages/py-edffile/package.py
@@ -12,8 +12,6 @@ class PyEdffile(PythonPackage):
homepage = "https://github.com/vasole/pymca/blob/master/PyMca5/PyMcaIO/EdfFile.py"
git = "https://github.com/conda-forge/edffile-feedstock.git"
- import_modules = ['EdfFile']
-
version('5.0.0', commit='be5ab4199db9f8209c59e31874934b8536b52301')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-elephant/package.py b/var/spack/repos/builtin/packages/py-elephant/package.py
index 7d2477ef40..4ce26bc339 100644
--- a/var/spack/repos/builtin/packages/py-elephant/package.py
+++ b/var/spack/repos/builtin/packages/py-elephant/package.py
@@ -27,4 +27,3 @@ class PyElephant(PythonPackage):
depends_on('py-pandas@0.14.1:', type=('build', 'run'), when='+pandas')
depends_on('py-numpydoc@0.5:', type=('build', 'run'), when='+docs')
depends_on('py-sphinx@1.2.2:', type=('build', 'run'), when='+docs')
- depends_on('py-nose@1.3.3:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-entrypoints/package.py b/var/spack/repos/builtin/packages/py-entrypoints/package.py
index 84bc7c20f4..4a05b19a64 100644
--- a/var/spack/repos/builtin/packages/py-entrypoints/package.py
+++ b/var/spack/repos/builtin/packages/py-entrypoints/package.py
@@ -12,8 +12,6 @@ class PyEntrypoints(PythonPackage):
homepage = "https://pypi.python.org/pypi/entrypoints"
url = "https://pypi.io/packages/source/e/entrypoints/entrypoints-0.2.3.tar.gz"
- import_modules = ['entrypoints']
-
version('0.3', sha256='c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451')
version('0.2.3', sha256='d2d587dde06f99545fb13a383d2cd336a8ff1f359c5839ce3a64c917d10c029f')
diff --git a/var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py b/var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py
index f84f9ce565..9c709d9166 100644
--- a/var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py
+++ b/var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py
@@ -30,7 +30,6 @@ class PyFenicsDolfinx(PythonPackage):
depends_on("py-cffi", type=("run"))
depends_on("py-numpy", type=("run"))
- import_modules = ['dolfinx']
phases = ['build_ext', 'build', 'install']
build_directory = 'python'
diff --git a/var/spack/repos/builtin/packages/py-filemagic/package.py b/var/spack/repos/builtin/packages/py-filemagic/package.py
index 8d425dfb37..d1a5ffd3c8 100644
--- a/var/spack/repos/builtin/packages/py-filemagic/package.py
+++ b/var/spack/repos/builtin/packages/py-filemagic/package.py
@@ -15,5 +15,3 @@ class PyFilemagic(PythonPackage):
version('1.6', sha256='e684359ef40820fe406f0ebc5bf8a78f89717bdb7fed688af68082d991d6dbf3')
depends_on('py-setuptools', type='build')
- depends_on('py-mock', type='test', when='^python@3:')
- depends_on('py-unittest2', type='test')
diff --git a/var/spack/repos/builtin/packages/py-fiona/package.py b/var/spack/repos/builtin/packages/py-fiona/package.py
index b4213d5f61..ffaf250408 100644
--- a/var/spack/repos/builtin/packages/py-fiona/package.py
+++ b/var/spack/repos/builtin/packages/py-fiona/package.py
@@ -13,7 +13,6 @@ class PyFiona(PythonPackage):
url = "https://pypi.io/packages/source/F/Fiona/Fiona-1.8.6.tar.gz"
maintainers = ['adamjstewart']
- import_modules = ['fiona', 'fiona.fio']
version('1.8.6', sha256='fa31dfe8855b9cd0b128b47a4df558f1b8eda90d2181bff1dd9854e5556efb3e')
version('1.7.12', sha256='8b54eb8422d7c502bb7776b184018186bede1a489cf438a7a47f992ade6a0e51')
@@ -33,7 +32,3 @@ class PyFiona(PythonPackage):
depends_on('py-argparse', type=('build', 'run'), when='^python@:2.6')
depends_on('py-ordereddict', type=('build', 'run'), when='^python@:2.6')
depends_on('py-enum34', type=('build', 'run'), when='^python@:3.3')
-
- def build_test(self):
- # PyPI tarball does not come with unit tests
- pass
diff --git a/var/spack/repos/builtin/packages/py-fiscalyear/package.py b/var/spack/repos/builtin/packages/py-fiscalyear/package.py
index 407caa7ce5..a0b95ff73f 100644
--- a/var/spack/repos/builtin/packages/py-fiscalyear/package.py
+++ b/var/spack/repos/builtin/packages/py-fiscalyear/package.py
@@ -17,7 +17,6 @@ class PyFiscalyear(PythonPackage):
git = "https://github.com/adamjstewart/fiscalyear.git"
maintainers = ['adamjstewart']
- import_modules = ['fiscalyear']
version('master', branch='master')
version('0.2.0', sha256='f513616aeb03046406c56d7c69cd9e26f6a12963c71c1410cc3d4532a5bfee71')
@@ -25,7 +24,3 @@ class PyFiscalyear(PythonPackage):
depends_on('python@2.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- depends_on('py-pytest', type='test')
- depends_on('py-pytest-runner', type='test')
- depends_on('py-pytest-mock', type='test')
diff --git a/var/spack/repos/builtin/packages/py-fisher/package.py b/var/spack/repos/builtin/packages/py-fisher/package.py
index 45e0fc5110..17318ee202 100644
--- a/var/spack/repos/builtin/packages/py-fisher/package.py
+++ b/var/spack/repos/builtin/packages/py-fisher/package.py
@@ -18,4 +18,3 @@ class PyFisher(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-numpy', type=('build', 'run'))
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-freezegun/package.py b/var/spack/repos/builtin/packages/py-freezegun/package.py
index 3329c975bc..4a99441796 100644
--- a/var/spack/repos/builtin/packages/py-freezegun/package.py
+++ b/var/spack/repos/builtin/packages/py-freezegun/package.py
@@ -13,13 +13,9 @@ class PyFreezegun(PythonPackage):
homepage = "https://github.com/spulec/freezegun"
url = "https://pypi.io/packages/source/f/freezegun/freezegun-0.3.12.tar.gz"
- import_modules = ['freezegun']
-
version('0.3.12', sha256='2a4d9c8cd3c04a201e20c313caf8b6338f1cfa4cda43f46a94cc4a9fd13ea5e7')
depends_on('py-setuptools', type='build')
depends_on('py-six', type=('build', 'run'))
depends_on('py-python-dateutil@1.0:1.999', type=('build', 'run'), when='^python@:2')
depends_on('py-python-dateutil@2:', type=('build', 'run'), when='^python@3:')
- depends_on('py-mock', type='test')
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-fsspec/package.py b/var/spack/repos/builtin/packages/py-fsspec/package.py
index bf82fc803a..f0b58dcb77 100644
--- a/var/spack/repos/builtin/packages/py-fsspec/package.py
+++ b/var/spack/repos/builtin/packages/py-fsspec/package.py
@@ -12,8 +12,6 @@ class PyFsspec(PythonPackage):
homepage = "https://github.com/intake/filesystem_spec"
url = "https://pypi.io/packages/source/f/fsspec/fsspec-0.4.4.tar.gz"
- import_modules = ['fsspec', 'fsspec.implementations']
-
version('0.7.3', sha256='1b540552c93b47e83c568e87507d6e02993e6d1b30bc7285f2336c81c5014103')
version('0.4.4', sha256='97697a46e8bf8be34461c2520d6fc4bfca0ed749b22bb2b7c21939fd450a7d63')
diff --git a/var/spack/repos/builtin/packages/py-funcsigs/package.py b/var/spack/repos/builtin/packages/py-funcsigs/package.py
index ec53173d15..77db9cd6ad 100644
--- a/var/spack/repos/builtin/packages/py-funcsigs/package.py
+++ b/var/spack/repos/builtin/packages/py-funcsigs/package.py
@@ -12,10 +12,7 @@ class PyFuncsigs(PythonPackage):
homepage = "https://pypi.python.org/pypi/funcsigs"
url = "https://pypi.io/packages/source/f/funcsigs/funcsigs-1.0.2.tar.gz"
- import_modules = ['funcsigs']
-
version('1.0.2', sha256='a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50')
version('0.4', sha256='d83ce6df0b0ea6618700fe1db353526391a8a3ada1b7aba52fed7a61da772033')
depends_on('py-setuptools@17.1:', type='build')
- depends_on('py-unittest2', type='test')
diff --git a/var/spack/repos/builtin/packages/py-future/package.py b/var/spack/repos/builtin/packages/py-future/package.py
index af2bce85f0..d89490eaf5 100644
--- a/var/spack/repos/builtin/packages/py-future/package.py
+++ b/var/spack/repos/builtin/packages/py-future/package.py
@@ -21,3 +21,29 @@ class PyFuture(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-importlib', type=('build', 'run'), when='^python@:2.6')
depends_on('py-argparse', type=('build', 'run'), when='^python@:2.6')
+
+ @property
+ def import_modules(self):
+ modules = [
+ 'copyreg', '_thread', 'past', 'past.types', 'past.translation',
+ 'past.utils', 'past.builtins', 'reprlib', 'html', 'builtins',
+ 'http', '_dummy_thread', 'queue', 'xmlrpc', 'libfuturize',
+ 'libfuturize.fixes', 'future', 'future.moves', 'future.moves.test',
+ 'future.moves.urllib', 'future.moves.html', 'future.moves.http',
+ 'future.moves.dbm', 'future.moves.xmlrpc', 'future.types',
+ 'future.tests', 'future.utils', 'future.builtins',
+ 'future.backports', 'future.backports.test',
+ 'future.backports.urllib', 'future.backports.html',
+ 'future.backports.http', 'future.backports.xmlrpc',
+ 'future.backports.email', 'future.backports.email.mime',
+ 'future.standard_library', 'libpasteurize', 'libpasteurize.fixes',
+ 'socketserver', '_markupbase'
+ ]
+
+ if 'platform=windows' in self.spec:
+ modules.append('winreg')
+
+ if '+tkinter' in self.spec['python']:
+ modules.extend(['tkinter', 'future.moves.tkinter'])
+
+ return modules
diff --git a/var/spack/repos/builtin/packages/py-gee-asset-manager/package.py b/var/spack/repos/builtin/packages/py-gee-asset-manager/package.py
index f32108bccd..921d0057ac 100644
--- a/var/spack/repos/builtin/packages/py-gee-asset-manager/package.py
+++ b/var/spack/repos/builtin/packages/py-gee-asset-manager/package.py
@@ -22,6 +22,5 @@ class PyGeeAssetManager(PythonPackage):
depends_on('py-retrying@1.3.3:', type=('build', 'run'))
depends_on('py-beautifulsoup4@4.5.1:', type=('build', 'run'))
depends_on('py-requests-toolbelt@0.7.0:', type=('build', 'run'))
- depends_on('py-pytest@3.0.0:', type=('build', 'test'))
depends_on('py-future@0.16.0:', type=('build', 'run'))
depends_on('py-google-cloud-storage@1.1.1:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-geeadd/package.py b/var/spack/repos/builtin/packages/py-geeadd/package.py
index 78c260243b..42510838eb 100644
--- a/var/spack/repos/builtin/packages/py-geeadd/package.py
+++ b/var/spack/repos/builtin/packages/py-geeadd/package.py
@@ -22,7 +22,6 @@ class PyGeeadd(PythonPackage):
depends_on('py-clipboard@0.0.4:', type=('build', 'run'))
depends_on('py-beautifulsoup4@4.5.1:', type=('build', 'run'))
depends_on('py-requests-toolbelt@0.7.0:', type=('build', 'run'))
- depends_on('py-pytest@3.0.0:', type=('build', 'test'))
depends_on('py-future@0.16.0:', type=('build', 'run'))
depends_on('py-google-cloud-storage@1.1.1:', type=('build', 'run'))
depends_on('py-oauth2client@4.1.3:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-geoalchemy2/package.py b/var/spack/repos/builtin/packages/py-geoalchemy2/package.py
index dad20c8e16..09080f7d57 100644
--- a/var/spack/repos/builtin/packages/py-geoalchemy2/package.py
+++ b/var/spack/repos/builtin/packages/py-geoalchemy2/package.py
@@ -20,9 +20,3 @@ class PyGeoalchemy2(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-sqlalchemy@0.8:', type=('build', 'run'))
depends_on('py-shapely@1.3.0:', type=('build', 'run'), when='+dev')
-
- depends_on('py-pycodestyle@2.2.0', type='test')
- depends_on('py-flake8@3.2.0', type='test')
- depends_on('py-pytest@3.7.4', type='test', when='@0.6.3')
- depends_on('py-pytest@3.1.3', type='test', when='@0.4.2')
- depends_on('py-pytest-cov@2.5.1', type='test')
diff --git a/var/spack/repos/builtin/packages/py-geopandas/package.py b/var/spack/repos/builtin/packages/py-geopandas/package.py
index 3373e961e5..e27fec8205 100644
--- a/var/spack/repos/builtin/packages/py-geopandas/package.py
+++ b/var/spack/repos/builtin/packages/py-geopandas/package.py
@@ -17,9 +17,6 @@ class PyGeopandas(PythonPackage):
url = "https://pypi.io/packages/source/g/geopandas/geopandas-0.5.0.tar.gz"
maintainers = ['adamjstewart']
- import_modules = [
- 'geopandas', 'geopandas.io', 'geopandas.tools', 'geopandas.datasets'
- ]
version('0.5.0', sha256='d075d2ab61a502ab92ec6b72aaf9610a1340ec24ed07264fcbdbe944b9e68954')
version('0.4.0', sha256='9f5d24d23f33e6d3267a633025e4d9e050b3a1e86d41a96d3ccc5ad95afec3db')
diff --git a/var/spack/repos/builtin/packages/py-google-api-core/package.py b/var/spack/repos/builtin/packages/py-google-api-core/package.py
index f8ca4ea2b5..be9ce2e32a 100644
--- a/var/spack/repos/builtin/packages/py-google-api-core/package.py
+++ b/var/spack/repos/builtin/packages/py-google-api-core/package.py
@@ -12,6 +12,10 @@ class PyGoogleApiCore(PythonPackage):
homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python"
url = "https://pypi.io/packages/source/g/google-api-core/google-api-core-1.14.2.tar.gz"
+ # google.api_core.operations_v1 and google.api_core.gapic_v1 require
+ # grpc optional dependency
+ import_modules = ['google.api_core', 'google.api_core.future']
+
version('1.14.2', sha256='2c23fbc81c76b941ffb71301bb975ed66a610e9b03f918feacd1ed59cf43a6ec')
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-gpustat/package.py b/var/spack/repos/builtin/packages/py-gpustat/package.py
index 1bfab1ba35..c351d3770b 100644
--- a/var/spack/repos/builtin/packages/py-gpustat/package.py
+++ b/var/spack/repos/builtin/packages/py-gpustat/package.py
@@ -19,5 +19,3 @@ class PyGpustat(PythonPackage):
depends_on('py-nvidia-ml-py3@7.352.0:', when='^python@3:', type=('build', 'run'))
depends_on('py-psutil', type=('build', 'run'))
depends_on('py-blessings@1.6:', type=('build', 'run'))
- depends_on('py-mock@2:', type='test')
- depends_on('py-pytest@:4', type='test')
diff --git a/var/spack/repos/builtin/packages/py-graphviz/package.py b/var/spack/repos/builtin/packages/py-graphviz/package.py
index 144321cccf..e556430f9d 100644
--- a/var/spack/repos/builtin/packages/py-graphviz/package.py
+++ b/var/spack/repos/builtin/packages/py-graphviz/package.py
@@ -30,10 +30,5 @@ class PyGraphviz(PythonPackage):
depends_on('py-pep8-naming', type=('build', 'run'), when='+dev')
depends_on('py-wheel', type=('build', 'run'), when='+dev')
depends_on('py-twine', type=('build', 'run'), when='+dev')
- depends_on('py-mock@2:', type='test')
- depends_on('py-pytest@3.4:', type='test')
- depends_on('py-pytest@3.4:3.9,3.11:', when='@0.11.1', type='test')
- depends_on('py-pytest-mock@1.8:', type='test')
- depends_on('py-pytest-cov', type='test')
depends_on('py-sphinx@1.7:', type=('build', 'run'), when='+docs')
depends_on('py-sphinx-rtd-theme', type=('build', 'run'), when='+docs')
diff --git a/var/spack/repos/builtin/packages/py-grequests/package.py b/var/spack/repos/builtin/packages/py-grequests/package.py
index 53b804bd6f..4f171dabc1 100644
--- a/var/spack/repos/builtin/packages/py-grequests/package.py
+++ b/var/spack/repos/builtin/packages/py-grequests/package.py
@@ -22,4 +22,3 @@ class PyGrequests(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-gevent', type=('build', 'run'))
depends_on('py-requests', type=('build', 'run'))
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py
index 2b7d34cc4b..a6479c4379 100644
--- a/var/spack/repos/builtin/packages/py-h5py/package.py
+++ b/var/spack/repos/builtin/packages/py-h5py/package.py
@@ -14,8 +14,6 @@ class PyH5py(PythonPackage):
url = "https://pypi.io/packages/source/h/h5py/h5py-2.10.0.tar.gz"
git = "https://github.com/h5py/h5py.git"
- import_modules = ['h5py', 'h5py._hl']
-
version('master', branch='master')
version('2.10.0', sha256='84412798925dc870ffd7107f045d7659e60f5d46d1c70c700375248bf6bf512d')
version('2.9.0', sha256='9d41ca62daf36d6b6515ab8765e4c8c4388ee18e2a665701fef2b41563821002')
diff --git a/var/spack/repos/builtin/packages/py-h5sh/package.py b/var/spack/repos/builtin/packages/py-h5sh/package.py
index a85c123475..e49fd75901 100644
--- a/var/spack/repos/builtin/packages/py-h5sh/package.py
+++ b/var/spack/repos/builtin/packages/py-h5sh/package.py
@@ -22,4 +22,3 @@ class PyH5sh(PythonPackage):
depends_on('py-prompt-toolkit@2:', type=('build', 'run'))
depends_on('py-pygments', type=('build', 'run'))
depends_on('py-six', type=('build', 'run'))
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-hacking/package.py b/var/spack/repos/builtin/packages/py-hacking/package.py
index dae3f8b281..bb8e8c42b2 100644
--- a/var/spack/repos/builtin/packages/py-hacking/package.py
+++ b/var/spack/repos/builtin/packages/py-hacking/package.py
@@ -12,8 +12,6 @@ class PyHacking(PythonPackage):
homepage = "https://docs.openstack.org/hacking/latest/"
url = "https://pypi.io/packages/source/h/hacking/hacking-1.1.0.tar.gz"
- import_modules = ['hacking']
-
version('1.1.0', sha256='23a306f3a1070a4469a603886ba709780f02ae7e0f1fc7061e5c6fb203828fee')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-horovod/package.py b/var/spack/repos/builtin/packages/py-horovod/package.py
index 099d0cbf00..26cd83c6c4 100644
--- a/var/spack/repos/builtin/packages/py-horovod/package.py
+++ b/var/spack/repos/builtin/packages/py-horovod/package.py
@@ -89,12 +89,6 @@ class PyHorovod(PythonPackage, CudaPackage):
# There does not appear to be a way to use an external Gloo installation
depends_on('cmake', type='build', when='tensor_ops=gloo')
- # Test dependencies
- depends_on('py-mock', type='test')
- depends_on('py-pytest', type='test')
- depends_on('py-pytest-forked', type='test')
- depends_on('py-parameterized', type='test', when='@0.20:')
-
conflicts('cuda_arch=none', when='+cuda',
msg='Must specify CUDA compute capabilities of your GPU, see '
'https://developer.nvidia.com/cuda-gpus')
@@ -105,6 +99,51 @@ class PyHorovod(PythonPackage, CudaPackage):
# https://github.com/horovod/horovod/pull/1835
patch('fma.patch', when='@0.19.0:0.19.1')
+ @property
+ def import_modules(self):
+ modules = [
+ 'horovod', 'horovod.runner', 'horovod.runner.util',
+ 'horovod.runner.elastic', 'horovod.runner.driver',
+ 'horovod.runner.common', 'horovod.runner.common.util',
+ 'horovod.runner.common.service', 'horovod.runner.http',
+ 'horovod.runner.task', 'horovod.common'
+ ]
+
+ if 'frameworks=tensorflow' in self.spec:
+ modules.append('horovod.tensorflow')
+
+ if 'frameworks=pytorch' in self.spec:
+ modules.extend([
+ 'horovod.torch', 'horovod.torch.mpi_lib',
+ 'horovod.torch.elastic', 'horovod.torch.mpi_lib_impl'
+ ])
+
+ if 'frameworks=mxnet' in self.spec:
+ modules.append('horovod.mxnet')
+
+ if 'frameworks=keras' in self.spec:
+ modules.extend(['horovod.keras', 'horovod._keras'])
+
+ if 'frameworks=spark' in self.spec:
+ modules.extend([
+ 'horovod.spark', 'horovod.spark.driver',
+ 'horovod.spark.common', 'horovod.spark.task'
+ ])
+
+ if 'frameworks=ray' in self.spec:
+ modules.append('horovod.ray')
+
+ if 'frameworks=tensorflow,keras' in self.spec:
+ modules.append('horovod.tensorflow.keras')
+
+ if 'frameworks=spark,pytorch' in self.spec:
+ modules.append('horovod.spark.torch')
+
+ if 'frameworks=spark,keras' in self.spec:
+ modules.append('horovod.spark.keras')
+
+ return modules
+
def setup_build_environment(self, env):
# https://github.com/horovod/horovod/blob/master/docs/install.rst#environment-variables
@@ -167,8 +206,6 @@ class PyHorovod(PythonPackage, CudaPackage):
env.set('HOROVOD_CPU_OPERATIONS',
self.spec.variants['tensor_ops'].value.upper())
- @run_after('install')
- @on_package_attributes(run_tests=True)
- def install_test(self):
- horovodrun = Executable(self.prefix.bin.horovodrun)
- horovodrun('--check-build')
+ def test(self):
+ super(PyHorovod, self).test()
+ run_test(self.prefix.bin.horovodrun, '--check-build')
diff --git a/var/spack/repos/builtin/packages/py-htmlgen/package.py b/var/spack/repos/builtin/packages/py-htmlgen/package.py
index b15fe69769..5c3ca45b6d 100644
--- a/var/spack/repos/builtin/packages/py-htmlgen/package.py
+++ b/var/spack/repos/builtin/packages/py-htmlgen/package.py
@@ -18,5 +18,3 @@ class PyHtmlgen(PythonPackage):
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
- depends_on('py-asserts@0.8.0:0.8.999', type='test')
- depends_on('py-typing', type='test')
diff --git a/var/spack/repos/builtin/packages/py-humanize/package.py b/var/spack/repos/builtin/packages/py-humanize/package.py
index c83200de00..4778ce24d6 100644
--- a/var/spack/repos/builtin/packages/py-humanize/package.py
+++ b/var/spack/repos/builtin/packages/py-humanize/package.py
@@ -19,4 +19,3 @@ class PyHumanize(PythonPackage):
version('0.5.1', sha256='a43f57115831ac7c70de098e6ac46ac13be00d69abbf60bdcac251344785bb19')
depends_on('py-setuptools', type='build')
- depends_on('py-mock', type='test')
diff --git a/var/spack/repos/builtin/packages/py-hypothesis/package.py b/var/spack/repos/builtin/packages/py-hypothesis/package.py
index 79a39055d0..68e64adc68 100644
--- a/var/spack/repos/builtin/packages/py-hypothesis/package.py
+++ b/var/spack/repos/builtin/packages/py-hypothesis/package.py
@@ -12,14 +12,6 @@ class PyHypothesis(PythonPackage):
homepage = "https://github.com/HypothesisWorks/hypothesis-python"
url = "https://pypi.io/packages/source/h/hypothesis/hypothesis-4.41.2.tar.gz"
- import_modules = [
- 'hypothesis', 'hypothesis.searchstrategy', 'hypothesis.extra',
- 'hypothesis.utils', 'hypothesis.vendor', 'hypothesis.internal',
- 'hypothesis.internal.conjecture'
- ]
-
- # TODO: Add missing dependency required to import hypothesis.extra.django
-
version('5.3.0', sha256='c9fdb53fe3bf1f8e7dcca1a7dd6e430862502f088aca2903d141511212e79429')
version('4.57.1', sha256='3c4369a4b0a1348561048bcda5f1db951a1b8e2a514ea8e8c70d36e656bf6fa0')
version('4.41.2', sha256='6847df3ffb4aa52798621dd007e6b61dbcf2d76c30ba37dc2699720e2c734b7a')
diff --git a/var/spack/repos/builtin/packages/py-imagesize/package.py b/var/spack/repos/builtin/packages/py-imagesize/package.py
index e9f2033413..2dbcbdb71b 100644
--- a/var/spack/repos/builtin/packages/py-imagesize/package.py
+++ b/var/spack/repos/builtin/packages/py-imagesize/package.py
@@ -13,8 +13,6 @@ class PyImagesize(PythonPackage):
homepage = "https://github.com/shibukawa/imagesize_py"
url = "https://pypi.io/packages/source/i/imagesize/imagesize-0.7.1.tar.gz"
- import_modules = ['imagesize']
-
version('1.1.0', sha256='f3832918bc3c66617f92e35f5d70729187676313caa60c187eb0f28b8fe5e3b5')
version('0.7.1', sha256='0ab2c62b87987e3252f89d30b7cedbec12a01af9274af9ffa48108f2c13c6062')
diff --git a/var/spack/repos/builtin/packages/py-iminuit/package.py b/var/spack/repos/builtin/packages/py-iminuit/package.py
index e9ec1b73bf..035b05cab6 100644
--- a/var/spack/repos/builtin/packages/py-iminuit/package.py
+++ b/var/spack/repos/builtin/packages/py-iminuit/package.py
@@ -18,9 +18,3 @@ class PyIminuit(PythonPackage):
# Required dependencies
depends_on('py-setuptools', type='build')
depends_on('py-numpy', type=('build', 'run'), when='@1.3:')
-
- # Optional dependencies
- depends_on('py-matplotlib', type='test', when='@1.3:')
- depends_on('py-cython', type='test', when='@1.3:')
- depends_on('py-pytest', type='test', when='@1.3:')
- depends_on('py-scipy', type='test', when='@1.3:')
diff --git a/var/spack/repos/builtin/packages/py-importlib-metadata/package.py b/var/spack/repos/builtin/packages/py-importlib-metadata/package.py
index f22a812605..2df356f636 100644
--- a/var/spack/repos/builtin/packages/py-importlib-metadata/package.py
+++ b/var/spack/repos/builtin/packages/py-importlib-metadata/package.py
@@ -25,5 +25,3 @@ class PyImportlibMetadata(PythonPackage):
depends_on('py-pathlib2', when='^python@:2', type=('build', 'run'))
depends_on('py-contextlib2', when='^python@:2', type=('build', 'run'))
depends_on('py-configparser@3.5:', when='^python@:2', type=('build', 'run'))
- depends_on('py-importlib-resources', when='^python@:3.6', type='test')
- depends_on('py-packaging', type='test')
diff --git a/var/spack/repos/builtin/packages/py-intervaltree/package.py b/var/spack/repos/builtin/packages/py-intervaltree/package.py
index f5d4501dd7..c89ae107ca 100644
--- a/var/spack/repos/builtin/packages/py-intervaltree/package.py
+++ b/var/spack/repos/builtin/packages/py-intervaltree/package.py
@@ -15,5 +15,4 @@ class PyIntervaltree(PythonPackage):
version('3.0.2', sha256='e8ab75b66077f2e5fb85ac56cb6df834689edb048d38601d53d8867cce3b77d1')
depends_on('py-sortedcontainers@2:2.999', type=('build', 'run'))
- depends_on('py-pytest', type='test')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-ipykernel/package.py b/var/spack/repos/builtin/packages/py-ipykernel/package.py
index 1428f7d804..eee3e033b7 100644
--- a/var/spack/repos/builtin/packages/py-ipykernel/package.py
+++ b/var/spack/repos/builtin/packages/py-ipykernel/package.py
@@ -36,10 +36,6 @@ class PyIpykernel(PythonPackage):
depends_on('py-tornado@4.0:', when='@:4.999', type=('build', 'run'))
depends_on('py-tornado@4.2:', when='@5.0.0:', type=('build', 'run'))
depends_on('py-appnope', when='platform=darwin', type=('build', 'run'))
- depends_on('py-pytest@:5.3.3,5.3.5:', type='test')
- depends_on('py-pytest-cov', type='test')
- # depends_on('py-flaky', type='test')
- depends_on('py-nose', type='test')
phases = ['build', 'install', 'install_data']
diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py
index 2f10a7dddf..ba62552304 100644
--- a/var/spack/repos/builtin/packages/py-ipython/package.py
+++ b/var/spack/repos/builtin/packages/py-ipython/package.py
@@ -41,9 +41,3 @@ class PyIpython(PythonPackage):
depends_on('py-backports-shutil-get-terminal-size', type=('build', 'run'), when="^python@:3.2")
depends_on('py-pathlib2', type=('build', 'run'), when="^python@:3.3")
depends_on('py-simplegeneric@0.8:', type=('build', 'run'), when='@:7.0.0')
- depends_on('py-nose@0.10.1:', type='test')
- depends_on('py-requests', type='test')
- depends_on('py-testpath', type='test')
- depends_on('py-nbformat', type='test')
- depends_on('py-ipykernel', type='test')
- depends_on('py-numpy@1.14:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-ipywidgets/package.py b/var/spack/repos/builtin/packages/py-ipywidgets/package.py
index 11b0989069..076d013863 100644
--- a/var/spack/repos/builtin/packages/py-ipywidgets/package.py
+++ b/var/spack/repos/builtin/packages/py-ipywidgets/package.py
@@ -30,5 +30,3 @@ class PyIpywidgets(PythonPackage):
when='@7.4.2')
depends_on('py-widgetsnbextension@3.5.0:3.5.999', type=('build', 'run'),
when='@7.5.1')
- depends_on('py-mock', type='test', when='^python@2.7:2.8')
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-isort/package.py b/var/spack/repos/builtin/packages/py-isort/package.py
index 1446f70979..612fa8c769 100644
--- a/var/spack/repos/builtin/packages/py-isort/package.py
+++ b/var/spack/repos/builtin/packages/py-isort/package.py
@@ -16,8 +16,6 @@ class PyIsort(PythonPackage):
version('4.2.15', sha256='79f46172d3a4e2e53e7016e663cc7a8b538bec525c36675fcfd2767df30b3983')
depends_on('py-setuptools', type=('build', 'run'))
- depends_on('py-pytest', type='test')
- depends_on('py-mock', type='test')
depends_on('python@2.6:2.8,3.3:', type=('build', 'run'))
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'), when='@4.3.0:')
depends_on('py-futures', type=('build', 'run'), when='@4.3.0: ^python@:3.1')
diff --git a/var/spack/repos/builtin/packages/py-jinja2/package.py b/var/spack/repos/builtin/packages/py-jinja2/package.py
index 588367c0f5..4210fecc52 100644
--- a/var/spack/repos/builtin/packages/py-jinja2/package.py
+++ b/var/spack/repos/builtin/packages/py-jinja2/package.py
@@ -14,8 +14,6 @@ class PyJinja2(PythonPackage):
homepage = "https://palletsprojects.com/p/jinja/"
url = "https://pypi.io/packages/source/J/Jinja2/Jinja2-2.10.3.tar.gz"
- import_modules = ['jinja2']
-
version('2.10.3', sha256='9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de')
version('2.10.1', sha256='065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013')
version('2.10', sha256='f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4')
diff --git a/var/spack/repos/builtin/packages/py-jmespath/package.py b/var/spack/repos/builtin/packages/py-jmespath/package.py
index ed5da676f2..f339adce11 100644
--- a/var/spack/repos/builtin/packages/py-jmespath/package.py
+++ b/var/spack/repos/builtin/packages/py-jmespath/package.py
@@ -12,9 +12,6 @@ class PyJmespath(PythonPackage):
homepage = "https://github.com/jmespath/jmespath.py"
url = "https://pypi.io/packages/source/j/jmespath/jmespath-0.9.4.tar.gz"
- import_modules = ['jmespath']
-
version('0.9.4', sha256='bde2aef6f44302dfb30320115b17d030798de8c4110e28d5cf6cf91a7a31074c')
depends_on('py-setuptools', type='build')
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-jupyterlab-server/package.py b/var/spack/repos/builtin/packages/py-jupyterlab-server/package.py
index 09bfce1b1f..16098d58bf 100644
--- a/var/spack/repos/builtin/packages/py-jupyterlab-server/package.py
+++ b/var/spack/repos/builtin/packages/py-jupyterlab-server/package.py
@@ -22,5 +22,3 @@ class PyJupyterlabServer(PythonPackage):
depends_on('py-jsonschema@3.0.1:', type=('build', 'run'))
depends_on('py-notebook@4.2.0:', type=('build', 'run'))
depends_on('py-jinja2@2.10:', type=('build', 'run'))
-
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-jupyterlab/package.py b/var/spack/repos/builtin/packages/py-jupyterlab/package.py
index f19c1b8174..1f3a460cd3 100644
--- a/var/spack/repos/builtin/packages/py-jupyterlab/package.py
+++ b/var/spack/repos/builtin/packages/py-jupyterlab/package.py
@@ -20,8 +20,3 @@ class PyJupyterlab(PythonPackage):
depends_on('py-tornado@:5,6.0.3:', type=('build', 'run'))
depends_on('py-jupyterlab-server@1.1.5:1.999', type=('build', 'run'))
depends_on('py-jinja2@2.10:', type=('build', 'run'))
- depends_on('py-pytest', type='test')
- depends_on('py-pytest-check-links', type='test')
- depends_on('py-requests', type='test')
- depends_on('py-wheel', type='test')
- depends_on('py-virtualenv', type='test')
diff --git a/var/spack/repos/builtin/packages/py-kmodes/package.py b/var/spack/repos/builtin/packages/py-kmodes/package.py
index a3bbe8ea75..e3c348a3b9 100644
--- a/var/spack/repos/builtin/packages/py-kmodes/package.py
+++ b/var/spack/repos/builtin/packages/py-kmodes/package.py
@@ -13,8 +13,6 @@ class PyKmodes(PythonPackage):
homepage = "https://github.com/nicodv/kmodes"
url = "https://pypi.io/packages/source/k/kmodes/kmodes-0.10.1.tar.gz"
- import_modules = ['kmodes', 'kmodes.util']
-
version('0.10.1', sha256='3222c2f672a6356be353955c02d1e38472d9f6074744b4ffb0c058e8c2235ea1')
depends_on('python@3.4:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-latexcodec/package.py b/var/spack/repos/builtin/packages/py-latexcodec/package.py
index d379022142..9df819d09b 100644
--- a/var/spack/repos/builtin/packages/py-latexcodec/package.py
+++ b/var/spack/repos/builtin/packages/py-latexcodec/package.py
@@ -12,8 +12,6 @@ class PyLatexcodec(PythonPackage):
homepage = "http://latexcodec.readthedocs.io"
url = "https://pypi.io/packages/source/l/latexcodec/latexcodec-1.0.4.tar.gz"
- import_modules = ['latexcodec']
-
version('1.0.4', sha256='62bf8a3ee298f169a4d014dad5522bc1325b54dc98789a453fd338620387cb6c')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-linecache2/package.py b/var/spack/repos/builtin/packages/py-linecache2/package.py
index b490059705..7e23622206 100644
--- a/var/spack/repos/builtin/packages/py-linecache2/package.py
+++ b/var/spack/repos/builtin/packages/py-linecache2/package.py
@@ -16,5 +16,3 @@ class PyLinecache2(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-pbr', type='build')
- depends_on('py-fixtures', type='test')
- depends_on('py-unittest2', type='test')
diff --git a/var/spack/repos/builtin/packages/py-locket/package.py b/var/spack/repos/builtin/packages/py-locket/package.py
index 2ef69b2992..ed0c47e0fd 100644
--- a/var/spack/repos/builtin/packages/py-locket/package.py
+++ b/var/spack/repos/builtin/packages/py-locket/package.py
@@ -12,6 +12,4 @@ class PyLocket(PythonPackage):
homepage = "http://github.com/mwilliamson/locket.py"
url = "https://pypi.io/packages/source/l/locket/locket-0.2.0.tar.gz"
- import_modules = ['locket']
-
version('0.2.0', sha256='1fee63c1153db602b50154684f5725564e63a0f6d09366a1cb13dffcec179fb4')
diff --git a/var/spack/repos/builtin/packages/py-logilab-common/package.py b/var/spack/repos/builtin/packages/py-logilab-common/package.py
index ad55892341..8e26e028d9 100644
--- a/var/spack/repos/builtin/packages/py-logilab-common/package.py
+++ b/var/spack/repos/builtin/packages/py-logilab-common/package.py
@@ -18,4 +18,3 @@ class PyLogilabCommon(PythonPackage):
depends_on("py-setuptools", type=('build', 'run'))
depends_on("py-six@1.4.0:", type=('build', 'run'))
depends_on("py-unittest2@0.5.1:", type=('build', 'run'), when='^python@:2.7')
- depends_on("py-pytz", type='test')
diff --git a/var/spack/repos/builtin/packages/py-luigi/package.py b/var/spack/repos/builtin/packages/py-luigi/package.py
index 18adbff049..cfadfde68f 100644
--- a/var/spack/repos/builtin/packages/py-luigi/package.py
+++ b/var/spack/repos/builtin/packages/py-luigi/package.py
@@ -19,5 +19,3 @@ class PyLuigi(PythonPackage):
depends_on('py-tornado@4.0:4.99', type=('build', 'run'))
depends_on('py-python-daemon@:2.1', type=('build', 'run'))
depends_on('py-python-dateutil@2.7.5', when='@2.8.3:', type=('build', 'run'))
-
- depends_on('py-pytest@3.3.0:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-mako/package.py b/var/spack/repos/builtin/packages/py-mako/package.py
index b60dd8d184..0a23413bac 100644
--- a/var/spack/repos/builtin/packages/py-mako/package.py
+++ b/var/spack/repos/builtin/packages/py-mako/package.py
@@ -17,6 +17,4 @@ class PyMako(PythonPackage):
version('1.0.1', sha256='45f0869febea59dab7efd256fb451c377cbb7947bef386ff0bb44627c31a8d1c')
depends_on('py-setuptools', type='build')
- depends_on('py-mock', type='test')
- depends_on('py-pytest', type='test')
depends_on('py-markupsafe@0.9.2:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-markupsafe/package.py b/var/spack/repos/builtin/packages/py-markupsafe/package.py
index f334d03cee..a1aa3b80b2 100644
--- a/var/spack/repos/builtin/packages/py-markupsafe/package.py
+++ b/var/spack/repos/builtin/packages/py-markupsafe/package.py
@@ -15,8 +15,6 @@ class PyMarkupsafe(PythonPackage):
homepage = "http://www.pocoo.org/projects/markupsafe/"
url = "https://pypi.io/packages/source/M/MarkupSafe/MarkupSafe-1.1.1.tar.gz"
- import_modules = ['markupsafe']
-
version('1.1.1', sha256='29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b')
version('1.0', sha256='a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665')
version('0.23', sha256='a4ec1aff59b95a14b45eb2e23761a0179e98319da5a7eb76b56ea8cdc7b871c3')
diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py
index ebb95033cf..b8589ffc59 100644
--- a/var/spack/repos/builtin/packages/py-matplotlib/package.py
+++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py
@@ -14,15 +14,14 @@ class PyMatplotlib(PythonPackage):
url = "https://pypi.io/packages/source/m/matplotlib/matplotlib-3.3.2.tar.gz"
maintainers = ['adamjstewart']
-
import_modules = [
- 'mpl_toolkits', 'matplotlib', 'mpl_toolkits.axes_grid1',
- 'mpl_toolkits.axes_grid', 'mpl_toolkits.mplot3d',
- 'mpl_toolkits.axisartist', 'matplotlib.compat', 'matplotlib.tri',
- 'matplotlib.axes', 'matplotlib.sphinxext', 'matplotlib.cbook',
- 'matplotlib.backends', 'matplotlib.style', 'matplotlib.projections',
- 'matplotlib.testing', 'matplotlib.backends.qt_editor',
- 'matplotlib.testing.jpl_units'
+ 'mpl_toolkits.axes_grid1', 'mpl_toolkits.axes_grid',
+ 'mpl_toolkits.mplot3d', 'mpl_toolkits.axisartist', 'matplotlib',
+ 'matplotlib.compat', 'matplotlib.tri', 'matplotlib.axes',
+ 'matplotlib.sphinxext', 'matplotlib.cbook', 'matplotlib.backends',
+ 'matplotlib.backends.qt_editor', 'matplotlib.style',
+ 'matplotlib.projections', 'matplotlib.testing',
+ 'matplotlib.testing.jpl_units', 'pylab'
]
version('3.3.3', sha256='b1b60c6476c4cfe9e5cf8ab0d3127476fd3d5f05de0f343a452badaad0e4bdec')
@@ -183,6 +182,8 @@ class PyMatplotlib(PythonPackage):
setup.write('system_freetype = True\n')
setup.write('system_qhull = True\n')
+ @run_after('build')
+ @on_package_attributes(run_tests=True)
def build_test(self):
pytest = which('pytest')
pytest()
diff --git a/var/spack/repos/builtin/packages/py-mccabe/package.py b/var/spack/repos/builtin/packages/py-mccabe/package.py
index cd4c0df089..37b8f80f12 100644
--- a/var/spack/repos/builtin/packages/py-mccabe/package.py
+++ b/var/spack/repos/builtin/packages/py-mccabe/package.py
@@ -28,7 +28,6 @@ class PyMccabe(PythonPackage):
depends_on('python@2.7:2.8,3.3:')
depends_on('py-setuptools', type='build')
- depends_on('py-pytest', type='test')
def patch(self):
"""Filter pytest-runner requirement out of setup.py."""
diff --git a/var/spack/repos/builtin/packages/py-merlin/package.py b/var/spack/repos/builtin/packages/py-merlin/package.py
index 199c0bcd5f..231f90a278 100644
--- a/var/spack/repos/builtin/packages/py-merlin/package.py
+++ b/var/spack/repos/builtin/packages/py-merlin/package.py
@@ -21,9 +21,6 @@ class PyMerlin(PythonPackage):
depends_on('python@3.6:', type=('build', 'run'))
depends_on('py-setuptools', type=('build', 'run'))
-
- depends_on('py-pytest', type='test')
-
depends_on('py-cached-property', type=('build', 'run'))
depends_on('py-celery@5.0.0+redis+sqlalchemy', when="@1.7.5:", type=('build', 'run'))
depends_on('py-celery@4.3.0:4.999+redis+sqlalchemy', when="@:1.7.4", type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-mock/package.py b/var/spack/repos/builtin/packages/py-mock/package.py
index 1f35d26020..b406da3f8d 100644
--- a/var/spack/repos/builtin/packages/py-mock/package.py
+++ b/var/spack/repos/builtin/packages/py-mock/package.py
@@ -23,5 +23,3 @@ class PyMock(PythonPackage):
depends_on('py-six@1.7:', type=('build', 'run'))
depends_on('py-six@1.9:', type=('build', 'run'), when='@2.0.0:')
depends_on('py-funcsigs@1:', type=('build', 'run'), when='^python@:3.2')
- depends_on('py-pytest', type='test')
- depends_on('py-pytest-cov', type='test')
diff --git a/var/spack/repos/builtin/packages/py-more-itertools/package.py b/var/spack/repos/builtin/packages/py-more-itertools/package.py
index dba18e66b3..d21f5e57d4 100644
--- a/var/spack/repos/builtin/packages/py-more-itertools/package.py
+++ b/var/spack/repos/builtin/packages/py-more-itertools/package.py
@@ -12,8 +12,6 @@ class PyMoreItertools(PythonPackage):
homepage = "https://github.com/erikrose/more-itertools"
url = "https://pypi.io/packages/source/m/more-itertools/more-itertools-7.2.0.tar.gz"
- import_modules = ['more_itertools', 'more_itertools.tests']
-
version('7.2.0', sha256='409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832')
version('7.0.0', sha256='c3e4748ba1aad8dba30a4886b0b1a2004f9a863837b8654e7059eebf727afa5a')
version('5.0.0', sha256='38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4')
diff --git a/var/spack/repos/builtin/packages/py-msal-extensions/package.py b/var/spack/repos/builtin/packages/py-msal-extensions/package.py
index 75e6740f35..5a17c1ad37 100644
--- a/var/spack/repos/builtin/packages/py-msal-extensions/package.py
+++ b/var/spack/repos/builtin/packages/py-msal-extensions/package.py
@@ -20,4 +20,3 @@ class PyMsalExtensions(PythonPackage):
depends_on('py-msal@0.4.1:1.999', type=('build', 'run'))
depends_on('py-portalocker@1.0:1.999', type=('build', 'run'))
depends_on('py-pathlib2', when='@0.2:^python@:2', type=('build', 'run'))
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-mypy/package.py b/var/spack/repos/builtin/packages/py-mypy/package.py
index f822ea567e..1e1d57f701 100644
--- a/var/spack/repos/builtin/packages/py-mypy/package.py
+++ b/var/spack/repos/builtin/packages/py-mypy/package.py
@@ -19,8 +19,3 @@ class PyMypy(PythonPackage):
depends_on('py-typed-ast@1.4.0:1.4.999', type=('build', 'run'))
depends_on('py-typing-extensions@3.7.4:', type=('build', 'run'))
depends_on('py-mypy-extensions@0.4.0:0.4.999', type=('build', 'run'))
- depends_on('py-pytest', type='test')
- depends_on('py-virtualenv', type='test')
- depends_on('py-pip', type='test')
- depends_on('py-lxml', type='test')
- depends_on('googletest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-nose/package.py b/var/spack/repos/builtin/packages/py-nose/package.py
index fcafc521c7..a60a096f18 100644
--- a/var/spack/repos/builtin/packages/py-nose/package.py
+++ b/var/spack/repos/builtin/packages/py-nose/package.py
@@ -13,10 +13,6 @@ class PyNose(PythonPackage):
homepage = "https://pypi.python.org/pypi/nose"
url = "https://pypi.io/packages/source/n/nose/nose-1.3.4.tar.gz"
- import_modules = [
- 'nose', 'nose.ext', 'nose.plugins', 'nose.sphinx', 'nose.tools'
- ]
-
version('1.3.7', sha256='f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98')
version('1.3.6', sha256='f61e0909a743eed37b1207e38a8e7b4a2fe0a82185e36f2be252ef1b3f901758')
version('1.3.4', sha256='76bc63a4e2d5e5a0df77ca7d18f0f56e2c46cfb62b71103ba92a92c79fab1e03')
diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py
index fd09019469..106f40e76c 100644
--- a/var/spack/repos/builtin/packages/py-numpy/package.py
+++ b/var/spack/repos/builtin/packages/py-numpy/package.py
@@ -20,14 +20,6 @@ class PyNumpy(PythonPackage):
git = "https://github.com/numpy/numpy.git"
maintainers = ['adamjstewart']
- install_time_test_callbacks = ['install_test', 'import_module_test']
-
- import_modules = [
- 'numpy', 'numpy.compat', 'numpy.core', 'numpy.distutils', 'numpy.doc',
- 'numpy.f2py', 'numpy.fft', 'numpy.lib', 'numpy.linalg', 'numpy.ma',
- 'numpy.matrixlib', 'numpy.polynomial', 'numpy.random', 'numpy.testing',
- 'numpy.distutils.command', 'numpy.distutils.fcompiler'
- ]
version('master', branch='master')
version('1.19.4', sha256='141ec3a3300ab89c7f2b0775289954d193cc8edb621ea05f99db9cb181530512')
@@ -306,21 +298,8 @@ class PyNumpy(PythonPackage):
return args
- def build_test(self):
- # `setup.py test` is not supported. Use one of the following
- # instead:
- #
- # - `python runtests.py` (to build and test)
- # - `python runtests.py --no-build` (to test installed numpy)
- # - `>>> numpy.test()` (run tests for installed numpy
- # from within an interpreter)
- pass
-
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
def install_test(self):
- # Change directories due to the following error:
- #
- # ImportError: Error importing numpy: you should not try to import
- # numpy from its source directory; please exit the numpy
- # source tree, and relaunch your python interpreter from there.
with working_dir('spack-test', create=True):
python('-c', 'import numpy; numpy.test("full", verbose=2)')
diff --git a/var/spack/repos/builtin/packages/py-oauthlib/package.py b/var/spack/repos/builtin/packages/py-oauthlib/package.py
index 93fbb9aacc..d69ae5bc6c 100644
--- a/var/spack/repos/builtin/packages/py-oauthlib/package.py
+++ b/var/spack/repos/builtin/packages/py-oauthlib/package.py
@@ -22,16 +22,7 @@ class PyOauthlib(PythonPackage):
variant('extras', default=True, description='Build with pyjwt, blinker, cryptography')
depends_on('py-setuptools', type='build')
-
depends_on('py-pyjwt@1.0.0:', type=('build', 'run'), when='+extras')
depends_on('py-blinker', type=('build', 'run'), when='+extras')
depends_on('py-cryptography', type=('build', 'run'), when='+extras')
-
- depends_on('py-mock@2.0:', type='test')
- depends_on('py-pytest@4.0:', type='test')
- depends_on('py-pytest-cov@2.6:', type='test')
-
- depends_on('py-nose', type='test', when='@2.0.2')
- depends_on('py-unittest2', type='test', when='^python@2.0.2')
-
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-olefile/package.py b/var/spack/repos/builtin/packages/py-olefile/package.py
index 4e9826b18b..34db8febe3 100644
--- a/var/spack/repos/builtin/packages/py-olefile/package.py
+++ b/var/spack/repos/builtin/packages/py-olefile/package.py
@@ -12,8 +12,6 @@ class PyOlefile(PythonPackage):
homepage = "https://www.decalage.info/python/olefileio"
url = "https://pypi.io/packages/source/o/olefile/olefile-0.44.zip"
- import_modules = ['olefile']
-
version('0.44', sha256='61f2ca0cd0aa77279eb943c07f607438edf374096b66332fae1ee64a6f0f73ad')
depends_on('python@2.6:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-openslide-python/package.py b/var/spack/repos/builtin/packages/py-openslide-python/package.py
index 371b218cb3..aa12432d50 100644
--- a/var/spack/repos/builtin/packages/py-openslide-python/package.py
+++ b/var/spack/repos/builtin/packages/py-openslide-python/package.py
@@ -14,8 +14,6 @@ class PyOpenslidePython(PythonPackage):
version('1.1.1', sha256='33c390fe43e3d7d443fafdd66969392d3e9efd2ecd5d4af73c3dbac374485ed5')
- import_modules = ['openslide']
-
depends_on('openslide@3.4.0:')
depends_on('python@2.6:2.8,3.3:')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-opt-einsum/package.py b/var/spack/repos/builtin/packages/py-opt-einsum/package.py
index 0f430c76f8..9bf9c57fd2 100644
--- a/var/spack/repos/builtin/packages/py-opt-einsum/package.py
+++ b/var/spack/repos/builtin/packages/py-opt-einsum/package.py
@@ -21,6 +21,3 @@ class PyOptEinsum(PythonPackage):
depends_on('python@3.5:', type=('build', 'run'), when='@3:')
depends_on('py-setuptools', type='build')
depends_on('py-numpy@1.7:', type=('build', 'run'))
- depends_on('py-pytest', type='test')
- depends_on('py-pytest-cov', type='test')
- depends_on('py-pytest-pep8', type='test')
diff --git a/var/spack/repos/builtin/packages/py-ordereddict/package.py b/var/spack/repos/builtin/packages/py-ordereddict/package.py
index afba6ee6f3..f26d76e049 100644
--- a/var/spack/repos/builtin/packages/py-ordereddict/package.py
+++ b/var/spack/repos/builtin/packages/py-ordereddict/package.py
@@ -13,6 +13,4 @@ class PyOrdereddict(PythonPackage):
homepage = "https://pypi.python.org/pypi/ordereddict"
url = "https://pypi.io/packages/source/o/ordereddict/ordereddict-1.1.tar.gz"
- import_modules = ['ordereddict']
-
version('1.1', sha256='1c35b4ac206cef2d24816c89f89cf289dd3d38cf7c449bb3fab7bf6d43f01b1f')
diff --git a/var/spack/repos/builtin/packages/py-oset/package.py b/var/spack/repos/builtin/packages/py-oset/package.py
index 9dfb7c47db..7bbf9fac62 100644
--- a/var/spack/repos/builtin/packages/py-oset/package.py
+++ b/var/spack/repos/builtin/packages/py-oset/package.py
@@ -12,8 +12,6 @@ class PyOset(PythonPackage):
homepage = "https://pypi.python.org/pypi/oset"
url = "https://pypi.io/packages/source/o/oset/oset-0.1.3.tar.gz"
- import_modules = ['oset']
-
version('0.1.3', sha256='4c1fd7dec96eeff9d3260995a8e37f9f415d0bdb79975f57824e68716ac8f904')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-overpy/package.py b/var/spack/repos/builtin/packages/py-overpy/package.py
index 24b3186e17..80262e03bd 100644
--- a/var/spack/repos/builtin/packages/py-overpy/package.py
+++ b/var/spack/repos/builtin/packages/py-overpy/package.py
@@ -17,5 +17,4 @@ class PyOverpy(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-pytest-runner', type='build')
- depends_on('py-pytest', type='test')
depends_on('python@2.7:2.8,3.2:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-packaging/package.py b/var/spack/repos/builtin/packages/py-packaging/package.py
index 30b44d9522..89ed821735 100644
--- a/var/spack/repos/builtin/packages/py-packaging/package.py
+++ b/var/spack/repos/builtin/packages/py-packaging/package.py
@@ -12,22 +12,14 @@ class PyPackaging(PythonPackage):
homepage = "https://github.com/pypa/packaging"
url = "https://pypi.io/packages/source/p/packaging/packaging-19.2.tar.gz"
- import_modules = ['packaging']
-
version('19.2', sha256='28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47')
version('19.1', sha256='c491ca87294da7cc01902edbe30a5bc6c4c28172b5138ab4e4aa1b9d7bfaeafe')
version('19.0', sha256='0c98a5d0be38ed775798ece1b9727178c4469d9c3b4ada66e8e6b7849f8732af')
version('17.1', sha256='f019b770dd64e585a99714f1fd5e01c7a8f11b45635aa953fd41c689a657375b')
version('16.8', sha256='5d50835fdf0a7edf0b55e311b7c887786504efea1177abd7e69329a8e5ea619e')
+ depends_on('py-setuptools', type='build')
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-attrs', when='@19.1', type=('build', 'run'))
depends_on('py-pyparsing@2.0.2:', type=('build', 'run'))
depends_on('py-six', type=('build', 'run'))
-
- # Newer versions of setuptools require packaging. Although setuptools is an
- # optional dependency of packaging, if it is not found, setup.py will
- # fallback on distutils.core instead. Don't add a setuptools dependency
- # or we won't be able to bootstrap setuptools.
-
- # depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py
index 55f5d27f0e..320d31231b 100644
--- a/var/spack/repos/builtin/packages/py-pandas/package.py
+++ b/var/spack/repos/builtin/packages/py-pandas/package.py
@@ -14,17 +14,19 @@ class PyPandas(PythonPackage):
maintainers = ['adamjstewart']
import_modules = [
- 'pandas', 'pandas.compat', 'pandas.core', 'pandas.util', 'pandas.io',
- 'pandas.tseries', 'pandas._libs', 'pandas.plotting', 'pandas.arrays',
- 'pandas.api', 'pandas.errors', 'pandas._config', 'pandas.compat.numpy',
+ 'pandas', 'pandas.compat', 'pandas.compat.numpy', 'pandas.core',
'pandas.core.reshape', 'pandas.core.tools', 'pandas.core.util',
- 'pandas.core.dtypes', 'pandas.core.groupby', 'pandas.core.internals',
- 'pandas.core.computation', 'pandas.core.arrays', 'pandas.core.ops',
- 'pandas.core.sparse', 'pandas.core.indexes', 'pandas.io.msgpack',
- 'pandas.io.formats', 'pandas.io.excel', 'pandas.io.json',
- 'pandas.io.sas', 'pandas.io.clipboard', 'pandas._libs.tslibs',
- 'pandas.plotting._matplotlib', 'pandas.api.types',
- 'pandas.api.extensions'
+ 'pandas.core.array_algos', 'pandas.core.dtypes', 'pandas.core.groupby',
+ 'pandas.core.internals', 'pandas.core.computation',
+ 'pandas.core.window', 'pandas.core.arrays',
+ 'pandas.core.arrays.sparse', 'pandas.core.ops', 'pandas.core.sparse',
+ 'pandas.core.indexes', 'pandas.util', 'pandas.io', 'pandas.io.formats',
+ 'pandas.io.excel', 'pandas.io.json', 'pandas.io.sas',
+ 'pandas.io.clipboard', 'pandas.tseries', 'pandas._libs',
+ 'pandas._libs.window', 'pandas._libs.tslibs', 'pandas.plotting',
+ 'pandas.arrays', 'pandas.api', 'pandas.api.indexers',
+ 'pandas.api.types', 'pandas.api.extensions', 'pandas.errors',
+ 'pandas._config'
]
version('1.1.5', sha256='f10fc41ee3c75a474d3bdf68d396f10782d013d7f67db99c0efbfd0acb99701b')
@@ -80,10 +82,3 @@ class PyPandas(PythonPackage):
# Optional dependencies
# https://pandas.pydata.org/pandas-docs/stable/getting_started/install.html#optional-dependencies
-
- # Test dependencies
- # https://pandas.pydata.org/pandas-docs/stable/development/contributing.html#running-the-test-suite
- depends_on('py-pytest@4.0.2:', type='test')
- depends_on('py-pytest-xdist', type='test')
- depends_on('py-hypothesis@3.58:', type='test')
- depends_on('py-pyarrow@0.10.0:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-parso/package.py b/var/spack/repos/builtin/packages/py-parso/package.py
index 3f54eca9ce..cd0e93f273 100644
--- a/var/spack/repos/builtin/packages/py-parso/package.py
+++ b/var/spack/repos/builtin/packages/py-parso/package.py
@@ -19,5 +19,3 @@ class PyParso(PythonPackage):
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
- depends_on('py-pytest@3.0.7:', type='test')
- depends_on('py-docopt', type='test')
diff --git a/var/spack/repos/builtin/packages/py-partd/package.py b/var/spack/repos/builtin/packages/py-partd/package.py
index 8e99413822..751968fc53 100644
--- a/var/spack/repos/builtin/packages/py-partd/package.py
+++ b/var/spack/repos/builtin/packages/py-partd/package.py
@@ -12,8 +12,6 @@ class PyPartd(PythonPackage):
homepage = "http://github.com/dask/partd/"
url = "https://pypi.io/packages/source/p/partd/partd-0.3.8.tar.gz"
- import_modules = ['partd']
-
version('1.1.0', sha256='6e258bf0810701407ad1410d63d1a15cfd7b773fd9efe555dac6bb82cc8832b0')
version('0.3.10', sha256='33722a228ebcd1fa6f44b1631bdd4cff056376f89eb826d7d880b35b637bcfba')
version('0.3.8', sha256='67291f1c4827cde3e0148b3be5d69af64b6d6169feb9ba88f0a6cfe77089400f')
diff --git a/var/spack/repos/builtin/packages/py-pathlib2/package.py b/var/spack/repos/builtin/packages/py-pathlib2/package.py
index 5da1abbe18..10f547ce90 100644
--- a/var/spack/repos/builtin/packages/py-pathlib2/package.py
+++ b/var/spack/repos/builtin/packages/py-pathlib2/package.py
@@ -12,8 +12,6 @@ class PyPathlib2(PythonPackage):
homepage = "https://pypi.python.org/pypi/pathlib2"
url = "https://pypi.io/packages/source/p/pathlib2/pathlib2-2.3.2.tar.gz"
- import_modules = ['pathlib2']
-
version('2.3.3', sha256='25199318e8cc3c25dcb45cbe084cc061051336d5a9ea2a12448d3d8cb748f742')
version('2.3.2', sha256='8eb170f8d0d61825e09a95b38be068299ddeda82f35e96c3301a8a5e7604cb83')
version('2.1.0', sha256='deb3a960c1d55868dfbcac98432358b92ba89d95029cddd4040db1f27405055c')
diff --git a/var/spack/repos/builtin/packages/py-patsy/package.py b/var/spack/repos/builtin/packages/py-patsy/package.py
index eb20c74049..6b265dbfb3 100644
--- a/var/spack/repos/builtin/packages/py-patsy/package.py
+++ b/var/spack/repos/builtin/packages/py-patsy/package.py
@@ -21,5 +21,3 @@ class PyPatsy(PythonPackage):
depends_on('py-numpy', type=('build', 'run'))
depends_on('py-scipy', type=('build', 'run'), when="+splines")
depends_on('py-six', type=('build', 'run'))
-
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pbr/package.py b/var/spack/repos/builtin/packages/py-pbr/package.py
index 80abed9db0..27bee158f6 100644
--- a/var/spack/repos/builtin/packages/py-pbr/package.py
+++ b/var/spack/repos/builtin/packages/py-pbr/package.py
@@ -22,19 +22,3 @@ class PyPbr(PythonPackage):
depends_on('python@2.6:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- # test-requirements.txt
- depends_on('py-wheel@0.32.0:', type='test')
- depends_on('py-fixtures@3.0.0:', type='test')
- depends_on('py-hacking@0.12.0:0.12.999,0.13.1:0.13.999', type='test')
- depends_on('py-mock@2.0.0:', type='test')
- depends_on('py-six@1.10.0:', type='test')
- depends_on('py-stestr@2.1.0:', type='test')
- depends_on('py-testresources@2.0.0:', type='test')
- depends_on('py-testscenarios@0.4:', type='test')
- depends_on('py-testtools@2.2.0:', type='test')
- depends_on('py-virtualenv@14.0.6:', type='test')
- depends_on('py-coverage@4.0:4.3,4.5:', type='test')
- depends_on('py-sphinx@1.6.2:1.6.5,1.6.8:1.999', when='^python@:2', type='test')
- depends_on('py-sphinx@1.6.2:1.6.5,1.6.8:', type='test')
- depends_on('py-testrepository@0.0.18:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pep8/package.py b/var/spack/repos/builtin/packages/py-pep8/package.py
index d1eaa13470..ab5c65c5d2 100644
--- a/var/spack/repos/builtin/packages/py-pep8/package.py
+++ b/var/spack/repos/builtin/packages/py-pep8/package.py
@@ -12,8 +12,6 @@ class PyPep8(PythonPackage):
homepage = "https://pep8.readthedocs.org/"
url = "https://pypi.io/packages/source/p/pep8/pep8-1.7.1.tar.gz"
- import_modules = ['pep8']
-
version('1.7.1', sha256='fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374')
depends_on('py-setuptools', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py
index 5ff2621c2d..c12b35deb5 100644
--- a/var/spack/repos/builtin/packages/py-pillow/package.py
+++ b/var/spack/repos/builtin/packages/py-pillow/package.py
@@ -7,7 +7,6 @@ class PyPillowBase(PythonPackage):
"""Base class for Pillow and its fork Pillow-SIMD."""
maintainers = ['adamjstewart']
- import_modules = ['PIL']
provides('pil')
@@ -36,9 +35,6 @@ class PyPillowBase(PythonPackage):
depends_on('python@2.6:2.8,3.2:3.5', when='@2:3', type=('build', 'run'))
depends_on('python@2.4:2.7', when='@:1', type=('build', 'run'))
depends_on('py-setuptools', type='build')
- depends_on('py-pytest', type='test')
- depends_on('py-pytest-runner', type='test')
- depends_on('imagemagick', type='test')
# Optional dependencies
depends_on('zlib', when='+zlib')
@@ -98,8 +94,6 @@ class PyPillowBase(PythonPackage):
env.set('MAX_CONCURRENCY', str(make_jobs))
# Tests need to be re-added since `phases` was overridden
- run_after('build_ext')(
- PythonPackage._run_default_build_time_test_callbacks)
run_after('install')(
PythonPackage._run_default_install_time_test_callbacks)
run_after('install')(PythonPackage.sanity_check_prefix)
diff --git a/var/spack/repos/builtin/packages/py-pkgconfig/package.py b/var/spack/repos/builtin/packages/py-pkgconfig/package.py
index f519422138..550a936dcb 100644
--- a/var/spack/repos/builtin/packages/py-pkgconfig/package.py
+++ b/var/spack/repos/builtin/packages/py-pkgconfig/package.py
@@ -19,7 +19,4 @@ class PyPkgconfig(PythonPackage):
depends_on('python@2.6:2.8,3.3:', type=('build', 'run'))
depends_on('python@2.7:2.8,3.3:', when='@1.5:', type=('build', 'run'))
depends_on('py-setuptools', when='@:1.4', type=('build', 'run'))
-
depends_on('pkgconfig', type=('build', 'run'))
-
- depends_on('py-nose@1.0:', type=('build', 'test'))
diff --git a/var/spack/repos/builtin/packages/py-pkginfo/package.py b/var/spack/repos/builtin/packages/py-pkginfo/package.py
index ed00f37a5d..366f4a9471 100644
--- a/var/spack/repos/builtin/packages/py-pkginfo/package.py
+++ b/var/spack/repos/builtin/packages/py-pkginfo/package.py
@@ -15,5 +15,3 @@ class PyPkginfo(PythonPackage):
version('1.5.0.1', sha256='7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb')
depends_on('py-setuptools', type=('build', 'run'))
- depends_on('py-nose', type='test')
- depends_on('py-coverage', type='test')
diff --git a/var/spack/repos/builtin/packages/py-planet/package.py b/var/spack/repos/builtin/packages/py-planet/package.py
index 89b888097e..617c0e8efc 100644
--- a/var/spack/repos/builtin/packages/py-planet/package.py
+++ b/var/spack/repos/builtin/packages/py-planet/package.py
@@ -14,9 +14,6 @@ class PyPlanet(PythonPackage):
version('1.4.6', sha256='43ff6a765f465302f500aaf65b81a46ac6aad7bb42899e4a7543bdc293d4ca0d')
depends_on('py-setuptools', type='build')
- depends_on('py-mock', type='test')
- depends_on('py-pytest', type='test')
- depends_on('py-requests-mock', type='test')
depends_on('py-click', type=('build', 'run'))
depends_on('py-requests', type=('build', 'run'))
depends_on('py-requests-futures@0.9.7', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-pluggy/package.py b/var/spack/repos/builtin/packages/py-pluggy/package.py
index 1e2fb3f2bd..41a6780e41 100644
--- a/var/spack/repos/builtin/packages/py-pluggy/package.py
+++ b/var/spack/repos/builtin/packages/py-pluggy/package.py
@@ -12,8 +12,6 @@ class PyPluggy(PythonPackage):
homepage = "https://github.com/pytest-dev/pluggy"
url = "https://pypi.io/packages/source/p/pluggy/pluggy-0.13.0.tar.gz"
- import_modules = ['pluggy']
-
version('0.13.0', sha256='fa5fa1622fa6dd5c030e9cad086fa19ef6a0cf6d7a2d12318e10cb49d6d68f34')
version('0.12.0', sha256='0825a152ac059776623854c1543d65a4ad408eb3d33ee114dff91e57ec6ae6fc')
version('0.7.1', sha256='95eb8364a4708392bae89035f45341871286a333f749c3141c20573d2b3876e1')
diff --git a/var/spack/repos/builtin/packages/py-preshed/package.py b/var/spack/repos/builtin/packages/py-preshed/package.py
index cb8cc2ed10..1798c1fbdc 100644
--- a/var/spack/repos/builtin/packages/py-preshed/package.py
+++ b/var/spack/repos/builtin/packages/py-preshed/package.py
@@ -15,4 +15,3 @@ class PyPreshed(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-cymem@2.0.2:2.0.999', type=('build', 'run'))
depends_on('py-murmurhash@0.28:1.0', type=('build', 'run'))
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-projectq/package.py b/var/spack/repos/builtin/packages/py-projectq/package.py
index d22a51584f..d1f9efc2a0 100644
--- a/var/spack/repos/builtin/packages/py-projectq/package.py
+++ b/var/spack/repos/builtin/packages/py-projectq/package.py
@@ -19,11 +19,6 @@ class PyProjectq(PythonPackage):
homepage = "https://projectq.ch"
git = "https://github.com/projectq-framework/projectq.git"
- # Provided python modules
- import_modules = ['projectq', 'projectq.backends', 'projectq.cengines',
- 'projectq.libs', 'projectq.meta', 'projectq.ops',
- 'projectq.setups', 'projectq.types']
-
# Versions
version('develop', branch='develop')
version('0.3.6', commit='fa484fe037a3a1772127bbd00fe4628ddba34611')
@@ -33,7 +28,6 @@ class PyProjectq(PythonPackage):
depends_on('py-numpy', type=('build', 'run'))
depends_on('py-scipy', type=('build', 'run'))
depends_on('py-future', type=('build', 'run'))
- depends_on('py-pytest@3.1.0:', type=('test'))
depends_on('py-requests', type=('build', 'run'))
# conflict with pybind11@2.2.0 -> see requirements.txt
depends_on('py-pybind11@1.7:2.1,2.2.1:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-prometheus-client/package.py b/var/spack/repos/builtin/packages/py-prometheus-client/package.py
index 86733359cf..afb0f282e1 100644
--- a/var/spack/repos/builtin/packages/py-prometheus-client/package.py
+++ b/var/spack/repos/builtin/packages/py-prometheus-client/package.py
@@ -20,3 +20,15 @@ class PyPrometheusClient(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-twisted', type=('build', 'run'), when='+twisted')
+
+ @property
+ def import_modules(self):
+ modules = [
+ 'prometheus_client', 'prometheus_client.openmetrics',
+ 'prometheus_client.bridge'
+ ]
+
+ if '+twisted' in self.spec:
+ modules.append('prometheus_client.twisted')
+
+ return modules
diff --git a/var/spack/repos/builtin/packages/py-psutil/package.py b/var/spack/repos/builtin/packages/py-psutil/package.py
index ba64a0e0eb..70f898de39 100644
--- a/var/spack/repos/builtin/packages/py-psutil/package.py
+++ b/var/spack/repos/builtin/packages/py-psutil/package.py
@@ -23,6 +23,3 @@ class PyPsutil(PythonPackage):
depends_on('python@2.6:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
- depends_on('py-unittest2', when='^python@:2.6', type='test')
- depends_on('py-mock', when='^python@:2.7', type='test')
- depends_on('py-ipaddress', when='^python@:3.2', type='test')
diff --git a/var/spack/repos/builtin/packages/py-py/package.py b/var/spack/repos/builtin/packages/py-py/package.py
index 995612d20a..e7320a0124 100644
--- a/var/spack/repos/builtin/packages/py-py/package.py
+++ b/var/spack/repos/builtin/packages/py-py/package.py
@@ -12,11 +12,6 @@ class PyPy(PythonPackage):
homepage = "http://pylib.readthedocs.io/en/latest/"
url = "https://pypi.io/packages/source/p/py/py-1.8.0.tar.gz"
- import_modules = [
- 'py', 'py._process', 'py._vendored_packages', 'py._path',
- 'py._log', 'py._code', 'py._io'
- ]
-
version('1.8.0', sha256='dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53')
version('1.5.4', sha256='3fd59af7435864e1a243790d322d763925431213b6b8529c6ca71081ace3bbf7')
version('1.5.3', sha256='29c9fab495d7528e80ba1e343b958684f4ace687327e6f789a94bf3d1915f881')
@@ -27,7 +22,3 @@ class PyPy(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-setuptools-scm', type='build')
-
- def build_test(self):
- # Tests require pytest, creating a circular dependency
- pass
diff --git a/var/spack/repos/builtin/packages/py-py2cairo/package.py b/var/spack/repos/builtin/packages/py-py2cairo/package.py
index 5c492a9167..b8ab752c5f 100644
--- a/var/spack/repos/builtin/packages/py-py2cairo/package.py
+++ b/var/spack/repos/builtin/packages/py-py2cairo/package.py
@@ -23,6 +23,8 @@ class PyPy2cairo(WafPackage):
depends_on('py-pytest', type='test')
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
def install_test(self):
with working_dir('test'):
pytest = which('py.test')
diff --git a/var/spack/repos/builtin/packages/py-py4j/package.py b/var/spack/repos/builtin/packages/py-py4j/package.py
index e67f5a3ec7..e291dac918 100644
--- a/var/spack/repos/builtin/packages/py-py4j/package.py
+++ b/var/spack/repos/builtin/packages/py-py4j/package.py
@@ -19,4 +19,3 @@ class PyPy4j(PythonPackage):
version('0.10.3', sha256='f4570108ad014dd52a65c2288418e31cb8227b5ecc39ad7fc7fe98314f7a26f2')
depends_on('py-setuptools', type='build')
- depends_on('py-nose@1.3.7:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pyarrow/package.py b/var/spack/repos/builtin/packages/py-pyarrow/package.py
index 3f8c3f640e..0e1c73909e 100644
--- a/var/spack/repos/builtin/packages/py-pyarrow/package.py
+++ b/var/spack/repos/builtin/packages/py-pyarrow/package.py
@@ -31,11 +31,6 @@ class PyPyarrow(PythonPackage, CudaPackage):
depends_on('py-setuptools-scm', type='build', when='@0.15.0:')
depends_on('py-cython', type='build')
depends_on('py-cython@0.29:', type='build', when='@0.15.0:')
- depends_on('py-pytest-runner', type='test', when='@0.17:')
- depends_on('py-pytest', type='test', when='@0.15.0:')
- depends_on('py-pandas', type='test', when='@0.15.0:')
- depends_on('py-hypothesis', type='test', when='@0.15.0:')
- depends_on('py-pathlib2', type='test', when='@0.15.0: ^python@:3.3.99')
depends_on('py-numpy@1.14:', type=('build', 'run'), when='@0.15.0:')
depends_on('py-six@1.0.0:', type=('build', 'run'), when='@0.15.0:')
depends_on('py-futures', type=('build', 'run'), when='@0.15.0:^python@:3.1.99')
diff --git a/var/spack/repos/builtin/packages/py-pybind11/package.py b/var/spack/repos/builtin/packages/py-pybind11/package.py
index 92db96105a..bf9ff13fd0 100644
--- a/var/spack/repos/builtin/packages/py-pybind11/package.py
+++ b/var/spack/repos/builtin/packages/py-pybind11/package.py
@@ -36,7 +36,6 @@ class PyPybind11(CMakePackage):
version('2.1.1', sha256='f2c6874f1ea5b4ad4ffffe352413f7d2cd1a49f9050940805c2a082348621540')
version('2.1.0', sha256='2860f2b8d0c9f65f0698289a161385f59d099b7ead1bf64e8993c486f2b93ee0')
- depends_on('py-pytest', type='test')
depends_on('py-setuptools', type='build')
extends('python')
diff --git a/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py b/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py
index ba93a2a994..c2df3bf8ee 100644
--- a/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py
+++ b/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py
@@ -12,8 +12,6 @@ class PyPybtexDocutils(PythonPackage):
homepage = "https://pypi.python.org/pypi/pybtex-docutils/"
url = "https://pypi.io/packages/source/p/pybtex-docutils/pybtex-docutils-0.2.1.tar.gz"
- import_modules = ['pybtex_docutils']
-
version('0.2.1', sha256='e4b075641c1d68a3e98a6d73ad3d029293fcf9e0773512315ef9c8482f251337')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-pybtex/package.py b/var/spack/repos/builtin/packages/py-pybtex/package.py
index 56bfb42a50..2df63fbd46 100644
--- a/var/spack/repos/builtin/packages/py-pybtex/package.py
+++ b/var/spack/repos/builtin/packages/py-pybtex/package.py
@@ -14,18 +14,6 @@ class PyPybtex(PythonPackage):
homepage = "https://pybtex.org"
url = "https://pypi.io/packages/source/P/Pybtex/pybtex-0.21.tar.gz"
- import_modules = [
- 'custom_fixers', 'pybtex', 'pybtex.style', 'pybtex.tests',
- 'pybtex.database', 'pybtex.backends', 'pybtex.bibtex',
- 'pybtex.charwidths', 'pybtex.markup', 'pybtex.plugin',
- 'pybtex.style.sorting', 'pybtex.style.names',
- 'pybtex.style.labels', 'pybtex.style.formatting',
- 'pybtex.tests.database_test', 'pybtex.tests.bst_parser_test',
- 'pybtex.tests.data', 'pybtex.database.output',
- 'pybtex.database.input', 'pybtex.database.format',
- 'pybtex.database.convert'
- ]
-
version('0.21', sha256='af8a6c7c74954ad305553b118d2757f68bc77c5dd5d5de2cc1fd16db90046000')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-pycparser/package.py b/var/spack/repos/builtin/packages/py-pycparser/package.py
index 6d8c217e91..6eef675ba4 100644
--- a/var/spack/repos/builtin/packages/py-pycparser/package.py
+++ b/var/spack/repos/builtin/packages/py-pycparser/package.py
@@ -12,8 +12,6 @@ class PyPycparser(PythonPackage):
homepage = "https://github.com/eliben/pycparser"
url = "https://pypi.io/packages/source/p/pycparser/pycparser-2.19.tar.gz"
- import_modules = ['pycparser', 'pycparser.ply']
-
version('2.20', sha256='2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0')
version('2.19', sha256='a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3')
version('2.18', sha256='99a8ca03e29851d96616ad0404b4aad7d9ee16f25c9f9708a11faf2810f7b226')
diff --git a/var/spack/repos/builtin/packages/py-pycuda/package.py b/var/spack/repos/builtin/packages/py-pycuda/package.py
index a5f2153d9d..544c739d23 100644
--- a/var/spack/repos/builtin/packages/py-pycuda/package.py
+++ b/var/spack/repos/builtin/packages/py-pycuda/package.py
@@ -27,5 +27,3 @@ class PyPycuda(PythonPackage):
depends_on('py-mako', type='run')
depends_on('cuda@:8.0.61', when='@2016.1.2')
-
- depends_on('py-pytest@2:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pydotplus/package.py b/var/spack/repos/builtin/packages/py-pydotplus/package.py
index 07370cbc1c..ccea3438cf 100644
--- a/var/spack/repos/builtin/packages/py-pydotplus/package.py
+++ b/var/spack/repos/builtin/packages/py-pydotplus/package.py
@@ -18,7 +18,6 @@ class PyPydotplus(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-pyparsing@2.0.1:', type=('build', 'run'))
- depends_on('py-pytest', type='test')
depends_on('py-sphinx', type='build', when='+docs')
depends_on('py-sphinx-rtd-theme', type='build', when='+docs')
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-pygments/package.py b/var/spack/repos/builtin/packages/py-pygments/package.py
index d7559b36d8..585a3b2cbb 100644
--- a/var/spack/repos/builtin/packages/py-pygments/package.py
+++ b/var/spack/repos/builtin/packages/py-pygments/package.py
@@ -12,11 +12,6 @@ class PyPygments(PythonPackage):
homepage = "http://pygments.org/"
url = "https://pypi.io/packages/source/P/Pygments/Pygments-2.4.2.tar.gz"
- import_modules = [
- 'pygments', 'pygments.filters', 'pygments.formatters',
- 'pygments.lexers', 'pygments.styles'
- ]
-
version('2.6.1', sha256='647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44')
version('2.4.2', sha256='881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297')
version('2.3.1', sha256='5ffada19f6203563680669ee7f53b64dabbeb100eb51b61996085e99c03b284a')
@@ -28,7 +23,3 @@ class PyPygments(PythonPackage):
depends_on('python@2.7:2.8,3.5:', type=('build', 'run'), when='@:2.5')
depends_on('python@3.5:', type=('build', 'run'), when='@2.6:')
depends_on('py-setuptools', type=('build', 'run'))
-
- def build_test(self):
- # Unit tests require sphinx, but that creates a circular dependency
- pass
diff --git a/var/spack/repos/builtin/packages/py-pyinstrument-cext/package.py b/var/spack/repos/builtin/packages/py-pyinstrument-cext/package.py
index 4eb2f799c1..970f5c5f16 100644
--- a/var/spack/repos/builtin/packages/py-pyinstrument-cext/package.py
+++ b/var/spack/repos/builtin/packages/py-pyinstrument-cext/package.py
@@ -15,4 +15,3 @@ class PyPyinstrumentCext(PythonPackage):
version('0.2.2', sha256='f29e25f71d74c0415ca9310e5567fff0f5d29f4240a09a885abf8b0eed71cc5b')
depends_on('py-setuptools', type='build')
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pyinstrument/package.py b/var/spack/repos/builtin/packages/py-pyinstrument/package.py
index ffc4c9ef0b..8acd33773e 100644
--- a/var/spack/repos/builtin/packages/py-pyinstrument/package.py
+++ b/var/spack/repos/builtin/packages/py-pyinstrument/package.py
@@ -19,4 +19,3 @@ class PyPyinstrument(PythonPackage):
depends_on('py-pytest-runner', type='build')
depends_on('npm', type='build')
depends_on('py-pyinstrument-cext@0.2.2:', type=('build', 'run'))
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pyjwt/package.py b/var/spack/repos/builtin/packages/py-pyjwt/package.py
index a8006ef623..fa76c2a39a 100644
--- a/var/spack/repos/builtin/packages/py-pyjwt/package.py
+++ b/var/spack/repos/builtin/packages/py-pyjwt/package.py
@@ -19,6 +19,3 @@ class PyPyjwt(PythonPackage):
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
depends_on('py-cryptography@1.4:', when='+crypto', type=('build', 'run'))
- depends_on('py-pytest@4.0.1:4.99.99', type='test')
- depends_on('py-pytest-cov@2.6.0:2.99.99', type='test')
- depends_on('py-pytest-runner@4.2:4.99', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pykml/package.py b/var/spack/repos/builtin/packages/py-pykml/package.py
index bfa1359ebf..38a47c94de 100644
--- a/var/spack/repos/builtin/packages/py-pykml/package.py
+++ b/var/spack/repos/builtin/packages/py-pykml/package.py
@@ -19,4 +19,3 @@ class PyPykml(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-lxml@2.2.6:', type=('build', 'run'))
- depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pynn/package.py b/var/spack/repos/builtin/packages/py-pynn/package.py
index 12304f9c9c..85d22a9dd5 100644
--- a/var/spack/repos/builtin/packages/py-pynn/package.py
+++ b/var/spack/repos/builtin/packages/py-pynn/package.py
@@ -30,5 +30,3 @@ class PyPynn(PythonPackage):
depends_on('py-neo@0.3:0.4.1', type=('build', 'run'), when="@:0.8.3")
depends_on('py-neo@0.5.0:', type=('build', 'run'), when="@0.9.0:")
-
- depends_on('py-mock@1.0:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pyparsing/package.py b/var/spack/repos/builtin/packages/py-pyparsing/package.py
index ea7efac809..bb22f34c20 100644
--- a/var/spack/repos/builtin/packages/py-pyparsing/package.py
+++ b/var/spack/repos/builtin/packages/py-pyparsing/package.py
@@ -11,8 +11,6 @@ class PyPyparsing(PythonPackage):
homepage = "http://pyparsing.wikispaces.com/"
url = "https://pypi.io/packages/source/p/pyparsing/pyparsing-2.4.2.tar.gz"
- import_modules = ['pyparsing']
-
version('2.4.2', sha256='6f98a7b9397e206d78cc01df10131398f1c8b8510a2f4d97d9abd82e1aacdd80')
version('2.4.0', sha256='1873c03321fc118f4e9746baf201ff990ceb915f433f23b395f5580d1840cb2a')
version('2.3.1', sha256='66c9268862641abcac4a96ba74506e594c884e3f57690a696d21ad8210ed667a')
diff --git a/var/spack/repos/builtin/packages/py-pyprecice/package.py b/var/spack/repos/builtin/packages/py-pyprecice/package.py
index 36cb9957f5..8636fbb586 100644
--- a/var/spack/repos/builtin/packages/py-pyprecice/package.py
+++ b/var/spack/repos/builtin/packages/py-pyprecice/package.py
@@ -26,9 +26,6 @@ class PyPyprecice(PythonPackage):
version("2.0.0.2", sha256="5f055d809d65ec2e81f4d001812a250f50418de59990b47d6bcb12b88da5f5d7")
version("2.0.0.1", sha256="96eafdf421ec61ad6fcf0ab1d3cf210831a815272984c470b2aea57d4d0c9e0e")
- # Import module as a test
- import_modules = ["precice"]
-
patch("deactivate-version-check-via-pip.patch")
variant("mpi", default=True, description="Enables MPI support")
diff --git a/var/spack/repos/builtin/packages/py-pyproj/package.py b/var/spack/repos/builtin/packages/py-pyproj/package.py
index dfc0edf924..7c4e2eb80c 100644
--- a/var/spack/repos/builtin/packages/py-pyproj/package.py
+++ b/var/spack/repos/builtin/packages/py-pyproj/package.py
@@ -14,7 +14,6 @@ class PyPyproj(PythonPackage):
git = "https://github.com/pyproj4/pyproj.git"
maintainers = ['citibeth', 'adamjstewart']
- import_modules = ['pyproj']
version('2.6.0', sha256='977542d2f8cf2981cf3ad72cedfebcd6ac56977c7aa830d9b49fa7888b56e83d')
version('2.2.0', sha256='0a4f793cc93539c2292638c498e24422a2ec4b25cb47545addea07724b2a56e5')
diff --git a/var/spack/repos/builtin/packages/py-pyqt4/package.py b/var/spack/repos/builtin/packages/py-pyqt4/package.py
index 5405911401..bd2b8f9cc9 100644
--- a/var/spack/repos/builtin/packages/py-pyqt4/package.py
+++ b/var/spack/repos/builtin/packages/py-pyqt4/package.py
@@ -16,13 +16,6 @@ class PyPyqt4(SIPPackage):
url = "http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.12.3/PyQt4_gpl_x11-4.12.3.tar.gz"
sip_module = 'PyQt4.sip'
- import_modules = [
- 'PyQt4', 'PyQt4.Qt', 'PyQt4.QtCore', 'PyQt4.QtDeclarative',
- 'PyQt4.QtDesigner', 'PyQt4.QtGui', 'PyQt4.QtHelp',
- 'PyQt4.QtMultimedia', 'PyQt4.QtNetwork', 'PyQt4.QtOpenGL',
- 'PyQt4.QtScript', 'PyQt4.QtScriptTools', 'PyQt4.QtSql', 'PyQt4.QtSvg',
- 'PyQt4.QtTest', 'PyQt4.QtWebKit', 'PyQt4.QtXml', 'PyQt4.QtXmlPatterns'
- ]
version('4.12.3', sha256='a00f5abef240a7b5852b7924fa5fdf5174569525dc076cd368a566619e56d472')
version('4.11.3', sha256='853780dcdbe2e6ba785d703d059b096e1fc49369d3e8d41a060be874b8745686',
diff --git a/var/spack/repos/builtin/packages/py-pyqt5/package.py b/var/spack/repos/builtin/packages/py-pyqt5/package.py
index e26c66a891..2770ffe20d 100644
--- a/var/spack/repos/builtin/packages/py-pyqt5/package.py
+++ b/var/spack/repos/builtin/packages/py-pyqt5/package.py
@@ -16,14 +16,6 @@ class PyPyqt5(SIPPackage):
list_url = "https://www.riverbankcomputing.com/software/pyqt/download5"
sip_module = 'PyQt5.sip'
- import_modules = [
- 'PyQt5', 'PyQt5.QtCore', 'PyQt5.QtGui', 'PyQt5.QtHelp',
- 'PyQt5.QtMultimedia', 'PyQt5.QtMultimediaWidgets', 'PyQt5.QtNetwork',
- 'PyQt5.QtOpenGL', 'PyQt5.QtPrintSupport', 'PyQt5.QtQml',
- 'PyQt5.QtQuick', 'PyQt5.QtSvg', 'PyQt5.QtTest', 'PyQt5.QtWebChannel',
- 'PyQt5.QtWebSockets', 'PyQt5.QtWidgets', 'PyQt5.QtXml',
- 'PyQt5.QtXmlPatterns'
- ]
version('5.13.1', sha256='54b7f456341b89eeb3930e786837762ea67f235e886512496c4152ebe106d4af')
version('5.13.0', sha256='0cdbffe5135926527b61cc3692dd301cd0328dd87eeaf1313e610787c46faff9')
diff --git a/var/spack/repos/builtin/packages/py-pysocks/package.py b/var/spack/repos/builtin/packages/py-pysocks/package.py
index 200902f536..2a37391e63 100644
--- a/var/spack/repos/builtin/packages/py-pysocks/package.py
+++ b/var/spack/repos/builtin/packages/py-pysocks/package.py
@@ -18,5 +18,3 @@ class PyPysocks(PythonPackage):
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
- depends_on('py-psutil', type='test')
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py b/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py
index 5e270bf4df..241828a977 100644
--- a/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py
+++ b/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py
@@ -23,4 +23,3 @@ class PyPytestHttpbin(PythonPackage):
depends_on('py-decorator', when='@:0.2', type=('build', 'run'))
depends_on('py-httpbin', type=('build', 'run'))
depends_on('py-six', type=('build', 'run'))
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pytest-isort/package.py b/var/spack/repos/builtin/packages/py-pytest-isort/package.py
index d55b9550e2..2218d5debf 100644
--- a/var/spack/repos/builtin/packages/py-pytest-isort/package.py
+++ b/var/spack/repos/builtin/packages/py-pytest-isort/package.py
@@ -11,7 +11,6 @@ class PyPytestIsort(PythonPackage):
homepage = "http://github.com/moccu/pytest-isort/"
url = "https://pypi.io/packages/source/p/pytest-isort/pytest-isort-0.3.1.tar.gz"
- import_modules = ['pytest_isort']
version('0.3.1', sha256='4bfee60dad1870b51700d55a85f5ceda766bd9d3d2878c1bbabee80e61b1be1a')
diff --git a/var/spack/repos/builtin/packages/py-pytest-pep8/package.py b/var/spack/repos/builtin/packages/py-pytest-pep8/package.py
index f365a172eb..eb8ae7d974 100644
--- a/var/spack/repos/builtin/packages/py-pytest-pep8/package.py
+++ b/var/spack/repos/builtin/packages/py-pytest-pep8/package.py
@@ -12,8 +12,6 @@ class PyPytestPep8(PythonPackage):
homepage = "https://bitbucket.org/pytest-dev/pytest-pep8"
url = "https://pypi.io/packages/source/p/pytest-pep8/pytest-pep8-1.0.6.tar.gz"
- import_modules = ['pytest_pep8']
-
version('1.0.6', sha256='032ef7e5fa3ac30f4458c73e05bb67b0f036a8a5cb418a534b3170f89f120318')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-pytest-runner/package.py b/var/spack/repos/builtin/packages/py-pytest-runner/package.py
index d3337bcac9..79135892f6 100644
--- a/var/spack/repos/builtin/packages/py-pytest-runner/package.py
+++ b/var/spack/repos/builtin/packages/py-pytest-runner/package.py
@@ -12,8 +12,6 @@ class PyPytestRunner(PythonPackage):
homepage = "https://github.com/pytest-dev/pytest-runner"
url = "https://pypi.io/packages/source/p/pytest-runner/pytest-runner-5.1.tar.gz"
- import_modules = ['ptr']
-
version('5.1', sha256='25a013c8d84f0ca60bb01bd11913a3bcab420f601f0f236de4423074af656e7a')
version('2.11.1', sha256='983a31eab45e375240e250161a556163bc8d250edaba97960909338c273a89b3')
diff --git a/var/spack/repos/builtin/packages/py-pytest/package.py b/var/spack/repos/builtin/packages/py-pytest/package.py
index b6d2c914c5..696aa573c2 100644
--- a/var/spack/repos/builtin/packages/py-pytest/package.py
+++ b/var/spack/repos/builtin/packages/py-pytest/package.py
@@ -12,8 +12,6 @@ class PyPytest(PythonPackage):
homepage = "http://pytest.org/"
url = "https://pypi.io/packages/source/p/pytest/pytest-5.2.1.tar.gz"
- import_modules = ['pytest']
-
version('5.3.4', sha256='1d122e8be54d1a709e56f82e2d85dcba3018313d64647f38a91aec88c239b600')
version('5.2.1', sha256='ca563435f4941d0cb34767301c27bc65c510cb82e90b9ecf9cb52dc2c63caaa0')
version('5.1.1', sha256='c3d5020755f70c82eceda3feaf556af9a341334414a8eca521a18f463bcead88')
diff --git a/var/spack/repos/builtin/packages/py-python-dateutil/package.py b/var/spack/repos/builtin/packages/py-python-dateutil/package.py
index 16bff6858d..cf8ea1f90d 100644
--- a/var/spack/repos/builtin/packages/py-python-dateutil/package.py
+++ b/var/spack/repos/builtin/packages/py-python-dateutil/package.py
@@ -12,10 +12,6 @@ class PyPythonDateutil(PythonPackage):
homepage = "https://dateutil.readthedocs.io/"
url = "https://pypi.io/packages/source/p/python-dateutil/python-dateutil-2.8.0.tar.gz"
- import_modules = [
- 'dateutil', 'dateutil.zoneinfo', 'dateutil.parser', 'dateutil.tz'
- ]
-
version('2.8.0', sha256='c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e')
version('2.7.5', sha256='88f9287c0174266bb0d8cedd395cfba9c58e87e5ad86b2ce58859bc11be3cf02')
version('2.5.2', sha256='063907ef47f6e187b8fe0728952e4effb587a34f2dc356888646f9b71fbb2e4b')
@@ -27,13 +23,3 @@ class PyPythonDateutil(PythonPackage):
depends_on('py-setuptools@24.3:', type='build')
depends_on('py-setuptools-scm', type='build', when='@2.7.0:')
depends_on('py-six@1.5:', type=('build', 'run'))
- # depends_on('py-pytest', type='test')
- # depends_on('py-hypothesis', type='test')
- # depends_on('py-freezegun', type='test')
-
- def build_test(self):
- # Tests require freezegun, which depends on python-dateutil,
- # creating circular dependency
- # pytest = which('pytest')
- # pytest()
- pass
diff --git a/var/spack/repos/builtin/packages/py-python-swiftclient/package.py b/var/spack/repos/builtin/packages/py-python-swiftclient/package.py
index a016686406..a8f24784be 100644
--- a/var/spack/repos/builtin/packages/py-python-swiftclient/package.py
+++ b/var/spack/repos/builtin/packages/py-python-swiftclient/package.py
@@ -14,8 +14,6 @@ class PyPythonSwiftclient(PythonPackage):
maintainers = ['ajkotobi']
- import_modules = ['sys', 'setuptools', 'requests']
-
version('3.10.0', sha256='66227eaf29a691c70675fb9982022980b92797c273dd5e6dc7e680425e9a3634')
version('3.9.0', sha256='4f2097492e4c76e948882fc859bfa033ade09bed72f8e6b328e34a3467d9a377')
version('3.8.1', sha256='3a013303643f77a99befa05582dfb93671e1fba1aed9f4a517418129700aedb8')
diff --git a/var/spack/repos/builtin/packages/py-python-utils/package.py b/var/spack/repos/builtin/packages/py-python-utils/package.py
index 6c8e3aa732..e192c67cc9 100644
--- a/var/spack/repos/builtin/packages/py-python-utils/package.py
+++ b/var/spack/repos/builtin/packages/py-python-utils/package.py
@@ -19,5 +19,3 @@ class PyPythonUtils(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-six', type=('build', 'run'))
- depends_on('py-pytest', type='test')
- depends_on('py-pytest-runner', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pytz/package.py b/var/spack/repos/builtin/packages/py-pytz/package.py
index d4d752fdaa..601509d9ba 100644
--- a/var/spack/repos/builtin/packages/py-pytz/package.py
+++ b/var/spack/repos/builtin/packages/py-pytz/package.py
@@ -12,8 +12,6 @@ class PyPytz(PythonPackage):
homepage = "http://pythonhosted.org/pytz"
url = "https://pypi.io/packages/source/p/pytz/pytz-2019.3.tar.gz"
- import_modules = ['pytz']
-
version('2020.1', sha256='c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048')
version('2019.3', sha256='b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be')
version('2019.1', sha256='d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141')
diff --git a/var/spack/repos/builtin/packages/py-pywavelets/package.py b/var/spack/repos/builtin/packages/py-pywavelets/package.py
index 460c6011e7..91d077d13e 100644
--- a/var/spack/repos/builtin/packages/py-pywavelets/package.py
+++ b/var/spack/repos/builtin/packages/py-pywavelets/package.py
@@ -17,8 +17,6 @@ class PyPywavelets(PythonPackage):
version('1.1.1', sha256='1a64b40f6acb4ffbaccce0545d7fc641744f95351f62e4c6aaa40549326008c9')
version('0.5.2', sha256='ce36e2f0648ea1781490b09515363f1f64446b0eac524603e5db5e180113bed9')
- import_modules = ['pywt', 'pywt.data']
-
depends_on('python@3.5:', type=('build', 'run'), when='@1.1.1:')
depends_on('py-setuptools', type='build')
depends_on('py-cython', type='build')
diff --git a/var/spack/repos/builtin/packages/py-pyyaml/package.py b/var/spack/repos/builtin/packages/py-pyyaml/package.py
index 00b3d848b7..419282250f 100644
--- a/var/spack/repos/builtin/packages/py-pyyaml/package.py
+++ b/var/spack/repos/builtin/packages/py-pyyaml/package.py
@@ -61,8 +61,6 @@ class PyPyyaml(PythonPackage):
return args
# Tests need to be re-added since `phases` was overridden
- run_after('build_ext')(
- PythonPackage._run_default_build_time_test_callbacks)
run_after('install')(
PythonPackage._run_default_install_time_test_callbacks)
run_after('install')(PythonPackage.sanity_check_prefix)
diff --git a/var/spack/repos/builtin/packages/py-pyzmq/package.py b/var/spack/repos/builtin/packages/py-pyzmq/package.py
index 9cd9e46242..3e5dae326a 100644
--- a/var/spack/repos/builtin/packages/py-pyzmq/package.py
+++ b/var/spack/repos/builtin/packages/py-pyzmq/package.py
@@ -11,6 +11,14 @@ class PyPyzmq(PythonPackage):
homepage = "https://github.com/zeromq/pyzmq"
url = "https://github.com/zeromq/pyzmq/archive/v14.7.0.tar.gz"
+ import_modules = [
+ 'zmq', 'zmq.green', 'zmq.green.eventloop', 'zmq.sugar', 'zmq.auth',
+ 'zmq.auth.asyncio', 'zmq.utils', 'zmq.backend', 'zmq.backend.cffi',
+ 'zmq.backend.cython', 'zmq.ssh', 'zmq.eventloop',
+ 'zmq.eventloop.minitornado', 'zmq.eventloop.minitornado.platform',
+ 'zmq.log', 'zmq.asyncio', 'zmq.devices'
+ ]
+
version('18.1.0', sha256='32f7618b8104021bc96cbd60be4330bdf37b929e8061dbce362c9f3478a08e21')
version('18.0.1', sha256='7b0107992d8cc4c43d9af1c2e13d573ea761c7feb23d7e0e7da9dc963811e68f')
version('17.1.2', sha256='77a32350440e321466b1748e6063b34a8a73768b62cb674e7d799fbc654b7c45')
@@ -18,9 +26,9 @@ class PyPyzmq(PythonPackage):
version('14.7.0', sha256='809a5fcc720d286c840f7f64696e60322b5b2544795a73db626f09b344d16a15')
depends_on('python@2.7:2.8,3.3:', type=('build', 'run'), when='@18:')
- depends_on('py-cython@0.16:', type=('build', 'run'))
- depends_on('py-cython@0.20:', type=('build', 'run'), when='@18:')
- # these dependencies might only be needed for pypy
+ depends_on('py-cython@0.16:', type='build')
+ depends_on('py-cython@0.20:', type='build', when='@18:')
depends_on('py-py', type=('build', 'run'))
depends_on('py-cffi', type=('build', 'run'))
+ depends_on('py-gevent', type=('build', 'run'))
depends_on('libzmq')
diff --git a/var/spack/repos/builtin/packages/py-qsymm/package.py b/var/spack/repos/builtin/packages/py-qsymm/package.py
index 6817a72a80..e550f342cd 100644
--- a/var/spack/repos/builtin/packages/py-qsymm/package.py
+++ b/var/spack/repos/builtin/packages/py-qsymm/package.py
@@ -27,5 +27,4 @@ class PyQsymm(PythonPackage):
depends_on('py-scipy@0.19:', type=('build', 'run'))
depends_on('py-sympy@1.1:', type=('build', 'run'))
depends_on('py-tinyarray', type=('build', 'run'))
- depends_on('py-pytest', type='test')
depends_on('py-pytest-runner', type='build')
diff --git a/var/spack/repos/builtin/packages/py-qtconsole/package.py b/var/spack/repos/builtin/packages/py-qtconsole/package.py
index 046e04c2e5..75c1e97b1c 100644
--- a/var/spack/repos/builtin/packages/py-qtconsole/package.py
+++ b/var/spack/repos/builtin/packages/py-qtconsole/package.py
@@ -26,5 +26,3 @@ class PyQtconsole(PythonPackage):
depends_on('py-ipython-genutils', type=('build', 'run'), when='@4.5.1:')
depends_on('py-sphinx@1.3:', type=('build', 'run'), when='+docs')
depends_on('py-pyqt5', type='run')
-
- depends_on('py-mock', type='test', when='^python@2.7:2.8')
diff --git a/var/spack/repos/builtin/packages/py-rasterio/package.py b/var/spack/repos/builtin/packages/py-rasterio/package.py
index 8d3b131b4e..ab5eec1633 100644
--- a/var/spack/repos/builtin/packages/py-rasterio/package.py
+++ b/var/spack/repos/builtin/packages/py-rasterio/package.py
@@ -17,7 +17,6 @@ class PyRasterio(PythonPackage):
url = "https://pypi.io/packages/source/r/rasterio/rasterio-1.1.5.tar.gz"
maintainers = ['adamjstewart']
- import_modules = ['rasterio', 'rasterio.rio']
version('1.1.5', sha256='ebe75c71f9257c780615caaec8ef81fa4602702cf9290a65c213e1639284acc9')
version('1.0.24', sha256='4839479621045211f66868ec49625979693450bc2e476f23e7e8ac4804eaf452')
@@ -37,10 +36,3 @@ class PyRasterio(PythonPackage):
depends_on('py-enum34', type='run', when='^python@:3.3')
depends_on('gdal@1.11:3.0', when='@1.0.25:')
depends_on('gdal@1.11:2', when='@:1.0.24')
- depends_on('py-pytest@2.8.2:', type='test')
- depends_on('py-pytest-cov@2.2.0:', type='test')
- depends_on('py-boto3@1.2.4:', type='test')
- depends_on('py-packaging', type='test')
- depends_on('py-hypothesis', type='test')
- depends_on('py-futures', type='test', when='^python@:3.1')
- depends_on('py-mock', type='test', when='^python@:3.1')
diff --git a/var/spack/repos/builtin/packages/py-readme-renderer/package.py b/var/spack/repos/builtin/packages/py-readme-renderer/package.py
index edfdfa6d46..9df50f2890 100644
--- a/var/spack/repos/builtin/packages/py-readme-renderer/package.py
+++ b/var/spack/repos/builtin/packages/py-readme-renderer/package.py
@@ -21,5 +21,3 @@ class PyReadmeRenderer(PythonPackage):
depends_on('py-docutils@0.13.1:', type=('build', 'run'))
depends_on('py-pygments', type=('build', 'run'))
depends_on('py-six', type=('build', 'run'))
- depends_on('py-pytest', type='test')
- depends_on('py-mock', type='test')
diff --git a/var/spack/repos/builtin/packages/py-requests-mock/package.py b/var/spack/repos/builtin/packages/py-requests-mock/package.py
index 94807b5cbd..9b3b0e27e0 100644
--- a/var/spack/repos/builtin/packages/py-requests-mock/package.py
+++ b/var/spack/repos/builtin/packages/py-requests-mock/package.py
@@ -12,8 +12,6 @@ class PyRequestsMock(PythonPackage):
homepage = "https://requests-mock.readthedocs.io/"
url = "https://pypi.io/packages/source/r/requests-mock/requests-mock-1.7.0.tar.gz"
- import_modules = ['requests_mock']
-
version('1.7.0', sha256='88d3402dd8b3c69a9e4f9d3a73ad11b15920c6efd36bc27bf1f701cf4a8e4646')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-requests-oauthlib/package.py b/var/spack/repos/builtin/packages/py-requests-oauthlib/package.py
index 6c6a633e47..b6f0a66667 100644
--- a/var/spack/repos/builtin/packages/py-requests-oauthlib/package.py
+++ b/var/spack/repos/builtin/packages/py-requests-oauthlib/package.py
@@ -20,5 +20,3 @@ class PyRequestsOauthlib(PythonPackage):
depends_on('py-oauthlib@3.0.0:', type=('build', 'run'))
depends_on('py-requests@2.0.0:', type=('build', 'run'))
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
- depends_on('py-mock', type='test')
- depends_on('py-requests-mock', type='test')
diff --git a/var/spack/repos/builtin/packages/py-requests/package.py b/var/spack/repos/builtin/packages/py-requests/package.py
index 30af0cd73f..513e58cc02 100644
--- a/var/spack/repos/builtin/packages/py-requests/package.py
+++ b/var/spack/repos/builtin/packages/py-requests/package.py
@@ -12,17 +12,6 @@ class PyRequests(PythonPackage):
homepage = "http://python-requests.org"
url = "https://pypi.io/packages/source/r/requests/requests-2.24.0.tar.gz"
- import_modules = [
- 'requests', 'requests.packages', 'requests.packages.chardet',
- 'requests.packages.urllib3', 'requests.packages.idna',
- 'requests.packages.chardet.cli', 'requests.packages.urllib3.util',
- 'requests.packages.urllib3.packages',
- 'requests.packages.urllib3.contrib',
- 'requests.packages.urllib3.packages.ssl_match_hostname',
- 'requests.packages.urllib3.packages.backports',
- 'requests.packages.urllib3.contrib._securetransport'
- ]
-
version('2.24.0', sha256='b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b')
version('2.23.0', sha256='b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6')
version('2.22.0', sha256='11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4')
@@ -41,10 +30,3 @@ class PyRequests(PythonPackage):
depends_on('py-idna@2.5:2.999', type=('build', 'run'), when='@2.23.0:')
depends_on('py-urllib3@1.21.1:1.24,1.25.2:1.25.999', type=('build', 'run'), when='@2.16.0:')
depends_on('py-certifi@2017.4.17:', type=('build', 'run'), when='@2.16.0:')
-
- depends_on('py-pytest-httpbin@0.0.7', type='test')
- depends_on('py-pytest-cov', type='test')
- depends_on('py-pytest-mock', type='test')
- depends_on('py-pytest-xdist', type='test')
- depends_on('py-pysocks@1.5.6,1.5.8:', type='test')
- depends_on('py-pytest@2.8.0:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-robotframework/package.py b/var/spack/repos/builtin/packages/py-robotframework/package.py
index 6eaa479102..bce66cceaf 100644
--- a/var/spack/repos/builtin/packages/py-robotframework/package.py
+++ b/var/spack/repos/builtin/packages/py-robotframework/package.py
@@ -16,7 +16,3 @@ class PyRobotframework(PythonPackage):
version('3.2.1', sha256='9805faa0990125ff2c9689b673448d5f47e78470e7a8e95af1606a775fa8379f')
depends_on('py-setuptools', type=('build', 'run'))
- depends_on('py-enum34', type='test')
- depends_on('py-ipaddress', type='test')
- depends_on('py-mock', type='test')
- depends_on('py-unittest2', type='test')
diff --git a/var/spack/repos/builtin/packages/py-rsa/package.py b/var/spack/repos/builtin/packages/py-rsa/package.py
index 85e2b84d00..4f7604e828 100644
--- a/var/spack/repos/builtin/packages/py-rsa/package.py
+++ b/var/spack/repos/builtin/packages/py-rsa/package.py
@@ -12,8 +12,6 @@ class PyRsa(PythonPackage):
homepage = "https://stuvel.eu/rsa"
url = "https://pypi.io/packages/source/r/rsa/rsa-3.4.2.tar.gz"
- import_modules = ['rsa']
-
version('4.0', sha256='1a836406405730121ae9823e19c6e806c62bbad73f890574fff50efa4122c487')
version('3.4.2', sha256='25df4e10c263fb88b5ace923dd84bf9aa7f5019687b5e55382ffcdb8bede9db5')
diff --git a/var/spack/repos/builtin/packages/py-s3transfer/package.py b/var/spack/repos/builtin/packages/py-s3transfer/package.py
index 5db6bd28a3..59ec02bfcf 100644
--- a/var/spack/repos/builtin/packages/py-s3transfer/package.py
+++ b/var/spack/repos/builtin/packages/py-s3transfer/package.py
@@ -12,11 +12,8 @@ class PyS3transfer(PythonPackage):
homepage = "https://github.com/boto/s3transfer"
url = "https://pypi.io/packages/source/s/s3transfer/s3transfer-0.2.1.tar.gz"
- import_modules = ['s3transfer']
-
version('0.2.1', sha256='6efc926738a3cd576c2a79725fed9afde92378aa5c6a957e3af010cb019fac9d')
depends_on('py-setuptools', type='build')
depends_on('py-botocore@1.12.36:1.999', type=('build', 'run'))
depends_on('py-futures@2.2:3', type=('build', 'run'), when='^python@:2')
- depends_on('py-mock', type='test')
diff --git a/var/spack/repos/builtin/packages/py-scandir/package.py b/var/spack/repos/builtin/packages/py-scandir/package.py
index a32b03a06e..57f7e2cfa6 100644
--- a/var/spack/repos/builtin/packages/py-scandir/package.py
+++ b/var/spack/repos/builtin/packages/py-scandir/package.py
@@ -12,8 +12,6 @@ class PyScandir(PythonPackage):
homepage = "https://github.com/benhoyt/scandir"
url = "https://pypi.io/packages/source/s/scandir/scandir-1.9.0.tar.gz"
- import_modules = ['scandir']
-
version('1.10.0', sha256='4d4631f6062e658e9007ab3149a9b914f3548cb38bfb021c64f39a025ce578ae')
version('1.9.0', sha256='44975e209c4827fc18a3486f257154d34ec6eaec0f90fef0cca1caa482db7064')
version('1.6', sha256='e0278a2d4bc6c0569aedbe66bf26c8ab5b2b08378b3289de49257f23ac624338')
diff --git a/var/spack/repos/builtin/packages/py-scikit-learn/package.py b/var/spack/repos/builtin/packages/py-scikit-learn/package.py
index 0a9bf34523..ce825077eb 100644
--- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py
+++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py
@@ -12,23 +12,6 @@ class PyScikitLearn(PythonPackage):
git = "https://github.com/scikit-learn/scikit-learn.git"
maintainers = ['adamjstewart']
- install_time_test_callbacks = ['install_test', 'import_module_test']
-
- import_modules = [
- 'sklearn', 'sklearn.tree', 'sklearn.metrics', 'sklearn.ensemble',
- 'sklearn.experimental', 'sklearn.cluster',
- 'sklearn.feature_extraction', 'sklearn.__check_build',
- 'sklearn.semi_supervised', 'sklearn.gaussian_process',
- 'sklearn.compose', 'sklearn.datasets', 'sklearn.externals',
- 'sklearn.linear_model', 'sklearn.impute', 'sklearn.utils',
- 'sklearn.covariance', 'sklearn.neural_network',
- 'sklearn.feature_selection', 'sklearn.inspection', 'sklearn.svm',
- 'sklearn.manifold', 'sklearn.mixture', 'sklearn.preprocessing',
- 'sklearn.model_selection', 'sklearn._build_utils',
- 'sklearn.decomposition', 'sklearn.cross_decomposition',
- 'sklearn.neighbors', 'sklearn.metrics.cluster',
- 'sklearn.ensemble._hist_gradient_boosting'
- ]
version('master', branch='master')
version('0.23.2', sha256='20766f515e6cd6f954554387dfae705d93c7b544ec0e6c6a5d8e006f6f7ef480')
@@ -93,6 +76,8 @@ class PyScikitLearn(PythonPackage):
env.append_flags(
'LDFLAGS', self.spec['llvm-openmp'].libs.ld_flags)
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
def install_test(self):
# https://scikit-learn.org/stable/developers/advanced_installation.html#testing
with working_dir('spack-test', create=True):
diff --git a/var/spack/repos/builtin/packages/py-scikit-optimize/package.py b/var/spack/repos/builtin/packages/py-scikit-optimize/package.py
index 6f148d5fe1..3585143e3d 100644
--- a/var/spack/repos/builtin/packages/py-scikit-optimize/package.py
+++ b/var/spack/repos/builtin/packages/py-scikit-optimize/package.py
@@ -28,4 +28,3 @@ class PyScikitOptimize(PythonPackage):
depends_on('py-scikit-learn@0.19.1:', type=('build', 'run'))
depends_on('py-matplotlib', when='+plots')
- depends_on('py-pytest@3.3.0:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py
index 7f6027c0e1..c01d47e55e 100644
--- a/var/spack/repos/builtin/packages/py-scipy/package.py
+++ b/var/spack/repos/builtin/packages/py-scipy/package.py
@@ -16,20 +16,6 @@ class PyScipy(PythonPackage):
git = "https://github.com/scipy/scipy.git"
maintainers = ['adamjstewart']
- install_time_test_callbacks = ['install_test', 'import_module_test']
-
- import_modules = [
- 'scipy', 'scipy._build_utils', 'scipy._lib', 'scipy.cluster',
- 'scipy.constants', 'scipy.fftpack', 'scipy.integrate',
- 'scipy.interpolate', 'scipy.io', 'scipy.linalg', 'scipy.misc',
- 'scipy.ndimage', 'scipy.odr', 'scipy.optimize', 'scipy.signal',
- 'scipy.sparse', 'scipy.spatial', 'scipy.special', 'scipy.stats',
- 'scipy.io.arff', 'scipy.io.harwell_boeing', 'scipy.io.matlab',
- 'scipy.optimize._lsq', 'scipy.sparse.csgraph', 'scipy.sparse.linalg',
- 'scipy.sparse.linalg.dsolve', 'scipy.sparse.linalg.eigen',
- 'scipy.sparse.linalg.isolve', 'scipy.sparse.linalg.eigen.arpack',
- 'scipy.sparse.linalg.eigen.lobpcg', 'scipy.special._precompute'
- ]
version('master', branch='master')
version('1.5.4', sha256='4a453d5e5689de62e5d38edf40af3f17560bfd63c9c5bd228c18c1f99afa155b')
@@ -107,21 +93,8 @@ class PyScipy(PythonPackage):
return args
- def build_test(self):
- # `setup.py test` is not supported. Use one of the following
- # instead:
- #
- # - `python runtests.py` (to build and test)
- # - `python runtests.py --no-build` (to test installed scipy)
- # - `>>> scipy.test()` (run tests for installed scipy
- # from within an interpreter)
- pass
-
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
def install_test(self):
- # Change directories due to the following error:
- #
- # ImportError: Error importing scipy: you should not try to import
- # scipy from its source directory; please exit the scipy
- # source tree, and relaunch your python interpreter from there.
with working_dir('spack-test', create=True):
python('-c', 'import scipy; scipy.test("full", verbose=2)')
diff --git a/var/spack/repos/builtin/packages/py-setuptools-scm/package.py b/var/spack/repos/builtin/packages/py-setuptools-scm/package.py
index eb157f8ef5..21ec2203ce 100644
--- a/var/spack/repos/builtin/packages/py-setuptools-scm/package.py
+++ b/var/spack/repos/builtin/packages/py-setuptools-scm/package.py
@@ -12,8 +12,6 @@ class PySetuptoolsScm(PythonPackage):
homepage = "https://github.com/pypa/setuptools_scm"
url = "https://pypi.io/packages/source/s/setuptools_scm/setuptools_scm-4.1.2.tar.gz"
- import_modules = ['setuptools_scm']
-
version('4.1.2', sha256='a8994582e716ec690f33fec70cca0f85bd23ec974e3f783233e4879090a7faa8')
version('3.3.3', sha256='bd25e1fb5e4d603dcf490f1fde40fb4c595b357795674c3e5cb7f6217ab39ea5')
version('3.1.0', sha256='1191f2a136b5e86f7ca8ab00a97ef7aef997131f1f6d4971be69a1ef387d8b40')
diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py
index 1a2930498b..29e705c5ac 100644
--- a/var/spack/repos/builtin/packages/py-setuptools/package.py
+++ b/var/spack/repos/builtin/packages/py-setuptools/package.py
@@ -13,14 +13,6 @@ class PySetuptools(PythonPackage):
homepage = "https://github.com/pypa/setuptools"
url = "https://pypi.io/packages/source/s/setuptools/setuptools-49.2.0.zip"
- import_modules = [
- 'setuptools', 'pkg_resources', 'setuptools._vendor',
- 'setuptools.command', 'setuptools.extern',
- 'setuptools._vendor.packaging', 'pkg_resources._vendor',
- 'pkg_resources.extern', 'pkg_resources._vendor.packaging',
- 'easy_install'
- ]
-
version('50.3.2', sha256='ed0519d27a243843b05d82a5e9d01b0b083d9934eaa3d02779a23da18077bd3c')
version('50.1.0', sha256='4a7708dafd2d360ce5e2ac7577374da9fb65fc867bc4cdaf461f9f834dfa6ac3')
version('49.6.0', sha256='46bd862894ed22c2edff033c758c2dc026324788d758e96788e8f7c11f4e9707')
@@ -35,9 +27,6 @@ class PySetuptools(PythonPackage):
version('40.2.0', sha256='47881d54ede4da9c15273bac65f9340f8929d4f0213193fa7894be384f2dcfa6')
version('39.2.0', sha256='f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2')
version('39.0.1', sha256='bec7badf0f60e7fc8153fac47836edc41b74e5d541d7692e614e635720d6a7c7')
- version('35.0.2', sha256='1e55496ca8058db68ae12ac29a985d1ee2c2483a5901f7692fb68fa2f9a250fd')
- version('34.4.1', sha256='704cc0c9fe6c97edd3c6370d165c5a754dfde318b671058523ed3226d944ea1b')
- version('34.2.0', sha256='7b551f5070f9414d48c08dda58bcb879c8d9276199283a99dc8e1362e2f378a2')
version('25.2.0', sha256='b2757ddac2c41173140b111e246d200768f6dd314110e1e40661d0ecf9b4d6a6')
version('20.7.0', sha256='505cdf282c5f6e3a056e79f0244b8945f3632257bba8469386c6b9b396400233')
version('20.6.7', sha256='d20152ee6337323d3b6d95cd733fb719d6b4f3fbc40f61f7a48e5a1bb96478b2')
@@ -50,16 +39,6 @@ class PySetuptools(PythonPackage):
depends_on('python@2.7:2.8,3.5:', type=('build', 'run'), when='@44.0.0:44.99.99')
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'), when='@:43.99.99')
- # Previously, setuptools vendored all of its dependencies to allow
- # easy bootstrapping. As of version 34.0.0, this is no longer done
- # and the dependencies need to be installed externally. As of version
- # 36.0.0, setuptools now vendors its dependencies again. See
- # https://github.com/pypa/setuptools/issues/980 for the reason they
- # reverted back to vendoring again.
- depends_on('py-packaging@16.8:', when='@34:35', type=('build', 'run'))
- depends_on('py-six@1.6.0:', when='@34:35', type=('build', 'run'))
- depends_on('py-appdirs@1.4.0:', when='@34:35', type=('build', 'run'))
-
def url_for_version(self, version):
url = 'https://pypi.io/packages/source/s/setuptools/setuptools-{0}'
url = url.format(version)
@@ -70,7 +49,3 @@ class PySetuptools(PythonPackage):
url += '.tar.gz'
return url
-
- def build_test(self):
- # Unit tests require pytest, creating a circular dependency
- pass
diff --git a/var/spack/repos/builtin/packages/py-shapely/package.py b/var/spack/repos/builtin/packages/py-shapely/package.py
index c03106a6be..345d28b042 100644
--- a/var/spack/repos/builtin/packages/py-shapely/package.py
+++ b/var/spack/repos/builtin/packages/py-shapely/package.py
@@ -16,10 +16,6 @@ class PyShapely(PythonPackage):
git = "https://github.com/Toblerity/Shapely.git"
maintainers = ['adamjstewart']
- import_modules = [
- 'shapely', 'shapely.geometry', 'shapely.algorithms',
- 'shapely.examples', 'shapely.speedups', 'shapely.vectorized',
- ]
version('master', branch='master')
version('1.7.1', sha256='1641724c1055459a7e2b8bbe47ba25bdc89554582e62aec23cb3f3ca25f9b129')
@@ -64,5 +60,7 @@ class PyShapely(PythonPackage):
else:
env.prepend_path('LD_LIBRARY_PATH', libs)
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
def test_install(self):
python('-m', 'pytest')
diff --git a/var/spack/repos/builtin/packages/py-six/package.py b/var/spack/repos/builtin/packages/py-six/package.py
index 22490eb9a2..291d38b741 100644
--- a/var/spack/repos/builtin/packages/py-six/package.py
+++ b/var/spack/repos/builtin/packages/py-six/package.py
@@ -12,8 +12,6 @@ class PySix(PythonPackage):
homepage = "https://pypi.python.org/pypi/six"
url = "https://pypi.io/packages/source/s/six/six-1.11.0.tar.gz"
- import_modules = ['six']
-
version('1.14.0', sha256='236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a')
version('1.12.0', sha256='d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73')
version('1.11.0', sha256='70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9')
@@ -22,10 +20,4 @@ class PySix(PythonPackage):
version('1.8.0', sha256='047bbbba41bac37c444c75ddfdf0573dd6e2f1fbd824e6247bb26fa7d8fa3830')
extends('python', ignore=r'bin/pytest')
-
- # Newer versions of setuptools require six. Although setuptools is an
- # optional dependency of six, if it is not found, setup.py will fallback
- # on distutils.core instead. Don't add a setuptools dependency or we
- # won't be able to bootstrap setuptools.
-
- # depends_on('py-setuptools', type='build')
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-snowballstemmer/package.py b/var/spack/repos/builtin/packages/py-snowballstemmer/package.py
index 80af93c40a..4502c5cc7b 100644
--- a/var/spack/repos/builtin/packages/py-snowballstemmer/package.py
+++ b/var/spack/repos/builtin/packages/py-snowballstemmer/package.py
@@ -13,8 +13,6 @@ class PySnowballstemmer(PythonPackage):
homepage = "https://github.com/shibukawa/snowball_py"
url = "https://pypi.io/packages/source/s/snowballstemmer/snowballstemmer-2.0.0.tar.gz"
- import_modules = ['snowballstemmer']
-
version('2.0.0', sha256='df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52')
version('1.2.1', sha256='919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128')
diff --git a/var/spack/repos/builtin/packages/py-spdlog/package.py b/var/spack/repos/builtin/packages/py-spdlog/package.py
index 2e149b6b30..0e9d377353 100644
--- a/var/spack/repos/builtin/packages/py-spdlog/package.py
+++ b/var/spack/repos/builtin/packages/py-spdlog/package.py
@@ -25,4 +25,3 @@ class PySpdlog(PythonPackage):
depends_on('py-pybind11@2.2:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
depends_on('py-pytest-runner', type='build')
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-spefile/package.py b/var/spack/repos/builtin/packages/py-spefile/package.py
index 54eec9ff91..fed2c428a6 100644
--- a/var/spack/repos/builtin/packages/py-spefile/package.py
+++ b/var/spack/repos/builtin/packages/py-spefile/package.py
@@ -13,8 +13,6 @@ class PySpefile(PythonPackage):
homepage = "https://github.com/conda-forge/spefile-feedstock"
git = "https://github.com/conda-forge/spefile-feedstock.git"
- import_modules = ['spefile']
-
version('1.6', commit='24394e066da8dee5e7608f556ca0203c9db217f9')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py
index bc09b3324b..21446b2d23 100644
--- a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py
@@ -12,8 +12,6 @@ class PySphinxRtdTheme(PythonPackage):
homepage = "https://github.com/rtfd/sphinx_rtd_theme/"
url = "https://github.com/readthedocs/sphinx_rtd_theme/archive/0.5.0.tar.gz"
- import_modules = ['sphinx_rtd_theme']
-
version('0.5.0', sha256='f5c77e9026e2bd0b3d2530f9f8a6681808b216ba70195fe56e7ad89f641ac447')
version('0.4.3', sha256='3412195caad06e4537ad741596d57706c3ed29073d1e0e6b46f25e344d0f393b')
version('0.2.5b1', sha256='31924cdaa5232d1d573423ebebeb1e8f02c8b3cd8cd0662b8a91f3b12efbc12e')
@@ -22,4 +20,3 @@ class PySphinxRtdTheme(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('npm', when='@0.5.0:', type='build')
depends_on('py-sphinx', when='@0.4.1:', type=('build', 'run'))
- depends_on('py-pytest', when='@0.5.0:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py
index d326c53f4c..2545853d27 100644
--- a/var/spack/repos/builtin/packages/py-sphinx/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinx/package.py
@@ -12,16 +12,6 @@ class PySphinx(PythonPackage):
homepage = "https://sphinx-doc.org/"
url = "https://pypi.io/packages/source/S/Sphinx/Sphinx-3.2.0.tar.gz"
- import_modules = [
- 'sphinx', 'sphinx.testing', 'sphinx.ext', 'sphinx.pycode',
- 'sphinx.search', 'sphinx.transforms', 'sphinx.builders',
- 'sphinx.directives', 'sphinx.util', 'sphinx.environment',
- 'sphinx.writers', 'sphinx.domains', 'sphinx.locale',
- 'sphinx.ext.napoleon', 'sphinx.ext.autosummary', 'sphinx.pycode.pgen2',
- 'sphinx.transforms.post_transforms', 'sphinx.util.stemmer',
- 'sphinx.environment.collectors', 'sphinx.environment.adapters'
- ]
-
version('3.2.0', sha256='cf2d5bc3c6c930ab0a1fbef3ad8a82994b1bf4ae923f8098a05c7e5516f07177')
version('3.0.0', sha256='6a099e6faffdc3ceba99ca8c2d09982d43022245e409249375edf111caf79ed3')
version('2.2.0', sha256='0d586b0f8c2fc3cc6559c5e8fd6124628110514fda0e5d7c82e682d749d2e845')
@@ -64,11 +54,3 @@ class PySphinx(PythonPackage):
depends_on('py-packaging', when='@1.7.4:', type=('build', 'run'))
depends_on('py-typing', when='@1.6.1', type=('build', 'run'))
depends_on('py-typing', when='@1.6.2:^python@2.7:3.4', type=('build', 'run'))
-
- depends_on('py-pytest', type='test')
- depends_on('py-pytest-cov', type='test')
- depends_on('py-html5lib', type='test')
- depends_on('py-flake8@3.5.0:', type='test')
- depends_on('py-flake8-import-order', type='test')
- depends_on('py-mypy@0.720:', type='test')
- depends_on('py-docutils-stubs', type='test')
diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-applehelp/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-applehelp/package.py
index 67ba38134c..970a8c253a 100644
--- a/var/spack/repos/builtin/packages/py-sphinxcontrib-applehelp/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-applehelp/package.py
@@ -17,7 +17,3 @@ class PySphinxcontribApplehelp(PythonPackage):
depends_on('python@3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- def build_test(self):
- # Requires sphinx, creating a circular dependency
- pass
diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py
index d7820786b0..c9457234e0 100644
--- a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py
@@ -12,8 +12,6 @@ class PySphinxcontribBibtex(PythonPackage):
homepage = "https://pypi.python.org/pypi/sphinxcontrib-bibtex"
url = "https://pypi.io/packages/source/s/sphinxcontrib-bibtex/sphinxcontrib-bibtex-0.3.5.tar.gz"
- import_modules = ['sphinxcontrib', 'sphinxcontrib.bibtex']
-
version('1.0.0', sha256='629612b001f86784669d65e662377a482052decfd9a0a17c46860878eef7b9e0')
version('0.3.5', sha256='c93e2b4a0d14f0ab726f95f0a33c1675965e9df3ed04839635577b8f978206cd')
diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-devhelp/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-devhelp/package.py
index 1954fc9677..cc7cec387b 100644
--- a/var/spack/repos/builtin/packages/py-sphinxcontrib-devhelp/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-devhelp/package.py
@@ -17,7 +17,3 @@ class PySphinxcontribDevhelp(PythonPackage):
depends_on('python@3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- def build_test(self):
- # Requires sphinx, creating a circular dependency
- pass
diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-htmlhelp/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-htmlhelp/package.py
index 95f6819d59..d368247ca7 100644
--- a/var/spack/repos/builtin/packages/py-sphinxcontrib-htmlhelp/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-htmlhelp/package.py
@@ -17,7 +17,3 @@ class PySphinxcontribHtmlhelp(PythonPackage):
depends_on('python@3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- def build_test(self):
- # Requires sphinx, creating a circular dependency
- pass
diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-jsmath/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-jsmath/package.py
index add0160ac8..b471284728 100644
--- a/var/spack/repos/builtin/packages/py-sphinxcontrib-jsmath/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-jsmath/package.py
@@ -16,7 +16,3 @@ class PySphinxcontribJsmath(PythonPackage):
depends_on('python@3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- def build_test(self):
- # Requires sphinx, creating a circular dependency
- pass
diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py
index 56028f5163..c512f76963 100644
--- a/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py
@@ -13,9 +13,6 @@ class PySphinxcontribProgramoutput(PythonPackage):
homepage = "https://sphinxcontrib-programoutput.readthedocs.org/"
url = "https://pypi.io/packages/source/s/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.15.tar.gz"
- # FIXME: These import tests don't work for some reason
- # import_modules = ['sphinxcontrib', 'sphinxcontrib.programoutput']
-
version('0.15', sha256='80dd5b4eab780a13ff2c23500cac3dbf0e04ef9976b409ef25a47c263ef8ab94')
version('0.10', sha256='fdee94fcebb0d8fddfccac5c4fa560f6177d5340c4349ee447c890bea8857094')
diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-qthelp/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-qthelp/package.py
index 19fd328f37..b0b654e48f 100644
--- a/var/spack/repos/builtin/packages/py-sphinxcontrib-qthelp/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-qthelp/package.py
@@ -17,7 +17,3 @@ class PySphinxcontribQthelp(PythonPackage):
depends_on('python@3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- def build_test(self):
- # Requires sphinx, creating a circular dependency
- pass
diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-serializinghtml/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-serializinghtml/package.py
index 3bad6d661a..59c214a8eb 100644
--- a/var/spack/repos/builtin/packages/py-sphinxcontrib-serializinghtml/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-serializinghtml/package.py
@@ -17,7 +17,3 @@ class PySphinxcontribSerializinghtml(PythonPackage):
depends_on('python@3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- def build_test(self):
- # Requires sphinx, creating a circular dependency
- pass
diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py
index 1e4d1051a3..8892f3793b 100644
--- a/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py
@@ -13,19 +13,9 @@ class PySphinxcontribWebsupport(PythonPackage):
homepage = "http://sphinx-doc.org/"
url = "https://pypi.io/packages/source/s/sphinxcontrib-websupport/sphinxcontrib-websupport-1.1.2.tar.gz"
- # FIXME: These import tests don't work for some reason
- # import_modules = [
- # 'sphinxcontrib', 'sphinxcontrib.websupport',
- # 'sphinxcontrib.websupport.storage', 'sphinxcontrib.websupport.search'
- # ]
-
version('1.1.2', sha256='1501befb0fdf1d1c29a800fdbf4ef5dc5369377300ddbdd16d2cd40e54c6eefc')
version('1.1.0', sha256='9de47f375baf1ea07cdb3436ff39d7a9c76042c10a769c52353ec46e4e8fc3b9')
version('1.0.1', sha256='7a85961326aa3a400cd4ad3c816d70ed6f7c740acd7ce5d78cd0a67825072eb9')
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- def build_test(self):
- # Unit tests require sphinx, creating a circular dependency
- pass
diff --git a/var/spack/repos/builtin/packages/py-sqlalchemy/package.py b/var/spack/repos/builtin/packages/py-sqlalchemy/package.py
index b1497b6da0..37b6568290 100644
--- a/var/spack/repos/builtin/packages/py-sqlalchemy/package.py
+++ b/var/spack/repos/builtin/packages/py-sqlalchemy/package.py
@@ -21,9 +21,6 @@ class PySqlalchemy(PythonPackage):
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
- depends_on('py-pytest@2.5.2:3.9.0,3.9.3:', type='test')
- depends_on('py-mock', type='test')
- depends_on('py-pytest-xdist', type='test')
variant('backend', description='Python modules for database access',
values=any_combination_of('mysql', 'pymysql', 'postgresql'))
diff --git a/var/spack/repos/builtin/packages/py-srsly/package.py b/var/spack/repos/builtin/packages/py-srsly/package.py
index 46b1b50af0..a0f0405e56 100644
--- a/var/spack/repos/builtin/packages/py-srsly/package.py
+++ b/var/spack/repos/builtin/packages/py-srsly/package.py
@@ -19,11 +19,6 @@ class PySrsly(PythonPackage):
depends_on('py-wheel', when='@2:', type='build')
depends_on('py-cython@0.25:', when='@2:', type='build')
depends_on('py-pathlib@1.0.1', when='^python@:3.3', type=('build', 'run'))
- depends_on('py-pytest', type='test')
- depends_on('py-mock', type='test')
- depends_on('py-numpy', type='test')
- depends_on('py-six', when='@:1', type='test')
- depends_on('py-pytz', when='@:1', type='test')
# https://github.com/explosion/srsly/pull/24
patch('subprocess.patch', when='@2.0.0:2.0.1')
diff --git a/var/spack/repos/builtin/packages/py-statsmodels/package.py b/var/spack/repos/builtin/packages/py-statsmodels/package.py
index b00e51730b..d2bfd16e37 100644
--- a/var/spack/repos/builtin/packages/py-statsmodels/package.py
+++ b/var/spack/repos/builtin/packages/py-statsmodels/package.py
@@ -42,6 +42,8 @@ class PyStatsmodels(PythonPackage):
depends_on('py-pytest', type='test')
+ @run_after('build')
+ @on_package_attributes(run_tests=True)
def build_test(self):
dirs = glob.glob("build/lib*") # There can be only one...
with working_dir(dirs[0]):
diff --git a/var/spack/repos/builtin/packages/py-tables/package.py b/var/spack/repos/builtin/packages/py-tables/package.py
index 2abece3e51..6d72791816 100644
--- a/var/spack/repos/builtin/packages/py-tables/package.py
+++ b/var/spack/repos/builtin/packages/py-tables/package.py
@@ -13,10 +13,6 @@ class PyTables(PythonPackage):
homepage = "http://www.pytables.org/"
url = "https://pypi.io/packages/source/t/tables/tables-3.6.1.tar.gz"
- import_modules = [
- 'tables', 'tables.misc', 'tables.nodes', 'tables.scripts'
- ]
-
version('3.6.1', sha256='49a972b8a7c27a8a173aeb05f67acb45fe608b64cd8e9fa667c0962a60b71b49')
version('3.6.0', sha256='db3488214864fb313a611fca68bf1c9019afe4e7877be54d0e61c84416603d4d')
version('3.5.2', sha256='b220e32262bab320aa41d33125a7851ff898be97c0de30b456247508e2cc33c2')
@@ -38,7 +34,6 @@ class PyTables(PythonPackage):
depends_on('py-numpy@1.9.3:', type=('build', 'run'))
depends_on('py-numexpr@2.6.2:', type=('build', 'run'))
depends_on('py-six@1.9.0:', when='@:3.5', type=('build', 'run'))
- depends_on('py-mock@2.0:', type='test')
# tables/req_versions.py
depends_on('hdf5@1.8.4:1.8.999', when='@:3.3.99')
depends_on('hdf5@1.8.4:', when='@3.4.0:')
diff --git a/var/spack/repos/builtin/packages/py-tatsu/package.py b/var/spack/repos/builtin/packages/py-tatsu/package.py
index 8b157932bf..6e45f07aeb 100644
--- a/var/spack/repos/builtin/packages/py-tatsu/package.py
+++ b/var/spack/repos/builtin/packages/py-tatsu/package.py
@@ -22,6 +22,5 @@ class PyTatsu(PythonPackage):
depends_on('py-setuptools', type='build')
# part of the standard lib in python@3.7.0, required in the current HEAD
depends_on('py-dataclasses@0.6:', type=('build', 'run'), when='@4.5:^python@:3.6.99')
- depends_on('py-pytest-mypy', type='test')
# optional dependency, otherwise falls back to standard implementation
depends_on('py-regex@2018.8:', type=('build', 'run'), when='+future_regex')
diff --git a/var/spack/repos/builtin/packages/py-tensorflow/package.py b/var/spack/repos/builtin/packages/py-tensorflow/package.py
index d0b21d38e5..71c7a91ddb 100644
--- a/var/spack/repos/builtin/packages/py-tensorflow/package.py
+++ b/var/spack/repos/builtin/packages/py-tensorflow/package.py
@@ -15,7 +15,6 @@ class PyTensorflow(Package, CudaPackage):
url = "https://github.com/tensorflow/tensorflow/archive/v2.3.1.tar.gz"
maintainers = ['adamjstewart', 'aweits']
- import_modules = ['tensorflow']
version('2.3.1', sha256='ee534dd31a811f7a759453567257d1e643f216d8d55a25c32d2fbfff8153a1ac')
version('2.3.0', sha256='2595a5c401521f20a2734c4e5d54120996f8391f00bb62a57267d930bce95350')
@@ -191,9 +190,6 @@ class PyTensorflow(Package, CudaPackage):
# Only builds correctly on little-endian machines
depends_on('py-grpcio@1.8.6:', type=('build', 'run'), when='@1.8:')
- # Listed under TEST_PACKAGES in tensorflow/tools/pip_package/setup.py
- depends_on('py-scipy@0.15.1:', type='test')
-
# TODO: add packages for some of these dependencies
depends_on('mkl', when='+mkl')
depends_on('curl', when='+gcp')
@@ -277,6 +273,9 @@ class PyTensorflow(Package, CudaPackage):
phases = ['configure', 'build', 'install']
+ import_modules = PythonPackage.import_modules
+ test = PythonPackage.test
+
# https://www.tensorflow.org/install/source
def setup_build_environment(self, env):
spec = self.spec
@@ -750,10 +749,3 @@ class PyTensorflow(Package, CudaPackage):
setup_py('install', '--prefix={0}'.format(prefix),
'--single-version-externally-managed', '--root=/')
remove_linked_tree(tmp_path)
-
- @run_after('install')
- @on_package_attributes(run_tests=True)
- def import_module_test(self):
- with working_dir('spack-test', create=True):
- for module in self.import_modules:
- python('-c', 'import {0}'.format(module))
diff --git a/var/spack/repos/builtin/packages/py-testrepository/package.py b/var/spack/repos/builtin/packages/py-testrepository/package.py
index 881191bc3f..bb889bd4d4 100644
--- a/var/spack/repos/builtin/packages/py-testrepository/package.py
+++ b/var/spack/repos/builtin/packages/py-testrepository/package.py
@@ -12,14 +12,6 @@ class PyTestrepository(PythonPackage):
homepage = "https://launchpad.net/testrepository"
url = "https://pypi.io/packages/source/t/testrepository/testrepository-0.0.20.tar.gz"
- import_modules = [
- 'testrepository', 'testrepository.arguments',
- 'testrepository.commands', 'testrepository.repository',
- 'testrepository.tests', 'testrepository.tests.arguments',
- 'testrepository.tests.commands', 'testrepository.tests.repository',
- 'testrepository.tests.ui', 'testrepository.ui',
- ]
-
version('0.0.20', sha256='752449bc98c20253ec4611c40564aea93d435a5bf3ff672208e01cc10e5858eb')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-theano/package.py b/var/spack/repos/builtin/packages/py-theano/package.py
index c7c95fd0e3..d06e342ea4 100644
--- a/var/spack/repos/builtin/packages/py-theano/package.py
+++ b/var/spack/repos/builtin/packages/py-theano/package.py
@@ -33,7 +33,3 @@ class PyTheano(PythonPackage, CudaPackage):
depends_on('cudnn', when='+cuda')
depends_on('py-pygpu', when='+cuda', type=('build', 'run'))
depends_on('libgpuarray', when='+cuda')
-
- depends_on('py-nose@1.3.0:', type='test')
- depends_on('py-parameterized', type='test')
- depends_on('py-flake8', type='test')
diff --git a/var/spack/repos/builtin/packages/py-thinc/package.py b/var/spack/repos/builtin/packages/py-thinc/package.py
index 8976478000..2e344b8308 100644
--- a/var/spack/repos/builtin/packages/py-thinc/package.py
+++ b/var/spack/repos/builtin/packages/py-thinc/package.py
@@ -25,6 +25,3 @@ class PyThinc(PythonPackage):
depends_on('py-plac@0.9.6:1.1', type=('build', 'run'))
depends_on('py-tqdm@4.10:4.999', type=('build', 'run'))
depends_on('py-pathlib@1.0.1', when='^python@:3.3', type=('build', 'run'))
- depends_on('py-pytest', type='test')
- depends_on('py-mock', type='test')
- depends_on('py-hypothesis', type='test')
diff --git a/var/spack/repos/builtin/packages/py-threadpoolctl/package.py b/var/spack/repos/builtin/packages/py-threadpoolctl/package.py
index f28c9a37b5..ca3c6fb476 100644
--- a/var/spack/repos/builtin/packages/py-threadpoolctl/package.py
+++ b/var/spack/repos/builtin/packages/py-threadpoolctl/package.py
@@ -12,8 +12,6 @@ class PyThreadpoolctl(PythonPackage):
homepage = "https://github.com/joblib/threadpoolctl"
url = "https://pypi.io/packages/source/t/threadpoolctl/threadpoolctl-2.0.0.tar.gz"
- import_modules = ['threadpoolctl']
-
version('2.0.0', sha256='48b3e3e9ee079d6b5295c65cbe255b36a3026afc6dde3fb49c085cd0c004bbcf')
depends_on('python@3.5:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-tifffile/package.py b/var/spack/repos/builtin/packages/py-tifffile/package.py
index 905718ec89..230226ca45 100644
--- a/var/spack/repos/builtin/packages/py-tifffile/package.py
+++ b/var/spack/repos/builtin/packages/py-tifffile/package.py
@@ -12,8 +12,6 @@ class PyTifffile(PythonPackage):
homepage = "https://github.com/blink1073/tifffile"
url = "https://pypi.io/packages/source/t/tifffile/tifffile-0.12.1.tar.gz"
- import_modules = ['tifffile']
-
version('2020.10.1', sha256='799feeccc91965b69e1288c51a1d1118faec7f40b2eb89ad2979591b85324830')
version('0.12.1', sha256='802367effe86b0d1e64cb5c2ed886771f677fa63260b945e51a27acccdc08fa1')
diff --git a/var/spack/repos/builtin/packages/py-tomopy/package.py b/var/spack/repos/builtin/packages/py-tomopy/package.py
index 0b7f814775..61184b99c8 100644
--- a/var/spack/repos/builtin/packages/py-tomopy/package.py
+++ b/var/spack/repos/builtin/packages/py-tomopy/package.py
@@ -14,11 +14,6 @@ class PyTomopy(PythonPackage):
homepage = "http://tomopy.readthedocs.io/en/latest/index.html"
url = "https://github.com/tomopy/tomopy/archive/1.0.0.tar.gz"
- import_modules = [
- 'tomopy', 'doc', 'tomopy.util', 'tomopy.sim', 'tomopy.recon',
- 'tomopy.prep', 'tomopy.misc', 'tomopy.io', 'doc.demo'
- ]
-
version('1.0.0', sha256='ee45f7a062e5a66d6f18a904d2e204e48d85a1ce1464156f9e2f6353057dfe4c')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-toolz/package.py b/var/spack/repos/builtin/packages/py-toolz/package.py
index 058d1a9283..98aa585fc0 100644
--- a/var/spack/repos/builtin/packages/py-toolz/package.py
+++ b/var/spack/repos/builtin/packages/py-toolz/package.py
@@ -12,8 +12,6 @@ class PyToolz(PythonPackage):
homepage = "http://github.com/pytoolz/toolz/"
url = "https://pypi.io/packages/source/t/toolz/toolz-0.9.0.tar.gz"
- import_modules = ['toolz', 'tlz', 'toolz.curried', 'toolz.sandbox']
-
version('0.9.0', sha256='929f0a7ea7f61c178bd951bdae93920515d3fbdbafc8e6caf82d752b9b3b31c9')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py
index 971db1c4ed..7022e562ff 100644
--- a/var/spack/repos/builtin/packages/py-torch/package.py
+++ b/var/spack/repos/builtin/packages/py-torch/package.py
@@ -13,42 +13,8 @@ class PyTorch(PythonPackage, CudaPackage):
homepage = "https://pytorch.org/"
git = "https://github.com/pytorch/pytorch.git"
- install_time_test_callbacks = ['install_test', 'import_module_test']
maintainers = ['adamjstewart']
- import_modules = [
- 'tools', 'caffe2', 'torch', 'tools.cwrap', 'tools.autograd',
- 'tools.setup_helpers', 'tools.shared', 'tools.jit', 'tools.pyi',
- 'tools.nnwrap', 'tools.cwrap.plugins', 'caffe2.core', 'caffe2.proto',
- 'caffe2.python', 'caffe2.distributed', 'caffe2.perfkernels',
- 'caffe2.experiments', 'caffe2.contrib', 'caffe2.quantization',
- 'caffe2.core.nomnigraph', 'caffe2.python.ideep', 'caffe2.python.mint',
- 'caffe2.python.layers', 'caffe2.python.onnx', 'caffe2.python.trt',
- 'caffe2.python.models', 'caffe2.python.docs', 'caffe2.python.modeling',
- 'caffe2.python.mkl', 'caffe2.python.examples',
- 'caffe2.python.predictor', 'caffe2.python.helpers',
- 'caffe2.python.rnn', 'caffe2.python.onnx.bin',
- 'caffe2.python.models.seq2seq', 'caffe2.experiments.python',
- 'caffe2.contrib.nnpack', 'caffe2.contrib.warpctc',
- 'caffe2.contrib.nccl', 'caffe2.contrib.playground',
- 'caffe2.contrib.gloo', 'caffe2.contrib.script', 'caffe2.contrib.prof',
- 'caffe2.contrib.tensorboard', 'caffe2.contrib.aten',
- 'caffe2.contrib.playground.resnetdemo',
- 'caffe2.contrib.script.examples', 'caffe2.contrib.aten.docs',
- 'caffe2.quantization.server', 'torch.nn', 'torch.onnx',
- 'torch.distributed', 'torch.autograd', 'torch.multiprocessing',
- 'torch.cuda', 'torch.backends', 'torch.optim', 'torch.utils',
- 'torch.contrib', 'torch.jit', 'torch.sparse',
- 'torch.for_onnx', 'torch._thnn', 'torch.distributions',
- 'torch.nn.parallel', 'torch.nn._functions', 'torch.nn.backends',
- 'torch.nn.utils', 'torch.nn.modules', 'torch.nn.parallel.deprecated',
- 'torch.nn._functions.thnn', 'torch.distributed.deprecated',
- 'torch.autograd._functions', 'torch.backends.cuda',
- 'torch.backends.mkl', 'torch.backends.mkldnn', 'torch.backends.openmp',
- 'torch.backends.cudnn', 'torch.utils.backcompat',
- 'torch.utils.bottleneck', 'torch.utils.ffi', 'torch.utils.tensorboard',
- 'torch.utils.data', 'torch.utils.data._utils'
- ]
version('master', branch='master', submodules=True)
version('1.7.1', tag='v1.7.1', submodules=True)
@@ -139,6 +105,7 @@ class PyTorch(PythonPackage, CudaPackage):
depends_on('blas')
depends_on('lapack')
depends_on('protobuf', when='@0.4:')
+ depends_on('py-protobuf', when='@0.4:', type=('build', 'run'))
depends_on('eigen', when='@0.4:')
# TODO: replace all third_party packages with Spack packages
@@ -333,6 +300,8 @@ class PyTorch(PythonPackage, CudaPackage):
if '+rocm' in self.spec:
python(os.path.join('tools', 'amd_build', 'build_amd.py'))
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
def install_test(self):
with working_dir('test'):
python('run_test.py')
diff --git a/var/spack/repos/builtin/packages/py-torchvision/package.py b/var/spack/repos/builtin/packages/py-torchvision/package.py
index 6cc176ffd7..0ad004a0c2 100644
--- a/var/spack/repos/builtin/packages/py-torchvision/package.py
+++ b/var/spack/repos/builtin/packages/py-torchvision/package.py
@@ -13,12 +13,6 @@ class PyTorchvision(PythonPackage):
git = "https://github.com/pytorch/vision.git"
maintainers = ['adamjstewart']
- import_modules = [
- 'torchvision', 'torchvision.datasets', 'torchvision.models',
- 'torchvision.transforms', 'torchvision.ops',
- 'torchvision.models.segmentation',
- 'torchvision.models.detection'
- ]
version('master', branch='master')
version('0.8.2', sha256='9a866c3c8feb23b3221ce261e6153fc65a98ce9ceaa71ccad017016945c178bf')
@@ -72,7 +66,6 @@ class PyTorchvision(PythonPackage):
# Many of the datasets require additional dependencies to use.
# These can be installed after the fact.
- depends_on('py-scipy', type='test')
depends_on('ffmpeg@3.1:', when='@0.4.2:')
diff --git a/var/spack/repos/builtin/packages/py-tpot/package.py b/var/spack/repos/builtin/packages/py-tpot/package.py
index 856336b54f..56ad5a4a93 100644
--- a/var/spack/repos/builtin/packages/py-tpot/package.py
+++ b/var/spack/repos/builtin/packages/py-tpot/package.py
@@ -20,7 +20,6 @@ class PyTpot(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('python@3.5:', type=('build', 'run'))
depends_on('py-deap@1.2:', type=('build', 'run'))
- depends_on('py-nose', type='test')
depends_on('py-numpy@1.16.3:', type=('build', 'run'))
depends_on('py-scikit-learn@0.22.0:', type=('build', 'run'))
depends_on('py-scipy@1.3.1', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-tqdm/package.py b/var/spack/repos/builtin/packages/py-tqdm/package.py
index b9e6a5b2a9..2daada6426 100644
--- a/var/spack/repos/builtin/packages/py-tqdm/package.py
+++ b/var/spack/repos/builtin/packages/py-tqdm/package.py
@@ -18,6 +18,3 @@ class PyTqdm(PythonPackage):
depends_on('python@2.6:2.8,3.2:', type=('build', 'run'))
depends_on('py-setuptools', type=('build', 'run'))
- depends_on('py-nose', type='test')
- depends_on('py-flake8', type='test')
- depends_on('py-coverage', type='test')
diff --git a/var/spack/repos/builtin/packages/py-traceback2/package.py b/var/spack/repos/builtin/packages/py-traceback2/package.py
index 766acea59a..4110732ce1 100644
--- a/var/spack/repos/builtin/packages/py-traceback2/package.py
+++ b/var/spack/repos/builtin/packages/py-traceback2/package.py
@@ -16,9 +16,3 @@ class PyTraceback2(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-pbr', type='build')
-
- # test-requirements.txt
- depends_on('py-contextlib2', type='test')
- depends_on('py-fixtures', type='test')
- depends_on('py-testtools', type='test')
- depends_on('py-unittest2', type='test')
diff --git a/var/spack/repos/builtin/packages/py-traitlets/package.py b/var/spack/repos/builtin/packages/py-traitlets/package.py
index df854d70c6..341664c37b 100644
--- a/var/spack/repos/builtin/packages/py-traitlets/package.py
+++ b/var/spack/repos/builtin/packages/py-traitlets/package.py
@@ -29,4 +29,3 @@ class PyTraitlets(PythonPackage):
depends_on('py-six', when='@:4', type=('build', 'run'))
depends_on('py-decorator', when='@:4', type=('build', 'run'))
depends_on('py-enum34', when='^python@:3.3', type=('build', 'run'))
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-typing/package.py b/var/spack/repos/builtin/packages/py-typing/package.py
index ee713c9213..af7679b62b 100644
--- a/var/spack/repos/builtin/packages/py-typing/package.py
+++ b/var/spack/repos/builtin/packages/py-typing/package.py
@@ -13,8 +13,6 @@ class PyTyping(PythonPackage):
homepage = "https://docs.python.org/3/library/typing.html"
url = "https://pypi.io/packages/source/t/typing/typing-3.7.4.1.tar.gz"
- import_modules = ['typing']
-
version('3.7.4.1', sha256='91dfe6f3f706ee8cc32d38edbbf304e9b7583fb37108fef38229617f8b3eba23')
version('3.6.6', sha256='4027c5f6127a6267a435201981ba156de91ad0d1d98e9ddc2aa173453453492d')
version('3.6.4', sha256='d400a9344254803a2368533e4533a4200d21eb7b6b729c173bc38201a74db3f2')
diff --git a/var/spack/repos/builtin/packages/py-update-checker/package.py b/var/spack/repos/builtin/packages/py-update-checker/package.py
index a1fbc7f368..8f65ee735b 100644
--- a/var/spack/repos/builtin/packages/py-update-checker/package.py
+++ b/var/spack/repos/builtin/packages/py-update-checker/package.py
@@ -16,7 +16,6 @@ class PyUpdateChecker(PythonPackage):
version('0.17', sha256='2def8db7f63bd45c7d19df5df570f3f3dfeb1a1f050869d7036529295db10e62')
depends_on('py-setuptools', type='build')
- depends_on('py-pytest@2.7.3:', type='test')
depends_on('python@3.6:', type=('build', 'run'), when='@0.18.0:')
depends_on('python@2.7:2.8,3.3:', type=('build', 'run'), when='@0.17')
depends_on('py-requests@2.3.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-urllib3/package.py b/var/spack/repos/builtin/packages/py-urllib3/package.py
index cbe4577ca4..8a3b5aea58 100644
--- a/var/spack/repos/builtin/packages/py-urllib3/package.py
+++ b/var/spack/repos/builtin/packages/py-urllib3/package.py
@@ -21,9 +21,6 @@ class PyUrllib3(PythonPackage):
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
- depends_on('py-pytest', type='test')
- depends_on('py-mock', type='test')
- depends_on('py-tornado', type='test')
variant('secure', default=False, description='Add SSL/TLS support')
depends_on('py-pyopenssl@0.14:', when='+secure')
diff --git a/var/spack/repos/builtin/packages/py-usgs/package.py b/var/spack/repos/builtin/packages/py-usgs/package.py
index 69f2b97056..ac6ee2c31f 100644
--- a/var/spack/repos/builtin/packages/py-usgs/package.py
+++ b/var/spack/repos/builtin/packages/py-usgs/package.py
@@ -17,8 +17,6 @@ class PyUsgs(PythonPackage):
version('0.2.7', sha256='484e569ea1baf9574e11ccf15219957364690dcf06ee3d09afef030df944e79b')
depends_on('py-setuptools', type='build')
- depends_on('py-mock', type='test')
- depends_on('py-pytest@2.8.7', type='test')
depends_on('py-click@4.0:', type=('build', 'run'))
depends_on('py-requests@2.7.0:', type=('build', 'run'))
depends_on('py-requests-futures@0.9.5:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-vermin/package.py b/var/spack/repos/builtin/packages/py-vermin/package.py
index bff9e0fc57..b3cb73bc73 100644
--- a/var/spack/repos/builtin/packages/py-vermin/package.py
+++ b/var/spack/repos/builtin/packages/py-vermin/package.py
@@ -11,7 +11,6 @@ class PyVermin(PythonPackage):
url = "https://github.com/netromdk/vermin/archive/v1.0.3.tar.gz"
maintainers = ['netromdk']
- import_modules = ['vermin']
version('1.0.3', sha256='1503be05b55cacde1278a1fe55304d8ee889ddef8ba16e120ac6686259bec95c')
version('1.0.2', sha256='e999d5f5455e1116b366cd1dcc6fecd254c7ae3606549a61bc044216f9bb5b55')
@@ -24,5 +23,7 @@ class PyVermin(PythonPackage):
depends_on('python@2.7:', type=('build', 'run'))
depends_on('py-setuptools', type=('build', 'run'))
- def test(self):
+ @run_after('build')
+ @on_package_attributes(run_tests=True)
+ def build_test(self):
make('test')
diff --git a/var/spack/repos/builtin/packages/py-wand/package.py b/var/spack/repos/builtin/packages/py-wand/package.py
index 17a5af30b3..95fab4eeae 100644
--- a/var/spack/repos/builtin/packages/py-wand/package.py
+++ b/var/spack/repos/builtin/packages/py-wand/package.py
@@ -24,7 +24,3 @@ class PyWand(PythonPackage):
depends_on('python@2.7:2.8,3.3:', type=('build', 'run'))
depends_on('py-sphinx@1:', type='build', when='+docs')
-
- depends_on('py-pytest@2.3.0:', type='test')
- depends_on('py-pytest-xdist@1.8:', type='test')
- depends_on('py-psutil@1.0.1:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-wasabi/package.py b/var/spack/repos/builtin/packages/py-wasabi/package.py
index c03d14f3e1..2e3939b582 100644
--- a/var/spack/repos/builtin/packages/py-wasabi/package.py
+++ b/var/spack/repos/builtin/packages/py-wasabi/package.py
@@ -13,4 +13,3 @@ class PyWasabi(PythonPackage):
version('0.6.0', sha256='b8dd3e963cd693fde1eb6bfbecf51790171aa3534fa299faf35cf269f2fd6063')
depends_on('py-setuptools', type='build')
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-werkzeug/package.py b/var/spack/repos/builtin/packages/py-werkzeug/package.py
index 876deeb445..6119a118ac 100644
--- a/var/spack/repos/builtin/packages/py-werkzeug/package.py
+++ b/var/spack/repos/builtin/packages/py-werkzeug/package.py
@@ -19,6 +19,3 @@ class PyWerkzeug(PythonPackage):
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
- depends_on('py-pytest', type='test')
- depends_on('py-hypothesis', type='test')
- depends_on('py-requests', type='test')
diff --git a/var/spack/repos/builtin/packages/py-wheel/package.py b/var/spack/repos/builtin/packages/py-wheel/package.py
index 846d315650..1209d6a283 100644
--- a/var/spack/repos/builtin/packages/py-wheel/package.py
+++ b/var/spack/repos/builtin/packages/py-wheel/package.py
@@ -25,5 +25,3 @@ class PyWheel(PythonPackage):
depends_on('py-setuptools@40.9.0:', when='@0.34.1:', type=('build', 'run'))
depends_on('py-setuptools', type=('build', 'run'))
depends_on('py-setuptools-scm@3.4:', when='@0.34.0', type='build')
- depends_on('py-pytest@3.0.0:', type='test')
- depends_on('py-pytest-cov', type='test')
diff --git a/var/spack/repos/builtin/packages/py-wub/package.py b/var/spack/repos/builtin/packages/py-wub/package.py
index 13e6309667..ec7dd636d3 100644
--- a/var/spack/repos/builtin/packages/py-wub/package.py
+++ b/var/spack/repos/builtin/packages/py-wub/package.py
@@ -17,13 +17,13 @@ class PyWub(PythonPackage):
version('0.4.0', sha256='1526aa392bccac71b872211c45f5b403ad3d55f5762e0ed34ff9086bc1dab6fd')
depends_on('py-six', type=('build', 'run'))
- depends_on('py-pytest', type=('build', 'run', 'test'))
- depends_on('py-pycmd', type=('build', 'run', 'test'))
+ depends_on('py-pytest', type=('build', 'run'))
+ depends_on('py-pycmd', type=('build', 'run'))
depends_on('py-biopython', type=('build', 'run'))
- depends_on('py-numpy', type=('build', 'run', 'test'))
+ depends_on('py-numpy', type=('build', 'run'))
depends_on('py-matplotlib', type=('build', 'run'))
depends_on('py-seaborn', type=('build', 'run'))
- depends_on('py-editdistance', type=('build', 'run', 'test'))
+ depends_on('py-editdistance', type=('build', 'run'))
depends_on('py-pandas@0.20.2:', type=('build', 'run'))
depends_on('py-pysam', type=('build', 'run'))
depends_on('py-tqdm', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-wxmplot/package.py b/var/spack/repos/builtin/packages/py-wxmplot/package.py
index 0d88748979..7b39f323c6 100644
--- a/var/spack/repos/builtin/packages/py-wxmplot/package.py
+++ b/var/spack/repos/builtin/packages/py-wxmplot/package.py
@@ -12,8 +12,6 @@ class PyWxmplot(PythonPackage):
homepage = "https://newville.github.io/wxmplot/"
url = "https://pypi.io/packages/source/w/wxmplot/wxmplot-0.9.38.tar.gz"
- import_modules = ['wxmplot']
-
version('0.9.38', sha256='82dc64abb42bdd03ec7067a3aa2a475001f2bc8e4772149bae47facf460c0081')
depends_on('py-setuptools', type='build')
@@ -21,4 +19,3 @@ class PyWxmplot(PythonPackage):
depends_on('py-six@1.10:', type=('build', 'run'))
depends_on('py-matplotlib@2.0:', type=('build', 'run'))
depends_on('py-wxpython@4.0.3:', type=('build', 'run'))
- depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-wxpython/package.py b/var/spack/repos/builtin/packages/py-wxpython/package.py
index 0eef3935f0..53c30684d2 100644
--- a/var/spack/repos/builtin/packages/py-wxpython/package.py
+++ b/var/spack/repos/builtin/packages/py-wxpython/package.py
@@ -12,18 +12,6 @@ class PyWxpython(PythonPackage):
homepage = "https://www.wxpython.org/"
url = "https://pypi.io/packages/source/w/wxPython/wxPython-4.0.6.tar.gz"
- import_modules = [
- 'wx', 'wx.tools', 'wx.py', 'wx.lib', 'wx.lib.analogclock',
- 'wx.lib.floatcanvas', 'wx.lib.plot', 'wx.lib.mixins', 'wx.lib.gizmos',
- 'wx.lib.art', 'wx.lib.pdfviewer', 'wx.lib.colourchooser',
- 'wx.lib.masked', 'wx.lib.ogl', 'wx.lib.wxcairo', 'wx.lib.agw',
- 'wx.lib.pubsub', 'wx.lib.editor', 'wx.lib.analogclock.lib_setup',
- 'wx.lib.floatcanvas.Utilities', 'wx.lib.plot.examples',
- 'wx.lib.agw.aui', 'wx.lib.agw.ribbon', 'wx.lib.agw.persist',
- 'wx.lib.pubsub.core', 'wx.lib.pubsub.utils', 'wx.lib.pubsub.core.arg1',
- 'wx.lib.pubsub.core.kwargs'
- ]
-
version('4.0.6', sha256='35cc8ae9dd5246e2c9861bb796026bbcb9fb083e4d49650f776622171ecdab37')
depends_on('wxwidgets')
diff --git a/var/spack/repos/builtin/packages/py-yahmm/package.py b/var/spack/repos/builtin/packages/py-yahmm/package.py
index a612930d49..d63ba0e6ee 100644
--- a/var/spack/repos/builtin/packages/py-yahmm/package.py
+++ b/var/spack/repos/builtin/packages/py-yahmm/package.py
@@ -19,4 +19,3 @@ class PyYahmm(PythonPackage):
depends_on('py-scipy@0.13.3:', type=('build', 'run'))
depends_on('py-matplotlib@1.3.1:', type=('build', 'run'))
depends_on('py-networkx@1.8.1:', type=('build', 'run'))
- depends_on('py-nose@1.3.3:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-zope-event/package.py b/var/spack/repos/builtin/packages/py-zope-event/package.py
index 6ad1049a89..177992a9ef 100644
--- a/var/spack/repos/builtin/packages/py-zope-event/package.py
+++ b/var/spack/repos/builtin/packages/py-zope-event/package.py
@@ -12,10 +12,6 @@ class PyZopeEvent(PythonPackage):
homepage = "http://github.com/zopefoundation/zope.event"
url = "https://pypi.io/packages/source/z/zope.event/zope.event-4.3.0.tar.gz"
- # FIXME: No idea why this import test fails.
- # Maybe some kind of namespace issue?
- # import_modules = ['zope.event']
-
version('4.3.0', sha256='e0ecea24247a837c71c106b0341a7a997e3653da820d21ef6c08b32548f733e7')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-zope-interface/package.py b/var/spack/repos/builtin/packages/py-zope-interface/package.py
index 7a45399ea8..4ce3314175 100644
--- a/var/spack/repos/builtin/packages/py-zope-interface/package.py
+++ b/var/spack/repos/builtin/packages/py-zope-interface/package.py
@@ -15,10 +15,6 @@ class PyZopeInterface(PythonPackage):
homepage = "https://github.com/zopefoundation/zope.interface"
url = "https://pypi.io/packages/source/z/zope.interface/zope.interface-4.5.0.tar.gz"
- # FIXME: No idea why these import tests fail.
- # Maybe some kind of namespace issue?
- # import_modules = ['zope.interface', 'zope.interface.common']
-
version('5.1.0', sha256='40e4c42bd27ed3c11b2c983fecfb03356fae1209de10686d03c02c8696a1d90e')
version('4.5.0', sha256='57c38470d9f57e37afb460c399eb254e7193ac7fb8042bd09bdc001981a9c74c')
@@ -26,6 +22,3 @@ class PyZopeInterface(PythonPackage):
depends_on('python@2.7:2.8,3.5:', type=('build', 'run'), when='@5.1.0:')
depends_on('py-setuptools', type=('build', 'run'))
- depends_on('py-zope-event', type='test')
- depends_on('py-nose', type='test')
- depends_on('py-coverage', type='test')
diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py
index 4d0df211e6..9737fc0830 100644
--- a/var/spack/repos/builtin/packages/python/package.py
+++ b/var/spack/repos/builtin/packages/python/package.py
@@ -945,13 +945,20 @@ class Python(AutotoolsPackage):
env.set('PYTHONPATH', pythonpath)
def setup_dependent_run_environment(self, env, dependent_spec):
- # For run time environment set only the path for
- # dependent_spec and prepend it to PYTHONPATH
- if dependent_spec.package.extends(self.spec):
- for lib in ['lib', 'lib64']:
- env.prepend_path('PYTHONPATH', join_path(
- dependent_spec.prefix, lib,
- 'python' + str(self.version.up_to(2)), 'site-packages'))
+ python_paths = []
+ for d in dependent_spec.traverse(deptype='run'):
+ if d.package.extends(self.spec):
+ # Python libraries may be installed in lib or lib64
+ # See issues #18520 and #17126
+ for lib in ['lib', 'lib64']:
+ root = join_path(
+ d.prefix, lib, 'python' + str(self.version.up_to(2)),
+ 'site-packages')
+ if os.path.exists(root):
+ python_paths.append(root)
+
+ pythonpath = ':'.join(python_paths)
+ env.prepend_path('PYTHONPATH', pythonpath)
def setup_dependent_package(self, module, dependent_spec):
"""Called before python modules' install() methods.