git: 2a722c061614 - main - textproc/py-affine-gaps: New port: JIT-compiled string edit-distances

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Mon, 14 Sep 2026 18:52:11 UTC
The branch main has been updated by yuri:

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

commit 2a722c0616146535d6f5ca2bd61d9a159c7ff5da
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-09-14 02:36:27 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-09-14 18:52:04 +0000

    textproc/py-affine-gaps: New port: JIT-compiled string edit-distances
    
    PR:             298330
    Approved by:    Baptiste Daroussin <bapt@FreeBSD.org> (on behalf of portmgr@)
---
 textproc/Makefile                 |  1 +
 textproc/py-affine-gaps/Makefile  | 37 +++++++++++++++++++++++++++++++++++++
 textproc/py-affine-gaps/distinfo  |  3 +++
 textproc/py-affine-gaps/pkg-descr |  7 +++++++
 4 files changed, 48 insertions(+)

diff --git a/textproc/Makefile b/textproc/Makefile
index 1f6a64ca42f6..2364ff8fb8a3 100644
--- a/textproc/Makefile
+++ b/textproc/Makefile
@@ -1345,6 +1345,7 @@
     SUBDIR += py-accessible-pygments
     SUBDIR += py-acora
     SUBDIR += py-aeidon
+    SUBDIR += py-affine-gaps
     SUBDIR += py-agate
     SUBDIR += py-agate-dbf
     SUBDIR += py-agate-excel
diff --git a/textproc/py-affine-gaps/Makefile b/textproc/py-affine-gaps/Makefile
new file mode 100644
index 000000000000..d6ff969da988
--- /dev/null
+++ b/textproc/py-affine-gaps/Makefile
@@ -0,0 +1,37 @@
+PORTNAME=	affine-gaps
+DISTVERSION=	0.2.4
+CATEGORIES=	textproc python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+DISTNAME=	affine_gaps-${PORTVERSION}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	JIT-compiled string edit-distances
+WWW=		https://github.com/ashvardanian/affine-gaps
+
+LICENSE=	APACHE20
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}numpy>0:math/py-numpy@${PY_FLAVOR}
+RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}colorama>0:devel/py-colorama@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}numba>0:devel/py-numba@${PY_FLAVOR}
+TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}biopython>0:biology/py-biopython@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pytest-repeat>0:devel/py-pytest-repeat@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}stringzilla>0:devel/py-stringzilla@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	pep517 concurrent autoplist pytest
+
+TEST_ENV=	${MAKE_ENV} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+TEST_ARGS=	--disable-plugin-autoload \
+		-p pytest_repeat
+
+NO_ARCH=	yes
+
+do-test:
+	@cd ${WRKSRC} && ${SETENV} ${TEST_ENV} ${PYTHON_CMD} -m pytest test.py
+
+# tests as of 0.2.4: 13992 passed
+
+.include <bsd.port.mk>
diff --git a/textproc/py-affine-gaps/distinfo b/textproc/py-affine-gaps/distinfo
new file mode 100644
index 000000000000..17a392d6c269
--- /dev/null
+++ b/textproc/py-affine-gaps/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1788910021
+SHA256 (affine_gaps-0.2.4.tar.gz) = 2c85685fc82f3c8a610522e07e56e031f3f2985ab96f5b708ebf8db8cf342de8
+SIZE (affine_gaps-0.2.4.tar.gz) = 22505
diff --git a/textproc/py-affine-gaps/pkg-descr b/textproc/py-affine-gaps/pkg-descr
new file mode 100644
index 000000000000..f63b9c6d7619
--- /dev/null
+++ b/textproc/py-affine-gaps/pkg-descr
@@ -0,0 +1,7 @@
+Affine Gaps is a single-file Numba-accelerated Python implementation of
+Gotoh affine gap penalty extensions for the Needleman-Wunsch and
+Smith-Waterman algorithms used for global and local sequence alignment
+in bioinformatics.
+
+It includes command-line and Python interfaces for computing optimal
+alignments and alignment scores.