https://github.com/python/cpython/commit/c33efa8735dfdb24011f5754f5e9e991c05f0587
commit: c33efa8735dfdb24011f5754f5e9e991c05f0587
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2025-04-29T19:25:44+03:00
summary:
gh-132987: Support __index__() in the stat module (GH-133097)
Use it for the mode arguments in filemode(), S_IMODE(), S_ISDIR(), etc.
files:
M Modules/_stat.c
diff --git a/Modules/_stat.c b/Modules/_stat.c
index 13a2bec252f448..f11ca7d23b440d 100644
--- a/Modules/_stat.c
+++ b/Modules/_stat.c
@@ -295,9 +295,21 @@ _PyLong_AsMode_t(PyObject *op)
unsigned long value;
mode_t mode;
- value = PyLong_AsUnsignedLong(op);
- if ((value == (unsigned long)-1) && PyErr_Occurred())
+ if (PyLong_Check(op)) {
+ value = PyLong_AsUnsignedLong(op);
+ }
+ else {
+ op = PyNumber_Index(op);
+ if (op == NULL) {
+ return (mode_t)-1;
+ }
+ value = PyLong_AsUnsignedLong(op);
+ Py_DECREF(op);
+ }
+
+ if ((value == (unsigned long)-1) && PyErr_Occurred()) {
return (mode_t)-1;
+ }
mode = (mode_t)value;
if ((unsigned long)mode != value) {
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]