Skip to content

Commit 3823f5a

Browse files
Add _PyObject_SupportedAsScript().
1 parent 6772ed9 commit 3823f5a

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

Include/internal/pycore_pythonrun.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ extern int _PyRun_InteractiveLoopObject(
2525
PyObject *filename,
2626
PyCompilerFlags *flags);
2727

28+
extern int _PyObject_SupportedAsScript(PyObject *);
2829
extern const char* _Py_SourceAsString(
2930
PyObject *cmd,
3031
const char *funcname,

Python/crossinterp.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -851,9 +851,7 @@ get_script_xidata(PyThreadState *tstate, PyObject *obj, int pure,
851851
PyObject *ref = NULL;
852852
const char *script = _Py_SourceAsString(obj, "???", "???", &cf, &ref);
853853
if (script == NULL) {
854-
if (!PyBytes_Check(obj) && !PyUnicode_Check(obj)
855-
&& !PyByteArray_Check(obj) && !PyObject_CheckBuffer(obj))
856-
{
854+
if (!_PyObject_SupportedAsScript(obj)) {
857855
// We discard the raised exception.
858856
_PyErr_Format(tstate, PyExc_TypeError,
859857
"unsupported script %R", obj);

Python/pythonrun.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1524,6 +1524,26 @@ Py_CompileStringExFlags(const char *str, const char *filename_str, int start,
15241524
return co;
15251525
}
15261526

1527+
int
1528+
_PyObject_SupportedAsScript(PyObject *cmd)
1529+
{
1530+
if (PyUnicode_Check(cmd)) {
1531+
return 1;
1532+
}
1533+
else if (PyBytes_Check(cmd)) {
1534+
return 1;
1535+
}
1536+
else if (PyByteArray_Check(cmd)) {
1537+
return 1;
1538+
}
1539+
else if (PyObject_CheckBuffer(cmd)) {
1540+
return 1;
1541+
}
1542+
else {
1543+
return 0;
1544+
}
1545+
}
1546+
15271547
const char *
15281548
_Py_SourceAsString(PyObject *cmd, const char *funcname, const char *what, PyCompilerFlags *cf, PyObject **cmd_copy)
15291549
{

0 commit comments

Comments
 (0)