On 2025/12/17 10:32, Joerg Jung wrote:
> This is fine with me.
> 
> > [email protected] (Marcus MERIGHI), 2025.12.06 (Sat) 18:58 (CET):
> >> Hello, 
> >> 
> >> one can use khal/ikhal with just local calender files.
> >> syncing with caldav via vdirsyncer is nice, but optional. 

I've committed a modified version of that, vdirsyncer is still needed
for tests (+ REVISION bump).

Here's an update to 0.13.0.  any tests?  ok?

Index: Makefile
===================================================================
RCS file: /cvs/ports/productivity/khal/Makefile,v
diff -u -p -r1.26 Makefile
--- Makefile    11 Feb 2026 21:10:08 -0000      1.26
+++ Makefile    11 Feb 2026 21:16:17 -0000
@@ -1,13 +1,12 @@
 COMMENT =              standards based terminal calendar
 
-MODPY_DISTV =          0.11.2
+MODPY_DISTV =          0.13.0
 DISTNAME =             khal-${MODPY_DISTV}
-REVISION =             4
 
 CATEGORIES =           productivity
 
 # https://github.com/pimutils/khal
-HOMEPAGE =             https://lostpackets.de/khal/
+HOMEPAGE =             https://khal.readthedocs.io/
 
 MAINTAINER =           Joerg Jung <[email protected]>
 
@@ -18,8 +17,7 @@ MODULES =             lang/python
 MODPY_PYBUILD =                setuptools_scm
 MODPY_PI =             Yes
 
-RUN_DEPENDS =          devel/py-atomicwrites \
-                       devel/py-click \
+RUN_DEPENDS =          devel/py-click \
                        devel/py-click-log \
                        devel/py-configobj \
                        devel/py-dateutil \
Index: distinfo
===================================================================
RCS file: /cvs/ports/productivity/khal/distinfo,v
diff -u -p -r1.9 distinfo
--- distinfo    11 Dec 2023 12:40:37 -0000      1.9
+++ distinfo    11 Feb 2026 21:16:17 -0000
@@ -1,2 +1,2 @@
-SHA256 (khal-0.11.2.tar.gz) = j7jYk3HlPiI1lToHZeQbl+F0hIpojWN2hHdXbQP4mbo=
-SIZE (khal-0.11.2.tar.gz) = 196986
+SHA256 (khal-0.13.0.tar.gz) = aP6ozXBOOH6BtmnJAyKo2vtDdPWHawcXDJxuI0FaPuA=
+SIZE (khal-0.13.0.tar.gz) = 209200
Index: patches/patch-khal_ui_calendarwidget_py
===================================================================
RCS file: patches/patch-khal_ui_calendarwidget_py
diff -N patches/patch-khal_ui_calendarwidget_py
--- patches/patch-khal_ui_calendarwidget_py     21 May 2025 12:12:32 -0000      
1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,35 +0,0 @@
-From 768003148015376f1715a2d4cc0b3d6d800876c4 Mon Sep 17 00:00:00 2001
-From: Hugo Osvaldo Barrera <[email protected]>
-Date: Thu, 11 Jan 2024 16:28:28 +0100
-Subject: [PATCH] Update deprecated syntax
-
-Index: khal/ui/calendarwidget.py
---- khal/ui/calendarwidget.py.orig
-+++ khal/ui/calendarwidget.py
-@@ -148,7 +148,7 @@ class DateCColumns(urwid.Columns):
- 
-     @urwid.Columns.focus_position.setter
-     def focus_position(self, position: int) -> None:
--        """calls on_date_change before calling super()._set_focus_position"""
-+        """calls on_date_change before setting super().focus_position"""
-         # do not call when building up the interface, lots of potentially
-         # expensive calls made here
-         if self._init:
-@@ -163,7 +163,7 @@ class DateCColumns(urwid.Columns):
-     def set_focus_date(self, a_date):
-         for num, day in enumerate(self.contents[1:8], 1):
-             if day[0].date == a_date:
--                self._set_focus_position(num)
-+                self.focus_position = num
-                 return None
-         raise ValueError('%s not found in this week' % a_date)
- 
-@@ -381,7 +381,7 @@ class CalendarWalker(urwid.SimpleFocusListWalker):
-         """
-         row, column = self.get_date_pos(a_day)
-         self.set_focus(row)
--        self[self.focus]._set_focus_position(column)
-+        self[self.focus].focus_position = (column)
- 
-     @property
-     def earliest_date(self):
Index: patches/patch-khal_ui_editor_py
===================================================================
RCS file: patches/patch-khal_ui_editor_py
diff -N patches/patch-khal_ui_editor_py
--- patches/patch-khal_ui_editor_py     21 May 2025 12:12:32 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,17 +0,0 @@
-From 768003148015376f1715a2d4cc0b3d6d800876c4 Mon Sep 17 00:00:00 2001
-From: Hugo Osvaldo Barrera <[email protected]>
-Date: Thu, 11 Jan 2024 16:28:28 +0100
-Subject: [PATCH] Update deprecated syntax
-
-Index: khal/ui/editor.py
---- khal/ui/editor.py.orig
-+++ khal/ui/editor.py
-@@ -58,7 +58,7 @@ class CalendarPopUp(urwid.PopUpLauncher):
-         self._monthdisplay = monthdisplay
-         self._firstweekday = firstweekday
-         self._keybindings = {} if keybindings is None else keybindings
--        self.__super.__init__(widget)
-+        super().__init__(widget)
- 
-     def keypress(self, size, key):
-         if key == 'enter':
Index: patches/patch-khal_ui_widgets_py
===================================================================
RCS file: patches/patch-khal_ui_widgets_py
diff -N patches/patch-khal_ui_widgets_py
--- patches/patch-khal_ui_widgets_py    21 May 2025 12:12:32 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,69 +0,0 @@
-From 768003148015376f1715a2d4cc0b3d6d800876c4 Mon Sep 17 00:00:00 2001
-From: Hugo Osvaldo Barrera <[email protected]>
-Date: Thu, 11 Jan 2024 16:28:28 +0100
-Subject: [PATCH] Update deprecated syntax
-
-Index: khal/ui/widgets.py
---- khal/ui/widgets.py.orig
-+++ khal/ui/widgets.py
-@@ -255,7 +255,7 @@ class ChoiceList(urwid.WidgetWrap):
- 
-         pile = NPile(buttons, outermost=True)
-         num = [num for num, elem in enumerate(parent.choices) if elem == 
parent.active][0]
--        pile.set_focus(num)
-+        pile.focus_position = num
-         fill = urwid.Filler(pile)
-         urwid.WidgetWrap.__init__(self, urwid.AttrMap(fill, 'popupbg'))
- 
-@@ -284,14 +284,14 @@ class NextMixin(SupportsNext):
-     def _select_first_selectable(self):
-         """select our first selectable item (recursivly if that item 
SupportsNext)"""
-         i = self._first_selectable()
--        self.set_focus(i)
-+        self.focus_position = i
-         if isinstance(self.contents[i][0], SupportsNext):
-             self.contents[i][0]._select_first_selectable()
- 
-     def _select_last_selectable(self):
-         """select our last selectable item (recursivly if that item 
SupportsNext)"""
-         i = self._last_selectable()
--        self.set_focus(i)
-+        self.focus_position = i
-         if isinstance(self._contents[i][0], SupportsNext):
-             self.contents[i][0]._select_last_selectable()
- 
-@@ -318,7 +318,7 @@ class NextMixin(SupportsNext):
-             else:
-                 for i in range(self.focus_position + 1, len(self._contents)):
-                     if self._contents[i][0].selectable():
--                        self.set_focus(i)
-+                        self.focus_position = i
-                         if isinstance(self._contents[i][0], SupportsNext):
-                             self._contents[i][0]._select_first_selectable()
-                         break
-@@ -330,7 +330,7 @@ class NextMixin(SupportsNext):
-             else:
-                 for i in range(self.focus_position - 1, 0 - 1, -1):
-                     if self._contents[i][0].selectable():
--                        self.set_focus(i)
-+                        self.focus_position = i
-                         if isinstance(self._contents[i][0], SupportsNext):
-                             self._contents[i][0]._select_last_selectable()
-                         break
-@@ -352,14 +352,14 @@ class NListBox(SupportsNext, urwid.ListBox):
-     def _select_first_selectable(self):
-         """select our first selectable item (recursivly if that item 
SupportsNext)"""
-         i = self._first_selectable()
--        self.set_focus(i)
-+        self.focus_position = i
-         if isinstance(self.body[i], SupportsNext):
-             self.body[i]._select_first_selectable()
- 
-     def _select_last_selectable(self):
-         """select our last selectable item (recursivly if that item 
SupportsNext)"""
-         i = self._last_selectable()
--        self.set_focus(i)
-+        self.focus_position = i
-         if isinstance(self.body[i], SupportsNext):
-             self.body[i]._select_last_selectable()
- 
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/productivity/khal/pkg/PLIST,v
diff -u -p -r1.10 PLIST
--- pkg/PLIST   23 Oct 2025 13:20:09 -0000      1.10
+++ pkg/PLIST   11 Feb 2026 21:16:17 -0000
@@ -7,8 +7,9 @@ lib/python${MODPY_VERSION}/site-packages
 lib/python${MODPY_VERSION}/site-packages/khal-${MODPY_DISTV}.dist-info/WHEEL
 
lib/python${MODPY_VERSION}/site-packages/khal-${MODPY_DISTV}.dist-info/entry_points.txt
 
lib/python${MODPY_VERSION}/site-packages/khal-${MODPY_DISTV}.dist-info/licenses/
-lib/python${MODPY_VERSION}/site-packages/khal-${MODPY_DISTV}.dist-info/licenses/AUTHORS.txt
-lib/python${MODPY_VERSION}/site-packages/khal-${MODPY_DISTV}.dist-info/licenses/COPYING
+lib/python${MODPY_VERSION}/site-packages/khal-${MODPY_DISTV}.dist-info/licenses/doc/
+lib/python${MODPY_VERSION}/site-packages/khal-${MODPY_DISTV}.dist-info/licenses/doc/source/
+lib/python${MODPY_VERSION}/site-packages/khal-${MODPY_DISTV}.dist-info/licenses/doc/source/license.rst
 
lib/python${MODPY_VERSION}/site-packages/khal-${MODPY_DISTV}.dist-info/top_level.txt
 lib/python${MODPY_VERSION}/site-packages/khal/__init__.py
 lib/python${MODPY_VERSION}/site-packages/khal/__main__.py
@@ -17,10 +18,14 @@ lib/python${MODPY_VERSION}/site-packages
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}__main__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}__main__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}_compat.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}_compat.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}calendar_display.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}calendar_display.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}cli.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}cli.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}cli_utils.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}cli_utils.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}configwizard.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}configwizard.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}controllers.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
@@ -33,14 +38,18 @@ lib/python${MODPY_VERSION}/site-packages
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}icalendar.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}parse_datetime.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}parse_datetime.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}plugins.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}plugins.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}terminal.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}terminal.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}version.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 
lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}version.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/khal/_compat.py
 lib/python${MODPY_VERSION}/site-packages/khal/calendar_display.py
 lib/python${MODPY_VERSION}/site-packages/khal/cli.py
+lib/python${MODPY_VERSION}/site-packages/khal/cli_utils.py
 lib/python${MODPY_VERSION}/site-packages/khal/configwizard.py
 lib/python${MODPY_VERSION}/site-packages/khal/controllers.py
 lib/python${MODPY_VERSION}/site-packages/khal/custom_types.py
@@ -59,14 +68,18 @@ lib/python${MODPY_VERSION}/site-packages
 
lib/python${MODPY_VERSION}/site-packages/khal/khalendar/${MODPY_PYCACHE}exceptions.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/khalendar/${MODPY_PYCACHE}khalendar.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 
lib/python${MODPY_VERSION}/site-packages/khal/khalendar/${MODPY_PYCACHE}khalendar.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/khal/khalendar/${MODPY_PYCACHE}typing.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/python${MODPY_VERSION}/site-packages/khal/khalendar/${MODPY_PYCACHE}typing.${MODPY_PYC_MAGIC_TAG}pyc
 
lib/python${MODPY_VERSION}/site-packages/khal/khalendar/${MODPY_PYCACHE}vdir.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
 
lib/python${MODPY_VERSION}/site-packages/khal/khalendar/${MODPY_PYCACHE}vdir.${MODPY_PYC_MAGIC_TAG}pyc
 lib/python${MODPY_VERSION}/site-packages/khal/khalendar/backend.py
 lib/python${MODPY_VERSION}/site-packages/khal/khalendar/event.py
 lib/python${MODPY_VERSION}/site-packages/khal/khalendar/exceptions.py
 lib/python${MODPY_VERSION}/site-packages/khal/khalendar/khalendar.py
+lib/python${MODPY_VERSION}/site-packages/khal/khalendar/typing.py
 lib/python${MODPY_VERSION}/site-packages/khal/khalendar/vdir.py
 lib/python${MODPY_VERSION}/site-packages/khal/parse_datetime.py
+lib/python${MODPY_VERSION}/site-packages/khal/plugins.py
 lib/python${MODPY_VERSION}/site-packages/khal/settings/
 lib/python${MODPY_VERSION}/site-packages/khal/settings/__init__.py
 lib/python${MODPY_VERSION}/site-packages/khal/settings/${MODPY_PYCACHE}/

Reply via email to