[Python-checkins] r82616 - in sandbox/branches/py3k-datetime: datetime.py test_datetime.py
alexander.belopolsky
python-checkins at python.org
Wed Jul 7 01:18:01 CEST 2010
Author: alexander.belopolsky
Date: Wed Jul 7 01:18:01 2010
New Revision: 82616
Log:
Issue #9000: datetime.timezone objects now have eval-friendly repr.
Modified:
sandbox/branches/py3k-datetime/datetime.py
sandbox/branches/py3k-datetime/test_datetime.py
Modified: sandbox/branches/py3k-datetime/datetime.py
==============================================================================
--- sandbox/branches/py3k-datetime/datetime.py (original)
+++ sandbox/branches/py3k-datetime/datetime.py Wed Jul 7 01:18:01 2010
@@ -705,7 +705,16 @@
# Conversions to string
def __repr__(self):
- "Convert to formal string, for repr()."
+ """Convert to formal string, for repr().
+
+ >>> dt = datetime(2010, 1, 1)
+ >>> repr(dt)
+ 'datetime.datetime(2010, 1, 1, 0, 0)'
+
+ >>> dt = datetime(2010, 1, 1, tzinfo=timezone.utc)
+ >>> repr(dt)
+ 'datetime.datetime(2010, 1, 1, 0, 0, tzinfo=datetime.timezone.utc)'
+ """
return "%s(%d, %d, %d)" % ('datetime.' + self.__class__.__name__,
self._year,
self._month,
@@ -1524,7 +1533,7 @@
return s
def __repr__(self):
- "Convert to formal string, for repr()."
+ """Convert to formal string, for repr()."""
L = [self._year, self._month, self._day, # These are never zero
self._hour, self._minute, self._second, self._microsecond]
if L[-1] == 0:
@@ -1813,6 +1822,24 @@
def __hash__(self):
return hash(self._offset)
+ def __repr__(self):
+ """Convert to formal string, for repr().
+
+ >>> tz = timezone.utc
+ >>> repr(tz)
+ 'datetime.timezone.utc'
+ >>> tz = timezone(timedelta(hours=-5), 'EST')
+ >>> repr(tz)
+ "datetime.timezone(datetime.timedelta(-1, 68400), 'EST')"
+ """
+ if self is self.utc:
+ return 'datetime.timezone.utc'
+ if self._name is None:
+ return "%s(%r)" % ('datetime.' + self.__class__.__name__,
+ self._offset)
+ return "%s(%r, %r)" % ('datetime.' + self.__class__.__name__,
+ self._offset, self._name)
+
def __str__(self):
return self.tzname(None)
Modified: sandbox/branches/py3k-datetime/test_datetime.py
==============================================================================
--- sandbox/branches/py3k-datetime/test_datetime.py (original)
+++ sandbox/branches/py3k-datetime/test_datetime.py Wed Jul 7 01:18:01 2010
@@ -153,6 +153,15 @@
timezone.min, timezone.max]:
self.assertEqual(str(tz), tz.tzname(None))
+ def test_repr(self):
+ import datetime
+ for tz in [self.ACDT, self.EST, timezone.utc,
+ timezone.min, timezone.max]:
+ # test round-trip
+ tzrep = repr(tz)
+ self.assertEqual(tz, eval(tzrep))
+
+
def test_class_members(self):
limit = timedelta(hours=23, minutes=59)
self.assertEqual(timezone.utc.utcoffset(None), ZERO)
More information about the Python-checkins
mailing list