@@ -504,6 +504,9 @@ def test_harmful_mixed_comparison(self):
504
504
#############################################################################
505
505
# timedelta tests
506
506
507
+ class SubclassTimeDelta (timedelta ):
508
+ sub_var = 1
509
+
507
510
class TestTimeDelta (HarmlessMixedComparison , unittest .TestCase ):
508
511
509
512
theclass = timedelta
@@ -788,6 +791,15 @@ def test_repr(self):
788
791
self .assertEqual (repr (self .theclass (seconds = 1 , microseconds = 100 )),
789
792
"%s(seconds=1, microseconds=100)" % name )
790
793
794
+ def test_repr_subclass (self ):
795
+ """Subclasses should have bare names in the repr (gh-107773)."""
796
+ td = SubclassTimeDelta (days = 1 )
797
+ self .assertEqual (repr (td ), "SubclassTimeDelta(days=1)" )
798
+ td = SubclassTimeDelta (seconds = 30 )
799
+ self .assertEqual (repr (td ), "SubclassTimeDelta(seconds=30)" )
800
+ td = SubclassTimeDelta (weeks = 2 )
801
+ self .assertEqual (repr (td ), "SubclassTimeDelta(days=14)" )
802
+
791
803
def test_roundtrip (self ):
792
804
for td in (timedelta (days = 999999999 , hours = 23 , minutes = 59 ,
793
805
seconds = 59 , microseconds = 999999 ),
@@ -1224,6 +1236,15 @@ def test_roundtrip(self):
1224
1236
dt2 = self .theclass (dt .year , dt .month , dt .day )
1225
1237
self .assertEqual (dt , dt2 )
1226
1238
1239
+ def test_repr_subclass (self ):
1240
+ """Subclasses should have bare names in the repr (gh-107773)."""
1241
+ td = SubclassDate (1 , 2 , 3 )
1242
+ self .assertEqual (repr (td ), "SubclassDate(1, 2, 3)" )
1243
+ td = SubclassDate (2014 , 1 , 1 )
1244
+ self .assertEqual (repr (td ), "SubclassDate(2014, 1, 1)" )
1245
+ td = SubclassDate (2010 , 10 , day = 10 )
1246
+ self .assertEqual (repr (td ), "SubclassDate(2010, 10, 10)" )
1247
+
1227
1248
def test_ordinal_conversions (self ):
1228
1249
# Check some fixed values.
1229
1250
for y , m , d , n in [(1 , 1 , 1 , 1 ), # calendar origin
@@ -3587,6 +3608,15 @@ class DateTimeSubclass(self.theclass):
3587
3608
self .assertEqual (dt , dt_rt )
3588
3609
self .assertIsInstance (dt_rt , DateTimeSubclass )
3589
3610
3611
+ def test_repr_subclass (self ):
3612
+ """Subclasses should have bare names in the repr (gh-107773)."""
3613
+ td = SubclassDatetime (2014 , 1 , 1 )
3614
+ self .assertEqual (repr (td ), "SubclassDatetime(2014, 1, 1, 0, 0)" )
3615
+ td = SubclassDatetime (2010 , 10 , day = 10 )
3616
+ self .assertEqual (repr (td ), "SubclassDatetime(2010, 10, 10, 0, 0)" )
3617
+ td = SubclassDatetime (2010 , 10 , 2 , second = 3 )
3618
+ self .assertEqual (repr (td ), "SubclassDatetime(2010, 10, 2, 0, 0, 3)" )
3619
+
3590
3620
3591
3621
class TestSubclassDateTime (TestDateTime ):
3592
3622
theclass = SubclassDatetime
@@ -3897,6 +3927,19 @@ def test_repr(self):
3897
3927
self .assertEqual (repr (self .theclass (23 , 15 , 0 , 0 )),
3898
3928
"%s(23, 15)" % name )
3899
3929
3930
+ def test_repr_subclass (self ):
3931
+ """Subclasses should have bare names in the repr (gh-107773)."""
3932
+ td = SubclassTime (hour = 1 )
3933
+ self .assertEqual (repr (td ), "SubclassTime(1, 0)" )
3934
+ td = SubclassTime (hour = 2 , minute = 30 )
3935
+ self .assertEqua
A074
l (repr (td ), "SubclassTime(2, 30)" )
3936
+ td = SubclassTime (hour = 2 , minute = 30 , second = 11 )
3937
+ self .assertEqual (repr (td ), "SubclassTime(2, 30, 11)" )
3938
+ td = SubclassTime (minute = 30 , second = 11 , fold = 0 )
3939
+ self .assertEqual (repr (td ), "SubclassTime(0, 30, 11)" )
3940
+ td = SubclassTime (minute = 30 , second = 11 , fold = 1 )
3941
+ self .assertEqual (repr (td ), "SubclassTime(0, 30, 11, fold=1)" )
3942
+
3900
3943
def test_resolution_info (self ):
3901
3944
self .assertIsInstance (self .theclass .min , self .theclass )
3902
3945
self .assertIsInstance (self .theclass .max , self .theclass )
0 commit comments