Download raw body.
py-apscheduler update
this is another one of those ports where the distfile name for newer
versions got normalized by pypi, so portroach doesn't find it.
rather than add deps to fix tests for the additional job stores,
I just disabled those, they're pretty noisy.. I also added tests to
flask-apscheduler locally and they're still happy.
https://apscheduler.readthedocs.io/en/3.x/versionhistory.html
ok?
Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/py-apscheduler/Makefile,v
diff -u -p -r1.6 Makefile
--- Makefile 16 Mar 2026 22:28:29 -0000 1.6
+++ Makefile 15 Oct 2026 12:18:43 -0000
@@ -1,11 +1,14 @@
COMMENT = schedule Python code
-MODPY_DISTV = 3.10.4
-DISTNAME = APScheduler-${MODPY_DISTV}
-PKGNAME = py-${DISTNAME:L}
+MODPY_DISTV = 3.11.3
+DISTNAME = apscheduler-${MODPY_DISTV}
+PKGNAME = py-${DISTNAME}
CATEGORIES = sysutils
MAINTAINER = Sebastian Reitenbach <sebastia@openbsd.org>
-REVISION = 3
+
+# https://github.com/agronholm/apscheduler
+# https://apscheduler.readthedocs.io/en/3.x/versionhistory.html
+HOMEPAGE = https://apscheduler.readthedocs.io/en/3.x/
# MIT
PERMIT_PACKAGE = Yes
@@ -14,19 +17,15 @@ MODULES = lang/python
MODPY_PI = Yes
MODPY_PYBUILD = setuptools_scm
-RUN_DEPENDS += devel/py-six \
- devel/py-tz \
- devel/py-tzlocal
+RUN_DEPENDS += devel/py-tzlocal
-# besides skipped tests, tests pass with running redis and mongod
-# 2 errors io_loop caused by pytest-tornado missing in ports
-TEST_DEPENDS = databases/py-mongo \
- databases/py-redis \
- databases/py-sqlalchemy \
- devel/py-gevent \
- devel/py-test-asyncio \
- devel/py-test-cov \
- devel/py-twisted \
+TEST_DEPENDS = net/py-anyio \
+ devel/py-test-timeout \
+ devel/py-tz \
www/py-tornado
+# some of the jobstore subtests pass if py-mongo, py-redis, py-sqlalchemy
+# are present, but there are various (quite noisy) failures from unported
+# modules: rethinkdb, etcd, zookeeper.
+MODPY_PYTEST_IGNORE = tests/test_jobstores.py
.include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/sysutils/py-apscheduler/distinfo,v
diff -u -p -r1.1.1.1 distinfo
--- distinfo 27 Oct 2023 18:47:00 -0000 1.1.1.1
+++ distinfo 15 Oct 2026 12:18:43 -0000
@@ -1,2 +1,2 @@
-SHA256 (APScheduler-3.10.4.tar.gz) = 5t8HGyfZvomOSGvHlAp75QtK8unafAjwdEqW1L1M70o=
-SIZE (APScheduler-3.10.4.tar.gz) = 100832
+SHA256 (apscheduler-3.11.3.tar.gz) = zS/MkzADmoGliTRyrUn6zyOm1WBMvh2RjINcbeeDTVo=
+SIZE (apscheduler-3.11.3.tar.gz) = 110312
Index: patches/patch-src_apscheduler_util_py
===================================================================
RCS file: patches/patch-src_apscheduler_util_py
diff -N patches/patch-src_apscheduler_util_py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_apscheduler_util_py 15 Oct 2026 12:18:43 -0000
@@ -0,0 +1,21 @@
+From 00c880b81d1cf37ce1cc89c8f4b70143c3c8b758 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= <alex.gronholm@nextday.fi>
+Date: Sat, 26 Sep 2026 00:28:27 +0300
+Subject: [PATCH] Fixed compatibility with pytz 2026.4
+
+Index: src/apscheduler/util.py
+--- src/apscheduler/util.py.orig
++++ src/apscheduler/util.py
+@@ -115,7 +115,11 @@ def astimezone(obj):
+ if obj.zone:
+ return ZoneInfo(obj.zone)
+
+- return timezone(obj._offset)
++ try:
++ return timezone(obj._utcoffset)
++ except AttributeError: # pragma: no cover
++ # pytz 2626.3 and earlier
++ return timezone(obj._offset)
+
+ return obj
+
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/sysutils/py-apscheduler/pkg/PLIST,v
diff -u -p -r1.4 PLIST
--- pkg/PLIST 23 Oct 2025 13:20:21 -0000 1.4
+++ pkg/PLIST 15 Oct 2026 12:18:43 -0000
@@ -28,8 +28,6 @@ lib/python${MODPY_VERSION}/site-packages
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/${MODPY_PYCACHE}asyncio.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}pyc
-lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/${MODPY_PYCACHE}base_py3.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
-lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/${MODPY_PYCACHE}base_py3.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/${MODPY_PYCACHE}debug.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/${MODPY_PYCACHE}debug.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/${MODPY_PYCACHE}gevent.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
@@ -42,7 +40,6 @@ lib/python${MODPY_VERSION}/site-packages
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/${MODPY_PYCACHE}twisted.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/asyncio.py
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/base.py
-lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/base_py3.py
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/debug.py
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/gevent.py
lib/python${MODPY_VERSION}/site-packages/apscheduler/executors/pool.py
@@ -56,6 +53,8 @@ lib/python${MODPY_VERSION}/site-packages
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/${MODPY_PYCACHE}etcd.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/${MODPY_PYCACHE}etcd.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/${MODPY_PYCACHE}memory.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/${MODPY_PYCACHE}memory.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/${MODPY_PYCACHE}mongodb.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
@@ -69,6 +68,7 @@ lib/python${MODPY_VERSION}/site-packages
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/${MODPY_PYCACHE}zookeeper.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/${MODPY_PYCACHE}zookeeper.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/base.py
+lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/etcd.py
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/memory.py
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/mongodb.py
lib/python${MODPY_VERSION}/site-packages/apscheduler/jobstores/redis.py
@@ -111,6 +111,8 @@ lib/python${MODPY_VERSION}/site-packages
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/${MODPY_PYCACHE}base.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/${MODPY_PYCACHE}calendarinterval.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/${MODPY_PYCACHE}calendarinterval.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/${MODPY_PYCACHE}combining.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/${MODPY_PYCACHE}combining.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/${MODPY_PYCACHE}date.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
@@ -118,6 +120,7 @@ lib/python${MODPY_VERSION}/site-packages
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/${MODPY_PYCACHE}interval.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/${MODPY_PYCACHE}interval.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/base.py
+lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/calendarinterval.py
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/combining.py
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/cron/
lib/python${MODPY_VERSION}/site-packages/apscheduler/triggers/cron/__init__.py
py-apscheduler update