git: d010ca7b2efe - main - math/py-grandalf: Re-add port: Graph and drawing algorithms framework

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Fri, 18 Jul 2025 20:53:00 UTC
The branch main has been updated by yuri:

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

commit d010ca7b2efedbdaa5bbc3e31b0c98c923da11bb
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2025-07-18 14:58:02 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2025-07-18 20:52:54 +0000

    math/py-grandalf: Re-add port: Graph and drawing algorithms framework
---
 MOVED                                 |  1 -
 math/Makefile                         |  1 +
 math/py-grandalf/Makefile             | 18 ++++++++++++++++++
 math/py-grandalf/distinfo             |  3 +++
 math/py-grandalf/files/patch-setup.py | 10 ++++++++++
 math/py-grandalf/pkg-descr            |  7 +++++++
 6 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/MOVED b/MOVED
index 27beec4aa944..c97c3a6d2e71 100644
--- a/MOVED
+++ b/MOVED
@@ -4489,7 +4489,6 @@ converters/wkhtmltopdf||2025-06-02|Has expired: Upstream abandoned the project
 devel/py-oletools||2025-06-02|Has expired: Depends on expired textproc/py-colorclass
 textproc/py-colorclass||2025-06-02|Has expired: Upstream repository has been archived on Jul 10, 2024
 security/py-oauth2client||2025-06-02|Has expired: Deprecated by upstream. Use security/py-google-auth or security/py-oauthlib instead. See https://google-auth.readthedocs.io/en/latest/oauth2client-deprecation.html for details
-math/py-grandalf||2025-06-02|Has expired: Depends on expired devel/py-pytest-runner
 multimedia/py-ffmpeg-python||2025-06-02|Has expired: Depends on expired devel/py-pytest-runner
 science/py-DendroPy||2025-06-02|Has expired: Depends on expired devel/py-pytest-runner
 devel/linux-rl9-libsoup|emulators/linux_base-rl9|2025-06-04|Merged into emulators/linux_base-rl9
diff --git a/math/Makefile b/math/Makefile
index 8858e9aa98a9..7dcdaa9510e1 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -989,6 +989,7 @@
     SUBDIR += py-gau2grid
     SUBDIR += py-gimmik
     SUBDIR += py-gmpy2
+    SUBDIR += py-grandalf
     SUBDIR += py-graphillion
     SUBDIR += py-gym
     SUBDIR += py-gym-notices
diff --git a/math/py-grandalf/Makefile b/math/py-grandalf/Makefile
new file mode 100644
index 000000000000..d0e8f8ad7eec
--- /dev/null
+++ b/math/py-grandalf/Makefile
@@ -0,0 +1,18 @@
+PORTNAME=	grandalf
+DISTVERSION=	0.8
+CATEGORIES=	math python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Graph and drawing algorithms framework
+WWW=		https://github.com/bdcht/grandalf
+
+LICENSE=	GPLv2
+
+USES=		python
+USE_PYTHON=	distutils autoplist
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pyparsing>0:devel/py-pyparsing@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/math/py-grandalf/distinfo b/math/py-grandalf/distinfo
new file mode 100644
index 000000000000..3027bcc2a6a7
--- /dev/null
+++ b/math/py-grandalf/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1752859612
+SHA256 (grandalf-0.8.tar.gz) = 2813f7aab87f0d20f334a3162ccfbcbf085977134a17a5b516940a93a77ea974
+SIZE (grandalf-0.8.tar.gz) = 38128
diff --git a/math/py-grandalf/files/patch-setup.py b/math/py-grandalf/files/patch-setup.py
new file mode 100644
index 000000000000..795641ece9b4
--- /dev/null
+++ b/math/py-grandalf/files/patch-setup.py
@@ -0,0 +1,10 @@
+--- setup.py.orig	2025-07-18 17:28:03 UTC
++++ setup.py
+@@ -72,7 +72,6 @@ setup(
+     # your project is installed. For an analysis of "install_requires" vs pip's
+     # requirements files see:
+     # https://packaging.python.org/en/latest/requirements.html
+-    setup_requires=['pytest-runner',],
+     tests_require=['pytest',],
+ 
+     install_requires=['pyparsing'],
diff --git a/math/py-grandalf/pkg-descr b/math/py-grandalf/pkg-descr
new file mode 100644
index 000000000000..c6cc12335ca3
--- /dev/null
+++ b/math/py-grandalf/pkg-descr
@@ -0,0 +1,7 @@
+Grandalf is a python package made for experimentations with graphs drawing
+algorithms. It is written in pure python, and currently implements two layouts:
+the Sugiyama hierarchical layout and the force-driven or energy minimization
+approach. While not as fast or featured as graphviz or other libraries like OGDF
+(C++), it provides a way to walk and draw graphs no larger than thousands of
+nodes, while keeping the source code simple enough to make it possible to easily
+tweak and hack any part of it for experimental purpose.