<div dir="ltr"><div><div><div>Hi,<br><br></div>I am using vobject library to write ics file from a script, and I think I ran into a bug.<br><br>Here is a small code that reproduces the bug on my machine (python-vobject 0.8.1c, pytz 2012c)<br>

<br>$ cat test.py <br>#! /usr/bin/python<br><br>import pytz<br>import vobject<br>import datetime<br>tz = pytz.timezone("Europe/Paris")<br>cal = vobject.iCalendar()<br>evt = cal.add("vevent")<br>start = datetime.datetime(2014, 9, 1, 10, 0, tzinfo = tz)<br>

end = datetime.datetime(2014, 9, 1, 11, 0, tzinfo = tz)<br>evt.add("dtstart").value = start<br>evt.add("dtend").value = end<br>print start<br>print end<br>cal.serialize()<br>print "OK"<br><br>

$ ./test.py <br>2014-09-01 10:00:00+00:09<br>2014-09-01 11:00:00+00:09<br>Traceback (most recent call last):<br>  File "./test.py", line 15, in <module><br>    cal.serialize()<br>  File "/usr/lib/pymodules/python2.7/vobject/base.py", line 186, in serialize<br>

    return behavior.serialize(self, buf, lineLength, validate)<br>  File "/usr/lib/pymodules/python2.7/vobject/behavior.py", line 147, in serialize<br>    cls.generateImplicitParameters(obj)<br>  File "/usr/lib/pymodules/python2.7/vobject/icalendar.py", line 875, in generateImplicitParameters<br>

    obj.add(TimezoneComponent(tzinfo=getTzid(tzid)))<br>  File "/usr/lib/pymodules/python2.7/vobject/icalendar.py", line 75, in __init__<br>    self.tzinfo = tzinfo<br>  File "/usr/lib/pymodules/python2.7/vobject/base.py", line 499, in __setattr__<br>

    prop.fset(self, value)<br>  File "/usr/lib/pymodules/python2.7/vobject/icalendar.py", line 145, in settzinfo<br>    transition = getTransition(transitionTo, year, tzinfo)<br>  File "/usr/lib/pymodules/python2.7/vobject/icalendar.py", line 1897, in getTransition<br>

    uncorrected = firstTransition(generateDates(year, month, day), test)<br>  File "/usr/lib/pymodules/python2.7/vobject/icalendar.py", line 1857, in firstTransition<br>    if not test(dt):<br>  File "/usr/lib/pymodules/python2.7/vobject/icalendar.py", line 1884, in test<br>

    def test(dt): return tzinfo.dst(dt) != zeroDelta<br>  File "/usr/lib/python2.7/dist-packages/pytz/tzinfo.py", line 445, in dst<br>    dt = self.localize(dt, is_dst)<br>  File "/usr/lib/python2.7/dist-packages/pytz/tzinfo.py", line 327, in localize<br>

    raise NonExistentTimeError(dt)<br>pytz.exceptions.NonExistentTimeError: 2000-03-26 02:00:00<br><br><br></div>If I change the timezone to tz = pytz.timezone("UTC"), it works right<br><br>$ cat test_UTC.py <br>

#! /usr/bin/python<br><br>import pytz<br>import vobject<br>import datetime<br>tz = pytz.timezone("UTC")<br>cal = vobject.iCalendar()<br>evt = cal.add("vevent")<br>start = datetime.datetime(2014, 9, 1, 10, 0, tzinfo = tz)<br>

end = datetime.datetime(2014, 9, 1, 11, 0, tzinfo = tz)<br>evt.add("dtstart").value = start<br>evt.add("dtend").value = end<br>print start<br>print end<br>cal.serialize()<br>print "OK"<br><br>

$ ./test_UTC.py <br>2014-09-01 10:00:00+00:00<br>2014-09-01 11:00:00+00:00<br>OK<br><br><br></div>Regards,<br><div><div><div><div>-- <br>Vivian Brégier<br><a href="http://www.are-ata.org/Vivian.vcf">http://www.are-ata.org/Vivian.vcf</a><br>


</div></div></div></div></div>