* Lots of work lifting the project up to more modern standards and improving code,
thanks to Georges Toth (github @sim0nx), Matthias Urlichs (github @smurfix) and
@ArtemIsmagilov. While this shouldn't matter for existing users, it will make
the library more future-proof.
* Quite long lists of fixes, improvements and some few changes, nothing big, main
focus is on ensuring compatibility with as many server implementations as possible.
See below.
* Partial workaround for https://github.com/python-caldav/caldav/issues/401 - some
servers require comptype in the search query -
* At least one bugfix, possibly fixing #399 - the `accept_invite`-method not working
- https://github.com/python-caldav/caldav/pull/403
* Fix/workaround for servers sending MAILTO in uppercase
- https://github.com/python-caldav/caldav/issues/388,
https://github.com/python-caldav/caldav/issues/399
and https://github.com/python-caldav/caldav/pull/403
* `get_duration`: make sure the algorithm doesn't raise an exception comparing dates
with timestamps - https://github.com/python-caldav/caldav/pull/381
* `set_due`: make sure the algorithm doesn't raise an exception comparing naive timestamps
with timezone timestamps - https://github.com/python-caldav/caldav/pull/381
* Code formatting / style fixes.
* Jason Yau introduced the possibility to add arbitrary headers - but things like User-Agent
would anyway always be overwritten. Now the custom logic takes precedence. Pull request
https://github.com/python-caldav/caldav/pull/386, issue https://github.com/python-caldav/caldav/issues/385
* Search method has some logic handling non-conformant servers (loading data from the server
if the search response didn't include the icalendar data, ignoring trash from the Google
server when it returns data without a VTODO/VEVENT/VJOURNAL component), but it was inside
an if-statement and applied only if Expanded-flag was set to True. Moved the logic out
of the if, so it always applies.
* Revisited a problem that Google sometimes delivers junk when doing searches - credits to
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-caldav?expand=0&rev=31
- deleted patches
- drop-python2-support.patch (upstreamed)
- update to 1.3.9
[1.3.9] - 2023-12-12
* Some bugfixes.
[1.3.6] - 2023-07-20
* One of the tests has been partially disabled, ref #300 , #320 and #321
[1.3.3] - 2023-07-19
* Support for very big events, credits to github user @aaujon in #301
* Custom HTTP headers was added in v1.2, but documentation and unit test is added in v1.3
* More test code in #308
* Add props parameter to search function, credits to github user @ge-lem in #315
* Set an id field in calendar objects when populated through CalendarSet.calendars()
* get_relatives-method, #294
* get_dtend-method
OBS-URL: https://build.opensuse.org/request/show/1133409
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-caldav?expand=0&rev=13
- Add drop-python2-support.patch to remove python-six dependency
gh#python-caldav/caldav#228
- Remove python_module macro definition
- Update to 0.10.0
## Quick summary
* Work on a universal search method
* Refactoring, consolidated lots of slightly duplicated code into one
method to rule them all
* Support for things needed by the calendar-cli utility, like search by
categories
* Support for completion of recurring tasks
* More utilities for tasks
* Uncomplete-method ... for undoing the complete (recurrences not supported
though)
* get/set duration/dtstart/dtend (arguably this belongs to vobject and/or
icalendar)
* Other improvements:
* picklable URLs
* display_name convenience method
* possible to set child/parent relationships
* Potential bugfix: sequence number may need to be increased when saving
something to the calendar (not backported, this may have side effects)
## Search method
Calendar now has a method search. Here is some information from the
docstring:
Parameters supported:
* xml - use this search query, and ignore other filter parameters
* comp_class - set to event, todo or journal to restrict search to this
resource type. Some server implementations require this to be set.
* todo - sets comp_class to Todo, and restricts search to pending tasks,
unless the next parameter is set ...
* include_completed - include completed tasks
* event - sets comp_class to event
* text attribute search parameters: category, uid, summary, omment,
description, location, status
* expand - do server side expanding of recurring events/tasks
* start, stop: do a time range search
* filters - other kind of filters (in lxml tree format)
* sort_keys - list of attributes to use when sorting
not supported yet:
* negated text match
* attribute not set
## Completed tasks
While the RFCs do support recurring tasks, they are not very clear on the
details. In v0.10 there are three different ways to complete a task. The
first one is to ignore the RRULE property and mark the task as completed.
This is the backwards-compatibility mode - though, according to my
understanding of a "recurring task" this is the wrong way to do it.
The two other modes considers the task to be "interval based" is no BY-rules
are specified in the RRULE - meaning that if a task is supposed to be done
weekly, then a week should pass from it was completed and until one needs to
start with it again - no matter the DTSTART of the original instance - but
the standards may also be interpreted so that if the original task was to be
started at a Tuesday 10:00, then all recurrences should be started at a
Tuesday 10:00.
Both the modes stores a copy of the completed task, for the record. The
"safe" mode stores the copy as a completely independent task, and modifies
the DTSTART/DUE of the original task - so the completed task is not linked up
to the recurring task. (One may eventually try to make a link by
establishing a "parent task").
The "thisandfuture"-mode will establish the completed task as a separate
recurrence in a recurrence set. The non-completed task is also duplicated
with a new DTSTART set and range set to THISANDFUTURE. As I understand the
RFC, this is the way to handle interval-based tasks, future recurrences will
then base their starting time on the DTSTART of the THISANDFUTURE task. For
fixed tasks the THISANDFUTURE recurrence is moot, so I'm considering to
create a third mode as well.
OBS-URL: https://build.opensuse.org/request/show/1033143
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-caldav?expand=0&rev=12
gh#python-caldav/caldav#228
- Remove python_module macro definition
- Update to 0.10.0
## Quick summary
* Work on a universal search method
* Refactoring, consolidated lots of slightly duplicated code into one
method to rule them all
* Support for things needed by the calendar-cli utility, like search by
categories
* Support for completion of recurring tasks
* More utilities for tasks
* Uncomplete-method ... for undoing the complete (recurrences not supported
though)
* get/set duration/dtstart/dtend (arguably this belongs to vobject and/or
icalendar)
* Other improvements:
* picklable URLs
* display_name convenience method
* possible to set child/parent relationships
* Potential bugfix: sequence number may need to be increased when saving
something to the calendar (not backported, this may have side effects)
## Search method
Calendar now has a method search. Here is some information from the
docstring:
Parameters supported:
* xml - use this search query, and ignore other filter parameters
* comp_class - set to event, todo or journal to restrict search to this
resource type. Some server implementations require this to be set.
* todo - sets comp_class to Todo, and restricts search to pending tasks,
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-caldav?expand=0&rev=24
- Update to v0.9.1
## Quick summary
* Tweaks to support the DAVMail server implementation
* v0.9.0 broke for python 3.5 and lower, due to usage of fstrings. v0.9.1 has been tested with python 3.5.
* Discovery of some cases of broken support of recurring events on the server side, and logging of errors (optionally raising of errors)
* New method .close on the DAVClient object.
## Minor changes
* Quite some users are complaining because recurring events aren't supported - which is intentional, because the server is supposed to take
care of that. Unfortunately quite some servers doesn't. Thanks to cos, at least we now have some code in place to log an error
(or optionally raising an error) when recurrences aren't taken care of (though, it only works if the server is returning non-expanded
recurring events - if searching for a recurrence and the server doesn't find it, then ... no error logged).
The error message is referring to https://github.com/python-caldav/caldav/issues/157
* New method `.close` on the DAVClient object
## Documentation fixes
* Added the fastmail caldav URL to the documentation - including note that they are picky on the trailing slash
- ref https://github.com/home-assistant/core/issues/66599
* Keeping the changelog up-to-date
## Bugfixes
* v0.9.0 broke on elder python versions due to an f"string". The f-format was introduced in python 3.6. Anything below is actually
End of Life versions, but still ... it's a very small effort here to preserve compatibility with elder python versions.
* The library had some difficulties with the DAVMail server - at one point it does not return a calendar home set property, and at
another point the calendar home set URL is the same as the calendar URL.
* The `URL.canonical()` method should rewrite variants of the same URL into something that will be equal - some work has been put making it more robust.
Issues: https://github.com/python-caldav/caldav/issues/189. f-strings discussed outside github.
## Linting
Removal of some extra white space
## Testing framework and incompatibility matrix
* The testTodoDatesearch is pesky - because every server has different visions on how (or weather) to support recurring tasks.
Added yet more complexity to allow the test code to pass on different servers.
* Removed some silly test code in testSetCalendarProperties - seems to be just recreating a calendar, which we do in the setup of any test
OBS-URL: https://build.opensuse.org/request/show/1006203
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-caldav?expand=0&rev=20
- update to 0.8.2:
* urllib.quote on uuids before including it in a new URL on object creation
* Principal.calendar (and CalendarSet.calendar) now accepts an URL as "cal_id"
* Minor workaround for problem with cloud.global/e.email: urllib.quote the
calendar_home_set_url if it's a path and it contains the character '@'
* Minor fixes to improve support for SOGo
* Bugfix for non-ascii in the password
* timezones ... the API of tzlocal was changed for a short while,
pytz is deprecated, but icalendar only supports timestamps localized with pytz. What a mess!
* Added supported-report-set to the tags (but so far no code for using it)
* Multiget didn't work
* Silly spelling mistake in one of the error classes
* Attempts to resolve broken ical issues with X-APPLE-STRUCTURED-EVENT
and X-APPLE-STRUCTURED-LOCATION (#37, ...)
* Compatibility issue with e.email
OBS-URL: https://build.opensuse.org/request/show/946640
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-caldav?expand=0&rev=9
* urllib.quote on uuids before including it in a new URL on object creation
* Principal.calendar (and CalendarSet.calendar) now accepts an URL as "cal_id"
* Minor workaround for problem with cloud.global/e.email: urllib.quote the
calendar_home_set_url if it's a path and it contains the character '@'
* Minor fixes to improve support for SOGo
* Bugfix for non-ascii in the password
* timezones ... the API of tzlocal was changed for a short while,
pytz is deprecated, but icalendar only supports timestamps localized with pytz. What a mess!
* Added supported-report-set to the tags (but so far no code for using it)
* Multiget didn't work
* Silly spelling mistake in one of the error classes
* Attempts to resolve broken ical issues with X-APPLE-STRUCTURED-EVENT
and X-APPLE-STRUCTURED-LOCATION (#37, ...)
* Compatibility issue with e.email
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-caldav?expand=0&rev=19
- Update to 0.7.1:
* Some tweaks to support newer versions of Zimbra and other caldav server implementations with slightly twisted support for the RFC.
* API change: add_event, add_todo and add_journal methods are now deprecated and aliases of save_. New attributes no_create and no_overwrite if one wants to be sure the save_-methods does the right thing.
* Calendars can now be created without a display name
* Quite some minor bugfixes
* Some code refactoring, removing some duplicated code
* library will gracefully create an UID if fed with caldav data missing the UID field
* the code for calendar searches has been reorganized making it possible for "power users" to do custom calendar searches.
- Drop nose from BuildRequires/Requires, we don't run the testsuite, and it
isn't listed in the requirements.
OBS-URL: https://build.opensuse.org/request/show/814646
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-caldav?expand=0&rev=7
* Some tweaks to support newer versions of Zimbra and other caldav server implementations with slightly twisted support for the RFC.
* API change: add_event, add_todo and add_journal methods are now deprecated and aliases of save_. New attributes no_create and no_overwrite if one wants to be sure the save_-methods does the right thing.
* Calendars can now be created without a display name
* Quite some minor bugfixes
* Some code refactoring, removing some duplicated code
* library will gracefully create an UID if fed with caldav data missing the UID field
* the code for calendar searches has been reorganized making it possible for "power users" to do custom calendar searches.
- Drop nose from BuildRequires/Requires, we don't run the testsuite, and it
isn't listed in the requirements.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-caldav?expand=0&rev=16