Hello community,
here is the log from the commit of package python-vobject for
openSUSE:Leap:15.2 checked in at 2020-02-21 23:49:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-vobject (Old)
and /work/SRC/openSUSE:Leap:15.2/.python-vobject.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-vobject"
Fri Feb 21 23:49:04 2020 rev:11 rq:777266 version:0.9.6.1
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/python-vobject/python-vobject.changes
2020-01-15 15:54:07.827621533 +0100
+++
/work/SRC/openSUSE:Leap:15.2/.python-vobject.new.26092/python-vobject.changes
2020-02-21 23:49:05.188534858 +0100
@@ -1,0 +2,35 @@
+Thu Dec 6 14:25:23 UTC 2018 - Tomáš Chvátal <[email protected]>
+
+- Remove useless service file
+- Make the tests unconditional
+- Fix the fdupes call
+
+-------------------------------------------------------------------
+Tue Nov 20 21:23:56 UTC 2018 - Hans-Peter Jansen <[email protected]>
+
+- update to version 0.9.6.1:
+ * Revert too-strict serialization of timestamp values
+ - broke too many other implementations
+
+- update to version 0.9.6:
+ * Correctly order calendar properties before calendar components
+ (#98)
+ * Correctly serialize timestamp values (i.e. REV) (#99)
+ * Pass correct formatting string to logger (#102)
+ - thanks @CruzR!
+ * RRULE: Fix floating UNTIL with dateutil > 2.6.1 (#115)
+ - thanks @Unrud!
+ * Encode params if necessary in serialization (#109)
+ - thanks @matthias-k!
+ * Ignore escaped semi-colons in UNTIL value (#114)
+ - thanks @Unrud!
+ * RRULE: Fix VTODO without DTSTART (#116)
+ - thanks @Unrud!
+ * Fixed regexp for VCF Version 2.1 (#121)
+ - thanks @farmovit!
+ * repr changed for datetime.timedelta in python 3.7 (#122)
+ - thanks @sharkcz!
+
+- enable testing
+
+-------------------------------------------------------------------
Old:
----
_service
vobject-0.9.5.tar.gz
New:
----
vobject-0.9.6.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-vobject.spec ++++++
--- /var/tmp/diff_new_pack.Y9j4mi/_old 2020-02-21 23:49:05.616535709 +0100
+++ /var/tmp/diff_new_pack.Y9j4mi/_new 2020-02-21 23:49:05.620535716 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-vobject
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,20 +12,20 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-Name: python-vobject
%global modname vobject
-Version: 0.9.5
+Name: python-vobject
+Version: 0.9.6.1
Release: 0
Summary: Python package for parsing and creating iCalendar and vCard
files
License: Apache-2.0
Group: Development/Languages/Python
-Url: http://eventable.github.io/%{modname}/
-Source:
https://pypi.io/packages/source/v/%{modname}/%{modname}-%{version}.tar.gz
+URL: http://eventable.github.io/%{modname}/
+Source:
https://files.pythonhosted.org/packages/source/v/vobject/%{modname}-%{version}.tar.gz
BuildRequires: %{python_module PyICU}
BuildRequires: %{python_module devel >= 2.7}
BuildRequires: %{python_module python-dateutil >= 2.4.0}
@@ -39,7 +39,6 @@
Recommends: python-PyICU
Provides: %{modname} = %{version}
Obsoletes: %{modname} < 0.9.2
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
%python_subpackages
@@ -62,7 +61,10 @@
for p in change_tz ics_diff ; do
%python_clone -a %{buildroot}%{_bindir}/$p
done
-%fdupes %{buildroot}%{_prefix}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
+
+%check
+%python_exec tests.py
%post
%python_install_alternative change_tz
@@ -73,8 +75,8 @@
%python_uninstall_alternative ics_diff
%files %{python_files}
-%defattr(-,root,root)
-%doc ACKNOWLEDGEMENTS.txt LICENSE-2.0.txt README.md
+%license LICENSE-2.0.txt
+%doc ACKNOWLEDGEMENTS.txt README.md
%python_alternative %{_bindir}/change_tz
%python_alternative %{_bindir}/ics_diff
%{python_sitelib}/%{modname}/
++++++ vobject-0.9.5.tar.gz -> vobject-0.9.6.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vobject-0.9.5/PKG-INFO new/vobject-0.9.6.1/PKG-INFO
--- old/vobject-0.9.5/PKG-INFO 2017-06-29 20:59:23.000000000 +0200
+++ new/vobject-0.9.6.1/PKG-INFO 2018-07-18 18:02:11.000000000 +0200
@@ -1,12 +1,13 @@
Metadata-Version: 1.1
Name: vobject
-Version: 0.9.5
+Version: 0.9.6.1
Summary: A full-featured Python package for parsing and creating iCalendar and
vCard files
Home-page: http://eventable.github.io/vobject/
Author: Sameen Karim
Author-email: [email protected]
License: Apache
-Download-URL: https://github.com/eventable/vobject/tarball/0.9.5
+Download-URL: https://github.com/eventable/vobject/tarball/0.9.6.1
+Description-Content-Type: UNKNOWN
Description:
Description
-----------
@@ -22,13 +23,8 @@
Recent changes
--------------
- - Make ics_diff.py work with Python 3
- - Huge changes to text encoding for Python 2/3 compatibility
- - Autogenerate DTSTAMP if not provided
- - Fix getrruleset() for Python 3 and in the case that addRDate=True
- - Update vCard property validation to match specifications
- - Handle offset-naive and offset-aware datetimes in recurrence rules
- - Improved documentation for multi-value properties
+ - Revert too-strict serialization of timestamp values - broke too
many other
+ implementations
For older changes, see
- http://eventable.github.io/vobject/#release-history or
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vobject-0.9.5/setup.py new/vobject-0.9.6.1/setup.py
--- old/vobject-0.9.5/setup.py 2017-06-29 20:44:49.000000000 +0200
+++ new/vobject-0.9.6.1/setup.py 2018-07-18 17:59:53.000000000 +0200
@@ -15,13 +15,8 @@
Recent changes
--------------
- - Make ics_diff.py work with Python 3
- - Huge changes to text encoding for Python 2/3 compatibility
- - Autogenerate DTSTAMP if not provided
- - Fix getrruleset() for Python 3 and in the case that addRDate=True
- - Update vCard property validation to match specifications
- - Handle offset-naive and offset-aware datetimes in recurrence rules
- - Improved documentation for multi-value properties
+ - Revert too-strict serialization of timestamp values - broke too many
other
+ implementations
For older changes, see
- http://eventable.github.io/vobject/#release-history or
@@ -33,7 +28,7 @@
doclines = (__doc__ or '').splitlines()
setup(name = "vobject",
- version = "0.9.5",
+ version = "0.9.6.1",
author = "Jeffrey Harris",
author_email = "[email protected]",
maintainer = "Sameen Karim",
@@ -41,7 +36,7 @@
license = "Apache",
zip_safe = True,
url = "http://eventable.github.io/vobject/",
- download_url = 'https://github.com/eventable/vobject/tarball/0.9.5',
+ download_url = 'https://github.com/eventable/vobject/tarball/0.9.6.1',
bugtrack_url = "https://github.com/eventable/vobject/issues",
entry_points = {
'console_scripts': [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vobject-0.9.5/test_files/simple_2_0_test.ics
new/vobject-0.9.6.1/test_files/simple_2_0_test.ics
--- old/vobject-0.9.5/test_files/simple_2_0_test.ics 2017-06-29
20:44:49.000000000 +0200
+++ new/vobject-0.9.6.1/test_files/simple_2_0_test.ics 2018-07-08
03:45:00.000000000 +0200
@@ -4,6 +4,7 @@
BEGIN:VEVENT
UID:Not very random UID
DTSTART:20060509T000000
+ATTENDEE;CN=Fröhlich:mailto:[email protected]
CREATED:20060101T180000Z
DESCRIPTION:Test event
DTSTAMP:20170626T000000Z
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vobject-0.9.5/tests.py new/vobject-0.9.6.1/tests.py
--- old/vobject-0.9.5/tests.py 2017-06-29 20:44:49.000000000 +0200
+++ new/vobject-0.9.6.1/tests.py 2018-07-18 17:58:25.000000000 +0200
@@ -68,6 +68,9 @@
cal.vevent.add('uid').value = "Not very random UID"
cal.vevent.add('dtstamp').value = datetime.datetime(2017, 6, 26, 0,
tzinfo=tzutc())
+ cal.vevent.add('attendee').value = 'mailto:[email protected]'
+ cal.vevent.attendee.params['CN'] = ['Fröhlich']
+
# Note we're normalizing line endings, because no one got time for
that.
self.assertEqual(
cal.serialize().replace('\r\n', '\n'),
@@ -253,7 +256,7 @@
)
self.assertEqual(
str(parseRDate(textLineToContentLine("RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,19960404T010000Z/PT3H"))),
- "<RDATE{'VALUE': ['PERIOD']}[(datetime.datetime(1996, 4, 3, 2, 0,
tzinfo=tzutc()), datetime.datetime(1996, 4, 3, 4, 0, tzinfo=tzutc())),
(datetime.datetime(1996, 4, 4, 1, 0, tzinfo=tzutc()), datetime.timedelta(0,
10800))]>"
+ "<RDATE{'VALUE': ['PERIOD']}[(datetime.datetime(1996, 4, 3, 2, 0,
tzinfo=tzutc()), datetime.datetime(1996, 4, 3, 4, 0, tzinfo=tzutc())),
(datetime.datetime(1996, 4, 4, 1, 0, tzinfo=tzutc()), " +
("datetime.timedelta(0, 10800)" if sys.version_info < (3,7) else
"datetime.timedelta(seconds=10800)") + ")]>"
)
def test_periodBehavior(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vobject-0.9.5/vobject/base.py
new/vobject-0.9.6.1/vobject/base.py
--- old/vobject-0.9.5/vobject/base.py 2017-06-29 20:44:49.000000000 +0200
+++ new/vobject-0.9.6.1/vobject/base.py 2018-07-08 03:45:00.000000000 +0200
@@ -69,7 +69,7 @@
logger = logging.getLogger(__name__)
if not logging.getLogger().handlers:
handler = logging.StreamHandler()
- formatter = logging.Formatter('{name} {levelname} {message}')
+ formatter = logging.Formatter('%(name)s %(levelname)s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.ERROR) # Log errors
@@ -774,7 +774,7 @@
# get a full content line, break it up into group, name, parameters, and value
patterns['line'] = r"""
^ ((?P<group> {name!s})\.)?(?P<name> {name!s}) # name group
- (?P<params> (?: {param!s} )* ) # params group (may be empty)
+ (?P<params> ;?(?: {param!s} )* ) # params group (may be empty)
: (?P<value> .* )$ # value group
""".format(**patterns)
@@ -1022,10 +1022,13 @@
keys = sorted(obj.params.keys())
for key in keys:
paramstr = ','.join(dquoteEscape(p) for p in obj.params[key])
- s.write(";{0}={1}".format(key, paramstr))
+ try:
+ s.write(";{0}={1}".format(key, paramstr))
+ except (UnicodeDecodeError, UnicodeEncodeError):
+ s.write(";{0}={1}".format(key, paramstr.encode('utf-8')))
try:
s.write(":{0}".format(obj.value))
- except (UnicodeDecodeError, UnicodeEncodeError) as e:
+ except (UnicodeDecodeError, UnicodeEncodeError):
s.write(":{0}".format(obj.value.encode('utf-8')))
if obj.behavior and not startedEncoded:
obj.behavior.decode(obj)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vobject-0.9.5/vobject/icalendar.py
new/vobject-0.9.6.1/vobject/icalendar.py
--- old/vobject-0.9.5/vobject/icalendar.py 2017-06-29 20:44:49.000000000
+0200
+++ new/vobject-0.9.6.1/vobject/icalendar.py 2018-07-08 03:45:00.000000000
+0200
@@ -2,7 +2,6 @@
from __future__ import print_function
-import codecs
import datetime
import logging
import random # for generating a UID
@@ -32,7 +31,7 @@
from . import behavior
from .base import (VObjectError, NativeError, ValidateError, ParseError,
Component, ContentLine, logger, registerBehavior,
- backslashEscape, foldOneLine, str_)
+ backslashEscape, foldOneLine)
# ------------------------------- Constants
------------------------------------
@@ -415,7 +414,21 @@
if addfunc is None:
addfunc = getattr(rruleset, name)
- dtstart = self.dtstart.value
+ try:
+ dtstart = self.dtstart.value
+ except (AttributeError, KeyError):
+ # Special for VTODO - try DUE property instead
+ try:
+ if self.name == "VTODO":
+ dtstart = self.due.value
+ else:
+ # if there's no dtstart, just return None
+ logging.error('failed to get dtstart with VTODO')
+ return None
+ except (AttributeError, KeyError):
+ # if there's no due, just return None
+ logging.error('failed to find DUE at all.')
+ return None
if name in DATENAMES:
if type(line.value[0]) == datetime.datetime:
@@ -427,31 +440,22 @@
# ignore RDATEs with PERIOD values for now
pass
elif name in RULENAMES:
- try:
- dtstart = self.dtstart.value
- except (AttributeError, KeyError):
- # Special for VTODO - try DUE property instead
- try:
- if self.name == "VTODO":
- dtstart = self.due.value
- else:
- # if there's no dtstart, just return None
- logging.error('failed to get dtstart with
VTODO')
- return None
- except (AttributeError, KeyError):
- # if there's no due, just return None
- logging.error('failed to find DUE at all.')
- return None
-
# a Ruby iCalendar library escapes semi-colons in rrules,
# so also remove any backslashes
value = line.value.replace('\\', '')
- rule = rrule.rrulestr(
- value, dtstart=dtstart,
- # If dtstart has no time zone, `until`
- # shouldn't get one, either:
- ignoretz=isinstance(dtstart, datetime.date))
- until = rule._until
+ # If dtstart has no time zone, `until`
+ # shouldn't get one, either:
+ ignoretz = (not isinstance(dtstart, datetime.datetime) or
+ dtstart.tzinfo is None)
+ try:
+ until = rrule.rrulestr(value, ignoretz=ignoretz)._until
+ except ValueError:
+ # WORKAROUND: dateutil<=2.7.2 doesn't set the time zone
+ # of dtstart
+ if ignoretz:
+ raise
+ utc_now = datetime.datetime.now(datetime.timezone.utc)
+ until = rrule.rrulestr(value, dtstart=utc_now)._until
if until is not None and isinstance(dtstart,
datetime.datetime) and
\
@@ -459,7 +463,7 @@
# dateutil converts the UNTIL date to a datetime,
# check to see if the UNTIL parameter value was a date
vals = dict(pair.split('=') for pair in
- line.value.upper().split(';'))
+ value.upper().split(';'))
if len(vals.get('UNTIL', '')) == 8:
until = datetime.datetime.combine(until.date(),
dtstart.time())
@@ -489,7 +493,12 @@
if dtstart.tzinfo is None:
until = until.replace(tzinfo=None)
- rule._until = until
+ value_without_until = ';'.join(
+ pair for pair in value.split(';')
+ if pair.split('=')[0].upper() != 'UNTIL')
+ rule = rrule.rrulestr(value_without_until,
+ dtstart=dtstart, ignoretz=ignoretz)
+ rule._until = until
# add the rrule or exrule to the rruleset
addfunc(rule)
@@ -974,6 +983,65 @@
tzid = toUnicode(tzid)
if tzid != u'UTC' and tzid not in oldtzids:
obj.add(TimezoneComponent(tzinfo=getTzid(tzid)))
+
+ @classmethod
+ def serialize(cls, obj, buf, lineLength, validate=True):
+ """
+ Set implicit parameters, do encoding, return unicode string.
+
+ If validate is True, raise VObjectError if the line doesn't validate
+ after implicit parameters are generated.
+
+ Default is to call base.defaultSerialize.
+
+ """
+
+ cls.generateImplicitParameters(obj)
+ if validate:
+ cls.validate(obj, raiseException=True)
+ if obj.isNative:
+ transformed = obj.transformFromNative()
+ undoTransform = True
+ else:
+ transformed = obj
+ undoTransform = False
+ out = None
+ outbuf = buf or six.StringIO()
+ if obj.group is None:
+ groupString = ''
+ else:
+ groupString = obj.group + '.'
+ if obj.useBegin:
+ foldOneLine(outbuf, "{0}BEGIN:{1}".format(groupString, obj.name),
+ lineLength)
+
+ try:
+ first_props = [s for s in cls.sortFirst if s in obj.contents \
+ and not isinstance(obj.contents[s][0],
Component)]
+ first_components = [s for s in cls.sortFirst if s in obj.contents \
+ and isinstance(obj.contents[s][0],
Component)]
+ except Exception:
+ first_props = first_components = []
+ # first_components = []
+
+ prop_keys = sorted(list(k for k in obj.contents.keys() if k not in
first_props \
+ and not
isinstance(obj.contents[k][0], Component)))
+ comp_keys = sorted(list(k for k in obj.contents.keys() if k not in
first_components \
+ and isinstance(obj.contents[k][0],
Component)))
+
+ sorted_keys = first_props + prop_keys + first_components + comp_keys
+ children = [o for k in sorted_keys for o in obj.contents[k]]
+
+ for child in children:
+ # validate is recursive, we only need to validate once
+ child.serialize(outbuf, lineLength, validate=False)
+ if obj.useBegin:
+ foldOneLine(outbuf, "{0}END:{1}".format(groupString, obj.name),
+ lineLength)
+ out = buf or outbuf.getvalue()
+ if undoTransform:
+ obj.transformToNative()
+ return out
registerBehavior(VCalendar2_0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vobject-0.9.5/vobject.egg-info/PKG-INFO
new/vobject-0.9.6.1/vobject.egg-info/PKG-INFO
--- old/vobject-0.9.5/vobject.egg-info/PKG-INFO 2017-06-29 20:59:22.000000000
+0200
+++ new/vobject-0.9.6.1/vobject.egg-info/PKG-INFO 2018-07-18
18:02:11.000000000 +0200
@@ -1,12 +1,13 @@
Metadata-Version: 1.1
Name: vobject
-Version: 0.9.5
+Version: 0.9.6.1
Summary: A full-featured Python package for parsing and creating iCalendar and
vCard files
Home-page: http://eventable.github.io/vobject/
Author: Sameen Karim
Author-email: [email protected]
License: Apache
-Download-URL: https://github.com/eventable/vobject/tarball/0.9.5
+Download-URL: https://github.com/eventable/vobject/tarball/0.9.6.1
+Description-Content-Type: UNKNOWN
Description:
Description
-----------
@@ -22,13 +23,8 @@
Recent changes
--------------
- - Make ics_diff.py work with Python 3
- - Huge changes to text encoding for Python 2/3 compatibility
- - Autogenerate DTSTAMP if not provided
- - Fix getrruleset() for Python 3 and in the case that addRDate=True
- - Update vCard property validation to match specifications
- - Handle offset-naive and offset-aware datetimes in recurrence rules
- - Improved documentation for multi-value properties
+ - Revert too-strict serialization of timestamp values - broke too
many other
+ implementations
For older changes, see
- http://eventable.github.io/vobject/#release-history or
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vobject-0.9.5/vobject.egg-info/pbr.json
new/vobject-0.9.6.1/vobject.egg-info/pbr.json
--- old/vobject-0.9.5/vobject.egg-info/pbr.json 2017-06-29 20:59:23.000000000
+0200
+++ new/vobject-0.9.6.1/vobject.egg-info/pbr.json 2018-07-18
18:02:11.000000000 +0200
@@ -1 +1 @@
-{"is_release": false, "git_version": "bffb99c"}
\ No newline at end of file
+{"is_release": false, "git_version": "ab1d7fd"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vobject-0.9.5/vobject.egg-info/requires.txt
new/vobject-0.9.6.1/vobject.egg-info/requires.txt
--- old/vobject-0.9.5/vobject.egg-info/requires.txt 2017-06-29
20:59:22.000000000 +0200
+++ new/vobject-0.9.6.1/vobject.egg-info/requires.txt 2018-07-18
18:02:11.000000000 +0200
@@ -1 +1 @@
-python-dateutil >= 2.4.0
+python-dateutil>=2.4.0