From 826cd07cf7bef7d610103516943b0ef73ab459ad Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 16 Dec 2020 17:15:03 -0600 Subject: [PATCH] PythonPackage: add import module smoke tests (#20023) --- .../docs/build_systems/pythonpackage.rst | 91 +++++++------- lib/spack/docs/build_systems/sippackage.rst | 31 +++-- lib/spack/spack/build_systems/python.py | 111 ++++++++---------- lib/spack/spack/build_systems/sip.py | 19 +-- lib/spack/spack/package.py | 2 +- .../packages/aws-parallelcluster/package.py | 4 - .../repos/builtin/packages/gdal/package.py | 19 +-- .../builtin/packages/mercurial/package.py | 7 -- .../builtin/packages/py-accimage/package.py | 4 +- .../packages/py-adb-enhanced/package.py | 1 - .../builtin/packages/py-aenum/package.py | 2 - .../packages/py-aiohttp-cors/package.py | 19 +++ .../builtin/packages/py-alabaster/package.py | 3 - .../builtin/packages/py-apipkg/package.py | 2 - .../builtin/packages/py-appdirs/package.py | 10 +- .../builtin/packages/py-archspec/package.py | 2 - .../packages/py-argon2-cffi/package.py | 3 - .../repos/builtin/packages/py-args/package.py | 1 - .../builtin/packages/py-arrow/package.py | 3 - .../builtin/packages/py-asteval/package.py | 1 - .../builtin/packages/py-astor/package.py | 2 - .../builtin/packages/py-astropy/package.py | 4 +- .../packages/py-atomicwrites/package.py | 2 - .../builtin/packages/py-attrs/package.py | 10 -- .../packages/py-awesome-slugify/package.py | 1 - .../packages/py-azure-cli-core/package.py | 1 - .../py-azure-cli-telemetry/package.py | 1 - .../builtin/packages/py-azure-cli/package.py | 1 - .../builtin/packages/py-babel/package.py | 4 - .../packages/py-basis-set-exchange/package.py | 2 - .../builtin/packages/py-black/package.py | 13 ++ .../repos/builtin/packages/py-blis/package.py | 1 - .../builtin/packages/py-blosc/package.py | 2 - .../builtin/packages/py-boto3/package.py | 5 - .../builtin/packages/py-botocore/package.py | 4 - .../builtin/packages/py-bottleneck/package.py | 1 - .../builtin/packages/py-brian2/package.py | 1 - .../builtin/packages/py-cairocffi/package.py | 5 - .../builtin/packages/py-cartopy/package.py | 11 -- .../builtin/packages/py-certifi/package.py | 2 - .../repos/builtin/packages/py-cffi/package.py | 4 - .../builtin/packages/py-chardet/package.py | 2 - .../packages/py-cloudpickle/package.py | 6 - .../builtin/packages/py-cmocean/package.py | 1 - .../builtin/packages/py-codecov/package.py | 4 - .../builtin/packages/py-counter/package.py | 2 - .../builtin/packages/py-cvxopt/package.py | 2 - .../builtin/packages/py-cvxpy/package.py | 3 - .../builtin/packages/py-cython/package.py | 10 +- .../repos/builtin/packages/py-dask/package.py | 3 - .../builtin/packages/py-dateparser/package.py | 5 - .../builtin/packages/py-deeptools/package.py | 2 - .../builtin/packages/py-diskcache/package.py | 1 - .../builtin/packages/py-docopt/package.py | 2 - .../builtin/packages/py-docutils/package.py | 11 -- .../builtin/packages/py-dxchange/package.py | 2 - .../builtin/packages/py-dxfile/package.py | 2 - .../py-easybuild-framework/package.py | 3 - .../builtin/packages/py-ecdsa/package.py | 1 - .../repos/builtin/packages/py-ecos/package.py | 1 - .../builtin/packages/py-edffile/package.py | 2 - .../builtin/packages/py-elephant/package.py | 1 - .../packages/py-entrypoints/package.py | 2 - .../packages/py-fenics-dolfinx/package.py | 1 - .../builtin/packages/py-filemagic/package.py | 2 - .../builtin/packages/py-fiona/package.py | 5 - .../builtin/packages/py-fiscalyear/package.py | 5 - .../builtin/packages/py-fisher/package.py | 1 - .../builtin/packages/py-freezegun/package.py | 4 - .../builtin/packages/py-fsspec/package.py | 2 - .../builtin/packages/py-funcsigs/package.py | 3 - .../builtin/packages/py-future/package.py | 26 ++++ .../packages/py-gee-asset-manager/package.py | 1 - .../builtin/packages/py-geeadd/package.py | 1 - .../packages/py-geoalchemy2/package.py | 6 - .../builtin/packages/py-geopandas/package.py | 3 - .../packages/py-google-api-core/package.py | 4 + .../builtin/packages/py-gpustat/package.py | 2 - .../builtin/packages/py-graphviz/package.py | 5 - .../builtin/packages/py-grequests/package.py | 1 - .../repos/builtin/packages/py-h5py/package.py | 2 - .../repos/builtin/packages/py-h5sh/package.py | 1 - .../builtin/packages/py-hacking/package.py | 2 - .../builtin/packages/py-horovod/package.py | 59 ++++++++-- .../builtin/packages/py-htmlgen/package.py | 2 - .../builtin/packages/py-humanize/package.py | 1 - .../builtin/packages/py-hypothesis/package.py | 8 -- .../builtin/packages/py-imagesize/package.py | 2 - .../builtin/packages/py-iminuit/package.py | 6 - .../packages/py-importlib-metadata/package.py | 2 - .../packages/py-intervaltree/package.py | 1 - .../builtin/packages/py-ipykernel/package.py | 4 - .../builtin/packages/py-ipython/package.py | 6 - .../builtin/packages/py-ipywidgets/package.py | 2 - .../builtin/packages/py-isort/package.py | 2 - .../builtin/packages/py-jinja2/package.py | 2 - .../builtin/packages/py-jmespath/package.py | 3 - .../packages/py-jupyterlab-server/package.py | 2 - .../builtin/packages/py-jupyterlab/package.py | 5 - .../builtin/packages/py-kmodes/package.py | 2 - .../builtin/packages/py-latexcodec/package.py | 2 - .../builtin/packages/py-linecache2/package.py | 2 - .../builtin/packages/py-locket/package.py | 2 - .../packages/py-logilab-common/package.py | 1 - .../builtin/packages/py-luigi/package.py | 2 - .../repos/builtin/packages/py-mako/package.py | 2 - .../builtin/packages/py-markupsafe/package.py | 2 - .../builtin/packages/py-matplotlib/package.py | 17 +-- .../builtin/packages/py-mccabe/package.py | 1 - .../builtin/packages/py-merlin/package.py | 3 - .../repos/builtin/packages/py-mock/package.py | 2 - .../packages/py-more-itertools/package.py | 2 - .../packages/py-msal-extensions/package.py | 1 - .../repos/builtin/packages/py-mypy/package.py | 5 - .../repos/builtin/packages/py-nose/package.py | 4 - .../builtin/packages/py-numpy/package.py | 25 +--- .../builtin/packages/py-oauthlib/package.py | 9 -- .../builtin/packages/py-olefile/package.py | 2 - .../packages/py-openslide-python/package.py | 2 - .../builtin/packages/py-opt-einsum/package.py | 3 - .../packages/py-ordereddict/package.py | 2 - .../repos/builtin/packages/py-oset/package.py | 2 - .../builtin/packages/py-overpy/package.py | 1 - .../builtin/packages/py-packaging/package.py | 10 +- .../builtin/packages/py-pandas/package.py | 29 ++--- .../builtin/packages/py-parso/package.py | 2 - .../builtin/packages/py-partd/package.py | 2 - .../builtin/packages/py-pathlib2/package.py | 2 - .../builtin/packages/py-patsy/package.py | 2 - .../repos/builtin/packages/py-pbr/package.py | 16 --- .../repos/builtin/packages/py-pep8/package.py | 2 - .../builtin/packages/py-pillow/package.py | 6 - .../builtin/packages/py-pkgconfig/package.py | 3 - .../builtin/packages/py-pkginfo/package.py | 2 - .../builtin/packages/py-planet/package.py | 3 - .../builtin/packages/py-pluggy/package.py | 2 - .../builtin/packages/py-preshed/package.py | 1 - .../builtin/packages/py-projectq/package.py | 6 - .../packages/py-prometheus-client/package.py | 12 ++ .../builtin/packages/py-psutil/package.py | 3 - .../repos/builtin/packages/py-py/package.py | 9 -- .../builtin/packages/py-py2cairo/package.py | 2 + .../repos/builtin/packages/py-py4j/package.py | 1 - .../builtin/packages/py-pyarrow/package.py | 5 - .../builtin/packages/py-pybind11/package.py | 1 - .../packages/py-pybtex-docutils/package.py | 2 - .../builtin/packages/py-pybtex/package.py | 12 -- .../builtin/packages/py-pycparser/package.py | 2 - .../builtin/packages/py-pycuda/package.py | 2 - .../builtin/packages/py-pydotplus/package.py | 1 - .../builtin/packages/py-pygments/package.py | 9 -- .../packages/py-pyinstrument-cext/package.py | 1 - .../packages/py-pyinstrument/package.py | 1 - .../builtin/packages/py-pyjwt/package.py | 3 - .../builtin/packages/py-pykml/package.py | 1 - .../repos/builtin/packages/py-pynn/package.py | 2 - .../builtin/packages/py-pyparsing/package.py | 2 - .../builtin/packages/py-pyprecice/package.py | 3 - .../builtin/packages/py-pyproj/package.py | 1 - .../builtin/packages/py-pyqt4/package.py | 7 -- .../builtin/packages/py-pyqt5/package.py | 8 -- .../builtin/packages/py-pysocks/package.py | 2 - .../packages/py-pytest-httpbin/package.py | 1 - .../packages/py-pytest-isort/package.py | 1 - .../packages/py-pytest-pep8/package.py | 2 - .../packages/py-pytest-runner/package.py | 2 - .../builtin/packages/py-pytest/package.py | 2 - .../packages/py-python-dateutil/package.py | 14 --- .../packages/py-python-swiftclient/package.py | 2 - .../packages/py-python-utils/package.py | 2 - .../repos/builtin/packages/py-pytz/package.py | 2 - .../builtin/packages/py-pywavelets/package.py | 2 - .../builtin/packages/py-pyyaml/package.py | 2 - .../builtin/packages/py-pyzmq/package.py | 14 ++- .../builtin/packages/py-qsymm/package.py | 1 - .../builtin/packages/py-qtconsole/package.py | 2 - .../builtin/packages/py-rasterio/package.py | 8 -- .../packages/py-readme-renderer/package.py | 2 - .../packages/py-requests-mock/package.py | 2 - .../packages/py-requests-oauthlib/package.py | 2 - .../builtin/packages/py-requests/package.py | 18 --- .../packages/py-robotframework/package.py | 4 - .../repos/builtin/packages/py-rsa/package.py | 2 - .../builtin/packages/py-s3transfer/package.py | 3 - .../builtin/packages/py-scandir/package.py | 2 - .../packages/py-scikit-learn/package.py | 19 +-- .../packages/py-scikit-optimize/package.py | 1 - .../builtin/packages/py-scipy/package.py | 31 +---- .../packages/py-setuptools-scm/package.py | 2 - .../builtin/packages/py-setuptools/package.py | 25 ---- .../builtin/packages/py-shapely/package.py | 6 +- .../repos/builtin/packages/py-six/package.py | 10 +- .../packages/py-snowballstemmer/package.py | 2 - .../builtin/packages/py-spdlog/package.py | 1 - .../builtin/packages/py-spefile/package.py | 2 - .../packages/py-sphinx-rtd-theme/package.py | 3 - .../builtin/packages/py-sphinx/package.py | 18 --- .../py-sphinxcontrib-applehelp/package.py | 4 - .../py-sphinxcontrib-bibtex/package.py | 2 - .../py-sphinxcontrib-devhelp/package.py | 4 - .../py-sphinxcontrib-htmlhelp/package.py | 4 - .../py-sphinxcontrib-jsmath/package.py | 4 - .../py-sphinxcontrib-programoutput/package.py | 3 - .../py-sphinxcontrib-qthelp/package.py | 4 - .../package.py | 4 - .../py-sphinxcontrib-websupport/package.py | 10 -- .../builtin/packages/py-sqlalchemy/package.py | 3 - .../builtin/packages/py-srsly/package.py | 5 - .../packages/py-statsmodels/package.py | 2 + .../builtin/packages/py-tables/package.py | 5 - .../builtin/packages/py-tatsu/package.py | 1 - .../builtin/packages/py-tensorflow/package.py | 14 +-- .../packages/py-testrepository/package.py | 8 -- .../builtin/packages/py-theano/package.py | 4 - .../builtin/packages/py-thinc/package.py | 3 - .../packages/py-threadpoolctl/package.py | 2 - .../builtin/packages/py-tifffile/package.py | 2 - .../builtin/packages/py-tomopy/package.py | 5 - .../builtin/packages/py-toolz/package.py | 2 - .../builtin/packages/py-torch/package.py | 37 +----- .../packages/py-torchvision/package.py | 7 -- .../repos/builtin/packages/py-tpot/package.py | 1 - .../repos/builtin/packages/py-tqdm/package.py | 3 - .../builtin/packages/py-traceback2/package.py | 6 - .../builtin/packages/py-traitlets/package.py | 1 - .../builtin/packages/py-typing/package.py | 2 - .../packages/py-update-checker/package.py | 1 - .../builtin/packages/py-urllib3/package.py | 3 - .../repos/builtin/packages/py-usgs/package.py | 2 - .../builtin/packages/py-vermin/package.py | 5 +- .../repos/builtin/packages/py-wand/package.py | 4 - .../builtin/packages/py-wasabi/package.py | 1 - .../builtin/packages/py-werkzeug/package.py | 3 - .../builtin/packages/py-wheel/package.py | 2 - .../repos/builtin/packages/py-wub/package.py | 8 +- .../builtin/packages/py-wxmplot/package.py | 3 - .../builtin/packages/py-wxpython/package.py | 12 -- .../builtin/packages/py-yahmm/package.py | 1 - .../builtin/packages/py-zope-event/package.py | 4 - .../packages/py-zope-interface/package.py | 7 -- .../repos/builtin/packages/python/package.py | 21 ++-- 241 files changed, 335 insertions(+), 1046 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-aiohttp-cors/package.py diff --git a/lib/spack/docs/build_systems/pythonpackage.rst b/lib/spack/docs/build_systems/pythonpackage.rst index ef06725e010..de92595efa5 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,49 +688,65 @@ 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: -These tests most often catch missing dependencies and non-RPATHed +.. code-block:: python + + @property + def import_modules(self): + modules = ['yaml'] + + if '+libyaml' in self.spec: + modules.append('yaml.cyaml') + + 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 ddf9a26ab9f..c636d856d23 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 76159d88a14..87bc7e51359 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -10,8 +10,9 @@ 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 @@ def configure(self, spec, prefix): # 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 @@ def configure(self, spec, prefix): 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 @@ def setup_py(self, *args, **kwargs): 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 @@ def check_args(self, spec, prefix): # 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 f814ef1837e..e4c283881d0 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 @@ def install_args(self): # 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 de394e2d455..531f4aadee1 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1761,7 +1761,7 @@ def run_test(self, exe, options=[], expected=[], status=0, 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 e970fee0e5a..4f69548a45f 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 a6f1dfd9094..fc561282695 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() @@ -553,16 +550,12 @@ def install(self, spec, prefix): make('install') 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 620ef19bdba..84d8b9ebfd1 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 3ef812704c1..a22c3631eee 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 92eff9a04a8..f1e830e9c14 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 3fa4c63a80d..fb275c78913 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 00000000000..8d4dd2f7d1e --- /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 5d623519b70..65ed9f89b63 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 6799ad8f26f..f5812df50d7 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 29b6c4f85b7..87e3bba0e7a 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 54aaea80376..be8ffe331ac 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 954c86331cd..e799949e13b 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 08364481e81..d425a06e245 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 32a9885f8f4..cfc62140c59 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 4f80a227896..7392c3d2963 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 38c77c51962..97ecb719566 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 6e5dc8282be..38501cf3e0b 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 @@ def build_args(self, spec, prefix): 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 de8ec7788b1..7ef16004c36 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 cdb3d490c54..6a17ec7fc6c 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 2d8ac680e47..5348236a0fc 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 07e520c530a..adaeb282e1b 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 bb379686bee..18f8cb5591b 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 faa09d1cfda..44017651e78 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 f95746fe8f9..13bf99a07b9 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 92cd2b6d729..03bc8b99caa 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 913b2592c8b..52f18678677 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 ce7f6c4c655..74ea43690bf 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 da185302ff4..8e6badf99f7 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 e31d3b81101..0daa62be81d 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 7b05bf0c724..fe0f738a348 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 8870b3197c9..9bd5adb5f50 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 0e7a7bf31d3..849ffca005c 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 d4cf1ca37c9..1fd2a95fbbc 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 1d19b4da2db..8eebd1fb2b7 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 @@ def build_ext_args(self, spec, prefix): 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 033ac47a88d..78c70cff3f7 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 f333c73ffad..74168d93abb 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 8cd829597db..ba24e728d7b 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 0f7e5252903..6d55d6c8f13 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 aca64870ccc..6094fb381fb 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 afced5c19b5..73510ac1841 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 f751818caa2..7f0e7ffe91e 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 1cc1a932c1e..930a40385f3 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 68b82e8a596..0b0abad4cfc 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 2dd532be2fd..c37cf1f54a5 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 @@ def command(self): """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 b6f3a07f10a..96744de7580 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 5d233e63772..cc0ac18a8a1 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 35103a5e5de..8ce9e1519ee 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 042183cdf32..8e8f76326b2 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 ce0dcd40ad6..02bea78e7a4 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 07b0da25342..4ff1d4252ed 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 be0a23916c4..5a96d68bdc2 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 aa7eac9d917..27066291c76 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 9096f62708a..e283fd825ba 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 2401b9bd276..0ba06e98fb8 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 84e3bcd9eba..97ce50b68ca 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 ab4a9f9ed92..d902b922b1d 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 7d2477ef401..4ce26bc339a 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 84bc7c20f4e..4a05b19a646 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 f84f9ce5652..9c709d9166a 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 8d425dfb37f..d1a5ffd3c83 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 b4213d5f61a..ffaf250408c 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 407caa7ce56..a0b95ff73fe 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 45e0fc51106..17318ee2021 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 3329c975bcc..4a99441796a 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 bf82fc803a0..f0b58dcb77d 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 ec53173d157..77db9cd6ade 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 af2bce85f09..d89490eaf51 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 f32108bccd9..921d0057ace 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 78c260243b4..42510838eb8 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 dad20c8e169..09080f7d57e 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 3373e961e5d..e27fec82057 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 f8ca4ea2b5a..be9ce2e32a8 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 1bfab1ba351..c351d3770be 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 144321cccff..e556430f9d5 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 53b804bd6f6..4f171dabc17 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 2b7d34cc4bd..a6479c43795 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 a85c123475a..e49fd759014 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 dae3f8b2811..bb8e8c42b28 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 099d0cbf005..26cd83c6c44 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 @@ def setup_build_environment(self, env): 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 b15fe697696..5c3ca45b6d3 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 c83200de006..4778ce24d66 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 79a39055d08..68e64adc685 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 e9f20334134..2dbcbdb71ba 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 e9ec1b73bf3..035b05cab61 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 f22a8126055..2df356f6360 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 f5d4501dd7d..c89ae107caf 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 1428f7d8049..eee3e033b71 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 2f10a7dddf3..ba625523044 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 11b0989069d..076d0138638 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 1446f709790..612fa8c7697 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 588367c0f58..4210fecc522 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 ed5da676f26..f339adce11e 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 09bfce1b1f3..16098d58bfd 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 f19c1b81740..1f3a460cd32 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 a3bbe8ea75e..e3c348a3b98 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 d3790221423..9df819d09bc 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 b4900597053..7e23622206f 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 2ef69b29920..ed0c47e0fd0 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 ad558923410..8e26e028d9d 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 18adbff0498..cfadfde68fd 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 b60dd8d1844..0a23413bace 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 f334d03cee5..a1aa3b80b25 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 ebb95033cf0..b8589ffc59b 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 @@ def configure(self): 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 cd4c0df0891..37b8f80f128 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 199c0bcd5fe..231f90a278e 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 1f35d260200..b406da3f8d9 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 dba18e66b3f..d21f5e57d45 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 75e6740f359..5a17c1ad37b 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 f822ea567eb..1e1d57f7014 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 fcafc521c7e..a60a096f189 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 fd090194692..106f40e76ce 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 @@ def build_args(self, spec, prefix): 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 93fbb9aaccd..d69ae5bc6cf 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 4e9826b18b9..34db8febe3c 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 371b218cb34..aa12432d50f 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 0f430c76f8a..9bf9c57fd2f 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 afba6ee6f30..f26d76e0496 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 9dfb7c47db3..7bbf9fac623 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 24b3186e178..80262e03bdc 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 30b44d95228..89ed821735c 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 55f5d27f0e8..320d31231b0 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 3f54eca9cea..cd0e93f273f 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 8e99413822a..751968fc539 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 5da1abbe186..10f547ce900 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 eb20c740494..6b265dbfb36 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 80abed9db01..27bee158f67 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 d1eaa134704..ab5c65c5d27 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 5ff2621c2d0..c12b35deb5b 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 @@ def setup_build_environment(self, env): 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 f5194221388..550a936dcba 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 ed00f37a5d9..366f4a94713 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 89b888097e8..617c0e8efcc 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 1e2fb3f2bd8..41a6780e415 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 cb8cc2ed10b..1798c1fbdce 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 d22a51584f4..d1f9efc2a07 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 86733359cf2..afb0f282e13 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 ba64a0e0ebd..70f898de39a 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 995612d20ac..e7320a01243 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 5c492a9167d..b8ab752c5f9 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 e67f5a3ec73..e291dac918c 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 3f8c3f640e5..0e1c73909e6 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 92db96105af..bf9ff13fd0d 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 ba93a2a9940..c2df3bf8eef 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 56bfb42a508..2df63fbd46e 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 6d8c217e913..6eef675ba4a 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 a5f2153d9d4..544c739d23f 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 07370cbc1ca..ccea3438cfb 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 d7559b36d89..585a3b2cbb8 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 4eb2f799c1e..970f5c5f16d 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 ffc4c9ef0b6..8acd33773e4 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 a8006ef623a..fa76c2a39a6 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 bfa1359ebfe..38a47c94de6 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 12304f9c9cb..85d22a9dd5f 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 ea7efac809b..bb22f34c209 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 36cb9957f5e..8636fbb586e 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 dfc0edf9246..7c4e2eb80c3 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 5405911401f..bd2b8f9cc9c 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 e26c66a891c..2770ffe20d7 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 200902f536b..2a37391e63d 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 5e270bf4df1..241828a9773 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 d55b9550e24..2218d5debfe 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 f365a172ebf..eb8ae7d9746 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 d3337bcac93..79135892f6c 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 b6d2c914c54..696aa573c24 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 16bff6858dd..cf8ea1f90d3 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 a016686406f..a8f24784be3 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 6c8e3aa732d..e192c67cc9b 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 d4d752fdaa7..601509d9ba7 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 460c6011e71..91d077d13e6 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 00b3d848b7d..419282250f1 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 @@ def build_ext_args(self, spec, prefix): 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 9cd9e462428..3e5dae326ab 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 6817a72a807..e550f342cd1 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 046e04c2e57..75c1e97b1ca 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 8d3b131b4ee..ab5eec1633b 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 edfdfa6d466..9df50f28902 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 94807b5cbd8..9b3b0e27e08 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 6c6a633e47e..b6f0a666674 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 30af0cd73f6..513e58cc02c 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 6eaa4791025..bce66cceaf3 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 85e2b84d00c..4f7604e828d 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 5db6bd28a3e..59ec02bfcf9 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 a32b03a06ea..57f7e2cfa67 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 0a9bf34523a..ce825077ebf 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 @@ def setup_build_environment(self, env): 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 6f148d5fe1c..3585143e3d2 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 7f6027c0e1c..c01d47e55e6 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 @@ def build_args(self, spec, prefix): 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 eb157f8ef51..21ec2203ce1 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 1a2930498b9..29e705c5ac5 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 @@ def url_for_version(self, version): 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 c03106a6be4..345d28b042d 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 @@ def setup_build_environment(self, env): 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 22490eb9a20..291d38b7411 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 80af93c40a7..4502c5cc7b4 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 2e149b6b309..0e9d3773537 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 54eec9ff91f..fed2c428a6a 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 bc09b3324b5..21446b2d236 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 d326c53f4c9..2545853d270 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 67ba38134cc..970a8c253a1 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 d7820786b05..c9457234e05 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 1954fc96771..cc7cec387b5 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 95f6819d591..d368247ca76 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 add0160ac8e..b471284728b 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 56028f51633..c512f769631 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 19fd328f376..b0b654e48f3 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 3bad6d661aa..59c214a8eb4 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 1e4d1051a38..8892f3793b8 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 b1497b6da0f..37b65682909 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 46b1b50af05..a0f0405e56e 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 b00e51730be..d2bfd16e370 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 2abece3e518..6d72791816f 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 8b157932bf4..6e45f07aebb 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 d0b21d38e57..71c7a91ddbb 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 @@ def install(self, spec, prefix): 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 881191bc3fc..bb889bd4d42 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 c7c95fd0e3a..d06e342ea41 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 89764780006..2e344b8308e 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 f28c9a37b52..ca3c6fb4761 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 905718ec89f..230226ca450 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 0b7f814775d..61184b99c8b 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 058d1a92836..98aa585fc01 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 971db1c4eda..7022e562ff8 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 @@ def build_amd(self): 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 6cc176ffd70..0ad004a0c29 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 856336b54f9..56ad5a4a930 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 b9e6a5b2a9a..2daada64268 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 766acea59ae..4110732ce11 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 df854d70c64..341664c37b6 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 ee713c92134..af7679b62b4 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 a1fbc7f3681..8f65ee735bc 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 cbe4577ca41..8a3b5aea58b 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 69f2b970563..ac6ee2c31f2 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 bff9e0fc57a..b3cb73bc737 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 17a5af30b35..95fab4eeaed 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 c03d14f3e1b..2e3939b5820 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 876deeb4453..6119a118ac5 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 846d3156505..1209d6a283f 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 13e63096676..ec7dd636d3b 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 0d887489797..7b39f323c69 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 0eef3935f0c..53c30684d20 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 a612930d49c..d63ba0e6eee 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 6ad1049a89a..177992a9ef0 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 7a45399ea86..4ce33141751 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 4d0df211e67..9737fc08304 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -945,13 +945,20 @@ def setup_dependent_build_environment(self, env, dependent_spec): 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.