git: e7ebea739ff4 - main - devel/py-jupyter-rfb: New port: Remote Frame Buffer for Jupyter

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Tue, 17 Sep 2024 17:29:43 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=e7ebea739ff407568124684cf0b4de03028d0918

commit e7ebea739ff407568124684cf0b4de03028d0918
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2024-09-17 15:14:12 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2024-09-17 17:29:40 +0000

    devel/py-jupyter-rfb: New port: Remote Frame Buffer for Jupyter
---
 devel/Makefile                                  |  1 +
 devel/py-jupyter-rfb/Makefile                   | 30 +++++++++++++++++++++++++
 devel/py-jupyter-rfb/distinfo                   |  3 +++
 devel/py-jupyter-rfb/files/patch-pyproject.toml |  7 ++++++
 devel/py-jupyter-rfb/pkg-descr                  | 11 +++++++++
 5 files changed, 52 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index c28b97611f51..c6371ba4a173 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -5068,6 +5068,7 @@
     SUBDIR += py-jupyter-kernel-test
     SUBDIR += py-jupyter-lsp
     SUBDIR += py-jupyter-packaging
+    SUBDIR += py-jupyter-rfb
     SUBDIR += py-jupyter-server
     SUBDIR += py-jupyter-server-fileid
     SUBDIR += py-jupyter-server-mathjax
diff --git a/devel/py-jupyter-rfb/Makefile b/devel/py-jupyter-rfb/Makefile
new file mode 100644
index 000000000000..7fb6272ca216
--- /dev/null
+++ b/devel/py-jupyter-rfb/Makefile
@@ -0,0 +1,30 @@
+PORTNAME=	jupyter-rfb
+DISTVERSION=	0.4.4
+CATEGORIES=	devel python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+DISTNAME=	${PORTNAME:S/-/_/}-${DISTVERSION}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Remote Frame Buffer for Jupyter
+WWW=		https://jupyter-rfb.readthedocs.io/en/stable
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PY_SETUPTOOLS} \
+		${PYTHON_PKGNAMEPREFIX}jupyter-packaging>=0.7.9:devel/py-jupyter-packaging@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}jupyterlab>=3.0.0:devel/py-jupyterlab@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS=	${PY_PILLOW} \
+		${PYTHON_PKGNAMEPREFIX}simplejpeg>0:graphics/py-simplejpeg@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}ipywidgets>=7.6.0:devel/py-ipywidgets@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}jupyterlab-widgets>0:devel/py-jupyterlab-widgets@${PY_FLAVOR} \
+		${PYNUMPY} # probably only one of pillow and simplejpeg is needed
+
+USES=		python
+USE_PYTHON=	pep517 autoplist concurrent pytest
+
+NO_ARCH=	yes
+
+.include <bsd.port.mk>
diff --git a/devel/py-jupyter-rfb/distinfo b/devel/py-jupyter-rfb/distinfo
new file mode 100644
index 000000000000..7beea1125d92
--- /dev/null
+++ b/devel/py-jupyter-rfb/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1726564672
+SHA256 (jupyter_rfb-0.4.4.tar.gz) = 40e9af8e29adb90b5f58c0b9cb646abc2a142e0ac5f00822ba65291d958945e7
+SIZE (jupyter_rfb-0.4.4.tar.gz) = 113929
diff --git a/devel/py-jupyter-rfb/files/patch-pyproject.toml b/devel/py-jupyter-rfb/files/patch-pyproject.toml
new file mode 100644
index 000000000000..fa0e07c6f537
--- /dev/null
+++ b/devel/py-jupyter-rfb/files/patch-pyproject.toml
@@ -0,0 +1,7 @@
+--- pyproject.toml.orig	2024-09-17 09:27:39 UTC
++++ pyproject.toml
+@@ -1,3 +1,3 @@
+ [build-system]
+-requires = ["jupyter_packaging~=0.7.9", "jupyterlab>=3.0.0,==3.*", "setuptools>=40.8.0", "wheel"]
++requires = ["jupyter_packaging>=0.7.9", "jupyterlab>=3.0.0", "setuptools>=40.8.0", "wheel"]
+ build-backend = "setuptools.build_meta"
diff --git a/devel/py-jupyter-rfb/pkg-descr b/devel/py-jupyter-rfb/pkg-descr
new file mode 100644
index 000000000000..34d994b7753a
--- /dev/null
+++ b/devel/py-jupyter-rfb/pkg-descr
@@ -0,0 +1,11 @@
+The jupyter_rfb library provides a widget (an ipywidgets subclass) that can be
+used in the Jupyter notebook and in JupyterLab to implement a remote
+frame-buffer.
+
+Images that are generated at the server are streamed to the client (Jupyter)
+where they are shown. Events (such as mouse interactions) are streamed in the
+other direction, where the server can react by generating new images.
+
+This remote-frame-buffer approach can be an effective method for
+server-generated visualizations to be dispayed in Jupyter notebook/lab.
+For example visualization created by tools like vispy, datoviz or pygfx.