summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/py-abipy/package.py
blob: fd9f00c88ac399bd7c01e5d2c1717a3682c0fab4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# Copyright 2013-2024 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.package import *


class PyAbipy(PythonPackage):
    """Python package to automate ABINIT calculations and analyze
    the results."""

    homepage = "https://github.com/abinit/abipy"
    pypi = "abipy/abipy-0.2.0.tar.gz"

    version("0.9.3", sha256="2f750c1ddcf78d0ec77c1bd44624ff96f80436307237589c02da127106514b75")
    version("0.2.0", sha256="c72b796ba0f9ea4299eac3085bede092d2652e9e5e8074d3badd19ef7b600792")

    variant("gui", default=False, description="Build the GUI")
    variant("ipython", default=False, when="@0.2.0", description="Build IPython support")

    depends_on("py-setuptools", type="build")
    # in newer pip versions --install-option does not exist
    depends_on("py-pip@:23.0", when="+ipython", type="build")

    depends_on("py-monty", when="@0.7:", type=("build", "run"))
    depends_on("py-tabulate", type=("build", "run"))
    depends_on("py-apscheduler", when="@0.9:", type=("build", "run"))
    depends_on("py-apscheduler@2.1.0", when="@:0.8", type=("build", "run"))
    depends_on("py-pydispatcher@2.0.5:", type=("build", "run"))
    depends_on("py-tqdm", type=("build", "run"))
    depends_on("py-pyyaml@3.11:", type=("build", "run"))
    depends_on("py-pandas", type=("build", "run"))
    depends_on("py-numpy", type=("build", "run"))
    depends_on("py-numpy@1.9:", when="@0.2.0", type=("build", "run"))
    depends_on("py-scipy", type=("build", "run"))
    depends_on("py-scipy@0.14:", when="@0.2.0", type=("build", "run"))
    depends_on("py-spglib", type=("build", "run"))
    depends_on("py-pymatgen@2022.0.14:", when="@0.9.2:", type=("build", "run"))
    depends_on("py-pymatgen@4.7.2:", type=("build", "run"))
    depends_on("py-netcdf4", type=("build", "run"))
    depends_on("py-matplotlib", type=("build", "run"))
    depends_on("py-matplotlib@1.5:", when="@0.2.0", type=("build", "run"))
    depends_on("py-seaborn", type=("build", "run"))
    depends_on("py-plotly", when="@0.9.1:", type=("build", "run"))
    depends_on("py-ipython", when="@0.9.1:", type=("build", "run"))
    depends_on("py-chart-studio", when="@0.9.1:", type=("build", "run"))

    with when("+gui"):
        depends_on("py-wxpython", type=("build", "run"))
        depends_on("py-wxmplot", type=("build", "run"))

    with when("+ipython"):
        depends_on("py-ipython", type=("build", "run"))
        depends_on("py-jupyter", type=("build", "run"))
        depends_on("py-nbformat", type=("build", "run"))

    # Historical dependencies
    depends_on("py-six", when="@:0.6", type=("build", "run"))
    depends_on("py-html2text", when="@:0.6", type=("build", "run"))
    depends_on("py-prettytable", when="@:0.5", type=("build", "run"))

    @when("0.2.0")
    def install_options(self, spec, prefix):
        args = []

        if "+ipython" in spec:
            args.append("--with-ipython")

        return args

    @property
    def skip_modules(self):
        modules = []

        if self.spec.satisfies("~gui"):
            modules.append("abipy.gui")

        return modules