Kiln » Dependencies » Dulwich Read More
Clone URL:  
Pushed to one repository · View In Graph Contained in master

master Preserve and expose commit and author timezones that would change when the parsed offset is serialized

Changeset db48e000741d

Parent 6d2a7d3c10dc

committed by Kevin Gessner

authored by Kevin Gessner

Changes to 2 files · Browse files at db48e000741d Showing diff from parent 6d2a7d3c10dc Diff from another changeset...

 
604
605
606
607
 
608
609
610
611
612
613
 
614
615
616
 
660
661
662
663
664
 
665
666
667
 
686
687
688
689
 
690
691
692
693
694
695
 
696
697
698
 
1003
1004
1005
1006
1007
 
 
 
 
 
1008
1009
1010
 
1034
1035
1036
1037
1038
 
 
1039
1040
1041
 
1045
1046
1047
1048
1049
 
 
1050
1051
1052
 
1067
1068
1069
1070
 
1071
1072
1073
1074
1075
 
1076
1077
1078
 
1124
1125
1126
1127
1128
 
1129
1130
1131
1132
 
1133
1134
1135
 
1177
1178
1179
 
 
 
 
1180
1181
1182
1183
1184
 
 
 
 
1185
1186
1187
 
604
605
606
 
607
608
609
610
611
612
 
613
614
615
616
 
660
661
662
 
 
663
664
665
666
 
685
686
687
 
688
689
690
691
692
693
 
694
695
696
697
 
1002
1003
1004
 
 
1005
1006
1007
1008
1009
1010
1011
1012
 
1036
1037
1038
 
 
1039
1040
1041
1042
1043
 
1047
1048
1049
 
 
1050
1051
1052
1053
1054
 
1069
1070
1071
 
1072
1073
1074
1075
1076
 
1077
1078
1079
1080
 
1126
1127
1128
 
 
1129
1130
1131
 
 
1132
1133
1134
1135
 
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
@@ -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
729
730
731
 
732
733
734
 
735
736
737
 
740
741
742
743
 
744
745
746
 
749
750
751
752
 
753
754
755
 
760
761
762
763
 
764
765
766
767
768
 
769
770
 
 
728
729
730
 
731
732
733
 
734
735
736
737
 
740
741
742
 
743
744
745
746
 
749
750
751
 
752
753
754
755
 
760
761
762
 
763
764
765
766
767
 
768
769
 
770
@@ -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"))