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