diff options
author | Malcolm Smith <smith@chaquo.com> | 2024-09-27 14:35:18 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-27 14:35:18 (GMT) |
commit | 0a3577bdfcb7132c92a3f7fb2ac231bc346383c0 (patch) | |
tree | 2483ddfdd84c69a56091a72869686a72f84e0f44 | |
parent | 365dffbaada421db8fdb684a84d1fb311b75ec40 (diff) | |
download | cpython-0a3577bdfcb7132c92a3f7fb2ac231bc346383c0.zip cpython-0a3577bdfcb7132c92a3f7fb2ac231bc346383c0.tar.gz cpython-0a3577bdfcb7132c92a3f7fb2ac231bc346383c0.tar.bz2 |
gh-123017: Add Android to the list of platforms where `strftime` doesn't support negative years (#124467)
Add Android to the list of platforms where `strftime` doesn't support negative years
-rw-r--r-- | Lib/test/test_time.py | 3 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2024-09-24-21-15-27.gh-issue-123017.dSAr2f.rst | 2 | ||||
-rw-r--r-- | Modules/timemodule.c | 7 |
3 files changed, 9 insertions, 3 deletions
diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py index 293799f..530c317 100644 --- a/Lib/test/test_time.py +++ b/Lib/test/test_time.py @@ -654,8 +654,7 @@ class _TestStrftimeYear: self.test_year('%04d', func=year4d) def skip_if_not_supported(y): - msg = "strftime() is limited to [1; 9999] with Visual Studio" - # Check that it doesn't crash for year > 9999 + msg = f"strftime() does not support year {y} on this platform" try: time.strftime('%Y', (y,) + (0,) * 8) except ValueError: diff --git a/Misc/NEWS.d/next/Library/2024-09-24-21-15-27.gh-issue-123017.dSAr2f.rst b/Misc/NEWS.d/next/Library/2024-09-24-21-15-27.gh-issue-123017.dSAr2f.rst new file mode 100644 index 0000000..45fe478 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-09-24-21-15-27.gh-issue-123017.dSAr2f.rst @@ -0,0 +1,2 @@ +Due to unreliable results on some devices, :func:`time.strftime` no longer +accepts negative years on Android. diff --git a/Modules/timemodule.c b/Modules/timemodule.c index ee59fb7..9720c20 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -813,7 +813,12 @@ time_strftime(PyObject *module, PyObject *args) return NULL; } -#if defined(_MSC_VER) || (defined(__sun) && defined(__SVR4)) || defined(_AIX) || defined(__VXWORKS__) +// Some platforms only support a limited range of years. +// +// Android works with negative years on the emulator, but fails on some +// physical devices (#123017). +#if defined(_MSC_VER) || (defined(__sun) && defined(__SVR4)) || defined(_AIX) \ + || defined(__VXWORKS__) || defined(__ANDROID__) if (buf.tm_year + 1900 < 1 || 9999 < buf.tm_year + 1900) { PyErr_SetString(PyExc_ValueError, "strftime() requires year in [1; 9999]"); |