classification
Title: datetime: strftime method takes different keyword argument: fmt (pure) or format (C)
Type: behavior Stage: patch review
Components: Extension Modules, Library (Lib) Versions: Python 3.10
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: Anthony Sottile, ZackerySpytz, belopolsky, p-ganssle
Priority: normal Keywords: patch

Created on 2020-07-09 17:01 by Anthony Sottile, last changed 2020-08-03 05:50 by ZackerySpytz.

Pull Requests
URL Status Linked Edit
PR 21712 open ZackerySpytz, 2020-08-03 05:50
Messages (3)
msg373407 - (view) Author: Anthony Sottile (Anthony Sottile) * Date: 2020-07-09 17:01
C:

https://github.com/python/cpython/blob/8b33961e4bc4020d8b2d5b949ad9d5c669300e89/Modules/_datetimemodule.c#L3183

pure python:

https://github.com/python/cpython/blob/8b33961e4bc4020d8b2d5b949ad9d5c669300e89/Lib/datetime.py#L927


this makes it difficult to properly type in mypy:

https://github.com/python/typeshed/blob/209b6bb127f61fe173a60776e23883ac450cf1c8/stdlib/2and3/datetime.pyi#L55

and calling with `.strftime(fmt=...)` or `.strftime(format=...)` is inconsistent

(that said, it should _probably_ be a positional-only argument)
msg373421 - (view) Author: Paul Ganssle (p-ganssle) * (Python committer) Date: 2020-07-09 19:06
I think a positional-only argument would be the best option if we could do it, but it would be a backwards-incompatible change and it's probably not worth the hassle.

If anyone is using the keyword argument, they're probably using `format=` rather than `fmt=`, since it's pretty rare for anyone to use the pure python version of datetime. PyPy uses it, but I think they tend to aim for consistency with the C API of CPython, and it seems like they already patch s/fmt/format/ themselves: https://foss.heptapod.net/pypy/pypy/-/blob/branch/default/lib_pypy/datetime.py#L781

If anyone wants to make a PR I think we can fix this for 3.10, though unfortunately because it is an API change it can't be backported. I think in typeshed they can safely change from `fmt` to `format` even today (which would almost certainly be more accurate to end user use cases).
msg373424 - (view) Author: Anthony Sottile (Anthony Sottile) * Date: 2020-07-09 19:42
awesome, I'm going to work through this with someone in my discord as a demo / mentorship opportunity -- hope that's ok!
History
Date User Action Args
2020-08-03 05:50:20ZackerySpytzsetkeywords: + patch
nosy: + ZackerySpytz

pull_requests: + pull_request20856
stage: needs patch -> patch review
2020-07-09 19:42:04Anthony Sottilesetmessages: + msg373424
2020-07-09 19:06:30p-gansslesetnosy: - rkm

messages: + msg373421
stage: needs patch
2020-07-09 18:44:02rkmsetnosy: + rkm
2020-07-09 17:52:08xtreaksetnosy: + belopolsky, p-ganssle
2020-07-09 17:01:48Anthony Sottilecreate