From 943c8091c2b1821177c0a87d821a41a049df2d91 Mon Sep 17 00:00:00 2001
From: sid <48367591+sidpbury@users.noreply.github.com>
Date: Mon, 11 Sep 2023 17:11:02 -0400
Subject: py-fairscale and dependencies py-pgzip libgit2 py-pygit2 (#39220)

* simple build of py-openai

* added variants to py-openai

* py-pandas-stubs is a dependency for py-openai

* fixed format and flake8 errors for py-openai

* black format error for py-pandas-stubs

* [@spackbot] updating style on behalf of sidpbury

* made style and format changes to py-openai

* made style and format changes to py-pandas-stubs

* py-types-pytz is a dependency for py-openai

* [@spackbot] updating style on behalf of sidpbury

* updated py-openpyxl for ver 3.0.7 and 3.1.2

* Update var/spack/repos/builtin/packages/py-pandas-stubs/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* ajs requested changes for py-openai

* updated py-openpyxl for supported python

* [@spackbot] updating style on behalf of sidpbury

* updated py-openpyxl

* removed requirement.txt dependencies in  py-openpyxl

* removed python depends on from openpyxl

* updated package to support newer versions

* updated version of py-pygit2

* py-fairscale is a new package in support of torch

* py-pgzip is a dependency for py-fairscale

* switch fairscale pypi, added extra variant for convenience

* removed python dependency

* changed multiple requirement versions

* changes for upstream py-fairscale

* changes for upsteam py-pygit2

* Update package.py

* Update package.py

* sorted out some of the dependency versions

* removed version 1.12.2 because dependency could not be met

* updated py-cached-property dependency

* suggested changes from adamjstewart

---------

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
---
 .../repos/builtin/packages/libgit2/package.py      |  6 ++++
 .../repos/builtin/packages/py-fairscale/package.py | 37 +++++++++++++++++++++
 .../repos/builtin/packages/py-pgzip/package.py     | 18 ++++++++++
 .../repos/builtin/packages/py-pygit2/package.py    | 38 +++++++++++++---------
 4 files changed, 83 insertions(+), 16 deletions(-)
 create mode 100644 var/spack/repos/builtin/packages/py-fairscale/package.py
 create mode 100644 var/spack/repos/builtin/packages/py-pgzip/package.py

diff --git a/var/spack/repos/builtin/packages/libgit2/package.py b/var/spack/repos/builtin/packages/libgit2/package.py
index 6898d1d1e9..dd09fd8e1e 100644
--- a/var/spack/repos/builtin/packages/libgit2/package.py
+++ b/var/spack/repos/builtin/packages/libgit2/package.py
@@ -16,7 +16,13 @@ class Libgit2(CMakePackage):
     homepage = "https://libgit2.github.com/"
     url = "https://github.com/libgit2/libgit2/archive/v0.26.0.tar.gz"
 
+    version("1.7.0", sha256="d9d0f84a86bf98b73e68997f5c1543cc5067d0ca9c7a5acaba3e8d117ecefef3")
     version("1.6.4", sha256="d25866a4ee275a64f65be2d9a663680a5cf1ed87b7ee4c534997562c828e500d")
+    version("1.6.3", sha256="a8e2a09835eabb24ace2fd597a78af182e1e199a894e99a90e4c87c849fcd9c4")
+    version("1.6.2", sha256="d557fbf35557bb5df53cbf38ae0081edb4a36494ec0d19741fa673e509245f8f")
+    version("1.6.1", sha256="25f7d3e2e7f398477a6e18271c5a68510853d0fe826a6287811cebccf92e773f")
+    version("1.5.2", sha256="57638ac0e319078f56a7e17570be754515e5b1276d3750904b4214c92e8fa196")
+    version("1.5.1", sha256="7074f1e2697992b82402501182db254fe62d64877b12f6e4c64656516f4cde88")
     version("1.5.0", sha256="8de872a0f201b33d9522b817c92e14edb4efad18dae95cf156cf240b2efff93e")
     version("1.4.4", sha256="e9923e9916a32f54c661d55d79c28fa304cb23617639e68bff9f94d3e18f2d4b")
     version("1.4.3", sha256="f48b961e463a9e4e7e7e58b21a0fb5a9b2a1d24d9ba4d15870a0c9b8ad965163")
diff --git a/var/spack/repos/builtin/packages/py-fairscale/package.py b/var/spack/repos/builtin/packages/py-fairscale/package.py
new file mode 100644
index 0000000000..f740269beb
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-fairscale/package.py
@@ -0,0 +1,37 @@
+# Copyright 2013-2023 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 PyFairscale(PythonPackage):
+    """FairScale is a PyTorch extension library for high performance and large
+    scale training. This library extends basic PyTorch capabilities while adding
+    new SOTA scaling techniques."""
+
+    homepage = "https://github.com/facebookresearch/fairscale"
+    pypi = "fairscale/fairscale-0.4.13.tar.gz"
+
+    version("0.4.13", sha256="1b797825c427f5dba92253fd0d8daa574e8bd651a2423497775fab1b30cfb768")
+    version("0.4.4", sha256="7719898743dc58c04a2294c896ee6308c92ccb3af9e10632b2a62f77cb689357")
+
+    variant("extra", default=False, description="support for cuda.list.gpu, scaler, weight")
+
+    # from setup.py
+    depends_on("python@3.8:", type=("build", "run"))
+    depends_on("ninja", type="build")
+    # from pyproject.toml
+    depends_on("py-wheel@0.30.0:", type="build")
+    depends_on("py-setuptools@40.6.2:", type="build")
+    # from requirements.txt
+    depends_on("py-torch@1.8.0:", type=("build", "run"))
+    depends_on("py-numpy@1.22.0:", type=("build", "run"))
+    # added extra to support cuda.list.gpu, scaler, and weight (not in pip install)
+    # see requirements-dev.txt in github. This does not include the tools for testing
+    with when("+extra"):
+        depends_on("py-pynvml@8.0.4", type=("build", "run"))
+        depends_on("py-scikit-learn@1.1.3", type=("build", "run"))
+        depends_on("py-pygit2@1.11.1", type=("build", "run"))
+        depends_on("py-pgzip@0.3.1", type=("build", "run"))
diff --git a/var/spack/repos/builtin/packages/py-pgzip/package.py b/var/spack/repos/builtin/packages/py-pgzip/package.py
new file mode 100644
index 0000000000..62452ba417
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pgzip/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2023 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 PyPgzip(PythonPackage):
+    """A multi-threading implementation of Python gzip module"""
+
+    homepage = "https://github.com/pgzip/pgzip"
+    pypi = "pgzip/pgzip-0.3.4.tar.gz"
+
+    version("0.3.4", sha256="ef56449039bc6e88558e46fe6bb11e3faaeef445d3985a9fb286795ff842c480")
+    version("0.3.1", sha256="a9c2df369311473ec3c239f26bf01638bdc6b6094d89ff4c81c6ef5c84eb24b7")
+
+    depends_on("py-setuptools", type="build")
diff --git a/var/spack/repos/builtin/packages/py-pygit2/package.py b/var/spack/repos/builtin/packages/py-pygit2/package.py
index 325356a9b4..78d9664c94 100644
--- a/var/spack/repos/builtin/packages/py-pygit2/package.py
+++ b/var/spack/repos/builtin/packages/py-pygit2/package.py
@@ -12,30 +12,36 @@ class PyPygit2(PythonPackage):
     """
 
     homepage = "https://www.pygit2.org/"
-    pypi = "pygit2/pygit2-0.24.1.tar.gz"
+    pypi = "pygit2/pygit2-1.12.2.tar.gz"
 
+    version("1.12.1", sha256="56e85d0e66de957d599d1efb2409d39afeefd8f01009bfda0796b42a4b678358")
+    version("1.11.1", sha256="793f583fd33620f0ac38376db0f57768ef2922b89b459e75b1ac440377eb64ec")
     version("1.6.0", sha256="7aacea4e57011777f4774421228e5d0ddb9a6ddb87ac4b542346d17ab12a4d62")
     version("1.4.0", sha256="cbeb38ab1df9b5d8896548a11e63aae8a064763ab5f1eabe4475e6b8a78ee1c8")
     version("1.3.0", sha256="0be93f6a8d7cbf0cc79ae2f0afb1993fc055fc0018c27e2bd01ba143e51d4452")
     version("0.28.2", sha256="4d8c3fbbf2e5793a9984681a94e6ac2f1bc91a92cbac762dbdfbea296b917f86")
-    version("0.24.1", sha256="4d1d0196b38d6012faf0a7c45e235c208315672b6035da504566c605ba494064")
 
     depends_on("py-setuptools", type="build")
-    # Version must match with libgit2
-    # See: https://www.pygit2.org/install.html
-    depends_on("libgit2@1.1.0:1.1", when="@1.4:")
-    depends_on("libgit2@1.0.0:1.0", when="@1.2:1.3")
-    depends_on("libgit2@0:1.0", when="@1.1.0:1.1")
-    depends_on("libgit2@0.28.0:0.28", when="@0.28:1.0")
-    depends_on("libgit2@0.24:0.27", when="@0.24:0.27")
-    depends_on("python@3.6:", when="@1.4.0:")
-    depends_on("python@3.6:3.8", when="@1.2:1.3")
-    depends_on("python@3.5:3.8", when="@1.0:1.1")
-    depends_on("python@2.7:3.7", when="@0.28:0")
+    # https://www.pygit2.org/install.html#version-numbers
+    depends_on("libgit2@1.6", when="@1.12")
+    depends_on("libgit2@1.5", when="@1.10:1.11")
+    depends_on("libgit2@1.4", when="@1.9")
+    depends_on("libgit2@1.3", when="@1.7:1.8")
+    depends_on("libgit2@1.1", when="@1.4:1.6")
+    depends_on("libgit2@1.0", when="@1.2:1.3")
+    depends_on("libgit2@0.99:1.0", when="@1.1")
+    depends_on("libgit2@0.28", when="@0.28:1.0")
+    depends_on("python@3.8:3.11", when="@1.11:1.12.1")
+    depends_on("python@:3.10", when="@1.7:1.10")
+    depends_on("python@:3.9", when="@1.4:1.6")
+    depends_on("python@:3.8", when="@1.0:1.3")
+    depends_on("python@:3.7", when="@0.28")
     depends_on("py-six", type=("build", "run"), when="@:0.28.2")
-    depends_on("py-cffi@1.4.0:", type=("build", "run"))
-    depends_on("py-cached-property", when="@1.1.0:1.5", type=("build", "run"))
-    depends_on("py-cached-property", when="@1.6.0: ^python@:3.7", type=("build", "run"))
+    depends_on("py-cffi@1.4.0:", when="@:1.5", type=("build", "run"))
+    depends_on("py-cffi@1.6.0:", when="@1.6:1.7", type=("build", "run"))
+    depends_on("py-cffi@1.9.1:", when="@1.8:", type=("build", "run"))
+    depends_on("py-cached-property", when="@1.1:1.5", type=("build", "run"))
+    depends_on("py-cached-property", when="@1.6: ^python@:3.7", type=("build", "run"))
 
     def setup_build_environment(self, env):
         spec = self.spec
-- 
cgit v1.2.3-70-g09d2