[pypy-commit] pypy py3.5: Use correct keyword argument for strftime() routines in datetime

danchr pypy.commits at gmail.com
Tue May 16 10:18:28 EDT 2017


Author: Dan Villiom Podlaski Christiansen <dan at magenta.dk>
Branch: py3.5
Changeset: r91313:4e110113b03d
Date: 2017-05-16 16:12 +0200
http://bitbucket.org/pypy/pypy/changeset/4e110113b03d/

Log:	Use correct keyword argument for strftime() routines in datetime

	The argument is specified as 'format' on docs.python.org, and this
	is the argument pypy2 uses. For some reason or other, pypy3 always
	used 'fmt'.

diff --git a/lib-python/3/datetime.py b/lib-python/3/datetime.py
--- a/lib-python/3/datetime.py
+++ b/lib-python/3/datetime.py
@@ -746,15 +746,15 @@
             _MONTHNAMES[self._month],
             self._day, self._year)
 
-    def strftime(self, fmt):
+    def strftime(self, format):
         "Format using strftime()."
-        return _wrap_strftime(self, fmt, self.timetuple())
+        return _wrap_strftime(self, format, self.timetuple())
 
-    def __format__(self, fmt):
-        if not isinstance(fmt, str):
-            raise TypeError("must be str, not %s" % type(fmt).__name__)
-        if len(fmt) != 0:
-            return self.strftime(fmt)
+    def __format__(self, format):
+        if not isinstance(format, str):
+            raise TypeError("must be str, not %s" % type(format).__name__)
+        if len(format) != 0:
+            return self.strftime(format)
         return str(self)
 
     def isoformat(self):
@@ -1215,7 +1215,7 @@
 
     __str__ = isoformat
 
-    def strftime(self, fmt):
+    def strftime(self, format):
         """Format using strftime().  The date part of the timestamp passed
         to underlying strftime should not be used.
         """
@@ -1224,13 +1224,13 @@
         timetuple = (1900, 1, 1,
                      self._hour, self._minute, self._second,
                      0, 1, -1)
-        return _wrap_strftime(self, fmt, timetuple)
+        return _wrap_strftime(self, format, timetuple)
 
-    def __format__(self, fmt):
-        if not isinstance(fmt, str):
-            raise TypeError("must be str, not %s" % type(fmt).__name__)
-        if len(fmt) != 0:
-            return self.strftime(fmt)
+    def __format__(self, format):
+        if not isinstance(format, str):
+            raise TypeError("must be str, not %s" % type(format).__name__)
+        if len(format) != 0:
+            return self.strftime(format)
         return str(self)
 
     # Timezone functions
diff --git a/lib-python/3/test/datetimetester.py b/lib-python/3/test/datetimetester.py
--- a/lib-python/3/test/datetimetester.py
+++ b/lib-python/3/test/datetimetester.py
@@ -1238,6 +1238,9 @@
         #check that this standard extension works
         t.strftime("%f")
 
+        #test that passing keyword arguments work
+        self.assertEqual(t.strftime(format=""), "")
+
     def test_format(self):
         dt = self.theclass(2007, 9, 10)
         self.assertEqual(dt.__format__(''), str(dt))
@@ -1602,6 +1605,9 @@
             self.assertEqual(a.__format__(fmt), dt.strftime(fmt))
             self.assertEqual(b.__format__(fmt), 'B')
 
+        #test that passing keyword arguments work
+        self.assertEqual(dt.strftime(format=""), "")
+
     def test_more_ctime(self):
         # Test fields that TestDate doesn't touch.
         import time
@@ -2335,6 +2341,9 @@
         # A naive object replaces %z and %Z with empty strings.
         self.assertEqual(t.strftime("'%z' '%Z'"), "'' ''")
 
+        #test that passing keyword arguments work
+        self.assertEqual(t.strftime(format=""), "")
+
     def test_format(self):
         t = self.theclass(1, 2, 3, 4)
         self.assertEqual(t.__format__(''), str(t))


More information about the pypy-commit mailing list