python-caldav/python-caldav.changes

388 lines
23 KiB
Plaintext
Raw Normal View History

- Update to 1.4.0 * 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
2024-11-26 12:20:26 +01:00
-------------------------------------------------------------------
Mon Nov 25 12:54:36 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Update to 1.4.0
* 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
github user @zhwei in https://github.com/python-caldav/caldav/pull/366
* There were some compatibility-logic loading objects if the server does not deliver icalendar
data (as it's suppsoed to do according to the RFC), but only if passing the `expand`-flag to
the `search`-method. Fixed that it loads regardless of weather `expand` is set or not.
Also in https://github.com/python-caldav/caldav/pull/366
* Tests - lots of work getting as much test code as possible to pass on different servers, and
now testing also for Python 3.12 - ref https://github.com/python-caldav/caldav/pull/368
https://github.com/python-caldav/caldav/issues/360 https://github.com/python-caldav/caldav/pull/447
https://github.com/python-caldav/caldav/pull/369 https://github.com/python-caldav/caldav/pull/370
https://github.com/python-caldav/caldav/pull/441 https://github.com/python-caldav/caldav/pull/443a
* The vcal fixup method was converting implicit dates into timestamps in the COMPLETED property, as
it should be a timestamp according to the RFC - however, the regexp failed on explicit dates.
Now it will take explicit dates too. https://github.com/python-caldav/caldav/pull/387
* Code cleanups and modernizing the code - https://github.com/python-caldav/caldav/pull/404
https://github.com/python-caldav/caldav/pull/405 https://github.com/python-caldav/caldav/pull/406
https://github.com/python-caldav/caldav/pull/407 https://github.com/python-caldav/caldav/pull/408
https://github.com/python-caldav/caldav/pull/409 https://github.com/python-caldav/caldav/pull/412
https://github.com/python-caldav/caldav/pull/414 https://github.com/python-caldav/caldav/pull/415
https://github.com/python-caldav/caldav/pull/418 https://github.com/python-caldav/caldav/pull/419
https://github.com/python-caldav/caldav/pull/417 https://github.com/python-caldav/caldav/pull/421
https://github.com/python-caldav/caldav/pull/423 https://github.com/python-caldav/caldav/pull/430
https://github.com/python-caldav/caldav/pull/431 https://github.com/python-caldav/caldav/pull/440
https://github.com/python-caldav/caldav/pull/365
* Doc - improved examples, https://github.com/python-caldav/caldav/pull/427
* Purelymail sends absolute URLs, which is allowed by the RFC but was not supported by the library.
Fixed in https://github.com/python-caldav/caldav/pull/442
* In https://github.com/python-caldav/caldav/pull/366, I optimized the logic in `search` a bit, now
all data from the server not containing a VEVENT, VTODO or VJOURNAL will be thrown away. I believe
this won't cause any problems for anyone, as the server should only deliver such components, but
I may be wrong.
* Default User-Agent changed from `Mozilla/5` to `python-caldav/{__version__}`
- https://github.com/python-caldav/caldav/pull/392
* Change fixup log lvl to warning and merge diff log messages into related parent log by @MrEbbinghaus
in https://github.com/python-caldav/caldav/pull/438
* Mandatory fields are now added if trying to save incomplete icalendar data,
https://github.com/python-caldav/caldav/pull/447
* Allow to reverse the sorting order on search function by @twissell
- in https://github.com/python-caldav/caldav/pull/433
* Work on integrating typing information. Details in
https://github.com/python-caldav/caldav/pull/358
* Remove dependency on pytz. Details in https://github.com/python-caldav/caldav/issues/231
and https://github.com/python-caldav/caldav/pull/363
* Use setuptools-scm / pyproject.toml (modern packaging). Details in
https://github.com/python-caldav/caldav/pull/364 and https://github.com/python-caldav/caldav/pull/367
* Debugging tool - an environment variable can be set, causing the library to spew out server
communications into files under /tmp. Details in https://github.com/python-caldav/caldav/pull/249
and https://github.com/python-caldav/caldav/issues/248
* Comaptibility matrix for posteo.de servers in `tests/compatibility_issues.py`
* Added sort_reverse option to the search function to reverse the sorting order of the found objects.
* It's now possible to specify if `expand` should be done on the server side or client side. Default
is as before, expanding on server side, then on the client side if unexpanded data is returned.
It was found that some servers does expanding, but does not add `RECURRENCE-ID`.
https://github.com/python-caldav/caldav/pull/447
* The debug information gathering hook has been in the limbo for a long time, due to security concerns:
- An attacker that has access to alter the environment the application is running under may cause a
DoS-attack, filling up available disk space with debug logging.
- An attacker that has access to alter the environment the application is running under, and access
to read files under /tmp (files being 0600 and owned by the uid the application is running under),
will be able to read the communication between the server and the client, communication that may
be private and confidential.
* Thinking it through three times, I'm not too concerned - if someone has access to alter the environment
the process is running under and access to read files run by the uid of the application, then this
someone should already be trusted and will probably have the possibility to DoS the system or gather
this communication through other means.
- Switch build system from setuptools to pyproject.toml
* Add python-pip and python-wheel to BuildRequires
* Replace %python_build with %pyproject_wheel
* Replace %python_install with %pyproject_install
* Update name for dist directory in %files section
-------------------------------------------------------------------
Sun Jan 14 17:12:14 UTC 2024 - Axel Braun <axel.braun@gmx.de>
- enabled %{?sle15_python_module_pythons}
-------------------------------------------------------------------
Thu Dec 14 11:08:18 UTC 2023 - pgajdos@suse.com
- deleted patches
- drop-python2-support.patch (upstreamed)
-------------------------------------------------------------------
Thu Dec 14 09:17:55 UTC 2023 - Petr Gajdos <pgajdos@suse.com>
- 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
-------------------------------------------------------------------
Thu Nov 3 17:38:12 UTC 2022 - Daniel Garcia <daniel.garcia@suse.com>
- 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.
-------------------------------------------------------------------
Thu Oct 13 17:50:47 UTC 2022 - Axel Braun <axel.braun@gmx.de>
- version 0.9.2
no changelog
-------------------------------------------------------------------
Mon Sep 26 19:41:04 UTC 2022 - Yogalakshmi Arunachalam <yarunachalam@suse.com>
- 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
unless the `unique_calendar_ids`-flag is given.
-Update to v0.9
## API changes
* `save_todo`, `save_event` and `save_journal` now takes extra parameters, assumed to be equivalent with ical attributes as defined in the icalendar library, and may build icalendar data from scratch or enhance on the given icalendar data.
* Added a context manager, so one can do `with DAVClient(foo) as client: ...`
## Refactoring
* The digest vs basic auth is solved a bit differently in 0.8.2 and 0.9. It has been fixed very carefully but inelegantly in 0.8.2, 0.9 contains a complete rewrite. It was later shown that the logic in 0.8.2 broke for some servers, hence I've decided to discontinue support for the 0.8-branch.
## Bugfixes and test framework
This release does not fix a reported regression at https://github.com/home-assistant/core/issues/65588 (and probably some other places)
that iCloud caldav URLs pointing directly to a calendar won't work. I'm not sure if this is a regression in the caldav library or in Home Assistant.
I've written up test code to catch this issue, but didn't have an iCloud account available to test with while releasing.
This release does not fix a reported possible regression in Home Assistant that public ICS feeds does not work anymore as the "caldav URL".
I don't think such an URL ever was working with the caldav library, I believe it's needed with some extra logic in the Home Assistant module if
public ics feeds are to be supported. (issues https://github.com/home-assistant/core/issues/70205 https://github.com/home-assistant/core/issues/65941)
* Quite some problems fixed with the authentication code
* The string representation of any error class was hardcoded as "AuthorizationError".
* Concatinating an empty unicode string with an empty byte string will cause an exception. The python_utilities.to_wire method would return an empty
unicode string if given an empty unicode string.
* the flags no_overwrite and no_create in save_todo and save_journal didn't work
* scheduling still doesn't work very well, but one bug has been fixed
* tests and compatibility lists: some tweaks to let tests pass on the test servers (including fastmail)
* tests: make sure to delete the test calendar properly
* tests: test that non-base-urls still work
* tests: working around some issues on xandrikos startup, allows newer xandrikos version to be used
* tests: added flag "enable" in the test server config file
-------------------------------------------------------------------
Sat Jan 15 15:28:00 UTC 2022 - Dirk Müller <dmueller@suse.com>
- 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
-------------------------------------------------------------------
Mon Jul 12 23:22:46 UTC 2021 - Jason Craig <os@jacraig.com>
- Update to 0.8.0
* Support for WebDAV sync-tokens
* Work on support for RFC6635, scheduling/RVSP (partially done)
* Improved support for iCloud, Google
* Calendar API improvements
* Improvement of the documentation, examples and inline
docstrings and comments
* Bugfixes
- Use fdupes to remove duplicate files.
- Remove shebangs from various non-executable Python files.
-------------------------------------------------------------------
Mon Jun 15 06:29:32 UTC 2020 - Steve Kowalik <steven.kowalik@suse.com>
- 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.
-------------------------------------------------------------------
Fri Jan 24 09:52:25 UTC 2020 - Marketa Calabkova <mcalabkova@suse.com>
- update to 0.6.2
* caldav/lib/error.py - ProppatchError was not defined, ref https://github.com/python-caldav/caldav/issues/54.
Also added a common base class DAVError, and made sure the error
referenced in #54 will never reappear, even if new methods are
added to DAVClient.
* caldav/elements/cdav.py - fixing a retention problem - the
timezone fixes done recently was not compatible with python 2.7 nor 3.5.
* setup.py - reintroducing dependencies pytz and tzlocal - but only for old python versions
* README.md - proper documentation of the dual licensing, ref
https://github.com/python-caldav/caldav/issues/60
* caldav/objects.py - fixes (or workarounds?) that solves real-world
issues with iCloud and MS Exchange. Ref https://github.com/python-caldav/caldav/pull/56
-------------------------------------------------------------------
Thu Apr 25 06:44:50 UTC 2019 - Adrian Schröter <adrian@suse.de>
- version update to 0.6.1
* bugfix: accept text/calendar (required for fetching calendar items from the xandikos server, ref https://github.com/python-caldav/caldav/issues/40
-------------------------------------------------------------------
Fri Mar 22 10:55:32 UTC 2019 - pgajdos@suse.com
- version update to 0.6.0
* caldav/elements/cdav.py - proper timezone support
* caldav/elements/dav.py - add GetEtag
* caldav/elements/cdav.py - allow Expand tag to be used with open-ended
start
* caldav/objects.py - enhancement: add the ability to add events to
calendar using directly a vobject object, and not necessarily an ical
string.
* caldav/objects.py - bugfix: uid handling while fetching
elements
etc. see https://github.com/python-caldav/caldav/blob/master/ChangeLog
- almost all tests are online, do not run
-------------------------------------------------------------------
Tue Dec 4 12:46:27 UTC 2018 - Matej Cepl <mcepl@suse.com>
- Remove superfluous devel dependency for noarch package
-------------------------------------------------------------------
Mon Jul 10 12:05:22 UTC 2017 - jengelh@inai.de
- Drop history lesson and future goal wording from description.
-------------------------------------------------------------------
Tue Jun 13 05:55:00 UTC 2017 - okurz@suse.com
- Update to 0.5.0
- Convert spec file to singlespec
-------------------------------------------------------------------
Fri Jun 3 15:08:39 UTC 2016 - toddrme2178@gmail.com
- Update to 0.4.0
* No upstream changelog
- Clean up spec file
-------------------------------------------------------------------
Wed Oct 23 12:10:27 UTC 2013 - axel.braun@gmx.de
- Initial package ( version 0.1.12 )