81 {
"version",
"The Blender version as a tuple of 3 numbers. eg. (2, 83, 1)"},
83 "The Blender version, as a tuple, last used to save a .blend file, compatible with "
84 "``bpy.data.version``. This value should be used for handling compatibility changes between "
86 {
"version_string",
"The Blender version formatted as a string"},
87 {
"version_cycle",
"The release status of this build alpha/beta/rc/release"},
89 "Boolean, True when blender is running without a user interface (started with -b)"},
90 {
"factory_startup",
"Boolean, True when blender is running with --factory-startup)"},
93 {
"build_date",
"The date this blender instance was built"},
94 {
"build_time",
"The time this blender instance was built"},
95 {
"build_commit_timestamp",
"The unix timestamp of commit this blender instance was built"},
96 {
"build_commit_date",
"The date of commit this blender instance was built"},
97 {
"build_commit_time",
"The time of commit this blender instance was built"},
98 {
"build_hash",
"The commit hash this blender instance was built with"},
99 {
"build_branch",
"The branch this blender instance was built from"},
100 {
"build_platform",
"The platform this blender instance was built for"},
101 {
"build_type",
"The type of build (Release, Debug)"},
102 {
"build_cflags",
"C compiler flags"},
103 {
"build_cxxflags",
"C++ compiler flags"},
104 {
"build_linkflags",
"Binary linking flags"},
105 {
"build_system",
"Build system used"},
108 {
"alembic",
"Alembic library information backend"},
109 {
"usd",
"USD library information backend"},
110 {
"ffmpeg",
"FFmpeg library information backend"},
111 {
"ocio",
"OpenColorIO library information backend"},
112 {
"oiio",
"OpenImageIO library information backend"},
113 {
"opensubdiv",
"OpenSubdiv library information backend"},
114 {
"openvdb",
"OpenVDB library information backend"},
115 {
"sdl",
"SDL library information backend"},
116 {
"build_options",
"A set containing most important enabled optional build features"},
117 {
"handlers",
"Application handler callbacks"},
118 {
"translations",
"Application and addons internationalization API"},
121 {
"icons",
"Manage custom icons"},
122 {
"timers",
"Manage timers"},
129 "This module contains application values that remain unchanged during runtime.");
144 if (app_info ==
nullptr) {
147#define SetIntItem(flag) PyStructSequence_SET_ITEM(app_info, pos++, PyLong_FromLong(flag))
148#define SetStrItem(str) PyStructSequence_SET_ITEM(app_info, pos++, PyUnicode_FromString(str))
149#define SetBytesItem(str) PyStructSequence_SET_ITEM(app_info, pos++, PyBytes_FromString(str))
150#define SetObjItem(obj) PyStructSequence_SET_ITEM(app_info, pos++, obj)
215 if (PyErr_Occurred()) {
228 "Boolean, for debug info "
229 "(started with ``--debug`` / ``--debug-*`` matching this attribute name)");
233 return PyBool_FromLong(
G.debug &
flag);
239 const int param = PyObject_IsTrue(value);
242 PyErr_SetString(PyExc_TypeError,
"bpy.app.debug can only be True/False");
258 bpy_app_internet_offline_doc,
259 "Boolean, true when internet access is allowed by Blender & 3rd party scripts (read-only)");
262 bpy_app_internet_offline_override_doc,
263 "Boolean, true when internet access preference is overridden by the command line (read-only)");
267 bpy_app_global_flag_doc,
268 "Boolean, for application behavior "
269 "(started with ``--enable-*`` matching this attribute name)");
273 return PyBool_FromLong(
G.f &
flag);
279 const int param = PyObject_IsTrue(value);
282 PyErr_SetString(PyExc_TypeError,
"bpy.app.use_* can only be True/False");
300 const int param = PyObject_IsTrue(value);
302 PyErr_SetString(PyExc_ValueError,
"This bpy.app.use_* option can only be disabled");
310 bpy_app_debug_value_doc,
311 "Short, number which can be set to non-zero values for testing purposes");
314 return PyLong_FromLong(
G.debug_value);
321 if (param == -1 && PyErr_Occurred()) {
323 "bpy.app.debug_value can only be set to a whole number");
327 G.debug_value = param;
337 "String, the temp directory used by blender (read-only)");
345 bpy_app_driver_dict_doc,
346 "Dictionary for drivers namespace, editable in-place, reset on file load (read-only)");
351 PyErr_SetString(PyExc_RuntimeError,
"bpy.app.driver_namespace failed to create dictionary");
361 bpy_app_preview_render_size_doc,
362 "Reference size for icon/preview renders (read-only)");
365 return PyLong_FromLong(
376 bpy_app_python_args_doc,
377 "Leading arguments to use when calling Python directly (via ``sys.executable``). "
378 "These arguments match settings Blender uses to "
379 "ensure Python runs with a compatible environment (read-only).");
386 args[args_num++] =
"-I";
393 bpy_app_binary_path_doc,
394 "The location of Blender's executable, useful for utilities that open new instances. "
395 "Read-only unless Blender is built as a Python module - in this case the value is "
396 "an empty string which script authors may point to a Blender binary.");
404#ifndef WITH_PYTHON_MODULE
405 PyErr_SetString(PyExc_AttributeError,
406 "bpy.app.binary_path is only writable when built as a Python module");
409 PyObject *value_coerce =
nullptr;
411 if (filepath ==
nullptr) {
412 PyErr_Format(PyExc_ValueError,
"expected a string or bytes, got %s", Py_TYPE(value)->tp_name);
416 Py_XDECREF(value_coerce);
453 {
"debug_depsgraph_build",
458 {
"debug_depsgraph_eval",
463 {
"debug_depsgraph_tag",
468 {
"debug_depsgraph_time",
473 {
"debug_depsgraph_pretty",
485 {
"use_event_simulate",
488 bpy_app_global_flag_doc,
491 {
"use_userpref_skip_save_on_exit",
494 bpy_app_global_flag_doc,
500 bpy_app_debug_value_doc,
508 bpy_app_preview_render_size_doc,
510 {
"render_preview_size",
513 bpy_app_preview_render_size_doc,
519 bpy_app_internet_offline_doc,
521 {
"online_access_override",
524 bpy_app_internet_offline_override_doc,
533 {
"autoexec_fail_quiet",
547 bpy_app_binary_path_doc,
550 {
nullptr,
nullptr,
nullptr,
nullptr,
nullptr},
555 bpy_app_is_job_running_doc,
556 ".. staticmethod:: is_job_running(job_type)\n"
558 " Check whether a job of the given type is running.\n"
560 " :arg job_type: job type in :ref:`rna_enum_wm_job_type_items`.\n"
561 " :type job_type: str\n"
562 " :return: Whether a job of the given type is currently running.\n"
568 job_type_enum.
value = 0;
570 static const char *_keywords[] = {
"job_type",
nullptr};
571 static _PyArg_Parser _parser = {
578 if (!_PyArg_ParseTupleAndKeywordsFast(
587char *(*BPY_python_app_help_text_fn)(
bool all) =
nullptr;
591 bpy_app_help_text_doc,
592 ".. staticmethod:: help_text(all=False)\n"
594 " Return the help text as a string.\n"
596 " :arg all: Return all arguments, "
597 "even those which aren't available for the current platform.\n"
598 " :type all: bool\n");
602 static const char *_keywords[] = {
"all",
nullptr};
603 static _PyArg_Parser _parser = {
611 if (!_PyArg_ParseTupleAndKeywordsFast(args, kwds, &_parser,
PyC_ParseBool, &all)) {
616 PyObject *result = PyUnicode_FromString(buf);
621#if (defined(__GNUC__) && !defined(__clang__))
622# pragma GCC diagnostic push
623# pragma GCC diagnostic ignored "-Wcast-function-type"
629 METH_VARARGS | METH_KEYWORDS | METH_STATIC,
630 bpy_app_is_job_running_doc},
633 METH_VARARGS | METH_KEYWORDS | METH_STATIC,
634 bpy_app_help_text_doc},
635 {
nullptr,
nullptr, 0,
nullptr},
638#if (defined(__GNUC__) && !defined(__clang__))
639# pragma GCC diagnostic pop
654 for (PyMethodDef *method =
bpy_app_methods; method->ml_name; method++) {
655 BLI_assert_msg(method->ml_flags & METH_STATIC,
"Only static methods make sense for 'bpy.app'");
656 PyObject *item = PyCFunction_New(method,
nullptr);
657 PyDict_SetItemString(
BlenderAppType.tp_dict, method->ml_name, item);
const char * BKE_appdir_program_path() ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL
void BKE_appdir_program_path_init(const char *argv0) ATTR_NONNULL(1)
#define BLENDER_VERSION_PATCH
const char * BKE_blender_version_string(void)
#define BLENDER_VERSION_CYCLE
#define BLENDER_FILE_SUBVERSION
#define BLENDER_FILE_VERSION
@ G_FLAG_SCRIPT_AUTOEXEC_FAIL_QUIET
@ G_FLAG_USERPREF_NO_SAVE_ON_EXIT
@ G_FLAG_SCRIPT_AUTOEXEC_FAIL
#define G_FLAG_INTERNET_OVERRIDE_PREF_ANY
@ G_DEBUG_DEPSGRAPH_PRETTY
@ G_DEBUG_DEPSGRAPH_BUILD
#define BLI_assert_msg(a, msg)
#define POINTER_AS_INT(i)
bool BPY_python_use_system_env_get()
ID and Library types, which are fundamental for SDNA.
Read Guarded memory(de)allocation.
int UI_icon_preview_to_render_size(enum eIconSizes size)
static int bpy_app_binary_path_set(PyObject *, PyObject *value, void *)
static PyObject * bpy_app_debug_value_get(PyObject *, void *)
static void py_struct_seq_getset_init()
static PyObject * bpy_app_autoexec_fail_message_get(PyObject *, void *)
static PyStructSequence_Field app_info_fields[]
static PyObject * bpy_app_tempdir_get(PyObject *, void *)
static int bpy_app_debug_value_set(PyObject *, PyObject *value, void *)
static PyObject * make_app_info()
static PyObject * bpy_app_preview_render_size_get(PyObject *, void *closure)
static int bpy_app_global_flag_set(PyObject *, PyObject *value, void *closure)
PyObject * BPY_app_struct()
#define SetBytesItem(str)
static PyGetSetDef bpy_app_getsets[]
static PyObject * bpy_app_global_flag_get(PyObject *, void *closure)
static int bpy_app_global_flag_set__only_disable(PyObject *, PyObject *value, void *closure)
ulong build_commit_timestamp
static int bpy_app_debug_set(PyObject *, PyObject *value, void *closure)
static PyObject * bpy_app_python_args_get(PyObject *, void *)
PyDoc_STRVAR(bpy_app_doc, "This module contains application values that remain unchanged during runtime.")
static PyObject * bpy_app_binary_path_get(PyObject *, void *)
char *(* BPY_python_app_help_text_fn)(bool all)
static void py_struct_seq_method_init()
static PyMethodDef bpy_app_methods[]
static PyStructSequence_Desc app_info_desc
static PyObject * bpy_app_driver_dict_get(PyObject *, void *)
static PyObject * bpy_app_debug_get(PyObject *, void *closure)
static PyTypeObject BlenderAppType
static PyObject * bpy_app_help_text(PyObject *, PyObject *args, PyObject *kwds)
static PyObject * bpy_app_is_job_running(PyObject *, PyObject *args, PyObject *kwds)
PyObject * BPY_app_alembic_struct()
PyObject * BPY_app_build_options_struct()
PyObject * BPY_app_ffmpeg_struct()
PyObject * BPY_app_handlers_struct()
PyObject * BPY_app_icons_module()
PyObject * BPY_app_ocio_struct()
PyObject * BPY_app_oiio_struct()
PyObject * BPY_app_opensubdiv_struct()
PyObject * BPY_app_openvdb_struct()
PyObject * BPY_app_sdl_struct()
PyObject * BPY_app_timers_module()
PyObject * BPY_app_translations_struct()
PyObject * BPY_app_usd_struct()
PyObject * bpy_pydriver_Dict
int bpy_pydriver_create_dict()
void MEM_freeN(void *vmemh)
int pyrna_enum_value_parse_string(PyObject *o, void *p)
int16_t PyC_Long_AsI16(PyObject *value)
PyObject * PyC_Err_SetString_Prefix(PyObject *exception_type_prefix, const char *str)
PyObject * PyC_UnicodeFromBytes(const char *str)
PyObject * PyC_Tuple_PackArray_String(const char **array, uint len)
int PyC_ParseBool(PyObject *o, void *p)
const char * PyC_UnicodeAsBytes(PyObject *py_str, PyObject **r_coerce)
PyObject * PyC_Tuple_Pack_I32(const blender::Span< int > values)
header-only compatibility defines.
#define PY_ARG_PARSER_HEAD_COMPAT()
const EnumPropertyItem rna_enum_wm_job_type_items[]
const EnumPropertyItem * items
void * BKE_tempdir_session
void WM_main_add_notifier(uint type, void *reference)
bool WM_jobs_has_running_type(const wmWindowManager *wm, int job_type)