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
This commit is contained in:
Glenn Johnson 2021-04-07 12:39:53 -05:00 committed by GitHub
parent 7c87ebeb91
commit ef188a1e12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 284 additions and 0 deletions

View File

@ -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')

View File

@ -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'))

View File

@ -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')

View File

@ -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))

View File

@ -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')

View File

@ -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'))

View File

@ -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'))

View File

@ -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')