summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmin Alaee <mohammadamin.alaee@gmail.com>2023-09-28 15:17:30 (GMT)
committerGitHub <noreply@github.com>2023-09-28 15:17:30 (GMT)
commit7df8b16d28d2418161cef49814b6aca9fb70788d (patch)
tree5dc16d122648b8cf0f10aaa7a54cc733967b53e2
parent3814bc17230df4cd3bc4d8e2ce0ad36470fba269 (diff)
downloadcpython-7df8b16d28d2418161cef49814b6aca9fb70788d.zip
cpython-7df8b16d28d2418161cef49814b6aca9fb70788d.tar.gz
cpython-7df8b16d28d2418161cef49814b6aca9fb70788d.tar.bz2
gh-109782: Ensure `os.path.isdir` has the same signature on all platforms (GH-109790)
-rw-r--r--Misc/NEWS.d/next/Library/2023-09-24-16-43-33.gh-issue-109782.gMC_7z.rst2
-rw-r--r--Modules/clinic/posixmodule.c.h16
-rw-r--r--Modules/posixmodule.c10
3 files changed, 15 insertions, 13 deletions
diff --git a/Misc/NEWS.d/next/Library/2023-09-24-16-43-33.gh-issue-109782.gMC_7z.rst b/Misc/NEWS.d/next/Library/2023-09-24-16-43-33.gh-issue-109782.gMC_7z.rst
new file mode 100644
index 0000000..7612e59
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-09-24-16-43-33.gh-issue-109782.gMC_7z.rst
@@ -0,0 +1,2 @@
+Ensure the signature of :func:`os.path.isdir` is identical on all platforms.
+Patch by Amin Alaee.
diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h
index c3e7f86..e77a31b 100644
--- a/Modules/clinic/posixmodule.c.h
+++ b/Modules/clinic/posixmodule.c.h
@@ -1977,7 +1977,7 @@ exit:
#if defined(MS_WINDOWS)
PyDoc_STRVAR(os__path_isdir__doc__,
-"_path_isdir($module, /, path)\n"
+"_path_isdir($module, /, s)\n"
"--\n"
"\n"
"Return true if the pathname refers to an existing directory.");
@@ -1986,7 +1986,7 @@ PyDoc_STRVAR(os__path_isdir__doc__,
{"_path_isdir", _PyCFunction_CAST(os__path_isdir), METH_FASTCALL|METH_KEYWORDS, os__path_isdir__doc__},
static PyObject *
-os__path_isdir_impl(PyObject *module, PyObject *path);
+os__path_isdir_impl(PyObject *module, PyObject *s);
static PyObject *
os__path_isdir(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
@@ -2001,7 +2001,7 @@ os__path_isdir(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObje
PyObject *ob_item[NUM_KEYWORDS];
} _kwtuple = {
.ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(path), },
+ .ob_item = { &_Py_ID(s), },
};
#undef NUM_KEYWORDS
#define KWTUPLE (&_kwtuple.ob_base.ob_base)
@@ -2010,7 +2010,7 @@ os__path_isdir(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObje
# define KWTUPLE NULL
#endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"path", NULL};
+ static const char * const _keywords[] = {"s", NULL};
static _PyArg_Parser _parser = {
.keywords = _keywords,
.fname = "_path_isdir",
@@ -2018,14 +2018,14 @@ os__path_isdir(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObje
};
#undef KWTUPLE
PyObject *argsbuf[1];
- PyObject *path;
+ PyObject *s;
args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
if (!args) {
goto exit;
}
- path = args[0];
- return_value = os__path_isdir_impl(module, path);
+ s = args[0];
+ return_value = os__path_isdir_impl(module, s);
exit:
return return_value;
@@ -11988,4 +11988,4 @@ exit:
#ifndef OS_WAITSTATUS_TO_EXITCODE_METHODDEF
#define OS_WAITSTATUS_TO_EXITCODE_METHODDEF
#endif /* !defined(OS_WAITSTATUS_TO_EXITCODE_METHODDEF) */
-/*[clinic end generated code: output=1dd5aa7495cd6e3a input=a9049054013a1b77]*/
+/*[clinic end generated code: output=51aa26bc6a41e1da input=a9049054013a1b77]*/
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 096aa04..abf449e 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -4912,25 +4912,25 @@ os__path_splitroot_impl(PyObject *module, path_t *path)
/*[clinic input]
os._path_isdir
- path: 'O'
+ s: 'O'
Return true if the pathname refers to an existing directory.
[clinic start generated code]*/
static PyObject *
-os__path_isdir_impl(PyObject *module, PyObject *path)
-/*[clinic end generated code: output=00faea0af309669d input=b1d2571cf7291aaf]*/
+os__path_isdir_impl(PyObject *module, PyObject *s)
+/*[clinic end generated code: output=9d87ab3c8b8a4e61 input=c17f7ef21d22d64e]*/
{
HANDLE hfile;
BOOL close_file = TRUE;
FILE_BASIC_INFO info;
- path_t _path = PATH_T_INITIALIZE("isdir", "path", 0, 1);
+ path_t _path = PATH_T_INITIALIZE("isdir", "s", 0, 1);
int result;
BOOL slow_path = TRUE;
FILE_STAT_BASIC_INFORMATION statInfo;
- if (!path_converter(path, &_path)) {
+ if (!path_converter(s, &_path)) {
path_cleanup(&_path);
if (PyErr_ExceptionMatches(PyExc_ValueError)) {
PyErr_Clear();