Changes to 2 files · Browse files at db48e000741d Showing diff from parent 6d2a7d3c10dc Diff from another changeset...
|
|
@@ -604,13 +604,13 @@ type_name = 'tag'
type_num = 4
- __slots__ = ('_tag_timezone_neg_utc', '_name', '_object_sha',
+ __slots__ = ('_tag_timezone_raw', '_name', '_object_sha',
'_object_class', '_tag_time', '_tag_timezone',
'_tagger', '_message')
def __init__(self):
super(Tag, self).__init__()
- self._tag_timezone_neg_utc = False
+ self._tag_timezone_raw = None
@classmethod
def from_path(cls, filename):
@@ -660,8 +660,7 @@ else:
chunks.append("%s %s %d %s\n" % (
_TAGGER_HEADER, self._tagger, self._tag_time,
- format_timezone(self._tag_timezone,
- self._tag_timezone_neg_utc)))
+ self._tag_timezone_raw or format_timezone(self._tag_timezone)))
chunks.append("\n") # To close headers
chunks.append(self._message)
return chunks
@@ -686,13 +685,13 @@ self._tagger = value
self._tag_time = None
self._tag_timezone = None
- self._tag_timezone_neg_utc = False
+ self._tag_timezone_raw = None
else:
self._tagger = value[0:sep+1]
try:
(timetext, timezonetext) = value[sep+2:].rsplit(" ", 1)
self._tag_time = int(timetext)
- self._tag_timezone, self._tag_timezone_neg_utc = \
+ self._tag_timezone, self._tag_timezone_raw = \
parse_timezone(timezonetext)
except ValueError, e:
raise ObjectFormatException(e)
@@ -1003,8 +1002,11 @@ offset = abs(offset)
hours = int(offset / 100)
minutes = (offset % 100)
- return (signum * (hours * 3600 + minutes * 60),
- unnecessary_negative_timezone)
+ raw = None
+ parsed = signum * (hours * 3600 + minutes * 60)
+ if unnecessary_negative_timezone or text != format_timezone(parsed):
+ raw = text
+ return (parsed, raw)
def format_timezone(offset, unnecessary_negative_timezone=False):
@@ -1034,8 +1036,8 @@ type_name = 'commit'
type_num = 1
- __slots__ = ('_parents', '_encoding', '_extra', '_author_timezone_neg_utc',
- '_commit_timezone_neg_utc', '_commit_time',
+ __slots__ = ('_parents', '_encoding', '_extra', '_author_timezone_raw',
+ '_commit_timezone_raw', '_commit_time',
'_author_time', '_author_timezone', '_commit_timezone',
'_author', '_committer', '_parents', '_extra',
'_encoding', '_tree', '_message')
@@ -1045,8 +1047,8 @@ self._parents = []
self._encoding = None
self._extra = []
- self._author_timezone_neg_utc = False
- self._commit_timezone_neg_utc = False
+ self._author_timezone_raw = None
+ self._commit_timezone_raw = None
@classmethod
def from_path(cls, path):
@@ -1067,12 +1069,12 @@ elif field == _AUTHOR_HEADER:
self._author, timetext, timezonetext = value.rsplit(" ", 2)
self._author_time = int(timetext)
- self._author_timezone, self._author_timezone_neg_utc =\
+ self._author_timezone, self._author_timezone_raw =\
parse_timezone(timezonetext)
elif field == _COMMITTER_HEADER:
self._committer, timetext, timezonetext = value.rsplit(" ", 2)
self._commit_time = int(timetext)
- self._commit_timezone, self._commit_timezone_neg_utc =\
+ self._commit_timezone, self._commit_timezone_raw =\
parse_timezone(timezonetext)
elif field == _ENCODING_HEADER:
self._encoding = value
@@ -1124,12 +1126,10 @@ chunks.append("%s %s\n" % (_PARENT_HEADER, p))
chunks.append("%s %s %s %s\n" % (
_AUTHOR_HEADER, self._author, str(self._author_time),
- format_timezone(self._author_timezone,
- self._author_timezone_neg_utc)))
+ self._author_timezone_raw or format_timezone(self._author_timezone)))
chunks.append("%s %s %s %s\n" % (
_COMMITTER_HEADER, self._committer, str(self._commit_time),
- format_timezone(self._commit_timezone,
- self._commit_timezone_neg_utc)))
+ self._commit_timezone_raw or format_timezone(self._commit_timezone)))
if self.encoding:
chunks.append("%s %s\n" % (_ENCODING_HEADER, self.encoding))
for k, v in self.extra:
@@ -1177,11 +1177,19 @@ commit_timezone = serializable_property("commit_timezone",
"The zone the commit time is in")
+ commit_timezone_raw = serializable_property("commit_timezone_raw",
+ "The raw zone the commit time is in, if reserializing the parsed"
+ "offset would result in a different value; otherwise, None")
+
author_time = serializable_property("author_time",
"The timestamp the commit was written. as the number of seconds since the epoch.")
author_timezone = serializable_property("author_timezone",
"Returns the zone the author time is in.")
+
+ author_timezone_raw = serializable_property("author_timezone_raw",
+ "The raw zone the author time is in, if reserializing the parsed"
+ "offset would result in a different value; otherwise, None")
encoding = serializable_property("encoding",
"Encoding of the commit message.")
|
@@ -728,10 +728,10 @@ class TimezoneTests(TestCase):
def test_parse_timezone_utc(self):
- self.assertEqual((0, False), parse_timezone("+0000"))
+ self.assertEqual((0, None), parse_timezone("+0000"))
def test_parse_timezone_utc_negative(self):
- self.assertEqual((0, True), parse_timezone("-0000"))
+ self.assertEqual((0, "-0000"), parse_timezone("-0000"))
def test_generate_timezone_utc(self):
self.assertEqual("+0000", format_timezone(0))
@@ -740,7 +740,7 @@ self.assertEqual("-0000", format_timezone(0, True))
def test_parse_timezone_cet(self):
- self.assertEqual((60 * 60, False), parse_timezone("+0100"))
+ self.assertEqual((60 * 60, None), parse_timezone("+0100"))
def test_format_timezone_cet(self):
self.assertEqual("+0100", format_timezone(60 * 60))
@@ -749,7 +749,7 @@ self.assertEqual("-0400", format_timezone(-4 * 60 * 60))
def test_parse_timezone_pdt(self):
- self.assertEqual((-4 * 60 * 60, False), parse_timezone("-0400"))
+ self.assertEqual((-4 * 60 * 60, None), parse_timezone("-0400"))
def test_format_timezone_pdt_half(self):
self.assertEqual("-0440",
@@ -760,11 +760,11 @@ format_timezone(int(((7 * 60)) * 60), True))
def test_parse_timezone_pdt_half(self):
- self.assertEqual((((-4 * 60) - 40) * 60, False),
+ self.assertEqual((((-4 * 60) - 40) * 60, None),
parse_timezone("-0440"))
def test_parse_timezone_double_negative(self):
self.assertEqual(
- (int(((7 * 60)) * 60), False), parse_timezone("+700"))
+ (int(((7 * 60)) * 60), "+700"), parse_timezone("+700"))
self.assertEqual(
- (int(((7 * 60)) * 60), True), parse_timezone("--700"))
+ (int(((7 * 60)) * 60), "--700"), parse_timezone("--700"))
|
Loading...