From 0848127f7a29f7254910fd9916461ca09af5e3a7 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Wed, 26 Mar 2025 13:26:29 +0000
Subject: [PATCH 01/10] fix(py-tvb-widgets): add missing dependencies

---
 packages/py-tvb-widgets/package.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/packages/py-tvb-widgets/package.py b/packages/py-tvb-widgets/package.py
index 07dd8cf1..961c238b 100644
--- a/packages/py-tvb-widgets/package.py
+++ b/packages/py-tvb-widgets/package.py
@@ -48,6 +48,13 @@ class PyTvbWidgets(PythonPackage):
     depends_on('py-toml', type=('build', 'run'))
     depends_on('py-bokeh', type=('build', 'run'))
     depends_on('vtk@9:9.3', type=('build', 'run'))
+    depends_on('xorg-server~dri', type=('build', 'run'))
+    depends_on('py-trame', type=('build', 'run'))
+    depends_on('py-trame-vuetify', type=('build', 'run'))
+    depends_on('py-trame-vtk', type=('build', 'run'))
+    depends_on('py-ipyreact@0.4.1:', type=('build', 'run'))
+    depends_on('py-pythreejs', type=('build', 'run'))
+    depends_on('py-plotly-resampler', type=('build', 'run'))
 
     depends_on('py-pytest', type='test')
     depends_on('py-pytest-mock', type='test')
@@ -58,5 +65,6 @@ class PyTvbWidgets(PythonPackage):
         with working_dir('spack-test', create=True):
             python('-c',
                    'import tvbwidgets; '
-                   'from tvbwidgets.ui.pse_widget import PSEWidget')
+                   'from tvbwidgets.ui.pse_widget import PSEWidget; '
+                   'from tvbwidgets.api import ConnectivityWidget')
 
-- 
GitLab


From 3ed45b43165582e32cf1c9ad461484fbad760efd Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Wed, 26 Mar 2025 12:58:16 +0000
Subject: [PATCH 02/10] feat(py-trame): copy package and dependencies from
 upstream

from https://github.com/spack/spack/commit/a2981cff1f69172089345d21dcf3122bef19ab6a
---
 packages/py-trame-client/package.py | 21 ++++++++++++++
 packages/py-trame-server/package.py | 21 ++++++++++++++
 packages/py-trame/package.py        | 44 +++++++++++++++++++++++++++++
 3 files changed, 86 insertions(+)
 create mode 100644 packages/py-trame-client/package.py
 create mode 100644 packages/py-trame-server/package.py
 create mode 100644 packages/py-trame/package.py

diff --git a/packages/py-trame-client/package.py b/packages/py-trame-client/package.py
new file mode 100644
index 00000000..64640549
--- /dev/null
+++ b/packages/py-trame-client/package.py
@@ -0,0 +1,21 @@
+# 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 PyTrameClient(PythonPackage):
+    """Internal client side implementation of trame"""
+
+    homepage = "https://github.com/Kitware/trame-client"
+    pypi = "trame-client/trame-client-2.17.1.tar.gz"
+
+    maintainers("johnwparent")
+
+    license("Apache-2.0", checked_by="johnwparent")
+
+    version("2.17.1", sha256="0841e569d0792c7fc218a502663c814ad69e318d2885cec82a7fe1d07fdf0bf4")
+
+    depends_on("py-setuptools@42:", type="build")
diff --git a/packages/py-trame-server/package.py b/packages/py-trame-server/package.py
new file mode 100644
index 00000000..1c6abf3c
--- /dev/null
+++ b/packages/py-trame-server/package.py
@@ -0,0 +1,21 @@
+# 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 PyTrameServer(PythonPackage):
+    """Internal server side implementation of trame"""
+
+    homepage = "https://github.com/Kitware/trame-server"
+    pypi = "trame-server/trame-server-2.17.3.tar.gz"
+
+    maintainers("johnwparent")
+
+    license("Apache-2.0", checked_by="johnwparent")
+
+    version("2.17.3", sha256="1d6cbb0cd83f9073e895dfd32425ee29c751c8c3881dbb675bf8289c27058379")
+
+    depends_on("py-setuptools@42:", type="build")
diff --git a/packages/py-trame/package.py b/packages/py-trame/package.py
new file mode 100644
index 00000000..4ccd691b
--- /dev/null
+++ b/packages/py-trame/package.py
@@ -0,0 +1,44 @@
+# 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 PyTrame(PythonPackage):
+    """Trame lets you weave various components and technologies
+    into a Web Application solely written in Python."""
+
+    homepage = "http://pythonhosted.org/trame"
+    pypi = "trame/trame-3.5.5.tar.gz"
+
+    maintainers("johnwparent")
+
+    license("Apache-2.0", checked_by="johnwparent")
+
+    version("3.5.5", sha256="1e346793d6d38d0ac0695001fea8e3776a4cbb8c890bd70e6e9444db4026ec6b")
+    version("3.5.4", sha256="3180d2dec0b3fa96a9ee2a81793cc99e4294dca89a48965e301444af6b8eaaeb")
+    version("3.5.3", sha256="b78c9d92016a6f31e66ed8cc4a517f8cf69ad91cd1d6aff4518c76df8840fbed")
+    version("3.5.2", sha256="93d97951a4d08fef2ee447e63e8593b6192a30e408637c5b1075fb292e74c8d3")
+    version("3.5.1", sha256="10585fb44815da99d038e450208063e3cc7eb38dfbbc2399af7eaa9ead9d17a8")
+    version("3.5.0", sha256="706a112bf4164ab8d024301ae0d174bae8df40f2fb82f0ec7b017f53a33bb03f")
+    version("3.4.0", sha256="c80e371e89c5b660c223e661569738f4c8c1b1eca2053e049d78ecd009f9756c")
+    version("3.3.0", sha256="8359f004b1572dc06937aa903e8a47d6cd6625a5f5ae625db05e6cc7831b724f")
+    version("3.2.8", sha256="6f012f8e7cfac215db3405f486d335c670cda5a6b2cdf2539332d523fd201645")
+    version("3.2.7", sha256="d222b80f28df620a5a7bd22961601a5900fb490b71d4c0adf71472f836b6e8cb")
+    version("3.2.6", sha256="f71c938676b423620cc9036f7df86c1efa2cc2d5e3cf3696fc9b3a1ebba26161")
+    version("3.2.5", sha256="03f9afc21154c875fe829965cc7b522e06ecc766347ac0baded611a1f06ba912")
+    version("3.2.4", sha256="85b24e4a83cc9cb61854f55db2d5ace8b58468b31f696fa19e576487f62e4152")
+    version("3.2.3", sha256="6a1211136600d3523cae73fbc9f02bf0795157d35364adc4aa99cca4b515e812")
+    version("3.2.2", sha256="328bf15ad43e07ec747c151d30b230d69e4a32f67a04f346767ae957e8a5047b")
+    version("3.2.1", sha256="31a36f4dd7ebba436a0dd868fc1088fc7819f800cfa8bd740965227d0d4d03e3")
+    version("3.2.0", sha256="727af2b7297e7a68c6bb0ba2d886c9c340ea8d79038c26790c3f9c218bbfd2b7")
+    version("3.1.0", sha256="5f75989f879be5ab69410822c3694219971b42f33551eaa4c023e9a150f2c06b")
+    version("3.0.2", sha256="8b3e34bc0216d3089564f0468e451c6d92db5cf209527cb4a4ac13815e6afcb0")
+    version("3.0.1", sha256="3a0fcf01d17f7cde1de4cf0b0e775ed7726a1587adee1b23e2908eb49aa3e22d")
+    version("3.0.0", sha256="4a1b8988c3eef8523d56132ec641bf8490898e2b50ef379fa0d08ea37554425c")
+
+    depends_on("py-setuptools@42:", type="build")
+    depends_on("py-trame-client", type=("build", "run"))
+    depends_on("py-trame-server", type=("build", "run"))
-- 
GitLab


From 23677b41d4a3ab62d0554a6ba4890c2a950d4cb3 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Wed, 26 Mar 2025 13:06:13 +0000
Subject: [PATCH 03/10] feat(py-wslink): add package

---
 packages/py-trame/package.py  |  3 +++
 packages/py-wslink/package.py | 23 +++++++++++++++++++++++
 2 files changed, 26 insertions(+)
 create mode 100644 packages/py-wslink/package.py

diff --git a/packages/py-trame/package.py b/packages/py-trame/package.py
index 4ccd691b..e844db99 100644
--- a/packages/py-trame/package.py
+++ b/packages/py-trame/package.py
@@ -42,3 +42,6 @@ class PyTrame(PythonPackage):
     depends_on("py-setuptools@42:", type="build")
     depends_on("py-trame-client", type=("build", "run"))
     depends_on("py-trame-server", type=("build", "run"))
+    # begin EBRAINS (added): missing dependency
+    depends_on("py-wslink", type=("build", "run"))
+    # end EBRAINS
diff --git a/packages/py-wslink/package.py b/packages/py-wslink/package.py
new file mode 100644
index 00000000..bb751c67
--- /dev/null
+++ b/packages/py-wslink/package.py
@@ -0,0 +1,23 @@
+# 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 PyWslink(PythonPackage):
+    """Python/JavaScript library for communicating over WebSocket"""
+
+    homepage = "https://github.com/kitware/wslink"
+    pypi = "wslink/wslink-2.3.3.tar.gz"
+
+    version("2.3.3", sha256="2eace91ee5a739a965c316dcca4c407009fbb68cbc13be3f11e6485edbd8147f")
+    version("2.3.2", sha256="568f7ecf1b58c83e081ce29cccfe2d44753b15893103273f5241367a63a45dc8")
+    version("2.3.1", sha256="acb8a85adde18f29c1eb923f60e70aa7ade15f820c1ef2f0e1a9f32fbdb52f59")
+    version("2.3.0", sha256="910ef45515c217e7047b0dcae0f9dad18299c67e79992f99b50297536d91ac8d")
+    version("2.2.2", sha256="f9c24c08b89d2bd9bd77951ad0c01da9c28905dda29d7397f7f72b542c496840")
+
+    depends_on("py-setuptools", type="build")
+    depends_on("py-aiohttp@:3", type=("build", "run"))
+    depends_on("py-msgpack@1", type=("build", "run"))
-- 
GitLab


From 857e6ac303a17bf60169b1f381382f8c9207c75c Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Wed, 26 Mar 2025 13:42:47 +0000
Subject: [PATCH 04/10] feat(py-trame-{client,server}): add new versions

---
 packages/py-trame-client/package.py | 8 +++++++-
 packages/py-trame-server/package.py | 8 +++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/packages/py-trame-client/package.py b/packages/py-trame-client/package.py
index 64640549..b06d2379 100644
--- a/packages/py-trame-client/package.py
+++ b/packages/py-trame-client/package.py
@@ -10,12 +10,18 @@ class PyTrameClient(PythonPackage):
     """Internal client side implementation of trame"""
 
     homepage = "https://github.com/Kitware/trame-client"
-    pypi = "trame-client/trame-client-2.17.1.tar.gz"
+    pypi = "trame-client/trame_client-2.17.1.tar.gz"
 
     maintainers("johnwparent")
 
     license("Apache-2.0", checked_by="johnwparent")
 
+    # begin EBRAINS (added): add new versions
+    version("3.6.1", sha256="25b5a08c43c852eaca67c651f4b59c1de7a1b7b34801b7cd460e3ac7aa65d215")
+    version("3.6.0", sha256="fe871aca6cb9ae14acc945770bf39493507949c39ac8e4008e66dd72a7339ab3")
+    version("3.5.2", sha256="e46ddb8e3d611bff90803bff176044083ed85095544557a499eae9c231abedc5")
+    version("3.5.1", sha256="c498157a989a1e85c8fa5fe14aca28faf819658eb4dc4846569a3b4e2b97e0c0")
+    # end EBRAINS
     version("2.17.1", sha256="0841e569d0792c7fc218a502663c814ad69e318d2885cec82a7fe1d07fdf0bf4")
 
     depends_on("py-setuptools@42:", type="build")
diff --git a/packages/py-trame-server/package.py b/packages/py-trame-server/package.py
index 1c6abf3c..c6395ded 100644
--- a/packages/py-trame-server/package.py
+++ b/packages/py-trame-server/package.py
@@ -10,12 +10,18 @@ class PyTrameServer(PythonPackage):
     """Internal server side implementation of trame"""
 
     homepage = "https://github.com/Kitware/trame-server"
-    pypi = "trame-server/trame-server-2.17.3.tar.gz"
+    pypi = "trame-server/trame_server-2.17.3.tar.gz"
 
     maintainers("johnwparent")
 
     license("Apache-2.0", checked_by="johnwparent")
 
+    # begin EBRAINS (added): add new versions
+    version("3.4.0", sha256="3d1edd2287949c4a51d3162f21137c061a4921858303ad67d1cf1d4148e36f3c")
+    version("3.3.0", sha256="b0b1769d9a0eb816c69076188773cb93b0e2f83c27009d8e94d7208e63c33805")
+    version("3.2.7", sha256="d2ec77272907041bf21b87b5bf2ad16c4172976218f7a5ad26eed9cac3645433")
+    version("3.2.6", sha256="44e426679e4bd71b5f3c710dd14e150bca28ddca93c8fe4e219749b3a1f9469f")
+    # end EBRAINS
     version("2.17.3", sha256="1d6cbb0cd83f9073e895dfd32425ee29c751c8c3881dbb675bf8289c27058379")
 
     depends_on("py-setuptools@42:", type="build")
-- 
GitLab


From f558312a247efdd98ff80ca13920f5fca7cfa445 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Wed, 26 Mar 2025 13:11:00 +0000
Subject: [PATCH 05/10] feat(py-trame-vtk): add package

---
 packages/py-trame-vtk/package.py | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 packages/py-trame-vtk/package.py

diff --git a/packages/py-trame-vtk/package.py b/packages/py-trame-vtk/package.py
new file mode 100644
index 00000000..807bccba
--- /dev/null
+++ b/packages/py-trame-vtk/package.py
@@ -0,0 +1,19 @@
+# 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 PyTrameVtk(PythonPackage):
+    """VTK widgets for trame"""
+
+    homepage = "https://github.com/Kitware/trame-vtk"
+    pypi = "trame-vtk/trame_vtk-2.8.15.tar.gz"
+
+    version("2.8.15", sha256="584049637491a7c5ba00efec2a5c5eb96a337bab31d6f0c4bcca8bea60446646")
+    version("2.8.14", sha256="26baa6cc3be6756c583a5c5fadc8baa954ae1064279f63b5432370345b562098")
+
+    depends_on("py-setuptools", type="build")
+    depends_on("py-trame-client@3.4:3", type=("build", "run"))
-- 
GitLab


From 5b904acb6dd081e2a3c22e6e9aeb22c47cd36b64 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Wed, 26 Mar 2025 13:11:08 +0000
Subject: [PATCH 06/10] feat(py-trame-vuetify): add package

---
 packages/py-trame-vuetify/package.py | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
 create mode 100644 packages/py-trame-vuetify/package.py

diff --git a/packages/py-trame-vuetify/package.py b/packages/py-trame-vuetify/package.py
new file mode 100644
index 00000000..7b2e1137
--- /dev/null
+++ b/packages/py-trame-vuetify/package.py
@@ -0,0 +1,20 @@
+# 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 PyTrameVuetify(PythonPackage):
+    """Vuetify widgets for trame"""
+
+    homepage = "https://github.com/Kitware/trame-vuetify"
+    pypi = "trame-vuetify/trame_vuetify-2.8.2.tar.gz"
+
+    version("2.8.2", sha256="effd10038fe4fb5a92495edb1d3428cfc8b7059f1d51f335caf595eee0ffe84f")
+    version("2.8.1", sha256="281606797c29b0300ec2b3524c4396ac2b78da1a300d188d603af09eea83bfe2")
+    version("2.8.0", sha256="433bbc62bfa60372aeeacfbe7b5d6f4d68d77e6763b0ab8c63dbbcfa9310c1f1")
+
+    depends_on("py-setuptools", type="build")
+    depends_on("py-trame-client@3.4:3", type=("build", "run"))
-- 
GitLab


From 442297b3cf78344d7ae90cdd8198c159587b32ac Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Wed, 26 Mar 2025 13:14:55 +0000
Subject: [PATCH 07/10] feat(py-traittypes): copy package from upstream

from https://github.com/spack/spack/commit/b0afb619dea4d593335d0b6db3facbf789b80bba
---
 packages/py-traittypes/package.py | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 packages/py-traittypes/package.py

diff --git a/packages/py-traittypes/package.py b/packages/py-traittypes/package.py
new file mode 100644
index 00000000..3feac6db
--- /dev/null
+++ b/packages/py-traittypes/package.py
@@ -0,0 +1,19 @@
+# Copyright Spack Project Developers. See COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class PyTraittypes(PythonPackage):
+    """Custom trait types for scientific computing."""
+
+    homepage = "http://ipython.org/"
+    pypi = "traittypes/traittypes-0.2.1.tar.gz"
+
+    license("BSD")
+
+    version("0.2.1", sha256="be6fa26294733e7489822ded4ae25da5b4824a8a7a0e0c2dccfde596e3489bd6")
+
+    depends_on("py-setuptools", type="build")
+    depends_on("py-traitlets@4.2.2:", type=("build", "run"))
-- 
GitLab


From e71e82995fcef15419b4b8db8bbbd94350046f1d Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Wed, 26 Mar 2025 13:17:21 +0000
Subject: [PATCH 08/10] feat(py-pythreejs): add package and dependencies

---
 packages/py-ipydatawidgets/package.py | 32 +++++++++++++++++++++++
 packages/py-pythreejs/package.py      | 37 +++++++++++++++++++++++++++
 2 files changed, 69 insertions(+)
 create mode 100644 packages/py-ipydatawidgets/package.py
 create mode 100644 packages/py-pythreejs/package.py

diff --git a/packages/py-ipydatawidgets/package.py b/packages/py-ipydatawidgets/package.py
new file mode 100644
index 00000000..e8a35f7b
--- /dev/null
+++ b/packages/py-ipydatawidgets/package.py
@@ -0,0 +1,32 @@
+# 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 PyIpydatawidgets(PythonPackage):
+    """A set of widgets to help facilitate reuse of large datasets across widgets"""
+
+    homepage = "https://github.com/vidartf/ipydatawidgets"
+    pypi = "ipydatawidgets/ipydatawidgets-4.3.5.tar.gz"
+
+    version("4.3.5", sha256="394f2489576587cfd755377a09a067f46cad22081965092021fd1abcbe7852a8")
+    version("4.3.4", sha256="124c0fc7b10e2d1ad5c20942f3e5a7e6c28cc8283f1e1bb7283a2d0ee55832d9")
+    version("4.3.3", sha256="4fb2ce693fb268cdae900374cfa1a91641e22d9514d1ec1e62da747050924f76")
+    version("4.3.2", sha256="2f2b997f6569d3ee1f4f7e35db0cb1da08c077b21a88f1c01c59f5b986a31aa6")
+    version("4.3.1", sha256="a934e51a2ad84380c63ff55ecf09bcd23d56e2c47c55c9c6f068cc91bdc1a379")
+    version("4.2.0", sha256="d0e4b58b59b508165e8562b8f5d1dbfcd739855847ec0477bd9185a5e9b7c5bc")
+
+    depends_on("py-setuptools@40.8:", type="build")
+    depends_on("py-wheel", type="build")
+    depends_on("py-jupyterlab@3", type="build")
+    depends_on("py-jupyter-packaging", type="build")
+    depends_on("yarn", type="build")
+
+    depends_on("py-numpy", type=("build", "run"))
+    depends_on("py-six", when="@:4.3.1", type=("build", "run"))
+    depends_on("py-traittypes@0.2:", type=("build", "run"))
+    depends_on("py-ipywidgets@7:", type=("build", "run"))
+    depends_on("py-jupyter-core", type=("build", "run"))
diff --git a/packages/py-pythreejs/package.py b/packages/py-pythreejs/package.py
new file mode 100644
index 00000000..25e559dd
--- /dev/null
+++ b/packages/py-pythreejs/package.py
@@ -0,0 +1,37 @@
+# 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 PyPythreejs(PythonPackage):
+    """Interactive 3D graphics for the Jupyter Notebook and JupyterLab, using Three.js and Jupyter Widgets."""
+
+    homepage = "https://github.com/jupyter-widgets/pythreejs"
+    pypi = "pythreejs/pythreejs-2.4.2.tar.gz"
+
+    version("2.4.2", sha256="a568bfdc4c3797c4c2339158928edc7dcf6fa4a267b08e3cec5121e2078b5bd6")
+    version("2.4.1", sha256="0ba5063a76312c45f65c376ce45f5af33199484b4ce7a59e791ad8c4d746a867")
+    version("2.4.0", sha256="c7dfa8b2b7c46bff92babaf4453f6c73f2ef1b7622a8b030f68838791ef3643a")
+    version("2.3.0", sha256="231b7fced2485fa0945e01e4dd11fbb92d4aef74376a5ebe6e7c400dcc4e3c25")
+    version("2.2.1", sha256="acceeac346054bcc280bf93f494557e6f5ab404860cfee584d72a6c3dde16463")
+    version("2.2.0", sha256="c05f52932efd58ff18beb333a6b2bb80341e980718a313b74821c4a5c8640721")
+    version("2.1.1", sha256="a5e795831d9d4e896440d7cd0a8b6022cf19cf85dd45c621a17621663df2f836")
+    version("2.1.0", sha256="079fd1ab888ab2aa6b6ea06edb152706fce0ef0036f5a94c0a3cc5f06afb0f01")
+    version("2.0.2", sha256="fa7b787f29006a89b8cc5450319756b92304317bb17d4125ccf89c51a3da3c5c")
+    version("2.0.1", sha256="869a4ee6707680b6c36386a1554da2b6d5a4f38d6b945a79e30240189ce195f9")
+    version("2.0.0", sha256="9b67f9b2fff7835946c3aeddf2625224d2d4b33d4199bf0110d9eaea1529cfba")
+    version("1.1.0", sha256="209bad1c665d73464aff393ed2939d38d7fc23d20407629bfadef82480d3681a")
+
+    depends_on("py-setuptools@40.8:", type="build")
+    depends_on("py-wheel", type="build")
+    depends_on("py-jupyterlab@3", type="build")
+    depends_on("py-tomli", type="build")
+
+    depends_on("py-numpy", type=("build", "run"))
+    depends_on("py-traitlets", type=("build", "run"))
+    depends_on("py-ipywidgets@7.2.1:", type=("build", "run"))
+    depends_on("py-ipydatawidgets@1.1.1:", type=("build", "run"))
+    depends_on("py-jupyter-core", type=("build", "run"))
-- 
GitLab


From fe802c670dd59a6bd6d5a4fe43708930d67ab410 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Wed, 26 Mar 2025 13:24:01 +0000
Subject: [PATCH 09/10] feat(py-ipyreact): add package and dependencies

---
 packages/py-anywidget/package.py | 26 ++++++++++++++++++++++++++
 packages/py-ipyreact/package.py  | 24 ++++++++++++++++++++++++
 packages/py-psygnal/package.py   | 22 ++++++++++++++++++++++
 3 files changed, 72 insertions(+)
 create mode 100644 packages/py-anywidget/package.py
 create mode 100644 packages/py-ipyreact/package.py
 create mode 100644 packages/py-psygnal/package.py

diff --git a/packages/py-anywidget/package.py b/packages/py-anywidget/package.py
new file mode 100644
index 00000000..283e3c01
--- /dev/null
+++ b/packages/py-anywidget/package.py
@@ -0,0 +1,26 @@
+# 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 PyAnywidget(PythonPackage):
+    """Custom jupyter widgets made easy"""
+
+    homepage = "https://github.com/manzt/anywidget"
+    pypi = "anywidget/anywidget-0.9.16.tar.gz"
+
+    version("0.9.13", sha256="c655455bf51f82182eb23c5947d37cc41f0b1ffacaf7e2b763147a2332cb3f07")
+    version("0.9.12", sha256="25855b2496dc6541356b6d26ca0c9f9525203bb7cf2817f84b93bfe3f53cf81e")
+    version("0.9.11", sha256="58dded8e86ec27ce28760c9457317663113d9af608947ee6a8d0ecb528b22cdc")
+    version("0.9.10", sha256="390a628240981c09813c7523279ddcab82ff4fd3287add5433b78b1369089068")
+    version("0.8.1", sha256="a7627770be455f89afd7d58faff926f45ef52b53257ae3c595177d5ff9b12fd1")
+    version("0.8.0", sha256="847a0fece58ea7a32d20dccd54a026dd3dd28f76daa6b4f0a74c253e5c7cfeec")
+
+    depends_on("py-hatchling", type="build")
+    depends_on("py-hatch-jupyter-builder", type="build")
+    depends_on("py-ipywidgets@7.6:", type=("build", "run"))
+    depends_on("py-typing-extensions@4.2:", type=("build", "run"))
+    depends_on("py-psygnal@0.8.1:", type=("build", "run"))
diff --git a/packages/py-ipyreact/package.py b/packages/py-ipyreact/package.py
new file mode 100644
index 00000000..97f0defa
--- /dev/null
+++ b/packages/py-ipyreact/package.py
@@ -0,0 +1,24 @@
+# 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 PyIpyreact(PythonPackage):
+    """React for ipywidgets that just works"""
+
+    homepage = "https://github.com/widgetti/ipyreact"
+    pypi = "ipyreact/ipyreact-0.5.0.tar.gz"
+
+    version("0.5.0", sha256="398b37c57abbf3d453a0fb4bb34d39956f2de212276de053630ad907eabde9e5")
+    version("0.4.2", sha256="a74b9f61176ca75c1c80ccfc46c35a7ad5591a30612d0e1e6fdbf91549fbf6a6")
+    version("0.4.1", sha256="80560311eb4946a793d1108d21c893f697f45af71df52afe4a3cddfa0a9fadd4")
+    version("0.4.0", sha256="e1900052a14c548ff4943f01c5eec09881c29c96845e70dcd0fe25b6c234d268")
+
+    depends_on("py-hatchling", type="build")
+    depends_on("py-hatch-jupyter-builder", type="build")
+    depends_on("py-ipywidgets@7:", type=("build", "run"))
+    depends_on("py-anywidget@0.2:", type=("build", "run"))
+    depends_on("py-jupyter-core", type=("build", "run"))
diff --git a/packages/py-psygnal/package.py b/packages/py-psygnal/package.py
new file mode 100644
index 00000000..1aa5f4e5
--- /dev/null
+++ b/packages/py-psygnal/package.py
@@ -0,0 +1,22 @@
+# 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 PyPsygnal(PythonPackage):
+    """Fast python callback/event system modeled after Qt Signals"""
+
+    homepage = "https://github.com/pyapp-kit/psygnal"
+    pypi = "psygnal/psygnal-0.12.0.tar.gz"
+
+    version("0.11.1", sha256="f9b02ca246ab0adb108c4010b4a486e464f940543201074591e50370cd7b0cc0")
+    version("0.11.0", sha256="50731c7f9e4c52fc0a5e9c533c7a1bb528ce39cc4f4059fe433d3f76e1c46ca0")
+    version("0.10.2", sha256="adb2c38d5cecfdb1212970a3123079f6d97241ac0e772c3db79418a5cabef079")
+    version("0.10.1", sha256="7e546e14d89434fc94bc6ff6bbeaf6bb8a039e5ed85fc6c992bb427be47fcfc7")
+    version("0.10.0", sha256="db51c7efb8d92873ea2113356c0cbdca75383684d3e55c315a84071c46d0a0b0")
+    version("0.9.5", sha256="4956ea6c36a75f7fc457558935b67dd8be2594661b4d08eeb3357d69c509c55f")
+
+    depends_on("py-hatchling", type="build")
-- 
GitLab


From 03077cf4498f7f8bae28dd05d10914157b24dd64 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Wed, 26 Mar 2025 13:25:26 +0000
Subject: [PATCH 10/10] feat(py-plotly-resampler): add package and dependencies

---
 packages/py-plotly-resampler/package.py | 26 +++++++++++++++++++++++++
 packages/py-tsdownsample/package.py     | 21 ++++++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 packages/py-plotly-resampler/package.py
 create mode 100644 packages/py-tsdownsample/package.py

diff --git a/packages/py-plotly-resampler/package.py b/packages/py-plotly-resampler/package.py
new file mode 100644
index 00000000..febbe6c0
--- /dev/null
+++ b/packages/py-plotly-resampler/package.py
@@ -0,0 +1,26 @@
+# 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 PyPlotlyResampler(PythonPackage):
+    """Visualizing large time series with plotly"""
+
+    homepage = "https://github.com/predict-idlab/plotly-resampler"
+    pypi = "plotly-resampler/plotly_resampler-0.10.0.tar.gz"
+
+    version("0.10.0", sha256="e1063d6d00aa4aedeb8c2c204de8661751b2145fd06682cd8fead9983c9a8334")
+    version("0.9.2", sha256="abddac809931c157f5982d3398b68cc256786e75de33878a84060f57d886b471")
+    version("0.9.1", sha256="28d53709c8bfa8d0d4f85a0d969cbce2d2bfc00c376b8f932cd280360a5bb8cc")
+    version("0.9.0", sha256="7485a17825045884ce7b05d9d7ff9a08fabbefb5d283599656633cf165a0af8f")
+
+    depends_on("py-poetry-core", type="build")
+    depends_on("py-plotly@5.5:6", type=("build", "run"))
+    depends_on("py-dash@2.11:", type=("build", "run"))
+    depends_on("py-pandas@1:", type=("build", "run"))
+    depends_on("py-numpy@1.14:", type=("build", "run"))
+    depends_on("py-orjson@3.10:", type=("build", "run"))
+    depends_on("py-tsdownsample@0.1.2:", type=("build", "run"))
diff --git a/packages/py-tsdownsample/package.py b/packages/py-tsdownsample/package.py
new file mode 100644
index 00000000..961efbd9
--- /dev/null
+++ b/packages/py-tsdownsample/package.py
@@ -0,0 +1,21 @@
+# 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 PyTsdownsample(PythonPackage):
+    """Time series downsampling in rust"""
+
+    homepage = "https://github.com/predict-idlab/tsdownsample"
+    pypi = "tsdownsample/tsdownsample-0.1.4.1.tar.gz"
+
+    version("0.1.4.1", sha256="cc2e2fc0031a5fb75c0f5204b498e86eae0333bcc19da481c0859f1943690f3b")
+    version("0.1.3", sha256="5268d0ab5e8572138871feff389440a0c59d5e0fe02c0fa1cf975d74ba33b933")
+    version("0.1.2", sha256="9da0b8f8859e9651910cc150bc5115bf5d1890d8ebee12bf57bd1bb016a0112a")
+    version("0.1.1", sha256="c7619017ed08376eefb59cacfa113e24a53c060624648b628ff624a88a48a415")
+
+    depends_on("py-maturin@1.1:1", type="build")
+    depends_on("py-numpy", type=("build", "run"))
-- 
GitLab