Spaces:
Running on Zero
A newer version of the Gradio SDK is available: 6.20.0
Curses C API
curses{.interpreted-text role="mod"} exposes a small C interface for extension modules. Consumers must include the header file py_curses.h{.interpreted-text role="file"} (which is not included by default by Python.h{.interpreted-text role="file"}) and import_curses{.interpreted-text role="c:func"} must be invoked, usually as part of the module initialisation function, to populate PyCurses_API{.interpreted-text role="c:var"}.
:::: warning ::: title Warning :::
Neither the C API nor the pure Python curses{.interpreted-text role="mod"} module are compatible with subinterpreters.
::::
Import the curses C API. The macro does not need a semi-colon to be called.
On success, populate the
PyCurses_API{.interpreted-text role="c:var"} pointer.On failure, set
PyCurses_API{.interpreted-text role="c:var"} to NULL and set an exception. The caller must check if an error occurred viaPyErr_Occurred{.interpreted-text role="c:func"}:import_curses(); // semi-colon is optional but recommended if (PyErr_Occurred()) { /* cleanup */ }
Dynamically allocated object containing the curses C API. This variable is only available once
import_curses{.interpreted-text role="c:macro"} succeeds.
PyCurses_API[0]corresponds toPyCursesWindow_Type{.interpreted-text role="c:data"}.
PyCurses_API[1],PyCurses_API[2], andPyCurses_API[3]are pointers to predicate functions of typeint (*)(void).When called, these predicates return whether
curses.setupterm{.interpreted-text role="func"},curses.initscr{.interpreted-text role="func"}, andcurses.start_color{.interpreted-text role="func"} have been called respectively.See also the convenience macros
PyCursesSetupTermCalled{.interpreted-text role="c:macro"},PyCursesInitialised{.interpreted-text role="c:macro"}, andPyCursesInitialisedColor{.interpreted-text role="c:macro"}.:::: note ::: title Note :::
The number of entries in this structure is subject to changes. Consider using
PyCurses_API_pointers{.interpreted-text role="c:macro"} to check if new fields are available or not. ::::
The number of accessible fields (
4) inPyCurses_API{.interpreted-text role="c:var"}. This number is incremented whenever new fields are added.
The
heap type <heap-types>{.interpreted-text role="ref"} corresponding tocurses.window{.interpreted-text role="class"}.
Return true if op is a
curses.window{.interpreted-text role="class"} instance, false otherwise.
The following macros are convenience macros expanding into C statements. In particular, they can only be used as macro; or macro, but not macro() or macro();.
Macro checking if
curses.setupterm{.interpreted-text role="func"} has been called.The macro expansion is roughly equivalent to:
{ typedef int (*predicate_t)(void); predicate_t was_setupterm_called = (predicate_t)PyCurses_API[1]; if (!was_setupterm_called()) { return NULL; } }
Macro checking if
curses.initscr{.interpreted-text role="func"} has been called.The macro expansion is roughly equivalent to:
{ typedef int (*predicate_t)(void); predicate_t was_initscr_called = (predicate_t)PyCurses_API[2]; if (!was_initscr_called()) { return NULL; } }
Macro checking if
curses.start_color{.interpreted-text role="func"} has been called.The macro expansion is roughly equivalent to:
{ typedef int (*predicate_t)(void); predicate_t was_start_color_called = (predicate_t)PyCurses_API[3]; if (!was_start_color_called()) { return NULL; } }
Internal data
The following objects are exposed by the C API but should be considered internal-only.
Name of the curses capsule to pass to
PyCapsule_Import{.interpreted-text role="c:func"}.Internal usage only. Use
import_curses{.interpreted-text role="c:macro"} instead.