git: 10affd73b35e - main - devel/py-fsrs: New port: Free Spaced Repetition Scheduler
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 22 Mar 2026 16:28:49 UTC
The branch main has been updated by yuri:
URL: https://cgit.FreeBSD.org/ports/commit/?id=10affd73b35ea9a2fbb2f71a9afe77412dabc47b
commit 10affd73b35ea9a2fbb2f71a9afe77412dabc47b
Author: Christos Longros <chris.longros@gmail.com>
AuthorDate: 2026-03-22 16:27:23 +0000
Commit: Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-03-22 16:28:34 +0000
devel/py-fsrs: New port: Free Spaced Repetition Scheduler
Differential Revision: https://reviews.freebsd.org/D56019
---
devel/Makefile | 1 +
devel/py-fsrs/Makefile | 23 +++++++++++++++++++++++
devel/py-fsrs/distinfo | 3 +++
devel/py-fsrs/pkg-descr | 12 ++++++++++++
4 files changed, 39 insertions(+)
diff --git a/devel/Makefile b/devel/Makefile
index 50af97e47774..a8c6815e7180 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -4980,6 +4980,7 @@
SUBDIR += py-frictionless-ckan-mapper
SUBDIR += py-frozendict
SUBDIR += py-frozenlist
+ SUBDIR += py-fsrs
SUBDIR += py-fudge
SUBDIR += py-funcparserlib
SUBDIR += py-funcsigs
diff --git a/devel/py-fsrs/Makefile b/devel/py-fsrs/Makefile
new file mode 100644
index 000000000000..a8414177d4f5
--- /dev/null
+++ b/devel/py-fsrs/Makefile
@@ -0,0 +1,23 @@
+PORTNAME= fsrs
+PORTVERSION= 6.3.1
+CATEGORIES= devel python # machine-learning
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= chris.longros@gmail.com
+COMMENT= Free Spaced Repetition Scheduler
+WWW= https://github.com/open-spaced-repetition/py-fsrs
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}typing-extensions>0:devel/py-typing-extensions@${PY_FLAVOR}
+
+USES= python
+USE_PYTHON= autoplist pep517
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/devel/py-fsrs/distinfo b/devel/py-fsrs/distinfo
new file mode 100644
index 000000000000..bd96067edc17
--- /dev/null
+++ b/devel/py-fsrs/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1774196813
+SHA256 (fsrs-6.3.1.tar.gz) = 43c5c6056b97266baf6ebfef9e4cadeb9ac5a4e1b29ffdfb300f445b6e6b15ca
+SIZE (fsrs-6.3.1.tar.gz) = 32645
diff --git a/devel/py-fsrs/pkg-descr b/devel/py-fsrs/pkg-descr
new file mode 100644
index 000000000000..48eb5268ced8
--- /dev/null
+++ b/devel/py-fsrs/pkg-descr
@@ -0,0 +1,12 @@
+Python implementation of the Free Spaced Repetition Scheduler (FSRS)
+algorithm. FSRS uses machine learning to analyze personal review history
+and optimize flashcard scheduling intervals, replacing fixed-formula
+schedulers like SM-2 with data-driven, individualized memory modeling.
+
+Features:
+- Implements FSRS-6 algorithm
+- Scheduling, card state management, and retrievability calculation
+- Optional optimizer module for computing optimal parameters from review data
+- Built into Anki since 23.10, with FSRS-6 support in Anki 25.09
+
+-- Christos Longros <chris.longros@gmail.com>