Index | Thread | Search

From:
Johannes Thyssen Tishman <jtt@openbsd.org>
Subject:
Re: [update] productivity/py-caldav 1.2.1 -> 2.0.1
To:
ports@openbsd.org
Date:
Fri, 26 Sep 2025 18:55:41 +0000

Download raw body.

Thread
2025-09-26T18:33:38+0100 Stuart Henderson <stu@spacehopper.org>:
> On 2025/09/26 16:16, Johannes Thyssen Tishman wrote:
> > Please find below an update for productivity/py-caldav to version 2.0.1.
> > 
> > To update, a port of productivity/py-recurring-ical-events is required,
> > which in turn depends on productivity/py-x-wr-timezone. I've attached
> > tarballs of both ports instead of sending them separately as both are
> > pretty small and straightforward. With these installed, all tests are
> > passing.
> 
> license for py-x-wr-timezone is LGPLv3+ (top of x_wr_timezone.py),
> otherwise ok for that and py-recurring-ical-events

Yep, thanks. By running the tests for py-caldav I also found out that
py-x-wr-timezone needs devel/py-click in RUN_DEPENDS. See diff below
with the changes relative to the tarball I sent.

> py-caldav basically ok but a couple of small things,
> 
> > +# skip tests that require against actual servers that require network and
> > +# additional dependencies, as well as tests for documentation which not
> > +# packaged
> 
> I'd like not to disable tests just because they use network, it's
> usually pretty obvious what's going on and pf rules can be adjusted
> if needed. (But if the network tests are ones which also require
> fiddly extra deps then maybe kill those).

Yeah the additional deps are actual CalDAV servers such as radicale
(ported) and xandikos (not yet ported). See comment from
tests/test_caldav.py:

"""
Tests here communicate with third party servers and/or
internal ad-hoc instances of Xandikos and Radicale, dependent on the
configuration in conf_private.py.
Tests that do not require communication with a working caldav server
belong in test_caldav_unit.py
"""

and comment from conf_private.py:

## PRIVATE CALDAV SERVER(S) TO RUN TESTS TOWARDS
## Make a list of your own servers/accounts that you'd like to run the
## test towards.  Running the test suite towards a personal account
## should generally be safe, it should not mess up with content there
## and it should clean up after itself, but don't sue me if anything
## goes wrong ...

so we'd have to configure a dummy server for these.

> Upstream dropped the vobject dep.

Ah, nice catch. Dropped from RUN_DEPENDS but left it in TEST_DEPENDS as
it is needed for tests. New diff below.

diff -rup productivity/py-x-wr-timezone/Makefile /usr/ports/mystuff/productivity/py-x-wr-timezone/Makefile
--- productivity/py-x-wr-timezone/Makefile	Fri Sep 26 17:41:34 2025
+++ /usr/ports/mystuff/productivity/py-x-wr-timezone/Makefile	Fri Sep 26 20:36:09 2025
@@ -10,7 +10,7 @@ GH_TAGNAME =		v${MODPY_DISTV}
 
 CATEGORIES =		productivity
 
-# LGPLv3
+# LGPLv3+
 PERMIT_PACKAGE =	Yes
 
 MODULES =		lang/python
@@ -18,10 +18,10 @@ MODULES =		lang/python
 MODPY_PYBUILD =		setuptools
 
 RUN_DEPENDS =		devel/py-icalendar \
+			devel/py-click \
 			devel/py-tzdata
 
-TEST_DEPENDS =		devel/py-click \
-			devel/py-tz \
+TEST_DEPENDS =		devel/py-tz \
 			${FULLPKGNAME}:${BUILD_PKGPATH}
 
 # test_readme.py is unnecessary and adds a dependency


Index: Makefile
===================================================================
RCS file: /cvs/ports/productivity/py-caldav/Makefile,v
diff -u -p -r1.4 Makefile
--- Makefile	29 Apr 2025 10:39:40 -0000	1.4
+++ Makefile	26 Sep 2025 18:50:49 -0000
@@ -1,11 +1,10 @@
 COMMENT =		caldav client library for Python
 
-MODPY_DISTV =	1.2.1
+MODPY_DISTV =		2.0.1
 GH_ACCOUNT =		python-caldav
 GH_PROJECT =		caldav
 GH_TAGNAME =		v${MODPY_DISTV}
 PKGNAME =		py-${DISTNAME}
-REVISION =		2
 
 CATEGORIES =		productivity net
 
@@ -14,13 +13,23 @@ PERMIT_PACKAGE =	Yes
 
 MODULES =		lang/python
 
-MODPY_PYBUILD =		setuptools
+MODPY_PYBUILD =		hatch-vcs
 
 RUN_DEPENDS =		devel/py-icalendar \
+			productivity/py-recurring-ical-events \
 			textproc/py-lxml \
-			textproc/py-vobject \
 			www/py-requests
 
-TEST_DEPENDS =		devel/py-tzlocal
+TEST_DEPENDS =		devel/py-tzlocal \
+			textproc/py-vobject
+
+# skip tests that run against actual servers and that require network access
+# and additional dependencies, as well as tests for documentation which is not
+# packaged.
+MODPY_PYTEST_ARGS=	--ignore 'tests/test_caldav.py' \
+			--ignore 'tests/test_docs.py' \
+			--ignore 'tests/test_examples.py'
+
+MAKE_ENV=		SETUPTOOLS_SCM_PRETEND_VERSION=${MODPY_DISTV}
 
 .include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/productivity/py-caldav/distinfo,v
diff -u -p -r1.1.1.1 distinfo
--- distinfo	13 Aug 2023 05:57:00 -0000	1.1.1.1
+++ distinfo	26 Sep 2025 18:50:49 -0000
@@ -1,2 +1,2 @@
-SHA256 (caldav-1.2.1.tar.gz) = ShHZHjhhoMqAmXzTJZAOqUo4ddhpFD6eorBR9EaxHrA=
-SIZE (caldav-1.2.1.tar.gz) = 122700
+SHA256 (caldav-2.0.1.tar.gz) = Us+Qiww05nexrl+v2j9jts3YJBJ/CRVQcxkZuRFyjC8=
+SIZE (caldav-2.0.1.tar.gz) = 169649
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/productivity/py-caldav/pkg/PLIST,v
diff -u -p -r1.3 PLIST
--- pkg/PLIST	29 Apr 2025 10:39:40 -0000	1.3
+++ pkg/PLIST	26 Sep 2025 18:50:49 -0000
@@ -7,18 +7,35 @@ lib/python${MODPY_VERSION}/site-packages
 lib/python${MODPY_VERSION}/site-packages/caldav-${MODPY_DISTV}.dist-info/licenses/
 lib/python${MODPY_VERSION}/site-packages/caldav-${MODPY_DISTV}.dist-info/licenses/COPYING.APACHE
 lib/python${MODPY_VERSION}/site-packages/caldav-${MODPY_DISTV}.dist-info/licenses/COPYING.GPL
-lib/python${MODPY_VERSION}/site-packages/caldav-${MODPY_DISTV}.dist-info/top_level.txt
 lib/python${MODPY_VERSION}/site-packages/caldav/__init__.py
 ${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}/
 lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}_version.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}_version.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}calendarobjectresource.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}calendarobjectresource.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}collection.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}collection.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}compatibility_hints.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}compatibility_hints.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}config.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}config.${MODPY_PYC_MAGIC_TAG}pyc
 lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}davclient.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}davclient.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}davobject.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}davobject.${MODPY_PYC_MAGIC_TAG}pyc
 lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}objects.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}objects.${MODPY_PYC_MAGIC_TAG}pyc
 lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}requests.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 lib/python${MODPY_VERSION}/site-packages/caldav/${MODPY_PYCACHE}requests.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/caldav/_version.py
+lib/python${MODPY_VERSION}/site-packages/caldav/calendarobjectresource.py
+lib/python${MODPY_VERSION}/site-packages/caldav/collection.py
+lib/python${MODPY_VERSION}/site-packages/caldav/compatibility_hints.py
+lib/python${MODPY_VERSION}/site-packages/caldav/config.py
 lib/python${MODPY_VERSION}/site-packages/caldav/davclient.py
+lib/python${MODPY_VERSION}/site-packages/caldav/davobject.py
 lib/python${MODPY_VERSION}/site-packages/caldav/elements/
 lib/python${MODPY_VERSION}/site-packages/caldav/elements/__init__.py
 ${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/caldav/elements/${MODPY_PYCACHE}/
@@ -60,4 +77,5 @@ lib/python${MODPY_VERSION}/site-packages
 lib/python${MODPY_VERSION}/site-packages/caldav/lib/url.py
 lib/python${MODPY_VERSION}/site-packages/caldav/lib/vcal.py
 lib/python${MODPY_VERSION}/site-packages/caldav/objects.py
+lib/python${MODPY_VERSION}/site-packages/caldav/py.typed
 lib/python${MODPY_VERSION}/site-packages/caldav/requests.py