Issue 41260: datetime, date and time: strftime method takes different keyword argument: fmt (pure) or format (C) (original) (raw)

Created on 2020-07-09 17:01 by Anthony Sottile, last changed 2022-04-11 14:59 by admin.

Pull Requests
URL Status Linked Edit
PR 21712 open ZackerySpytz,2020-08-03 05:50
Messages (6)
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!
msg406418 - (view) Author: Paul Ganssle (p-ganssle) * (Python committer) Date: 2021-11-16 16:56
Updating this issue to cover the problem in date, time and datetime.
msg406421 - (view) Author: Sebastian Rittau (srittau) * Date: 2021-11-16 18:30
Ref https://github.com/python/typeshed/pull/6317 for a discussion about this in typeshed.
msg406424 - (view) Author: Alex Waygood (AlexWaygood) * (Python triager) Date: 2021-11-16 19:27
In addition to `date.strftime` and `time.strftime`, there is also a discrepancy in `datetime.fromtimestamp`. In the C implementation, the first parameter is called "timestamp"; in the pure-Python implementation, the first parameter is called "t".
History
Date User Action Args
2022-04-11 14:59:33 admin set github: 85432
2021-11-16 19:27:41 AlexWaygood set messages: +
2021-11-16 18:35:25 AlexWaygood set nosy: + AlexWaygood
2021-11-16 18:30:56 srittau set nosy: + srittaumessages: +
2021-11-16 18:25:08 AlexWaygood set versions: + Python 3.9, Python 3.11
2021-11-16 16:56:04 p-ganssle set messages: + title: datetime: strftime method takes different keyword argument: fmt (pure) or format (C) -> datetime, date and time: strftime method takes different keyword argument: fmt (pure) or format (C)
2021-11-16 16:55:25 p-ganssle link issue45814 superseder
2020-08-03 05:50:20 ZackerySpytz set keywords: + patchnosy: + ZackerySpytzpull_requests: + <pull%5Frequest20856>stage: needs patch -> patch review
2020-07-09 19:42:04 Anthony Sottile set messages: +
2020-07-09 19:06:30 p-ganssle set nosy: - rkmmessages: + stage: needs patch
2020-07-09 18:44:02 rkm set nosy: + rkm
2020-07-09 17:52:08 xtreak set nosy: + belopolsky, p-ganssle
2020-07-09 17:01:48 Anthony Sottile create