/usr/lib/python2.7/dist-packages/aniso8601/timezone.py is in python-aniso8601 0.83-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | # -*- coding: utf-8 -*-
#Copyright 2013 Brandon Nielsen
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import datetime
def parse_timezone(tzstr):
#tzstr can be ±hh:mm, ±hhmm, ±hh, the Z case is handled elsewhere
tzstrlen = len(tzstr)
if tzstrlen == 6:
#±hh:mm
tzhour = int(tzstr[1:3])
tzminute = int(tzstr[4:6])
if tzstr[0] == '+':
return build_utcoffset(tzstr, datetime.timedelta(hours=tzhour, minutes=tzminute))
else:
if tzhour == 0 and tzminute == 0:
raise ValueError('String is not a valid ISO8601 time offset.')
else:
return build_utcoffset(tzstr, -datetime.timedelta(hours=tzhour, minutes=tzminute))
elif tzstrlen == 5:
#±hhmm
tzhour = int(tzstr[1:3])
tzminute = int(tzstr[3:5])
if tzstr[0] == '+':
return build_utcoffset(tzstr, datetime.timedelta(hours=tzhour, minutes=tzminute))
else:
if tzhour == 0 and tzminute == 0:
raise ValueError('String is not a valid ISO8601 time offset.')
else:
return build_utcoffset(tzstr, -datetime.timedelta(hours=tzhour, minutes=tzminute))
elif tzstrlen == 3:
#±hh
tzhour = int(tzstr[1:3])
if tzstr[0] == '+':
return build_utcoffset(tzstr, datetime.timedelta(hours=tzhour))
else:
if tzhour == 0:
raise ValueError('String is not a valid ISO8601 time offset.')
else:
return build_utcoffset(tzstr, -datetime.timedelta(hours=tzhour))
else:
raise ValueError('String is not a valid ISO8601 time offset.')
def build_utcoffset(name, utcdelta):
#We build an offset in this manner since the
#tzinfo class must have an init that can
#"method that can be called with no arguments"
returnoffset = UTCOffset()
returnoffset.setname(name)
returnoffset.setutcdelta(utcdelta)
return returnoffset
class UTCOffset(datetime.tzinfo):
def setname(self, name):
self._name = name
def setutcdelta(self, utcdelta):
self._utcdelta = utcdelta
def utcoffset(self, dt):
return self._utcdelta
def tzname(self, dt):
return self._name
def dst(self, dt):
#ISO8601 specifies offsets should be different if DST is required,
#instead of allowing for a DST to be specified
return None
|