Skip to content

Commit

Permalink
gh-85432: Harmonise parameter names between C and pure-Python impleme…
Browse files Browse the repository at this point in the history
…ntations of `datetime.time.strftime`, `datetime.datetime.fromtimestamp` (#99993)
  • Loading branch information
AlexWaygood committed Dec 22, 2022
1 parent 09edde9 commit 9cdb642
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 5 deletions.
9 changes: 4 additions & 5 deletions Lib/datetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -1553,8 +1553,7 @@ def fromisoformat(cls, time_string):
except Exception:
raise ValueError(f'Invalid isoformat string: {time_string!r}')


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.
"""
Expand All @@ -1563,7 +1562,7 @@ def strftime(self, fmt):
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):
Expand Down Expand Up @@ -1787,14 +1786,14 @@ def _fromtimestamp(cls, t, utc, tz):
return result

@classmethod
def fromtimestamp(cls, t, tz=None):
def fromtimestamp(cls, timestamp, tz=None):
"""Construct a datetime from a POSIX timestamp (like time.time()).
A timezone info object may be passed in as well.
"""
_check_tzinfo_arg(tz)

return cls._fromtimestamp(t, tz is not None, tz)
return cls._fromtimestamp(timestamp, tz is not None, tz)

@classmethod
def utcfromtimestamp(cls, t):
Expand Down
9 changes: 9 additions & 0 deletions Lib/test/datetimetester.py
Original file line number Diff line number Diff line change
Expand Up @@ -2426,6 +2426,12 @@ def test_fromtimestamp(self):
got = self.theclass.fromtimestamp(ts)
self.verify_field_equality(expected, got)

def test_fromtimestamp_keyword_arg(self):
import time

# gh-85432: The parameter was named "t" in the pure-Python impl.
self.theclass.fromtimestamp(timestamp=time.time())

def test_utcfromtimestamp(self):
import time

Expand Down Expand Up @@ -3528,6 +3534,9 @@ def test_strftime(self):
except UnicodeEncodeError:
pass

# gh-85432: The parameter was named "fmt" in the pure-Python impl.
t.strftime(format="%f")

def test_format(self):
t = self.theclass(1, 2, 3, 4)
self.assertEqual(t.__format__(''), str(t))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Rename the *fmt* parameter of the pure-Python implementation of
:meth:`datetime.time.strftime` to *format*. Rename the *t* parameter of
:meth:`datetime.datetime.fromtimestamp` to *timestamp*. These changes mean
the parameter names in the pure-Python implementation now match the
parameter names in the C implementation. Patch by Alex Waygood.

0 comments on commit 9cdb642

Please sign in to comment.