1.. highlight:: c 2 3 4.. _veryhigh: 5 6************************* 7The Very High Level Layer 8************************* 9 10The functions in this chapter will let you execute Python source code given in a 11file or a buffer, but they will not let you interact in a more detailed way with 12the interpreter. 13 14Several of these functions accept a start symbol from the grammar as a 15parameter. The available start symbols are :const:`Py_eval_input`, 16:const:`Py_file_input`, and :const:`Py_single_input`. These are described 17following the functions which accept them as parameters. 18 19Note also that several of these functions take :c:type:`FILE\*` parameters. One 20particular issue which needs to be handled carefully is that the :c:type:`FILE` 21structure for different C libraries can be different and incompatible. Under 22Windows (at least), it is possible for dynamically linked extensions to actually 23use different libraries, so care should be taken that :c:type:`FILE\*` parameters 24are only passed to these functions if it is certain that they were created by 25the same library that the Python runtime is using. 26 27 28.. c:function:: int Py_Main(int argc, wchar_t **argv) 29 30 The main program for the standard interpreter. This is made available for 31 programs which embed Python. The *argc* and *argv* parameters should be 32 prepared exactly as those which are passed to a C program's :c:func:`main` 33 function (converted to wchar_t according to the user's locale). It is 34 important to note that the argument list may be modified (but the contents of 35 the strings pointed to by the argument list are not). The return value will 36 be ``0`` if the interpreter exits normally (i.e., without an exception), 37 ``1`` if the interpreter exits due to an exception, or ``2`` if the parameter 38 list does not represent a valid Python command line. 39 40 Note that if an otherwise unhandled :exc:`SystemExit` is raised, this 41 function will not return ``1``, but exit the process, as long as 42 ``Py_InspectFlag`` is not set. 43 44 45.. c:function:: int Py_BytesMain(int argc, char **argv) 46 47 Similar to :c:func:`Py_Main` but *argv* is an array of bytes strings. 48 49 .. versionadded:: 3.8 50 51 52.. c:function:: int PyRun_AnyFile(FILE *fp, const char *filename) 53 54 This is a simplified interface to :c:func:`PyRun_AnyFileExFlags` below, leaving 55 *closeit* set to ``0`` and *flags* set to ``NULL``. 56 57 58.. c:function:: int PyRun_AnyFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags) 59 60 This is a simplified interface to :c:func:`PyRun_AnyFileExFlags` below, leaving 61 the *closeit* argument set to ``0``. 62 63 64.. c:function:: int PyRun_AnyFileEx(FILE *fp, const char *filename, int closeit) 65 66 This is a simplified interface to :c:func:`PyRun_AnyFileExFlags` below, leaving 67 the *flags* argument set to ``NULL``. 68 69 70.. c:function:: int PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags) 71 72 If *fp* refers to a file associated with an interactive device (console or 73 terminal input or Unix pseudo-terminal), return the value of 74 :c:func:`PyRun_InteractiveLoop`, otherwise return the result of 75 :c:func:`PyRun_SimpleFile`. *filename* is decoded from the filesystem 76 encoding (:func:`sys.getfilesystemencoding`). If *filename* is ``NULL``, this 77 function uses ``"???"`` as the filename. 78 79 80.. c:function:: int PyRun_SimpleString(const char *command) 81 82 This is a simplified interface to :c:func:`PyRun_SimpleStringFlags` below, 83 leaving the :c:type:`PyCompilerFlags`\* argument set to ``NULL``. 84 85 86.. c:function:: int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags) 87 88 Executes the Python source code from *command* in the :mod:`__main__` module 89 according to the *flags* argument. If :mod:`__main__` does not already exist, it 90 is created. Returns ``0`` on success or ``-1`` if an exception was raised. If 91 there was an error, there is no way to get the exception information. For the 92 meaning of *flags*, see below. 93 94 Note that if an otherwise unhandled :exc:`SystemExit` is raised, this 95 function will not return ``-1``, but exit the process, as long as 96 ``Py_InspectFlag`` is not set. 97 98 99.. c:function:: int PyRun_SimpleFile(FILE *fp, const char *filename) 100 101 This is a simplified interface to :c:func:`PyRun_SimpleFileExFlags` below, 102 leaving *closeit* set to ``0`` and *flags* set to ``NULL``. 103 104 105.. c:function:: int PyRun_SimpleFileEx(FILE *fp, const char *filename, int closeit) 106 107 This is a simplified interface to :c:func:`PyRun_SimpleFileExFlags` below, 108 leaving *flags* set to ``NULL``. 109 110 111.. c:function:: int PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags) 112 113 Similar to :c:func:`PyRun_SimpleStringFlags`, but the Python source code is read 114 from *fp* instead of an in-memory string. *filename* should be the name of 115 the file, it is decoded from the filesystem encoding 116 (:func:`sys.getfilesystemencoding`). If *closeit* is true, the file is 117 closed before PyRun_SimpleFileExFlags returns. 118 119 .. note:: 120 On Windows, *fp* should be opened as binary mode (e.g. ``fopen(filename, "rb")``. 121 Otherwise, Python may not handle script file with LF line ending correctly. 122 123 124.. c:function:: int PyRun_InteractiveOne(FILE *fp, const char *filename) 125 126 This is a simplified interface to :c:func:`PyRun_InteractiveOneFlags` below, 127 leaving *flags* set to ``NULL``. 128 129 130.. c:function:: int PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags) 131 132 Read and execute a single statement from a file associated with an 133 interactive device according to the *flags* argument. The user will be 134 prompted using ``sys.ps1`` and ``sys.ps2``. *filename* is decoded from the 135 filesystem encoding (:func:`sys.getfilesystemencoding`). 136 137 Returns ``0`` when the input was 138 executed successfully, ``-1`` if there was an exception, or an error code 139 from the :file:`errcode.h` include file distributed as part of Python if 140 there was a parse error. (Note that :file:`errcode.h` is not included by 141 :file:`Python.h`, so must be included specifically if needed.) 142 143 144.. c:function:: int PyRun_InteractiveLoop(FILE *fp, const char *filename) 145 146 This is a simplified interface to :c:func:`PyRun_InteractiveLoopFlags` below, 147 leaving *flags* set to ``NULL``. 148 149 150.. c:function:: int PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flags) 151 152 Read and execute statements from a file associated with an interactive device 153 until EOF is reached. The user will be prompted using ``sys.ps1`` and 154 ``sys.ps2``. *filename* is decoded from the filesystem encoding 155 (:func:`sys.getfilesystemencoding`). Returns ``0`` at EOF or a negative 156 number upon failure. 157 158 159.. c:var:: int (*PyOS_InputHook)(void) 160 161 Can be set to point to a function with the prototype 162 ``int func(void)``. The function will be called when Python's 163 interpreter prompt is about to become idle and wait for user input 164 from the terminal. The return value is ignored. Overriding this 165 hook can be used to integrate the interpreter's prompt with other 166 event loops, as done in the :file:`Modules/_tkinter.c` in the 167 Python source code. 168 169 170.. c:var:: char* (*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, const char *) 171 172 Can be set to point to a function with the prototype 173 ``char *func(FILE *stdin, FILE *stdout, char *prompt)``, 174 overriding the default function used to read a single line of input 175 at the interpreter's prompt. The function is expected to output 176 the string *prompt* if it's not ``NULL``, and then read a line of 177 input from the provided standard input file, returning the 178 resulting string. For example, The :mod:`readline` module sets 179 this hook to provide line-editing and tab-completion features. 180 181 The result must be a string allocated by :c:func:`PyMem_RawMalloc` or 182 :c:func:`PyMem_RawRealloc`, or ``NULL`` if an error occurred. 183 184 .. versionchanged:: 3.4 185 The result must be allocated by :c:func:`PyMem_RawMalloc` or 186 :c:func:`PyMem_RawRealloc`, instead of being allocated by 187 :c:func:`PyMem_Malloc` or :c:func:`PyMem_Realloc`. 188 189 190.. c:function:: struct _node* PyParser_SimpleParseString(const char *str, int start) 191 192 This is a simplified interface to 193 :c:func:`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set 194 to ``NULL`` and *flags* set to ``0``. 195 196 197.. c:function:: struct _node* PyParser_SimpleParseStringFlags( const char *str, int start, int flags) 198 199 This is a simplified interface to 200 :c:func:`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set 201 to ``NULL``. 202 203 204.. c:function:: struct _node* PyParser_SimpleParseStringFlagsFilename( const char *str, const char *filename, int start, int flags) 205 206 Parse Python source code from *str* using the start token *start* according to 207 the *flags* argument. The result can be used to create a code object which can 208 be evaluated efficiently. This is useful if a code fragment must be evaluated 209 many times. *filename* is decoded from the filesystem encoding 210 (:func:`sys.getfilesystemencoding`). 211 212 213.. c:function:: struct _node* PyParser_SimpleParseFile(FILE *fp, const char *filename, int start) 214 215 This is a simplified interface to :c:func:`PyParser_SimpleParseFileFlags` below, 216 leaving *flags* set to ``0``. 217 218 219.. c:function:: struct _node* PyParser_SimpleParseFileFlags(FILE *fp, const char *filename, int start, int flags) 220 221 Similar to :c:func:`PyParser_SimpleParseStringFlagsFilename`, but the Python 222 source code is read from *fp* instead of an in-memory string. 223 224 225.. c:function:: PyObject* PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals) 226 227 This is a simplified interface to :c:func:`PyRun_StringFlags` below, leaving 228 *flags* set to ``NULL``. 229 230 231.. c:function:: PyObject* PyRun_StringFlags(const char *str, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags) 232 233 Execute Python source code from *str* in the context specified by the 234 objects *globals* and *locals* with the compiler flags specified by 235 *flags*. *globals* must be a dictionary; *locals* can be any object 236 that implements the mapping protocol. The parameter *start* specifies 237 the start token that should be used to parse the source code. 238 239 Returns the result of executing the code as a Python object, or ``NULL`` if an 240 exception was raised. 241 242 243.. c:function:: PyObject* PyRun_File(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals) 244 245 This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving 246 *closeit* set to ``0`` and *flags* set to ``NULL``. 247 248 249.. c:function:: PyObject* PyRun_FileEx(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit) 250 251 This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving 252 *flags* set to ``NULL``. 253 254 255.. c:function:: PyObject* PyRun_FileFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags) 256 257 This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving 258 *closeit* set to ``0``. 259 260 261.. c:function:: PyObject* PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit, PyCompilerFlags *flags) 262 263 Similar to :c:func:`PyRun_StringFlags`, but the Python source code is read from 264 *fp* instead of an in-memory string. *filename* should be the name of the file, 265 it is decoded from the filesystem encoding (:func:`sys.getfilesystemencoding`). 266 If *closeit* is true, the file is closed before :c:func:`PyRun_FileExFlags` 267 returns. 268 269 270.. c:function:: PyObject* Py_CompileString(const char *str, const char *filename, int start) 271 272 This is a simplified interface to :c:func:`Py_CompileStringFlags` below, leaving 273 *flags* set to ``NULL``. 274 275 276.. c:function:: PyObject* Py_CompileStringFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags) 277 278 This is a simplified interface to :c:func:`Py_CompileStringExFlags` below, with 279 *optimize* set to ``-1``. 280 281 282.. c:function:: PyObject* Py_CompileStringObject(const char *str, PyObject *filename, int start, PyCompilerFlags *flags, int optimize) 283 284 Parse and compile the Python source code in *str*, returning the resulting code 285 object. The start token is given by *start*; this can be used to constrain the 286 code which can be compiled and should be :const:`Py_eval_input`, 287 :const:`Py_file_input`, or :const:`Py_single_input`. The filename specified by 288 *filename* is used to construct the code object and may appear in tracebacks or 289 :exc:`SyntaxError` exception messages. This returns ``NULL`` if the code 290 cannot be parsed or compiled. 291 292 The integer *optimize* specifies the optimization level of the compiler; a 293 value of ``-1`` selects the optimization level of the interpreter as given by 294 :option:`-O` options. Explicit levels are ``0`` (no optimization; 295 ``__debug__`` is true), ``1`` (asserts are removed, ``__debug__`` is false) 296 or ``2`` (docstrings are removed too). 297 298 .. versionadded:: 3.4 299 300 301.. c:function:: PyObject* Py_CompileStringExFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags, int optimize) 302 303 Like :c:func:`Py_CompileStringObject`, but *filename* is a byte string 304 decoded from the filesystem encoding (:func:`os.fsdecode`). 305 306 .. versionadded:: 3.2 307 308.. c:function:: PyObject* PyEval_EvalCode(PyObject *co, PyObject *globals, PyObject *locals) 309 310 This is a simplified interface to :c:func:`PyEval_EvalCodeEx`, with just 311 the code object, and global and local variables. The other arguments are 312 set to ``NULL``. 313 314 315.. c:function:: PyObject* PyEval_EvalCodeEx(PyObject *co, PyObject *globals, PyObject *locals, PyObject *const *args, int argcount, PyObject *const *kws, int kwcount, PyObject *const *defs, int defcount, PyObject *kwdefs, PyObject *closure) 316 317 Evaluate a precompiled code object, given a particular environment for its 318 evaluation. This environment consists of a dictionary of global variables, 319 a mapping object of local variables, arrays of arguments, keywords and 320 defaults, a dictionary of default values for :ref:`keyword-only 321 <keyword-only_parameter>` arguments and a closure tuple of cells. 322 323 324.. c:type:: PyFrameObject 325 326 The C structure of the objects used to describe frame objects. The 327 fields of this type are subject to change at any time. 328 329 330.. c:function:: PyObject* PyEval_EvalFrame(PyFrameObject *f) 331 332 Evaluate an execution frame. This is a simplified interface to 333 :c:func:`PyEval_EvalFrameEx`, for backward compatibility. 334 335 336.. c:function:: PyObject* PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) 337 338 This is the main, unvarnished function of Python interpretation. The code 339 object associated with the execution frame *f* is executed, interpreting 340 bytecode and executing calls as needed. The additional *throwflag* 341 parameter can mostly be ignored - if true, then it causes an exception 342 to immediately be thrown; this is used for the :meth:`~generator.throw` 343 methods of generator objects. 344 345 .. versionchanged:: 3.4 346 This function now includes a debug assertion to help ensure that it 347 does not silently discard an active exception. 348 349 350.. c:function:: int PyEval_MergeCompilerFlags(PyCompilerFlags *cf) 351 352 This function changes the flags of the current evaluation frame, and returns 353 true on success, false on failure. 354 355 356.. c:var:: int Py_eval_input 357 358 .. index:: single: Py_CompileString() 359 360 The start symbol from the Python grammar for isolated expressions; for use with 361 :c:func:`Py_CompileString`. 362 363 364.. c:var:: int Py_file_input 365 366 .. index:: single: Py_CompileString() 367 368 The start symbol from the Python grammar for sequences of statements as read 369 from a file or other source; for use with :c:func:`Py_CompileString`. This is 370 the symbol to use when compiling arbitrarily long Python source code. 371 372 373.. c:var:: int Py_single_input 374 375 .. index:: single: Py_CompileString() 376 377 The start symbol from the Python grammar for a single statement; for use with 378 :c:func:`Py_CompileString`. This is the symbol used for the interactive 379 interpreter loop. 380 381 382.. c:type:: struct PyCompilerFlags 383 384 This is the structure used to hold compiler flags. In cases where code is only 385 being compiled, it is passed as ``int flags``, and in cases where code is being 386 executed, it is passed as ``PyCompilerFlags *flags``. In this case, ``from 387 __future__ import`` can modify *flags*. 388 389 Whenever ``PyCompilerFlags *flags`` is ``NULL``, :attr:`cf_flags` is treated as 390 equal to ``0``, and any modification due to ``from __future__ import`` is 391 discarded. 392 393 .. c:member:: int cf_flags 394 395 Compiler flags. 396 397 .. c:member:: int cf_feature_version 398 399 *cf_feature_version* is the minor Python version. It should be 400 initialized to ``PY_MINOR_VERSION``. 401 402 The field is ignored by default, it is used if and only if 403 ``PyCF_ONLY_AST`` flag is set in *cf_flags*. 404 405 .. versionchanged:: 3.8 406 Added *cf_feature_version* field. 407 408 409.. c:var:: int CO_FUTURE_DIVISION 410 411 This bit can be set in *flags* to cause division operator ``/`` to be 412 interpreted as "true division" according to :pep:`238`. 413