From ef188a1e12f55f326d6a1bd99c8c45fad7369d44 Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Wed, 7 Apr 2021 12:39:53 -0500 Subject: new package: gatetools (#22659) * new package: gatetools This PR adds the gatetools package and dependencies. The gatetools package is a set of command line tools for gate. Since it is primarily a CLI, although python modules can be loaded, it is named gatetools as opposed to py-gatetools. * Fix quote characterss to avoid test error * Found another UTF8 character that was tripping up tests * Another UTF-8 character to replace * Remove py-python-box dependency and package file * Make numpy a variant - py-setuptools needs to be a run dependendency This was masked by py-numpy having py-setuptools as a run dependency. * Add missing build depency on py-pytest-runner --- .../repos/builtin/packages/gatetools/package.py | 36 +++++++ .../repos/builtin/packages/py-awkward0/package.py | 22 +++++ .../repos/builtin/packages/py-colored/package.py | 22 +++++ var/spack/repos/builtin/packages/py-itk/package.py | 106 +++++++++++++++++++++ .../repos/builtin/packages/py-pydicom/package.py | 24 +++++ .../builtin/packages/py-uproot3-methods/package.py | 26 +++++ .../repos/builtin/packages/py-uproot3/package.py | 30 ++++++ .../repos/builtin/packages/py-wget/package.py | 18 ++++ 8 files changed, 284 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gatetools/package.py create mode 100644 var/spack/repos/builtin/packages/py-awkward0/package.py create mode 100644 var/spack/repos/builtin/packages/py-colored/package.py create mode 100644 var/spack/repos/builtin/packages/py-itk/package.py create mode 100644 var/spack/repos/builtin/packages/py-pydicom/package.py create mode 100644 var/spack/repos/builtin/packages/py-uproot3-methods/package.py create mode 100644 var/spack/repos/builtin/packages/py-uproot3/package.py create mode 100644 var/spack/repos/builtin/packages/py-wget/package.py diff --git a/var/spack/repos/builtin/packages/gatetools/package.py b/var/spack/repos/builtin/packages/gatetools/package.py new file mode 100644 index 0000000000..5d85d37a28 --- /dev/null +++ b/var/spack/repos/builtin/packages/gatetools/package.py @@ -0,0 +1,36 @@ +# Copyright 2013-2021 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) + +from spack import * + + +class Gatetools(PythonPackage): + """Python tools for GATE, see https://github.com/OpenGATE/Gate""" + + homepage = "https://github.com/OpenGATE/GateTools" + pypi = "gatetools/gatetools-0.9.14.tar.gz" + + maintainers = ['glennpj'] + + version('0.9.14', sha256='78fe864bb52fd4c6aeeee90d8f6c1bc5406ce02ac6f48712379efac606b5c006') + + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-matplotlib', type=('build', 'run')) + depends_on('py-click', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run')) + depends_on('py-pydicom', type=('build', 'run')) + depends_on('py-tqdm', type=('build', 'run')) + depends_on('py-colored', type=('build', 'run')) + depends_on('py-itk@5.1.0:', type=('build', 'run')) + depends_on('py-uproot3', type=('build', 'run')) + depends_on('py-wget', type=('build', 'run')) + depends_on('gate+rtk', type='run') + + # The readme.md file is not in the distribution, so fake it. + @run_before('build') + def readme(self): + touch('readme.md') diff --git a/var/spack/repos/builtin/packages/py-awkward0/package.py b/var/spack/repos/builtin/packages/py-awkward0/package.py new file mode 100644 index 0000000000..62afd740c7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-awkward0/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2021 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) + +from spack import * + + +class PyAwkward0(PythonPackage): + """Manipulate arrays of complex data structures as easily as Numpy. + + Awkward Array is a pure Python+Numpy library for manipulating complex data + structures as you would Numpy arrays.""" + + homepage = "https://github.com/scikit-hep/awkward-0.x" + pypi = "awkward0/awkward0-0.15.5.tar.gz" + + version('0.15.5', sha256='156e6e338c56d857a7bb53c4fcc8b0b2592a3470eff0d854e6d68777986359ad') + + depends_on('py-setuptools', type='build') + depends_on('py-pytest-runner', type='build') + depends_on('py-numpy@1.13.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-colored/package.py b/var/spack/repos/builtin/packages/py-colored/package.py new file mode 100644 index 0000000000..42a5007582 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-colored/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2021 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) + +from spack import * + + +class PyColored(PythonPackage): + """Simple library for color and formatting to terminal + + Very simple Python library for color and formatting in terminal. + Collection of color codes and names for 256 color terminal setups. + The following is a list of 256 colors for Xterm, containing an example + of the displayed color, Xterm Name, Xterm Number and HEX.""" + + homepage = "https://gitlab.com/dslackw/colored" + pypi = "colored/colored-1.4.2.tar.gz" + + version('1.4.2', sha256='056fac09d9e39b34296e7618897ed1b8c274f98423770c2980d829fd670955ed') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-itk/package.py b/var/spack/repos/builtin/packages/py-itk/package.py new file mode 100644 index 0000000000..48e3e17caf --- /dev/null +++ b/var/spack/repos/builtin/packages/py-itk/package.py @@ -0,0 +1,106 @@ +# Copyright 2013-2021 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) + +import sys +import archspec + +from spack import * + + +class PyItk(Package): + """ITK is an open-source toolkit for multidimensional image analysis""" + + homepage = "https://itk.org/" + + if sys.platform == 'darwin': + # version 5.1.1 + version('5.1.1-cp35', + url='https://pypi.io/packages/cp35/i/itk/itk-5.1.1-cp35-cp35m-macosx_10_9_x86_64.whl', + sha256='e94d08a142b72b7219c828e7ca34788b59612fc10dbb2c65afd4457e9810eed1', + expand=False) + version('5.1.1-cp36', + url='https://pypi.io/packages/cp35/i/itk/itk-5.1.1-cp36-cp36m-macosx_10_9_x86_64.whl', + sha256='94b3c8d2ceba1685ae7e7f2b3bb88bdcd15dee93d369177eb03f676062f7e06f', + expand=False) + version('5.1.1-cp37', + url='https://pypi.io/packages/cp35/i/itk/itk-5.1.1-cp37-cp37m-macosx_10_9_x86_64.whl', + sha256='f112515483a073fae96d5cfce4eb9f95cbf57a145bbd196b2369a3194e27febf', + expand=False) + version('5.1.1-cp38', + url='https://pypi.io/packages/cp35/i/itk/itk-5.1.1-cp38-cp38-macosx_10_9_x86_64.whl', + sha256='94b09ab9dd59ceaecc456ede2b719a44b8f0d54d92409eede372c6004395ae7b', + expand=False) + # version 5.1.2 + version('5.1.2-cp36', + url='https://pypi.io/packages/cp36/i/itk/itk-5.1.2-cp36-cp36m-macosx_10_9_x86_64.whl', + sha256='d66f5369768e9449c1bd07210a42e11c565602da1dde3128f554b653a2faaf7b', + expand=False) + version('5.1.2-cp37', + url='https://pypi.io/packages/cp37/i/itk/itk-5.1.2-cp37-cp37m-macosx_10_9_x86_64.whl', + sha256='0b494485d05306240eaa5ab1a5e00895fcce8fe684c632c02a2373f36d123902', + expand=False) + version('5.1.2-cp38', + url='https://pypi.io/packages/cp38/i/itk/itk-5.1.2-cp38-cp38-macosx_10_9_x86_64.whl', + sha256='e8dec75b4452bd2ee65beb4901b245fc3a2a2ccc46dfa008ae0b5b757718d458', + expand=False) + version('5.1.2-cp39', + url='https://pypi.io/packages/cp39/i/itk/itk-5.1.2-cp39-cp39-macosx_10_9_x86_64.whl', + sha256='e8dec75b4452bd2ee65beb4901b245fc3a2a2ccc46dfa008ae0b5b757718d458', + expand=False) + elif sys.platform.startswith('linux'): + # version 5.1.1 + version('5.1.1-cp35', + url='https://pypi.io/packages/cp35/i/itk/itk-5.1.1-cp35-cp35m-manylinux1_x86_64.whl', + sha256='02ba37cda1f4190ca34133e056f9acd5c0104da64455dc9e0cc6bb3eec47f7a6', + expand=False) + version('5.1.1-cp36', + url='https://pypi.io/packages/cp36/i/itk/itk-5.1.1-cp36-cp36m-manylinux1_x86_64.whl', + sha256='a7602fe2ee031bf70acf54e1aef6e0e01e9fa821ca1926fc70fe3db9167a50f2', + expand=False) + version('5.1.1-cp37', + url='https://pypi.io/packages/cp37/i/itk/itk-5.1.1-cp37-cp37m-manylinux1_x86_64.whl', + sha256='7c313d2e3a3e37b8e78d0b2d70be2d478c87fde6f27912c714c855a05584b8ee', + expand=False) + version('5.1.1-cp38', + url='https://pypi.io/packages/cp38/i/itk/itk-5.1.1-cp38-cp38-manylinux1_x86_64.whl', + sha256='14cd6c3a25f0d69f45eda74b006eceeaf8e2b2fcbe7c343e49683edf97e0fb14', + expand=False) + # version 5.1.2 + version('5.1.2-cp36', + url='https://pypi.io/packages/cp36/i/itk/itk-5.1.2-cp36-cp36m-manylinux1_x86_64.whl', + sha256='266e031a0656688b815dc60e9abd58e40ec37c9dcd25aa91634ed2b157ca974c', + expand=False) + version('5.1.2-cp37', + url='https://pypi.io/packages/cp37/i/itk/itk-5.1.2-cp37-cp37m-manylinux1_x86_64.whl', + sha256='064d9cfdd9547ae3ed850c35b989e0141c4bd434672bc2dd124248aab7bdf09a', + expand=False) + version('5.1.2-cp38', + url='https://pypi.io/packages/cp38/i/itk/itk-5.1.2-cp38-cp38-manylinux1_x86_64.whl', + sha256='fe9225ac353116f4000c0a3440bf151200beb4a65deec5b2e626edda5b498f16', + expand=False) + version('5.1.2-cp39', + url='https://pypi.io/packages/cp39/i/itk/itk-5.1.2-cp39-cp39-manylinux1_x86_64.whl', + sha256='5781b74410b7189a825c89d370411595e5e3d5dbb480201907f751f26698df83', + expand=False) + + extends('python') + depends_on('py-pip', type='build') + + depends_on('python@3.5.0:3.5.999', when='@5.1.1-cp35', type=('build', 'run')) + depends_on('python@3.6.0:3.6.999', when='@5.1.1-cp36,5.1.2-cp36', type=('build', 'run')) + depends_on('python@3.7.0:3.7.999', when='@5.1.1-cp37,5.1.2-cp37', type=('build', 'run')) + depends_on('python@3.8.0:3.8.999', when='@5.1.1-cp38,5.1.2-cp38', type=('build', 'run')) + depends_on('python@3.9.0:3.9.999', when='@5.1.2-cp39', type=('build', 'run')) + + depends_on('itk@5.1.1', when='@5.1.1-cp35:5.1.1-cp39', type='run') + depends_on('itk@5.1.2', when='@5.1.2-cp35:5.1.2-cp39', type='run') + + for t in set([str(x.family) for x in archspec.cpu.TARGETS.values() + if str(x.family) != 'x86_64']): + conflicts('target={0}:'.format(t), msg='py-itk is available x86_64 only') + + def install(self, spec, prefix): + pip = which('pip') + pip('install', self.stage.archive_file, '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-pydicom/package.py b/var/spack/repos/builtin/packages/py-pydicom/package.py new file mode 100644 index 0000000000..54e24b5c30 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pydicom/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2021 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) + +from spack import * + + +class PyPydicom(PythonPackage): + """Pure python package for DICOM medical file reading and writing + + pydicom is a pure Python package for working with DICOM files. It lets you + read, modify and write DICOM data in an easy "pythonic" way.""" + + homepage = "https://github.com/pydicom/pydicom" + pypi = "pydicom/pydicom-2.1.2.tar.gz" + + version('2.1.2', sha256='65f36820c5fec24b4e7ca45b7dae93e054ed269d55f92681863d39d30459e2fd') + + variant('numpy', default=False, description='Use NumPy for Pixel data') + + depends_on('python@3.6.1:', type=('build', 'run')) + depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-numpy', when='+numpy', type='run') diff --git a/var/spack/repos/builtin/packages/py-uproot3-methods/package.py b/var/spack/repos/builtin/packages/py-uproot3-methods/package.py new file mode 100644 index 0000000000..b7640cb15d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-uproot3-methods/package.py @@ -0,0 +1,26 @@ +# Copyright 2013-2021 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) + +from spack import * + + +class PyUproot3Methods(PythonPackage): + """Pythonic mix-ins for ROOT classes. + + This package is typically used as a dependency for uproot 3.x, to define + methods on the classes that are automatically generated from ROOT files. + This includes histograms (TH*) and physics objects like TLorentzVectors. + The reason it's a separate library is so that we can add physics-specific + functionality on a shorter timescale than we can update Uproot 3 itself, + which is purely an I/O package.""" + + homepage = "https://github.com/scikit-hep/uproot3-methods" + pypi = "uproot3-methods/uproot3-methods-0.10.1.tar.gz" + + version('0.10.1', sha256='dd68f90be1ea276360b96369836849df29045f7fe4e534f9ac21ea00798ee358') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.13.1:', type=('build', 'run')) + depends_on('py-awkward0', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-uproot3/package.py b/var/spack/repos/builtin/packages/py-uproot3/package.py new file mode 100644 index 0000000000..656c2cd305 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-uproot3/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2021 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) + +from spack import * + + +class PyUproot3(PythonPackage): + """ROOT I/O in pure Python and Numpy. + + uproot is a reader and a writer of the ROOT file format using only Python + and Numpy. Unlike the standard C++ ROOT implementation, uproot is only an + I/O library, primarily intended to stream data into machine learning + libraries in Python. Unlike PyROOT and root_numpy, uproot does not depend + on C++ ROOT. Instead, it uses Numpy to cast blocks of data from the ROOT + file as Numpy arrays.""" + + homepage = "https://github.com/scikit-hep/uproot3" + pypi = "uproot3/uproot3-3.14.4.tar.gz" + + version('3.14.4', sha256='4396746ba5ef9071bb0a9da53294e4613a7f4548218940f86496e79d682d20eb') + + depends_on('python@2.7:2.9,3.5:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-pytest-runner', type='build') + depends_on('py-numpy@1.13.1:', type=('build', 'run')) + depends_on('py-awkward0', type=('build', 'run')) + depends_on('py-uproot3-methods', type=('build', 'run')) + depends_on('py-cachetools', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-wget/package.py b/var/spack/repos/builtin/packages/py-wget/package.py new file mode 100644 index 0000000000..a3deacfadb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-wget/package.py @@ -0,0 +1,18 @@ +# Copyright 2013-2021 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) + +from spack import * + + +class PyWget(PythonPackage): + """pure python download utility + + Download the file for your platform. If you're not sure which to choose, + learn more about installing packages.""" + + homepage = "http://bitbucket.org/techtonik/python-wget/" + pypi = "wget/wget-3.2.zip" + + version('3.2', sha256='35e630eca2aa50ce998b9b1a127bb26b30dfee573702782aa982f875e3f16061') -- cgit v1.2.3-70-g09d2