Add new version of snakemake (#34041)

* Add new version of snakemake

* Add myself as a maintainer

* py-retry -> py-reretry

* Added snakemake variants for storage systems

* Updated comments

* Responded to Adam's comments

* Fixed spack style

* Add build/run dependency types
This commit is contained in:
Sam Grayson 2022-11-28 15:10:10 -07:00 committed by GitHub
parent a97312535a
commit 49cda811fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 116 additions and 7 deletions

View file

@ -0,0 +1,24 @@
# Copyright 2013-2022 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 PyFtputil(PythonPackage):
"""High-level FTP client for Python."""
homepage = "https://ftputil.sschwarzer.net"
pypi = "ftputil/ftputil-5.0.4.tar.gz"
maintainers = ["charmoniumQ"]
version("5.0.4", sha256="6889db8649dd20d9b6d40a6c5f0f84ccf340a7dac1e0bfc0f0024090fc2afb33")
# https://git.sr.ht/~sschwarzer/ftputil/tree/v5.0.4/item/setup.py
depends_on("python@3.6:", type=("build", "run"))
depends_on("py-setuptools", type="build")
# https://git.sr.ht/~sschwarzer/ftputil/tree/v5.0.4/item/requirements.txt
# Note that the requirements in `requirements.txt` are only necessary for a dev environment.
# They are not included in `setup.py`

View file

@ -0,0 +1,19 @@
# Copyright 2013-2022 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 PyReretry(PythonPackage):
"""Easy to use retry decorator."""
homepage = "https://github.com/leshchenko1979/reretry"
pypi = "reretry/reretry-0.11.1.tar.gz"
maintainers = ["charmoniumQ"]
version("0.11.1", sha256="4ae1840ae9e443822bb70543c485bb9c45d1d009e32bd6809f2a9f2839149f5d")
depends_on("py-setuptools", type="build")
depends_on("py-pbr", type="build")

View file

@ -0,0 +1,19 @@
# Copyright 2013-2022 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 PyThrottler(PythonPackage):
"""Zero dependency Python package for easy throttling with asyncio support."""
homepage = "https://github.com/uburuntu/throttler"
pypi = "throttler/throttler-1.2.1.tar.gz"
maintainers = ["charmoniumQ"]
version("1.2.2", sha256="d54db406d98e1b54d18a9ba2b31ab9f093ac64a0a59d730c1cf7bb1cdfc94a58")
depends_on("py-setuptools", type="build")

View file

@ -0,0 +1,26 @@
# Copyright 2013-2022 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 PyYte(PythonPackage):
"""A YAML template engine with Python expressions."""
homepage = "https://yte-template-engine.github.io"
pypi = "yte/yte-1.5.1.tar.gz"
maintainers = ["charmoniumQ"]
version("1.5.1", sha256="6d0b315b78af83276d78f5f67c107c84238f772a76d74f4fc77905b46f3731f5")
# https://github.com/yte-template-engine/yte/blob/v1.5.1/pyproject.toml#L12
depends_on("py-dpath@2", type=("build", "run"))
depends_on("py-plac@1.3.4:1", type=("build", "run"))
depends_on("python@3.7:", type=("build", "run"))
depends_on("py-pyyaml@6", type=("build", "run"))
# https://github.com/yte-template-engine/yte/blob/v1.5.1/pyproject.toml#L41
depends_on("py-poetry-core@1:", type="build")

View file

@ -13,15 +13,18 @@ class Snakemake(PythonPackage):
pypi = "snakemake/snakemake-6.12.3.tar.gz"
maintainers = ["marcusboden"]
version("7.18.2", sha256="23f52b9a0c86da3b974a3cfc097fa82b41c49dab05543c0d18377c854852f771")
version("6.15.1", sha256="a219601d57037f565ead9963e6bd8d04d3bdd985d172371e54197dcbdba79865")
version("6.13.1", sha256="22f57dcd8b1ca8a30aaa45c5d2c0f56d381d4731abd0988f24f9de46b7d9827c")
version("6.12.3", sha256="af86af9a540da3dceb05dad1040f1d3d733e6a695f8b3f8c30f8cf3bc6570a88")
depends_on("py-requests", type=("build", "run"))
depends_on("py-setuptools", type=("build", "run"))
depends_on("py-wrapt", type=("build", "run"))
depends_on("py-setuptools@42:", type=("build", "run"), when="@7:")
depends_on("python@3.5:")
# See https://github.com/snakemake/snakemake/blob/v7.18.2/setup.py#L56
depends_on("py-wrapt", type=("build", "run"))
depends_on("py-requests", type=("build", "run"))
depends_on("py-throttler", type=("build", "run"), when="@7:")
depends_on("py-pyyaml", type=("build", "run"))
depends_on("py-configargparse", type=("build", "run"))
depends_on("py-appdirs", type=("build", "run"))
@ -33,12 +36,15 @@ class Snakemake(PythonPackage):
depends_on("py-nbformat", type=("build", "run"))
depends_on("py-toposort", type=("build", "run"))
depends_on("py-connectionpool@0.0.3:", type=("build", "run"))
depends_on("py-pulp@2.0:", type=("build", "run"))
depends_on("py-smart-open@3.0:", type=("build", "run"))
depends_on("py-filelock", type=("build", "run"))
depends_on("py-pulp@2:", type=("build", "run"))
depends_on("py-smart-open@3:", type=("build", "run"))
depends_on("py-filelock", type=("build", "run"), when="@:6")
depends_on("py-stopit", type=("build", "run"))
depends_on("py-tabulate", type=("build", "run"))
depends_on("py-ratelimiter", type=("build", "run"))
depends_on("py-ratelimiter", type=("build", "run"), when="@:6")
depends_on("py-yte@1", type=("build", "run"), when="@7:")
depends_on("py-jinja2@3", type=("build", "run"), when="@7:")
depends_on("py-reretry", type=("build", "run"), when="@7:")
variant("reports", default=False, description="Generate self-contained HTML reports")
with when("+reports"):
@ -53,3 +59,18 @@ class Snakemake(PythonPackage):
depends_on("py-google-crc32c", type=("build", "run"))
depends_on("py-google-api-python-client", type=("build", "run"))
depends_on("py-google-cloud-storage", type=("build", "run"))
# These variants are not in PyPI/pip, but they are undocumented dependencies
# needed to make certain parts of Snakemake work.
variant("ftp", default=False, description="Enable snakemake.remote.FTP")
depends_on("py-ftputil", when="+ftp", type=("build", "run"))
variant("s3", default=False, description="Enable snakemake.remote.S3")
depends_on("py-boto3", when="+s3", type=("build", "run"))
depends_on("py-botocore", when="+s3", type=("build", "run"))
variant("http", default=False, description="Enable snakemake.remote.HTTP")
depends_on("py-requests", when="+http", type=("build", "run"))
def test(self):
Executable("snakemake")("--version")