diff options
Diffstat (limited to 'dev-python/icalendar')
10 files changed, 232 insertions, 6 deletions
diff --git a/dev-python/icalendar/ChangeLog b/dev-python/icalendar/ChangeLog index 9b19547c5e36..52a86bef62f8 100644 --- a/dev-python/icalendar/ChangeLog +++ b/dev-python/icalendar/ChangeLog @@ -1,6 +1,18 @@ # ChangeLog for dev-python/icalendar # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-python/icalendar/ChangeLog,v 1.6 2010/02/08 08:48:54 pva Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-python/icalendar/ChangeLog,v 1.7 2010/04/25 17:58:12 nixphoeni Exp $ + +*icalendar-2.1_p20100409 (25 Apr 2010) + + 25 Apr 2010; Joe Sapp <nixphoeni@gentoo.org> + +files/01_all_UIDGenerator-fix.patch, icalendar-2.0.1.ebuild, + +files/02_all_vDatetime-tzinfo-fix.patch, icalendar-2.1-r1.ebuild, + +files/03_all_duration-fix.patch, +icalendar-2.1_p20100409.ebuild, + +files/04_all_date-type-test-in-vDDDTypes.patch, + +files/05_all_utf8-multi-octet-fix.patch, + +files/06_all_test.py-use-set.patch: + Added an ebuild to include patches flying across the mailing list. It's + unknown when upstream will release a version incorporating these fixes. 08 Feb 2010; Peter Volkov <pva@gentoo.org> icalendar-2.0.1.ebuild, icalendar-2.1-r1.ebuild: diff --git a/dev-python/icalendar/files/01_all_UIDGenerator-fix.patch b/dev-python/icalendar/files/01_all_UIDGenerator-fix.patch new file mode 100644 index 000000000000..4f2b78dc9133 --- /dev/null +++ b/dev-python/icalendar/files/01_all_UIDGenerator-fix.patch @@ -0,0 +1,22 @@ +--- src/icalendar/tools.py ++++ src/icalendar/tools.py +@@ -1,5 +1,6 @@ + from string import ascii_letters, digits + import random ++from datetime import datetime + + """ + This module contains non-essential tools for iCalendar. Pretty thin so far eh? +@@ -42,9 +43,9 @@ + datetime-uniquevalue at host. Like: + 20050105T225746Z-HKtJMqUgdO0jDUwm at example.com + """ +- from PropertyValues import vText, vDatetime ++ from icalendar.prop import vText, vDatetime + unique = unique or self.rnd_string() +- return vText('%s-%s@%s' % (vDatetime.today().ical(), unique, host_name)) ++ return vText('%s-%s@%s' % (vDatetime(datetime.today()).ical(), unique, host_name)) + + + if __name__ == "__main__": + diff --git a/dev-python/icalendar/files/02_all_vDatetime-tzinfo-fix.patch b/dev-python/icalendar/files/02_all_vDatetime-tzinfo-fix.patch new file mode 100644 index 000000000000..7f06b4f68c9e --- /dev/null +++ b/dev-python/icalendar/files/02_all_vDatetime-tzinfo-fix.patch @@ -0,0 +1,30 @@ +From http://codespeak.net/pipermail/icalendar-dev/2009-July/000139.html: + +SUMMARY: The encoding mechanism of vDatetime handles tzinfo fields +incorrectly (specifically with respect to daylight savings time). +Attached is a simple patch that makes it work. + +DETAILS: Currently vDatetime.ical() tries to compute the utcoffset of +the tzinfo, and then subtract that offset. This approach is valid, +but the computation of the utcoffset is wrong, because it's done relative +to datetime.now() instead of the actual datetime object (self.dt) +to be converted. This is an issue for timezones whose utcoffset varies +throughout the year, e.g., from daylight savings time. +Replacing datetime.now() with self.dt would fix the code, +but I opted to use the builtin 'asttimezone' method +because it's slightly simpler. + +Submitted by Erik Demaine. +=================================================================== +--- src/icalendar/prop.py.orig 2009-12-14 08:43:50.000000000 -0500 ++++ src/icalendar/prop.py 2009-12-20 12:41:28.000000000 -0500 +@@ -309,8 +309,7 @@ + + def ical(self): + if self.dt.tzinfo: +- utc_time = self.dt - self.dt.tzinfo.utcoffset(datetime.now()) +- return utc_time.strftime("%Y%m%dT%H%M%SZ") ++ return self.dt.astimezone (UTC).strftime("%Y%m%dT%H%M%SZ") + return self.dt.strftime("%Y%m%dT%H%M%S") + + def from_ical(ical): diff --git a/dev-python/icalendar/files/03_all_duration-fix.patch b/dev-python/icalendar/files/03_all_duration-fix.patch new file mode 100644 index 000000000000..d6d857a342d1 --- /dev/null +++ b/dev-python/icalendar/files/03_all_duration-fix.patch @@ -0,0 +1,33 @@ +--- src/icalendar/prop.py.old Mon Dec 14 13:43:50 2009 ++++ src/icalendar/prop.py Tue Jan 19 15:09:58 2010 +@@ -57,7 +57,7 @@ + TIME_PART = r'T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?' + DATETIME_PART = '(?:%s)?(?:%s)?' % (DATE_PART, TIME_PART) + WEEKS_PART = r'(\d+)W' +-DURATION_REGEX = re.compile(r'([-+]?)P(?:%s|%s)$' ++DURATION_REGEX = re.compile(r'([-+]?)P(?:%s)?(?:%s)?$' + % (WEEKS_PART, DATETIME_PART)) + WEEKDAY_RULE = re.compile('(?P<signal>[+-]?)(?P<relative>[\d]?)' + '(?P<weekday>[\w]{2})$') +@@ -467,14 +467,14 @@ + """ + try: + match = DURATION_REGEX.match(ical) ++ if not any(match.groups()): ++ raise ValueError() + sign, weeks, days, hours, minutes, seconds = match.groups() +- if weeks: +- value = timedelta(weeks=int(weeks)) +- else: +- value = timedelta(days=int(days or 0), +- hours=int(hours or 0), +- minutes=int(minutes or 0), +- seconds=int(seconds or 0)) ++ value = timedelta(weeks=int(weeks or 0), ++ days=int(days or 0), ++ hours=int(hours or 0), ++ minutes=int(minutes or 0), ++ seconds=int(seconds or 0)) + if sign == '-': + value = -value + return value diff --git a/dev-python/icalendar/files/04_all_date-type-test-in-vDDDTypes.patch b/dev-python/icalendar/files/04_all_date-type-test-in-vDDDTypes.patch new file mode 100644 index 000000000000..799576f2f944 --- /dev/null +++ b/dev-python/icalendar/files/04_all_date-type-test-in-vDDDTypes.patch @@ -0,0 +1,22 @@ +--- src/icalendar/prop.py.orig 2010-03-29 21:05:47.000000000 -0400 ++++ src/icalendar/prop.py 2010-03-29 21:01:47.000000000 -0400 +@@ -585,7 +585,7 @@ + wrong_type_used = 0 + if wrong_type_used: + raise ValueError ('You must use datetime, date or timedelta') +- if isinstance(dt, date): ++ if type(dt) is date: + self.params = Parameters(dict(value='DATE')) + + self.dt = dt +--- src/icalendar/cal.py.orig 2009-12-14 08:43:50.000000000 -0500 ++++ src/icalendar/cal.py 2010-04-25 09:11:44.000000000 -0400 +@@ -520,7 +520,7 @@ + >>> event.set('dtstart', datetime(2005,4,4,8,0,0)) + >>> cal.add_component(event) + >>> cal.subcomponents[0].as_string() +- 'BEGIN:VEVENT\\r\\nDTSTART;VALUE=DATE:20050404T080000\\r\\nSUMMARY:Python meeting about calendaring\\r\\nUID:42\\r\\nEND:VEVENT\\r\\n' ++ 'BEGIN:VEVENT\\r\\nDTSTART:20050404T080000\\r\\nSUMMARY:Python meeting about calendaring\\r\\nUID:42\\r\\nEND:VEVENT\\r\\n' + + Write to disc + >>> import tempfile, os diff --git a/dev-python/icalendar/files/05_all_utf8-multi-octet-fix.patch b/dev-python/icalendar/files/05_all_utf8-multi-octet-fix.patch new file mode 100644 index 000000000000..e0ac0cf3671e --- /dev/null +++ b/dev-python/icalendar/files/05_all_utf8-multi-octet-fix.patch @@ -0,0 +1,30 @@ +From http://codespeak.net/pipermail/icalendar-dev/2010-April/000152.html: + +Lines get folded in the middle of multi-octet sequences (checked out +code from svn today). Consider this case: +import icalendar +ical = icalendar.Calendar() +ical.add('summary', u'a' + u'ą'*100) +ical.as_string().decode('utf-8') +... +UnicodeDecodeError: 'utf8' codec can't decode bytes in position 90-91: +invalid data + +I have attached a diff of a simple one-line fix. + +As I see in the code you actually try not to split a multi-octet +character but you don't recalculate the slice after finding the new +end position. Could you confirm this? + +Submitted by Rimvydas Naktinis. +=================================================================== +--- src/icalendar/parser.py (revision 73587) ++++ src/icalendar/parser.py (working copy) +@@ -456,6 +456,7 @@ + else: + end -= 1 + ++ slice = self[start:end] + new_lines.append(slice) + if end == l_line: + # Done diff --git a/dev-python/icalendar/files/06_all_test.py-use-set.patch b/dev-python/icalendar/files/06_all_test.py-use-set.patch new file mode 100644 index 000000000000..cef265e3b34d --- /dev/null +++ b/dev-python/icalendar/files/06_all_test.py-use-set.patch @@ -0,0 +1,37 @@ +--- test.py.orig 2010-04-25 09:19:36.000000000 -0400 ++++ test.py 2010-04-25 09:26:23.000000000 -0400 +@@ -77,7 +77,6 @@ + import traceback + import linecache + import pdb +-from sets import Set + + __metaclass__ = type + +@@ -261,7 +260,7 @@ + """Returns a set of test case classes used in a test suite.""" + if not isinstance(suite, unittest.TestSuite): + raise TypeError('not a TestSuite', suite) +- results = Set() ++ results = set() + for test in suite._tests: + if isinstance(test, unittest.TestCase): + results.add(test.__class__) +@@ -293,7 +292,7 @@ + if test_suite is None: + continue + if cfg.warn_omitted: +- all_classes = Set(get_all_test_cases(module)) ++ all_classes = set(get_all_test_cases(module)) + classes_in_suite = get_test_classes_from_testsuite(test_suite) + difference = all_classes - classes_in_suite + for test_class in difference: +@@ -320,7 +319,7 @@ + def get_test_hooks(test_files, cfg, tracer=None): + """Returns a list of test hooks from a given list of test modules.""" + results = [] +- dirs = Set(map(os.path.dirname, test_files)) ++ dirs = set(map(os.path.dirname, test_files)) + for dir in list(dirs): + if os.path.basename(dir) == 'ftests': + dirs.add(os.path.join(os.path.dirname(dir), 'tests')) diff --git a/dev-python/icalendar/icalendar-2.0.1.ebuild b/dev-python/icalendar/icalendar-2.0.1.ebuild index 5b6252c22852..c16c2ec103e8 100644 --- a/dev-python/icalendar/icalendar-2.0.1.ebuild +++ b/dev-python/icalendar/icalendar-2.0.1.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-python/icalendar/icalendar-2.0.1.ebuild,v 1.4 2010/02/08 08:48:54 pva Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-python/icalendar/icalendar-2.0.1.ebuild,v 1.5 2010/04/25 17:58:12 nixphoeni Exp $ EAPI=2 inherit eutils distutils @@ -22,7 +22,7 @@ RDEPEND="${DEPEND}" DOCS="CHANGES.txt CREDITS.txt doc/* HISTORY.txt README.txt TODO.txt" src_prepare() { - epatch "${FILESDIR}/${P}-UIDGenerator-fix.patch" + epatch "${FILESDIR}/01_all_UIDGenerator-fix.patch" } src_test() { diff --git a/dev-python/icalendar/icalendar-2.1-r1.ebuild b/dev-python/icalendar/icalendar-2.1-r1.ebuild index 8fa69def6259..00e4ad42f327 100644 --- a/dev-python/icalendar/icalendar-2.1-r1.ebuild +++ b/dev-python/icalendar/icalendar-2.1-r1.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-python/icalendar/icalendar-2.1-r1.ebuild,v 1.3 2010/02/08 08:48:54 pva Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-python/icalendar/icalendar-2.1-r1.ebuild,v 1.4 2010/04/25 17:58:12 nixphoeni Exp $ EAPI="2" SUPPORT_PYTHON_ABIS="1" @@ -23,8 +23,8 @@ RESTRICT_PYTHON_ABIS="3.*" DOCS="CHANGES.txt CREDITS.txt doc/* HISTORY.txt README.txt TODO.txt" src_prepare() { - epatch "${FILESDIR}/${PN}-2.0.1-UIDGenerator-fix.patch" - epatch "${FILESDIR}/${P}-vDatetime-tzinfo-fix.patch" + epatch "${FILESDIR}/01_all_UIDGenerator-fix.patch" + epatch "${FILESDIR}/02_all_vDatetime-tzinfo-fix.patch" } src_test() { diff --git a/dev-python/icalendar/icalendar-2.1_p20100409.ebuild b/dev-python/icalendar/icalendar-2.1_p20100409.ebuild new file mode 100644 index 000000000000..4a6e949468a4 --- /dev/null +++ b/dev-python/icalendar/icalendar-2.1_p20100409.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-python/icalendar/icalendar-2.1_p20100409.ebuild,v 1.1 2010/04/25 17:58:12 nixphoeni Exp $ + +EAPI="2" +SUPPORT_PYTHON_ABIS="1" +PYTHON_DEPEND="2" + +inherit eutils distutils + +MY_P="${PN}-${PV%%_p*}" +S="${WORKDIR}/${MY_P}" + +DESCRIPTION="Package used for parsing and generating iCalendar files (RFC 2445)." +HOMEPAGE="http://codespeak.net/icalendar/ http://pypi.python.org/pypi/icalendar" +SRC_URI="http://pypi.python.org/packages/source/${PN:0:1}/${PN}/${MY_P}.tar.gz" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="" + +RDEPEND="" +DEPEND="dev-python/setuptools" +RESTRICT_PYTHON_ABIS="3.*" + +DOCS="CHANGES.txt CREDITS.txt doc/* HISTORY.txt README.txt TODO.txt" +EPATCH_SUFFIX="patch" + +src_prepare() { + epatch "${FILESDIR}" + distutils_src_prepare +} + +src_test() { + testing() { + "$(PYTHON)" test.py + } + python_execute_function testing +} |