• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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