From cc01e89d6b0a615059fe3c8ac933230ed41930df Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 25 Aug 2018 14:12:46 -0500 Subject: Update to latest version of pytest and dependencies (#9087) * Update to latest version of pytest and dependencies * Fix bug in installation tests --- lib/spack/spack/build_systems/python.py | 2 +- var/spack/repos/builtin/packages/gdal/package.py | 2 +- .../builtin/packages/py-atomicwrites/package.py | 38 ++++++++++++++++++++++ .../repos/builtin/packages/py-funcsigs/package.py | 11 +++++-- .../builtin/packages/py-more-itertools/package.py | 7 ++-- .../repos/builtin/packages/py-numpy/package.py | 13 ++++---- .../repos/builtin/packages/py-pathlib2/package.py | 8 +++-- .../repos/builtin/packages/py-pluggy/package.py | 4 ++- var/spack/repos/builtin/packages/py-py/package.py | 11 +++++-- .../repos/builtin/packages/py-pytest/package.py | 14 ++++---- .../repos/builtin/packages/py-scandir/package.py | 8 +++-- .../repos/builtin/packages/py-scipy/package.py | 2 +- .../builtin/packages/py-setuptools-scm/package.py | 8 +++-- .../builtin/packages/py-setuptools/package.py | 19 ++++++++--- 14 files changed, 111 insertions(+), 36 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-atomicwrites/package.py diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index 7933253eed..aadb4e24a2 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -400,7 +400,7 @@ class PythonPackage(PackageBase): # Make sure we are importing the installed modules, # not the ones in the current directory - with working_dir('..'): + with working_dir('spack-test', create=True): for module in self.import_modules: self.python('-c', 'import {0}'.format(module)) diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index e49f473198..cce78ae22d 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -440,7 +440,7 @@ class Gdal(AutotoolsPackage): @on_package_attributes(run_tests=True) def import_module_test(self): if '+python' in self.spec: - with working_dir('..'): + 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-atomicwrites/package.py b/var/spack/repos/builtin/packages/py-atomicwrites/package.py new file mode 100644 index 0000000000..6bef606dd7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-atomicwrites/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2018, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/spack/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyAtomicwrites(PythonPackage): + """Atomic file writes.""" + + homepage = "https://github.com/untitaker/python-atomicwrites" + url = "https://pypi.io/packages/source/a/atomicwrites/atomicwrites-1.1.5.tar.gz" + + import_modules = ['atomicwrites'] + + version('1.1.5', sha256='240831ea22da9ab882b551b31d4225591e5e447a68c5e188db5b89ca1d487585') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-funcsigs/package.py b/var/spack/repos/builtin/packages/py-funcsigs/package.py index ae52bade12..e51e760942 100644 --- a/var/spack/repos/builtin/packages/py-funcsigs/package.py +++ b/var/spack/repos/builtin/packages/py-funcsigs/package.py @@ -27,9 +27,14 @@ from spack import * class PyFuncsigs(PythonPackage): """Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2.""" + homepage = "https://pypi.python.org/pypi/funcsigs" - url = "https://pypi.io/packages/source/f/funcsigs/funcsigs-0.4.tar.gz" + url = "https://pypi.io/packages/source/f/funcsigs/funcsigs-1.0.2.tar.gz" + + import_modules = ['funcsigs'] - version('0.4', 'fb1d031f284233e09701f6db1281c2a5') + version('1.0.2', '7e583285b1fb8a76305d6d68f4ccc14e') + version('0.4', 'fb1d031f284233e09701f6db1281c2a5') - depends_on('py-setuptools', type='build') + depends_on('py-setuptools@17.1:', type='build') + depends_on('py-unittest2', 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 736b908600..707bb2f06c 100644 --- a/var/spack/repos/builtin/packages/py-more-itertools/package.py +++ b/var/spack/repos/builtin/packages/py-more-itertools/package.py @@ -29,10 +29,13 @@ class PyMoreItertools(PythonPackage): """Additions to the standard Python itertools package.""" homepage = "https://github.com/erikrose/more-itertools" - url = "https://pypi.io/packages/source/m/more-itertools/more-itertools-4.1.0.tar.gz" + url = "https://pypi.io/packages/source/m/more-itertools/more-itertools-4.3.0.tar.gz" + import_modules = ['more_itertools', 'more_itertools.tests'] + + version('4.3.0', '42157ef9b677bdf6d3609ed6eadcbd4a') version('4.1.0', '246f46686d95879fbad37855c115dc52') - version('2.2', 'b8d328a33f966bf40bb829bcf8da35ce') + version('2.2', 'b8d328a33f966bf40bb829bcf8da35ce') depends_on('py-setuptools', type='build') depends_on('py-six@1.0.0:1.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 435491f658..7c0dcafbef 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -34,7 +34,7 @@ class PyNumpy(PythonPackage): number capabilities""" homepage = "http://www.numpy.org/" - url = "https://pypi.io/packages/source/n/numpy/numpy-1.13.1.zip" + url = "https://pypi.io/packages/source/n/numpy/numpy-1.15.1.zip" install_time_test_callbacks = ['install_test', 'import_module_test'] @@ -45,9 +45,7 @@ class PyNumpy(PythonPackage): 'numpy.distutils.command', 'numpy.distutils.fcompiler' ] - # FIXME: numpy._build_utils and numpy.core.code_generators failed to import - # FIXME: Is this expected? - + version('1.15.1', '898004d5be091fde59ae353e3008fe9b') version('1.14.3', '97416212c0a172db4bc6b905e9c4634b') version('1.14.2', '080f01a19707cf467393e426382c7619') version('1.14.1', 'b8324ef90ac9064cd0eac46b8b388674') @@ -67,12 +65,13 @@ class PyNumpy(PythonPackage): variant('blas', default=True, description='Build with BLAS support') variant('lapack', default=True, description='Build with LAPACK support') - depends_on('python@2.7:2.8,3.4:') + depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) depends_on('py-setuptools', type='build') depends_on('blas', when='+blas') depends_on('lapack', when='+lapack') - depends_on('py-nose@1.0.0:', type='test') + depends_on('py-nose@1.0.0:', when='@:1.14', type='test') + depends_on('py-pytest', when='@1.15:', type='test') def setup_dependent_package(self, module, dependent_spec): python_version = self.spec['python'].version.up_to(2) @@ -182,5 +181,5 @@ class PyNumpy(PythonPackage): # 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('..'): + 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-pathlib2/package.py b/var/spack/repos/builtin/packages/py-pathlib2/package.py index 352efb0811..0e3975c140 100644 --- a/var/spack/repos/builtin/packages/py-pathlib2/package.py +++ b/var/spack/repos/builtin/packages/py-pathlib2/package.py @@ -29,9 +29,13 @@ class PyPathlib2(PythonPackage): """Backport of pathlib from python 3.4""" homepage = "https://pypi.python.org/pypi/pathlib2" - url = "https://pypi.io/packages/source/p/pathlib2/pathlib2-2.1.0.tar.gz" + url = "https://pypi.io/packages/source/p/pathlib2/pathlib2-2.3.2.tar.gz" + import_modules = ['pathlib2'] + + version('2.3.2', 'fd76fb5d0baa798bfe12fb7965da97f8') version('2.1.0', '38e4f58b4d69dfcb9edb49a54a8b28d2') depends_on('py-setuptools', type='build') - depends_on('python@:3.3') + depends_on('py-six', type=('build', 'run')) + depends_on('py-scandir', when='^python@:3.4', 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 6e77c7a8f2..5a51db0f50 100644 --- a/var/spack/repos/builtin/packages/py-pluggy/package.py +++ b/var/spack/repos/builtin/packages/py-pluggy/package.py @@ -29,12 +29,14 @@ class PyPluggy(PythonPackage): """Plugin and hook calling mechanisms for python.""" homepage = "https://github.com/pytest-dev/pluggy" - url = "https://pypi.io/packages/source/p/pluggy/pluggy-0.6.0.tar.gz" + url = "https://pypi.io/packages/source/p/pluggy/pluggy-0.7.1.tar.gz" import_modules = ['pluggy'] + version('0.7.1', 'cd5cc1003143f86dd6e2a865a20f8837') version('0.6.0', 'ffdde7c3a5ba9a440404570366ffb6d5') depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) depends_on('py-setuptools', type='build') + depends_on('py-setuptools-scm', type='build') diff --git a/var/spack/repos/builtin/packages/py-py/package.py b/var/spack/repos/builtin/packages/py-py/package.py index f585c84616..ad6f253649 100644 --- a/var/spack/repos/builtin/packages/py-py/package.py +++ b/var/spack/repos/builtin/packages/py-py/package.py @@ -29,12 +29,14 @@ class PyPy(PythonPackage): """Library with cross-python path, ini-parsing, io, code, log facilities""" homepage = "http://pylib.readthedocs.io/en/latest/" - url = "https://pypi.io/packages/source/p/py/py-1.5.3.tar.gz" + url = "https://pypi.io/packages/source/p/py/py-1.5.4.tar.gz" import_modules = [ - 'py', 'py._code', 'py._io', 'py._log', 'py._path', 'py._process', + 'py', 'py._process', 'py._vendored_packages', 'py._path', + 'py._log', 'py._code', 'py._io' ] + version('1.5.4', '7502d66fa68ea4ae5b61c511cd177d6a') version('1.5.3', '667d37a148ad9fb81266492903f2d880') version('1.4.33', '15d7107cbb8b86593bf9afa16e56da65') version('1.4.31', '5d2c63c56dc3f2115ec35c066ecd582b') @@ -42,3 +44,8 @@ class PyPy(PythonPackage): depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) depends_on('py-setuptools', type='build') + depends_on('py-setuptools-scm', type='build') + + def test(self): + # Tests require pytest, creating a circular dependency + pass diff --git a/var/spack/repos/builtin/packages/py-pytest/package.py b/var/spack/repos/builtin/packages/py-pytest/package.py index a2339f3ef2..90eab3738b 100644 --- a/var/spack/repos/builtin/packages/py-pytest/package.py +++ b/var/spack/repos/builtin/packages/py-pytest/package.py @@ -29,13 +29,14 @@ class PyPytest(PythonPackage): """pytest: simple powerful testing with Python.""" homepage = "http://pytest.org/" - url = "https://pypi.io/packages/source/p/pytest/pytest-3.7.1.tar.gz" + url = "https://pypi.io/packages/source/p/pytest/pytest-3.7.2.tar.gz" import_modules = [ '_pytest', '_pytest.assertion', '_pytest._code', '_pytest.mark', 'pytest' ] + version('3.7.2', 'd12d0d556a21fd8633e105f1a8d5a0f9') version('3.7.1', '2704e16bb2c11af494167f80a7cd37c4') version('3.5.1', 'ffd870ee3ca561695d2f916f0f0f3c0b') version('3.0.7', '89c60546507dc7eb6e9e40a6e9f720bd') @@ -51,9 +52,8 @@ class PyPytest(PythonPackage): depends_on('py-six@1.10.0:', type=('build', 'run')) depends_on('py-attrs@17.4.0:', type=('build', 'run')) depends_on('py-more-itertools@4.0.0:', type=('build', 'run')) - depends_on('py-pluggy@0.5:0.6', type=('build', 'run')) - depends_on('py-funcsigs', type=('build', 'run'), when='^python@:2') - - depends_on('py-nose', type='test') - depends_on('py-mock', type='test') - depends_on('py-requests', type='test') + depends_on('py-atomicwrites@1.0:', type=('build', 'run')) + depends_on('py-pluggy@0.7:', when='@3.7:', type=('build', 'run')) + depends_on('py-pluggy@0.5:0.6', when='@:3.6', type=('build', 'run')) + depends_on('py-funcsigs', when='^python@:2', type=('build', 'run')) + depends_on('py-pathlib2@2.2.0:', when='^python@:3.5', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-scandir/package.py b/var/spack/repos/builtin/packages/py-scandir/package.py index ff52559368..0bc069e198 100644 --- a/var/spack/repos/builtin/packages/py-scandir/package.py +++ b/var/spack/repos/builtin/packages/py-scandir/package.py @@ -29,9 +29,11 @@ class PyScandir(PythonPackage): """scandir, a better directory iterator and faster os.walk().""" homepage = "https://github.com/benhoyt/scandir" - url = "https://pypi.io/packages/source/s/scandir/scandir-1.6.tar.gz" + url = "https://pypi.io/packages/source/s/scandir/scandir-1.9.0.tar.gz" - version('1.6', '0180ddb97c96cbb2d4f25d2ae11c64ac') + import_modules = ['scandir'] + + version('1.9.0', '506c4cc5f38c00b301642a9cb0433910') + version('1.6', '0180ddb97c96cbb2d4f25d2ae11c64ac') - depends_on('python@2.7:') depends_on('py-setuptools', type=('build')) diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index 7aba6223ef..acf93a6f25 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -97,5 +97,5 @@ class PyScipy(PythonPackage): # 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('..'): + 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 a1f2aa074f..bda8a527b9 100644 --- a/var/spack/repos/builtin/packages/py-setuptools-scm/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools-scm/package.py @@ -26,11 +26,15 @@ from spack import * class PySetuptoolsScm(PythonPackage): - """the blessed package to manage your versions by scm tags""" + """The blessed package to manage your versions by scm tags.""" homepage = "https://github.com/pypa/setuptools_scm" - url = "https://pypi.io/packages/source/s/setuptools_scm/setuptools_scm-1.15.6.tar.gz" + url = "https://pypi.io/packages/source/s/setuptools_scm/setuptools_scm-3.1.0.tar.gz" + import_modules = ['setuptools_scm'] + + version('3.1.0', '52a8dee23c9e5f7d7d18094563db516c') version('1.15.6', 'f17493d53f0d842bb0152f214775640b') depends_on('py-setuptools', type='build') + depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index 23bbc1cd5c..2ede7f4c51 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -29,11 +29,18 @@ class PySetuptools(PythonPackage): """A Python utility that aids in the process of downloading, building, upgrading, installing, and uninstalling Python packages.""" - homepage = "https://pypi.python.org/pypi/setuptools" - url = "https://pypi.io/packages/source/s/setuptools/setuptools-39.0.1.zip" + homepage = "https://github.com/pypa/setuptools" + url = "https://pypi.io/packages/source/s/setuptools/setuptools-40.2.0.zip" - import_modules = ['pkg_resources', 'setuptools', 'setuptools.command'] + 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('40.2.0', '592efabea3a65d8e97a025ed52f69b12') version('39.2.0', 'dd4e3fa83a21bf7bf9c51026dc8a4e59') version('39.0.1', '75310b72ca0ab4e673bf7679f69d7a62') version('35.0.2', 'c368b4970d3ad3eab5afe4ef4dbe2437') @@ -48,7 +55,7 @@ class PySetuptools(PythonPackage): version('16.0', '0ace0b96233516fc5f7c857d086aa3ad') version('11.3.1', '01f69212e019a2420c1693fb43593930') - depends_on('python@2.6:2.8,3.3:') + depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) # Previously, setuptools vendored all of its dependencies to allow # easy bootstrapping. As of version 34.0.0, this is no longer done @@ -70,3 +77,7 @@ class PySetuptools(PythonPackage): url += '.tar.gz' return url + + def test(self): + # Unit tests require pytest, creating a circular dependency + pass -- cgit v1.2.3-70-g09d2