Blender V5.0
bpy_props.cc File Reference
#include <algorithm>
#include <string>
#include <Python.h>
#include "RNA_types.hh"
#include "BLI_array.hh"
#include "BLI_listbase.h"
#include "BLI_utildefines.h"
#include "bpy_capi_utils.hh"
#include "bpy_props.hh"
#include "bpy_rna.hh"
#include "RNA_access.hh"
#include "RNA_define.hh"
#include "RNA_enum_types.hh"
#include "RNA_prototypes.hh"
#include "MEM_guardedalloc.h"
#include "DNA_ID.h"
#include "../generic/py_capi_rna.hh"
#include "../generic/py_capi_utils.hh"
#include "../generic/python_compat.hh"
#include "../generic/python_utildefines.hh"

Go to the source code of this file.

Classes

struct  BPyPropStore
struct  BPyPropGIL_RNAWritable_State
struct  BPyPropArrayLength
struct  BPy_PropIDParse
struct  BPy_EnumProperty_Parse_WithSRNA

Macros

#define PY_SSIZE_T_CLEAN
#define ASSIGN_STATIC(_name)
Shared Enums & Doc-Strings
#define BPY_PROPDEF_OPTIONS_DOC
#define BPY_PROPDEF_OPTIONS_ENUM_DOC
#define BPY_PROPDEF_OPTIONS_OVERRIDE_DOC
#define BPY_PROPDEF_OPTIONS_OVERRIDE_COLLECTION_DOC
#define BPY_PROPDEF_SUBTYPE_STRING_DOC
#define BPY_PROPDEF_SUBTYPE_NUMBER_DOC
#define BPY_PROPDEF_SUBTYPE_NUMBER_ARRAY_DOC
Shared Method Doc-Strings
#define BPY_PROPDEF_NAME_DOC
#define BPY_PROPDEF_DESC_DOC
#define BPY_PROPDEF_CTXT_DOC
#define BPY_PROPDEF_UNIT_DOC
#define BPY_PROPDEF_NUM_MIN_DOC_(ty)
#define BPY_PROPDEF_NUM_MAX_DOC_(ty)
#define BPY_PROPDEF_NUM_MINMAX_DOC(ty)
#define BPY_PROPDEF_NUM_SOFT_MIN_DOC_(ty)
#define BPY_PROPDEF_NUM_SOFT_MAX_DOC_(ty)
#define BPY_PROPDEF_NUM_SOFT_MINMAX_DOC(ty)
#define BPY_PROPDEF_VECSIZE_DOC
#define BPY_PROPDEF_INT_STEP_DOC
#define BPY_PROPDEF_FLOAT_STEP_DOC
#define BPY_PROPDEF_FLOAT_PREC_DOC
#define BPY_PROPDEF_UPDATE_DOC
#define BPY_PROPDEF_POLL_DOC
#define BPY_PROPDEF_GET_DOC(ty)
#define BPY_PROPDEF_SET_DOC(ty)
#define BPY_PROPDEF_GET_TRANSFORM_DOC(ty)
#define BPY_PROPDEF_SET_TRANSFORM_DOC(ty)
#define BPY_PROPDEF_SEARCH_DOC
#define BPY_PROPDEF_POINTER_TYPE_DOC
#define BPY_PROPDEF_COLLECTION_TYPE_DOC
#define BPY_PROPDEF_TAGS_DOC

Functions

Multi-Dimensional Property Utilities
static int bpy_prop_array_length_parse (PyObject *o, void *p)
static int bpy_prop_array_from_py_with_dims (void *values, size_t values_elem_size, PyObject *py_values, const BPyPropArrayLength *array_len_info, const PyTypeObject *type, const char *error_str)
static PyObject * bpy_py_object_from_prop_array_with_dims (const void *values, const BPyPropArrayLength &array_len_info, const PyTypeObject &type)
static bool bpy_prop_array_is_matrix_compatible_ex (int subtype, const BPyPropArrayLength *array_len_info)
static bool bpy_prop_array_is_matrix_compatible (PropertyRNA *prop, const BPyPropArrayLength *array_len_info)
static void bpy_prop_array_matrix_swap_row_column_vn_vn (float *values_dst, const float *values_src, const BPyPropArrayLength *array_len_info)
static void bpy_prop_array_matrix_swap_row_column_vn (float *values, const BPyPropArrayLength *array_len_info)
Shared Property Callbacks

Unique data is accessed via RNA_property_py_data_get

static void bpy_prop_update_fn (bContext *C, PointerRNA *ptr, PropertyRNA *prop)
Boolean Property Callbacks
static bool bpy_prop_boolean_get_fn (PointerRNA *ptr, PropertyRNA *prop)
static bool bpy_prop_boolean_get_transform_fn (PointerRNA *ptr, PropertyRNA *prop, bool curr_value, bool is_set)
static void bpy_prop_boolean_set_fn (PointerRNA *ptr, PropertyRNA *prop, bool value)
static bool bpy_prop_boolean_set_transform_fn (PointerRNA *ptr, PropertyRNA *prop, bool new_value, bool curr_value, bool is_set)
static void bpy_prop_boolean_array_from_callback_or_error (PyObject *bool_array_obj, const BPyPropArrayLength &array_len_info, PyObject *py_func, bool *r_values)
static void bpy_prop_boolean_array_get_fn (PointerRNA *ptr, PropertyRNA *prop, bool *values)
static void bpy_prop_boolean_array_get_transform_fn (PointerRNA *ptr, PropertyRNA *prop, const bool *curr_values, bool is_set, bool *r_values)
static void bpy_prop_boolean_array_set_fn (PointerRNA *ptr, PropertyRNA *prop, const bool *values)
static void bpy_prop_boolean_array_set_transform_fn (PointerRNA *ptr, PropertyRNA *prop, const bool *new_values, const bool *curr_values, bool is_set, bool *r_final_values)
Int Property Callbacks
static int bpy_prop_int_get_fn (PointerRNA *ptr, PropertyRNA *prop)
static int bpy_prop_int_get_transform_fn (PointerRNA *ptr, PropertyRNA *prop, int curr_value, bool is_set)
static void bpy_prop_int_set_fn (PointerRNA *ptr, PropertyRNA *prop, int value)
static int bpy_prop_int_set_transform_fn (PointerRNA *ptr, PropertyRNA *prop, int new_value, int curr_value, bool is_set)
static void bpy_prop_int_array_from_callback_or_error (PyObject *int_array_obj, const BPyPropArrayLength &array_len_info, PyObject *py_func, int *r_values)
static void bpy_prop_int_array_get_fn (PointerRNA *ptr, PropertyRNA *prop, int *values)
static void bpy_prop_int_array_get_transform_fn (PointerRNA *ptr, PropertyRNA *prop, const int *curr_values, bool is_set, int *r_values)
static void bpy_prop_int_array_set_fn (PointerRNA *ptr, PropertyRNA *prop, const int *values)
static void bpy_prop_int_array_set_transform_fn (PointerRNA *ptr, PropertyRNA *prop, const int *new_values, const int *curr_values, bool is_set, int *r_final_values)
Float Property Callbacks
static float bpy_prop_float_get_fn (PointerRNA *ptr, PropertyRNA *prop)
static float bpy_prop_float_get_transform_fn (PointerRNA *ptr, PropertyRNA *prop, float curr_value, bool is_set)
static void bpy_prop_float_set_fn (PointerRNA *ptr, PropertyRNA *prop, float value)
static float bpy_prop_float_set_transform_fn (PointerRNA *ptr, PropertyRNA *prop, float new_value, float curr_value, bool is_set)
static void bpy_prop_float_array_from_callback_or_error (PropertyRNA *prop, PyObject *float_array_obj, const BPyPropArrayLength &array_len_info, PyObject *py_func, const bool do_matrix_row_col_swap, float *r_values)
static void bpy_prop_float_array_get_fn (PointerRNA *ptr, PropertyRNA *prop, float *values)
static void bpy_prop_float_array_get_transform_fn (PointerRNA *ptr, PropertyRNA *prop, const float *curr_values, bool is_set, float *r_values)
static void bpy_prop_float_array_set_fn (PointerRNA *ptr, PropertyRNA *prop, const float *values)
static void bpy_prop_float_array_set_transform_fn (PointerRNA *ptr, PropertyRNA *prop, const float *new_values, const float *curr_values, bool is_set, float *r_final_values)
String Property Callbacks
static std::optional< std::string > bpy_prop_string_from_callback_or_error (PyObject *str_obj, const size_t max_length, PyObject *py_func)
static std::string bpy_prop_string_get_locked_fn (PointerRNA *ptr, PropertyRNA *prop)
static std::string bpy_prop_string_get_fn (PointerRNA *ptr, PropertyRNA *prop)
static std::string bpy_prop_string_get_transform_locked_fn (PointerRNA *ptr, PropertyRNA *prop, const std::string &curr_value, bool is_set)
static std::string bpy_prop_string_get_transform_fn (PointerRNA *ptr, PropertyRNA *prop, const std::string &curr_value, bool is_set)
static int bpy_prop_string_length_fn (PointerRNA *ptr, PropertyRNA *prop)
static void bpy_prop_string_set_fn (PointerRNA *ptr, PropertyRNA *prop, const std::string &value)
static std::string bpy_prop_string_set_transform_fn (PointerRNA *ptr, PropertyRNA *prop, const std::string &new_value, const std::string &curr_value, bool is_set)
static bool bpy_prop_string_visit_fn_call (PyObject *py_func, PyObject *item, blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn)
static void bpy_prop_string_visit_for_search_fn (const bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *edit_text, blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn)
Pointer Property Callbacks
static bool bpy_prop_pointer_poll_fn (PointerRNA *self, PointerRNA candidate, PropertyRNA *prop)
Enum Property Callbacks
static int bpy_prop_enum_get_fn (PointerRNA *ptr, PropertyRNA *prop)
static int bpy_prop_enum_get_transform_fn (PointerRNA *ptr, PropertyRNA *prop, int curr_value, bool is_set)
static void bpy_prop_enum_set_fn (PointerRNA *ptr, PropertyRNA *prop, int value)
static int bpy_prop_enum_set_transform_fn (PointerRNA *ptr, PropertyRNA *prop, int new_value, int curr_value, bool is_set)
static bool py_long_as_int (PyObject *py_long, int *r_int)
static int icon_id_from_name (const char *name)
static const EnumPropertyItemenum_items_from_py (PyObject *seq_fast, const bool is_enum_flag, PyObject *default_py, int *r_default_value)
static const EnumPropertyItembpy_prop_enum_itemf_fn (bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free)
static int bpy_prop_callback_check (PyObject *py_func, const char *keyword, int argcount)
Shared Callback Assignment
static void bpy_prop_callback_assign_update (PropertyRNA *prop, PyObject *update_fn)
static void bpy_prop_callback_assign_pointer (PropertyRNA *prop, PyObject *poll_fn)
static bool bpy_prop_callback_assign_boolean (PropertyRNA *prop, PyObject *get_fn, PyObject *set_fn, PyObject *get_transform_fn, PyObject *set_transform_fn)
static bool bpy_prop_callback_assign_boolean_array (PropertyRNA *prop, PyObject *get_fn, PyObject *set_fn, PyObject *get_transform_fn, PyObject *set_transform_fn)
static bool bpy_prop_callback_assign_int (PropertyRNA *prop, PyObject *get_fn, PyObject *set_fn, PyObject *get_transform_fn, PyObject *set_transform_fn)
static void bpy_prop_callback_assign_int_array (PropertyRNA *prop, PyObject *get_fn, PyObject *set_fn, PyObject *get_transform_fn, PyObject *set_transform_fn)
static bool bpy_prop_callback_assign_float (PropertyRNA *prop, PyObject *get_fn, PyObject *set_fn, PyObject *get_transform_fn, PyObject *set_transform_fn)
static void bpy_prop_callback_assign_float_array (PropertyRNA *prop, PyObject *get_fn, PyObject *set_fn, PyObject *get_transform_fn, PyObject *set_transform_fn)
static bool bpy_prop_callback_assign_string (PropertyRNA *prop, PyObject *get_fn, PyObject *set_fn, PyObject *get_transform_fn, PyObject *set_transform_fn, PyObject *search_fn, const eStringPropertySearchFlag search_flag)
static bool bpy_prop_callback_assign_enum (PropertyRNA *prop, PyObject *get_fn, PyObject *set_fn, PyObject *itemf_fn, PyObject *get_transform_fn, PyObject *set_transform_fn)
Shared Method Utilities
static StructRNAbpy_prop_deferred_data_or_srna (PyObject *self, PyObject *args, PyObject *kw, PyObject *method_object, PyObject **r_deferred_result)
static int bpy_prop_arg_parse_id (PyObject *o, void *p)
static int bpy_prop_arg_parse_tag_defines (PyObject *o, void *p)
Module Methods

Functions that register RNA.

Note
The self argument is nullptr when called from Python, but being abused from C so we can pass the srna along. This isn't incorrect since its a Python object - but be careful.
 PyDoc_STRVAR (BPy_BoolProperty_doc, ".. function:: BoolProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=False, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new boolean property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_NUMBER_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("bool") BPY_PROPDEF_SET_DOC("bool") BPY_PROPDEF_GET_TRANSFORM_DOC("bool") BPY_PROPDEF_SET_TRANSFORM_DOC("bool"))
static PyObject * BPy_BoolProperty (PyObject *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (BPy_BoolVectorProperty_doc, ".. function:: BoolVectorProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=(False, False, False), " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "size=3, " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new vector boolean property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC " :arg default: sequence of booleans the length of *size*.\n" " :type default: Sequence[bool]\n" BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_NUMBER_ARRAY_DOC BPY_PROPDEF_VECSIZE_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("Sequence[bool]") BPY_PROPDEF_SET_TRANSFORM_DOC("Sequence[bool]"))
static PyObject * BPy_BoolVectorProperty (PyObject *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (BPy_IntProperty_doc, ".. function:: IntProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=0, " "min=-2**31, max=2**31-1, " "soft_min=-2**31, soft_max=2**31-1, " "step=1, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new int property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC BPY_PROPDEF_NUM_MINMAX_DOC("int") BPY_PROPDEF_NUM_SOFT_MINMAX_DOC("int") BPY_PROPDEF_INT_STEP_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_NUMBER_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("int") BPY_PROPDEF_SET_DOC("int") BPY_PROPDEF_GET_TRANSFORM_DOC("int") BPY_PROPDEF_SET_TRANSFORM_DOC("int"))
static PyObject * BPy_IntProperty (PyObject *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (BPy_IntVectorProperty_doc, ".. function:: IntVectorProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=(0, 0, 0), min=-2**31, max=2**31-1, " "soft_min=-2**31, " "soft_max=2**31-1, " "step=1, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "size=3, " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new vector int property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC " :arg default: sequence of ints the length of *size*.\n" " :type default: Sequence[int]\n" BPY_PROPDEF_NUM_MINMAX_DOC("int") BPY_PROPDEF_INT_STEP_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_NUMBER_ARRAY_DOC BPY_PROPDEF_VECSIZE_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("Sequence[int]") BPY_PROPDEF_SET_TRANSFORM_DOC("Sequence[int]"))
static PyObject * BPy_IntVectorProperty (PyObject *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (BPy_FloatProperty_doc, ".. function:: FloatProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=0.0, " "min=-3.402823e+38, max=3.402823e+38, " "soft_min=-3.402823e+38, soft_max=3.402823e+38, " "step=3, " "precision=2, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "unit='NONE', " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new float (single precision) property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC BPY_PROPDEF_NUM_MINMAX_DOC("float") BPY_PROPDEF_NUM_SOFT_MINMAX_DOC("float") BPY_PROPDEF_FLOAT_STEP_DOC BPY_PROPDEF_FLOAT_PREC_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_NUMBER_DOC BPY_PROPDEF_UNIT_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("float") BPY_PROPDEF_SET_DOC("float") BPY_PROPDEF_GET_TRANSFORM_DOC("float") BPY_PROPDEF_SET_TRANSFORM_DOC("float"))
static PyObject * BPy_FloatProperty (PyObject *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (BPy_FloatVectorProperty_doc, ".. function:: FloatVectorProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=(0.0, 0.0, 0.0), " "min=sys.float_info.min, max=sys.float_info.max, " "soft_min=sys.float_info.min, soft_max=sys.float_info.max, " "step=3, " "precision=2, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "unit='NONE', " "size=3, " "update=None, " "get=None, " "set=None)\n" "\n" " Returns a new vector float property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC " :arg default: Sequence of floats the length of *size*.\n" " :type default: Sequence[float]\n" BPY_PROPDEF_NUM_MINMAX_DOC("float") BPY_PROPDEF_NUM_SOFT_MINMAX_DOC("float") BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_FLOAT_STEP_DOC BPY_PROPDEF_FLOAT_PREC_DOC BPY_PROPDEF_SUBTYPE_NUMBER_ARRAY_DOC BPY_PROPDEF_UNIT_DOC BPY_PROPDEF_VECSIZE_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("Sequence[float]") BPY_PROPDEF_SET_TRANSFORM_DOC("Sequence[float]"))
static PyObject * BPy_FloatVectorProperty (PyObject *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (BPy_StringProperty_doc, ".. function:: StringProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=\"\", " "maxlen=0, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None, " "search=None, " "search_options={'SUGGESTION'})\n" "\n" " Returns a new string property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC " :arg default: initializer string.\n" " :type default: str\n" " :arg maxlen: maximum length of the string.\n" " :type maxlen: int\n" BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_STRING_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("str") BPY_PROPDEF_SET_DOC("str") BPY_PROPDEF_GET_TRANSFORM_DOC("str") BPY_PROPDEF_SET_TRANSFORM_DOC("str") BPY_PROPDEF_SEARCH_DOC)
static PyObject * BPy_StringProperty (PyObject *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (BPy_EnumProperty_doc, ".. function:: EnumProperty(" "items, " "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=None, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new enumerator property definition.\n" "\n" " :arg items: sequence of enum items formatted:\n" " ``[(identifier, name, description, icon, number), ...]``.\n" "\n" " The first three elements of the tuples are mandatory.\n" "\n" " :identifier: The identifier is used for Python access.\n" " An empty identifier means that the item is a separator\n" " :name: Name for the interface.\n" " :description: Used for documentation and tooltips.\n" " :icon: An icon string identifier or integer icon value\n" " (e.g. returned by :class:`bpy.types.UILayout.icon`)\n" " :number: Unique value used as the identifier for this item (stored in file data).\n" " Use when the identifier may need to change. If the *ENUM_FLAG* option is used,\n" " the values are bit-masks and should be powers of two.\n" "\n" " When an item only contains 4 items they define ``(identifier, name, description, " "number)``.\n" "\n" " Separators may be added using either None (nameless separator),\n" " or a regular item tuple with an empty identifier string, in which case the name,\n" " if non-empty, will be displayed in the UI above the separator line." "\n" " For dynamic values a callback can be passed which returns a list in\n" " the same format as the static list.\n" " This function must take 2 arguments ``(self, context)``, **context may be None**.\n" "\n" " .. warning::\n" "\n" " There is a known bug with using a callback,\n" " Python must keep a reference to the strings returned by the callback or Blender\n" " will misbehave or even crash." "\n" " :type items: Iterable[" "tuple[str, str, str] | " "tuple[str, str, str, int] | " "tuple[str, str, str, int, int] | " "None] | " "Callable[[:class:`bpy.types.bpy_struct`, :class:`bpy.types.Context` | None], " "Iterable[" "tuple[str, str, str] | " "tuple[str, str, str, int] | " "tuple[str, str, str, int, int] | " "None]" "]\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC " :arg default: The default value for this enum, a string from the identifiers used in " "*items*, or integer matching an item number.\n" " If the *ENUM_FLAG* option is used this must be a set of such string identifiers " "instead.\n" " WARNING: Strings cannot be specified for dynamic enums\n" " (i.e. if a callback function is given as *items* parameter).\n" " :type default: str | int | set[str]\n" BPY_PROPDEF_OPTIONS_ENUM_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("int") BPY_PROPDEF_SET_DOC("int") BPY_PROPDEF_GET_TRANSFORM_DOC("int") BPY_PROPDEF_SET_TRANSFORM_DOC("int"))
static PyObject * BPy_EnumProperty (PyObject *self, PyObject *args, PyObject *kw)
StructRNApointer_type_from_py (PyObject *value, const char *error_prefix)
 PyDoc_STRVAR (BPy_PointerProperty_doc, ".. function:: PointerProperty(" "type, " "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "poll=None, " "update=None)\n" "\n" " Returns a new pointer property definition.\n" "\n" BPY_PROPDEF_POINTER_TYPE_DOC BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_POLL_DOC BPY_PROPDEF_UPDATE_DOC "\n" ".. note:: Pointer properties do not support storing references to embedded IDs " "(e.g. :class:`bpy.types.Scene.collection`, :class:`bpy.types.Material.node_tree`).\n" " These should exclusively be referenced and accessed through their owner ID " "(e.g. the scene or material).\n")
PyObject * BPy_PointerProperty (PyObject *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (BPy_CollectionProperty_doc, ".. function:: CollectionProperty(" "type, " "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "options={'ANIMATABLE'}, " "override=set(), " "tags=set())\n" "\n" " Returns a new collection property definition.\n" "\n" BPY_PROPDEF_COLLECTION_TYPE_DOC BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_COLLECTION_DOC BPY_PROPDEF_TAGS_DOC)
PyObject * BPy_CollectionProperty (PyObject *self, PyObject *args, PyObject *kw)
 PyDoc_STRVAR (BPy_RemoveProperty_doc, ".. function:: RemoveProperty(cls, attr)\n" "\n" " Removes a dynamically defined property.\n" "\n" " :arg cls: The class containing the property (must be a positional argument).\n" " :type cls: type\n" " :arg attr: Property name (must be passed as a keyword).\n" " :type attr: str\n" "\n" ".. note:: Typically this function doesn't need to be accessed directly.\n" " Instead use ``del cls.attr``\n")
static PyObject * BPy_RemoveProperty (PyObject *self, PyObject *args, PyObject *kw)

Python Property Storage API

Functionality needed to use Python native callbacks from generic C RNA callbacks.

#define BPY_PROP_STORE_PY_DATA_SIZE   (sizeof(BPyPropStore::py_data) / sizeof(PyObject *))
#define ASSIGN_PYOBJECT_INCREF(a, b)
static ListBase g_bpy_prop_store_list = {nullptr, nullptr}
static BPyPropStorebpy_prop_py_data_ensure (PropertyRNA *prop)
static void bpy_prop_py_data_remove (PropertyRNA *prop)

Deferred Property Type

Operators and classes use this so it can store the arguments given but defer running it until the operator runs where these values are used to setup the default arguments for that operator instance.

static PyGetSetDef bpy_prop_deferred_getset []
PyTypeObject bpy_prop_deferred_Type
static void bpy_prop_deferred_dealloc (BPy_PropDeferred *self)
static int bpy_prop_deferred_traverse (BPy_PropDeferred *self, visitproc visit, void *arg)
static int bpy_prop_deferred_clear (BPy_PropDeferred *self)
static PyObject * bpy_prop_deferred_repr (BPy_PropDeferred *self)
static PyObject * bpy_prop_deferred_call (BPy_PropDeferred *, PyObject *, PyObject *)
static PyObject * bpy_prop_deferred_function_get (BPy_PropDeferred *self, void *)
static PyObject * bpy_prop_deferred_keywords_get (BPy_PropDeferred *self, void *)
 PyDoc_STRVAR (bpy_prop_deferred_doc, "Intermediate storage for properties before registration.\n" "\n" ".. note::\n" "\n" " This is not part of the stable API and may change between releases.\n")
static PyObject * bpy_prop_deferred_data_CreatePyObject (PyObject *fn, PyObject *kw)

Shared Property Utilities

static PyObject * pymeth_BoolProperty = nullptr
static PyObject * pymeth_BoolVectorProperty = nullptr
static PyObject * pymeth_IntProperty = nullptr
static PyObject * pymeth_IntVectorProperty = nullptr
static PyObject * pymeth_FloatProperty = nullptr
static PyObject * pymeth_FloatVectorProperty = nullptr
static PyObject * pymeth_StringProperty = nullptr
static PyObject * pymeth_EnumProperty = nullptr
static PyObject * pymeth_PointerProperty = nullptr
static PyObject * pymeth_CollectionProperty = nullptr
static PyObject * pymeth_RemoveProperty = nullptr
static PyObject * pyrna_struct_as_instance (PointerRNA *ptr)
static void bpy_prop_assign_flag (PropertyRNA *prop, int flag)
static void bpy_prop_assign_flag_override (PropertyRNA *prop, const int flag_override)
static BPyPropGIL_RNAWritable_State bpy_prop_gil_rna_writable_begin ()
static void bpy_prop_gil_rna_writable_end (const BPyPropGIL_RNAWritable_State &prop_state)

Main Module <tt>bpy.props</tt>

static PyMethodDef props_methods []
static PyModuleDef props_module
static int props_visit (PyObject *, visitproc visit, void *arg)
static int props_clear (PyObject *)
 PyDoc_STRVAR (props_module_doc, "This module defines properties to extend Blender's internal data. The result of these " "functions" " is used to assign properties to classes registered with Blender and can't be used " "directly.\n" "\n" ".. note:: All parameters to these functions must be passed as keywords.\n")
PyObject * BPY_rna_props ()
void BPY_rna_props_clear_all ()

Detailed Description

This file defines 'bpy.props' module used so scripts can define their own rna properties for use with python operators or adding new properties to existing blender types.

Definition in file bpy_props.cc.

Macro Definition Documentation

◆ ASSIGN_PYOBJECT_INCREF

◆ ASSIGN_STATIC

#define ASSIGN_STATIC ( _name)
Value:
pymeth_##_name = PyDict_GetItemString(submodule_dict, #_name)

Referenced by BPY_rna_props().

◆ BPY_PROP_STORE_PY_DATA_SIZE

#define BPY_PROP_STORE_PY_DATA_SIZE   (sizeof(BPyPropStore::py_data) / sizeof(PyObject *))

Definition at line 179 of file bpy_props.cc.

Referenced by bpy_prop_py_data_remove(), props_clear(), and props_visit().

◆ BPY_PROPDEF_COLLECTION_TYPE_DOC

#define BPY_PROPDEF_COLLECTION_TYPE_DOC
Value:
" :arg type: A subclass of a property group.\n" \
" :type type: type[:class:`bpy.types.PropertyGroup`]\n"

Definition at line 3492 of file bpy_props.cc.

Referenced by PyDoc_STRVAR().

◆ BPY_PROPDEF_CTXT_DOC

#define BPY_PROPDEF_CTXT_DOC
Value:
" :arg translation_context: Text used as context to disambiguate translations.\n" \
" :type translation_context: str\n"

Definition at line 3351 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_DESC_DOC

#define BPY_PROPDEF_DESC_DOC
Value:
" :arg description: Text used for the tooltip and api documentation.\n" \
" :type description: str\n"

Definition at line 3347 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_FLOAT_PREC_DOC

#define BPY_PROPDEF_FLOAT_PREC_DOC
Value:
" :arg precision: Maximum number of decimal digits to display, in [0, 6]. Fraction is " \
"automatically hidden for exact integer values of fields with unit 'NONE' or 'TIME' (frame " \
"count) and step divisible by 100.\n" \
" :type precision: int\n"

Definition at line 3399 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_FLOAT_STEP_DOC

#define BPY_PROPDEF_FLOAT_STEP_DOC
Value:
" :arg step: Step of increment/decrement in UI, in [1, 100], defaults to 3 (WARNING: actual " \
"value is /100).\n" \
" :type step: int\n"

Definition at line 3394 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_GET_DOC

#define BPY_PROPDEF_GET_DOC ( ty)
Value:
" :arg get: Function to be called when this value is 'read', and the default,\n" \
" system-defined storage is not used for this property.\n" \
" This function must take 1 value (self) and return the value of the property.\n" \
"\n" \
" .. note:: Defining this callback without a matching ``set`` one will make " \
"the property read-only (even if ``READ_ONLY`` option is not set)." \
"\n" \
" :type get: Callable[[:class:`bpy.types.bpy_struct`], " ty "]\n"

Definition at line 3422 of file bpy_props.cc.

◆ BPY_PROPDEF_GET_TRANSFORM_DOC

#define BPY_PROPDEF_GET_TRANSFORM_DOC ( ty)
Value:
" :arg get_transform: Function to be called when this value is 'read',\n" \
" if some additional processing must be performed on the stored value.\n" \
" This function must take three arguments (self, the stored value,\n" \
" and a boolean indicating if the property is currently set),\n" \
" and return the final, transformed value of the property.\n" \
"\n" \
" .. note:: The callback is responsible to ensure that value limits of the property " \
"(min/max, length...) are respected. Otherwise a ValueError exception is raised.\n" \
"\n" \
" :type get_transform: Callable[[:class:`bpy.types.bpy_struct`, " ty ", bool], " ty "]\n"

Definition at line 3441 of file bpy_props.cc.

◆ BPY_PROPDEF_INT_STEP_DOC

#define BPY_PROPDEF_INT_STEP_DOC
Value:
" :arg step: Step of increment/decrement in UI, in [1, 100], defaults to 1 (WARNING: unused " \
"currently!).\n" \
" :type step: int\n"

Definition at line 3389 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_NAME_DOC

#define BPY_PROPDEF_NAME_DOC
Value:
" :arg name: Name used in the user interface.\n" \
" :type name: str\n"

Definition at line 3343 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_NUM_MAX_DOC_

#define BPY_PROPDEF_NUM_MAX_DOC_ ( ty)
Value:
" :arg max: Hard maximum, trying to assign a value above will silently assign this maximum " \
"instead.\n" \
" :type max: " ty "\n"

Definition at line 3364 of file bpy_props.cc.

◆ BPY_PROPDEF_NUM_MIN_DOC_

#define BPY_PROPDEF_NUM_MIN_DOC_ ( ty)
Value:
" :arg min: Hard minimum, trying to assign a value below will silently assign this minimum " \
"instead.\n" \
" :type min: " ty "\n"

Definition at line 3359 of file bpy_props.cc.

◆ BPY_PROPDEF_NUM_MINMAX_DOC

#define BPY_PROPDEF_NUM_MINMAX_DOC ( ty)
Value:
#define BPY_PROPDEF_NUM_MIN_DOC_(ty)
#define BPY_PROPDEF_NUM_MAX_DOC_(ty)

Definition at line 3369 of file bpy_props.cc.

◆ BPY_PROPDEF_NUM_SOFT_MAX_DOC_

#define BPY_PROPDEF_NUM_SOFT_MAX_DOC_ ( ty)
Value:
" :arg soft_max: Soft maximum (<= *max*), " \
"user won't be able to drag the widget above this value in the UI.\n" \
" :type soft_max: " ty "\n"

Definition at line 3376 of file bpy_props.cc.

◆ BPY_PROPDEF_NUM_SOFT_MIN_DOC_

#define BPY_PROPDEF_NUM_SOFT_MIN_DOC_ ( ty)
Value:
" :arg soft_min: Soft minimum (>= *min*), " \
"user won't be able to drag the widget below this value in the UI.\n" \
" :type soft_min: " ty "\n"

Definition at line 3371 of file bpy_props.cc.

◆ BPY_PROPDEF_NUM_SOFT_MINMAX_DOC

#define BPY_PROPDEF_NUM_SOFT_MINMAX_DOC ( ty)
Value:
#define BPY_PROPDEF_NUM_SOFT_MAX_DOC_(ty)
#define BPY_PROPDEF_NUM_SOFT_MIN_DOC_(ty)

Definition at line 3381 of file bpy_props.cc.

◆ BPY_PROPDEF_OPTIONS_DOC

#define BPY_PROPDEF_OPTIONS_DOC
Value:
" :arg options: Enumerator in :ref:`rna_enum_property_flag_items`.\n" \
" :type options: set[str]\n"

Definition at line 56 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_OPTIONS_ENUM_DOC

#define BPY_PROPDEF_OPTIONS_ENUM_DOC
Value:
" :arg options: Enumerator in :ref:`rna_enum_property_flag_enum_items`.\n" \
" :type options: set[str]\n"

Definition at line 60 of file bpy_props.cc.

Referenced by PyDoc_STRVAR().

◆ BPY_PROPDEF_OPTIONS_OVERRIDE_COLLECTION_DOC

#define BPY_PROPDEF_OPTIONS_OVERRIDE_COLLECTION_DOC
Value:
" :arg override: Enumerator in :ref:`rna_enum_property_override_flag_collection_items`.\n" \
" :type override: set[str]\n"

Definition at line 68 of file bpy_props.cc.

Referenced by PyDoc_STRVAR().

◆ BPY_PROPDEF_OPTIONS_OVERRIDE_DOC

#define BPY_PROPDEF_OPTIONS_OVERRIDE_DOC
Value:
" :arg override: Enumerator in :ref:`rna_enum_property_override_flag_items`.\n" \
" :type override: set[str]\n"

Definition at line 64 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_POINTER_TYPE_DOC

#define BPY_PROPDEF_POINTER_TYPE_DOC
Value:
" :arg type: A subclass of a property group or ID types.\n" \
" :type type: type[:class:`bpy.types.PropertyGroup` | :class:`bpy.types.ID`]\n"

Definition at line 3488 of file bpy_props.cc.

Referenced by PyDoc_STRVAR().

◆ BPY_PROPDEF_POLL_DOC

#define BPY_PROPDEF_POLL_DOC
Value:
" :arg poll: Function that determines whether an item is valid for this property.\n" \
" The function must take 2 values (self, object) and return a boolean.\n" \
"\n" \
" .. note:: The return value will be checked only when assigning an item from the UI, " \
"but it is still possible to assign an \"invalid\" item to the property directly.\n" \
"\n" \
" :type poll: Callable[[:class:`bpy.types.bpy_struct`, :class:`bpy.types.ID`], " \
"bool]\n"

Definition at line 3412 of file bpy_props.cc.

Referenced by PyDoc_STRVAR().

◆ BPY_PROPDEF_SEARCH_DOC

#define BPY_PROPDEF_SEARCH_DOC
Value:
" :arg search: Function to be called to show candidates for this string (shown in the UI).\n" \
" This function must take 3 values (self, context, edit_text)\n" \
" and return a sequence, iterator or generator where each item must be:\n" \
"\n" \
" - A single string (representing a candidate to display).\n" \
" - A tuple-pair of strings, where the first is a candidate and the second\n" \
" is additional information about the candidate.\n" \
" :type search: Callable[[:class:`bpy.types.bpy_struct`, :class:`bpy.types.Context`, str], " \
"Iterable[str | tuple[str, str]]" \
"]\n" \
" :arg search_options: Set of strings in:\n" \
"\n" \
" - 'SORT' sorts the resulting items.\n" \
" - 'SUGGESTION' lets the user enter values not found in search candidates.\n" \
" **WARNING** disabling this flag causes the search callback to run on redraw,\n" \
" so only disable this flag if it's not likely to cause performance issues.\n" \
"\n" \
" :type search_options: set[str]\n"

Definition at line 3468 of file bpy_props.cc.

Referenced by PyDoc_STRVAR().

◆ BPY_PROPDEF_SET_DOC

#define BPY_PROPDEF_SET_DOC ( ty)
Value:
" :arg set: Function to be called when this value is 'written', and the default,\n" \
" system-defined storage is not used for this property.\n" \
" This function must take 2 values (self, value) and return None.\n" \
"\n" \
" .. note:: Defining this callback without a matching ``get`` one is invalid." \
"\n" \
" :type set: Callable[[:class:`bpy.types.bpy_struct`, " ty "], None]\n"

Definition at line 3432 of file bpy_props.cc.

◆ BPY_PROPDEF_SET_TRANSFORM_DOC

#define BPY_PROPDEF_SET_TRANSFORM_DOC ( ty)
Value:
" :arg set_transform: Function to be called when this value is 'written',\n" \
" if some additional processing must be performed on the given value before storing it.\n" \
" This function must take four arguments (self, the given value to store,\n" \
" the currently stored value ('raw' value, without any ``get_transform`` applied to " \
"it),\n" \
" and a boolean indicating if the property is currently set),\n" \
" and return the final, transformed value of the property.\n" \
"\n" \
" .. note:: The callback is responsible to ensure that value limits (min/max, " \
"length...) are respected. Otherwise a ValueError exception is raised.\n" \
"\n" \
" :type set_transform: " \
"Callable[[:class:`bpy.types.bpy_struct`, " ty ", " ty ", bool], " ty "]\n"

Definition at line 3453 of file bpy_props.cc.

◆ BPY_PROPDEF_SUBTYPE_NUMBER_ARRAY_DOC

#define BPY_PROPDEF_SUBTYPE_NUMBER_ARRAY_DOC
Value:
" :arg subtype: Enumerator in :ref:`rna_enum_property_subtype_number_array_items`.\n" \
" :type subtype: str\n"

Definition at line 80 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_SUBTYPE_NUMBER_DOC

#define BPY_PROPDEF_SUBTYPE_NUMBER_DOC
Value:
" :arg subtype: Enumerator in :ref:`rna_enum_property_subtype_number_items`.\n" \
" :type subtype: str\n"

Definition at line 76 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_SUBTYPE_STRING_DOC

#define BPY_PROPDEF_SUBTYPE_STRING_DOC
Value:
" :arg subtype: Enumerator in :ref:`rna_enum_property_subtype_string_items`.\n" \
" :type subtype: str\n"

Definition at line 72 of file bpy_props.cc.

Referenced by PyDoc_STRVAR().

◆ BPY_PROPDEF_TAGS_DOC

#define BPY_PROPDEF_TAGS_DOC
Value:
" :arg tags: Enumerator of tags that are defined by parent class.\n" \
" :type tags: set[str]\n"

Definition at line 3496 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_UNIT_DOC

#define BPY_PROPDEF_UNIT_DOC
Value:
" :arg unit: Enumerator in :ref:`rna_enum_property_unit_items`.\n" \
" :type unit: str\n"

Definition at line 3355 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_UPDATE_DOC

#define BPY_PROPDEF_UPDATE_DOC
Value:
" :arg update: Function to be called when this value is modified,\n" \
" This function must take 2 values (self, context) and return None.\n" \
" *Warning* there are no safety checks to avoid infinite recursion.\n" \
" :type update: Callable[[:class:`bpy.types.bpy_struct`, :class:`bpy.types.Context`], " \
"None]\n"

Definition at line 3405 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ BPY_PROPDEF_VECSIZE_DOC

#define BPY_PROPDEF_VECSIZE_DOC
Value:
" :arg size: Vector dimensions in [1, " STRINGIFY(PYRNA_STACK_ARRAY) "]. " \
"An int sequence can be used to define multi-dimension arrays.\n" \
" :type size: int | Sequence[int]\n"
#define STRINGIFY(x)
#define PYRNA_STACK_ARRAY
Definition bpy_props.hh:39

Definition at line 3384 of file bpy_props.cc.

Referenced by PyDoc_STRVAR(), PyDoc_STRVAR(), and PyDoc_STRVAR().

◆ PY_SSIZE_T_CLEAN

#define PY_SSIZE_T_CLEAN

Definition at line 14 of file bpy_props.cc.

Function Documentation

◆ BPy_BoolProperty()

◆ BPy_BoolVectorProperty()

PyObject * BPy_BoolVectorProperty ( PyObject * self,
PyObject * args,
PyObject * kw )
static

◆ BPy_CollectionProperty()

◆ BPy_EnumProperty()

◆ BPy_FloatProperty()

◆ BPy_FloatVectorProperty()

PyObject * BPy_FloatVectorProperty ( PyObject * self,
PyObject * args,
PyObject * kw )
static

Definition at line 4533 of file bpy_props.cc.

References BPy_EnumProperty_Parse_WithSRNA::base, bpy_prop_arg_parse_id(), bpy_prop_arg_parse_tag_defines(), bpy_prop_array_from_py_with_dims(), bpy_prop_array_is_matrix_compatible_ex(), bpy_prop_array_length_parse(), bpy_prop_array_matrix_swap_row_column_vn(), bpy_prop_assign_flag(), bpy_prop_assign_flag_override(), bpy_prop_callback_assign_float_array(), bpy_prop_callback_assign_update(), bpy_prop_callback_check(), bpy_prop_deferred_data_or_srna(), blender::Array< T, InlineBufferCapacity, Allocator >::data(), BPyPropArrayLength::dims, BPyPropArrayLength::dims_len, FLT_MAX, BPy_EnumProperty_Parse::is_set, BPy_EnumProperty_Parse::items, BPyPropArrayLength::len_total, max, min, name, PROP_FLOAT, BPy_PropIDParse::prop_free_handle, PROP_NONE, PROP_UNIT_NONE, PY_ARG_PARSER_HEAD_COMPAT, pymeth_FloatVectorProperty, pyrna_enum_bitfield_parse_set(), pyrna_enum_value_parse_string(), blender::Array< T, InlineBufferCapacity, Allocator >::reinitialize(), RNA_def_property(), RNA_def_property_array(), RNA_def_property_duplicate_pointers(), RNA_def_property_float_array_default(), RNA_def_property_free_identifier_deferred_finish(), RNA_def_property_multi_array(), RNA_def_property_range(), RNA_def_property_tags(), RNA_def_property_translation_context(), RNA_def_property_ui_range(), RNA_def_property_ui_text(), rna_enum_property_flag_items, rna_enum_property_override_flag_items, rna_enum_property_subtype_number_array_items, rna_enum_property_unit_items, self, BPy_EnumProperty_Parse_WithSRNA::srna, BPy_PropIDParse::srna, step, BPy_EnumProperty_Parse::value, and BPy_PropIDParse::value.

◆ BPy_IntProperty()

◆ BPy_IntVectorProperty()

PyObject * BPy_IntVectorProperty ( PyObject * self,
PyObject * args,
PyObject * kw )
static

◆ BPy_PointerProperty()

◆ bpy_prop_arg_parse_id()

◆ bpy_prop_arg_parse_tag_defines()

◆ bpy_prop_array_from_py_with_dims()

int bpy_prop_array_from_py_with_dims ( void * values,
size_t values_elem_size,
PyObject * py_values,
const BPyPropArrayLength * array_len_info,
const PyTypeObject * type,
const char * error_str )
static

◆ bpy_prop_array_is_matrix_compatible()

bool bpy_prop_array_is_matrix_compatible ( PropertyRNA * prop,
const BPyPropArrayLength * array_len_info )
static

◆ bpy_prop_array_is_matrix_compatible_ex()

bool bpy_prop_array_is_matrix_compatible_ex ( int subtype,
const BPyPropArrayLength * array_len_info )
static

◆ bpy_prop_array_length_parse()

int bpy_prop_array_length_parse ( PyObject * o,
void * p )
static

◆ bpy_prop_array_matrix_swap_row_column_vn()

void bpy_prop_array_matrix_swap_row_column_vn ( float * values,
const BPyPropArrayLength * array_len_info )
static

◆ bpy_prop_array_matrix_swap_row_column_vn_vn()

void bpy_prop_array_matrix_swap_row_column_vn_vn ( float * values_dst,
const float * values_src,
const BPyPropArrayLength * array_len_info )
static

Needed since the internal storage of matrices swaps row/column.

Definition at line 653 of file bpy_props.cc.

References BLI_assert, BPyPropArrayLength::dims, and i.

Referenced by bpy_prop_array_matrix_swap_row_column_vn().

◆ bpy_prop_assign_flag()

◆ bpy_prop_assign_flag_override()

◆ bpy_prop_boolean_array_from_callback_or_error()

void bpy_prop_boolean_array_from_callback_or_error ( PyObject * bool_array_obj,
const BPyPropArrayLength & array_len_info,
PyObject * py_func,
bool * r_values )
static

◆ bpy_prop_boolean_array_get_fn()

◆ bpy_prop_boolean_array_get_transform_fn()

◆ bpy_prop_boolean_array_set_fn()

◆ bpy_prop_boolean_array_set_transform_fn()

◆ bpy_prop_boolean_get_fn()

◆ bpy_prop_boolean_get_transform_fn()

◆ bpy_prop_boolean_set_fn()

◆ bpy_prop_boolean_set_transform_fn()

◆ bpy_prop_callback_assign_boolean()

◆ bpy_prop_callback_assign_boolean_array()

◆ bpy_prop_callback_assign_enum()

◆ bpy_prop_callback_assign_float()

◆ bpy_prop_callback_assign_float_array()

◆ bpy_prop_callback_assign_int()

bool bpy_prop_callback_assign_int ( PropertyRNA * prop,
PyObject * get_fn,
PyObject * set_fn,
PyObject * get_transform_fn,
PyObject * set_transform_fn )
static

◆ bpy_prop_callback_assign_int_array()

◆ bpy_prop_callback_assign_pointer()

void bpy_prop_callback_assign_pointer ( PropertyRNA * prop,
PyObject * poll_fn )
static

◆ bpy_prop_callback_assign_string()

◆ bpy_prop_callback_assign_update()

◆ bpy_prop_callback_check()

int bpy_prop_callback_check ( PyObject * py_func,
const char * keyword,
int argcount )
static

◆ bpy_prop_deferred_call()

PyObject * bpy_prop_deferred_call ( BPy_PropDeferred * ,
PyObject * ,
PyObject *  )
static

HACK: needed by typing.get_type_hints with from __future__ import annotations enabled or when using Python 3.10 or newer.

When callable this object type passes the test for being an acceptable annotation.

Definition at line 263 of file bpy_props.cc.

◆ bpy_prop_deferred_clear()

int bpy_prop_deferred_clear ( BPy_PropDeferred * self)
static

Definition at line 246 of file bpy_props.cc.

References self.

◆ bpy_prop_deferred_data_CreatePyObject()

PyObject * bpy_prop_deferred_data_CreatePyObject ( PyObject * fn,
PyObject * kw )
static

Definition at line 361 of file bpy_props.cc.

References BLI_assert, bpy_prop_deferred_Type, and self.

Referenced by bpy_prop_deferred_data_or_srna().

◆ bpy_prop_deferred_data_or_srna()

StructRNA * bpy_prop_deferred_data_or_srna ( PyObject * self,
PyObject * args,
PyObject * kw,
PyObject * method_object,
PyObject ** r_deferred_result )
static

This define runs at the start of each function and deals with returning a deferred property BPy_PropDeferred (to be registered later).

Parameters
selfThe self argument from the caller.
argsThe positional arguments of the caller.
kwThe keyword arguments of the caller.
method_objectThe method of the caller (unfortunately this can't be deduced).
r_deferred_resultThe deferred result (or nullptr in the case of an error). The caller must return this value unless a valid srna is returned.
Returns
When not null, the caller is expected to perform the registration.

Definition at line 3213 of file bpy_props.cc.

References BLI_assert, bpy_prop_deferred_data_CreatePyObject(), nullptr, Py_DECREF(), self, and srna_from_self().

Referenced by BPy_BoolProperty(), BPy_BoolVectorProperty(), BPy_CollectionProperty(), BPy_EnumProperty(), BPy_FloatProperty(), BPy_FloatVectorProperty(), BPy_IntProperty(), BPy_IntVectorProperty(), BPy_PointerProperty(), and BPy_StringProperty().

◆ bpy_prop_deferred_dealloc()

void bpy_prop_deferred_dealloc ( BPy_PropDeferred * self)
static

Definition at line 233 of file bpy_props.cc.

References self.

◆ bpy_prop_deferred_function_get()

PyObject * bpy_prop_deferred_function_get ( BPy_PropDeferred * self,
void *  )
static

Expose the function in case scripts need to introspect this information (not currently used by Blender itself).

Definition at line 277 of file bpy_props.cc.

References ret, and self.

◆ bpy_prop_deferred_keywords_get()

PyObject * bpy_prop_deferred_keywords_get ( BPy_PropDeferred * self,
void *  )
static

Expose keywords in case scripts need to introspect this information (not currently used by Blender itself).

Definition at line 288 of file bpy_props.cc.

References ret, and self.

◆ bpy_prop_deferred_repr()

PyObject * bpy_prop_deferred_repr ( BPy_PropDeferred * self)
static

Definition at line 252 of file bpy_props.cc.

References self.

◆ bpy_prop_deferred_traverse()

int bpy_prop_deferred_traverse ( BPy_PropDeferred * self,
visitproc visit,
void * arg )
static

Definition at line 240 of file bpy_props.cc.

References self.

◆ bpy_prop_enum_get_fn()

◆ bpy_prop_enum_get_transform_fn()

◆ bpy_prop_enum_itemf_fn()

◆ bpy_prop_enum_set_fn()

◆ bpy_prop_enum_set_transform_fn()

◆ bpy_prop_float_array_from_callback_or_error()

void bpy_prop_float_array_from_callback_or_error ( PropertyRNA * prop,
PyObject * float_array_obj,
const BPyPropArrayLength & array_len_info,
PyObject * py_func,
const bool do_matrix_row_col_swap,
float * r_values )
static

◆ bpy_prop_float_array_get_fn()

◆ bpy_prop_float_array_get_transform_fn()

◆ bpy_prop_float_array_set_fn()

◆ bpy_prop_float_array_set_transform_fn()

◆ bpy_prop_float_get_fn()

◆ bpy_prop_float_get_transform_fn()

◆ bpy_prop_float_set_fn()

◆ bpy_prop_float_set_transform_fn()

◆ bpy_prop_gil_rna_writable_begin()

◆ bpy_prop_gil_rna_writable_end()

◆ bpy_prop_int_array_from_callback_or_error()

void bpy_prop_int_array_from_callback_or_error ( PyObject * int_array_obj,
const BPyPropArrayLength & array_len_info,
PyObject * py_func,
int * r_values )
static

◆ bpy_prop_int_array_get_fn()

◆ bpy_prop_int_array_get_transform_fn()

◆ bpy_prop_int_array_set_fn()

◆ bpy_prop_int_array_set_transform_fn()

◆ bpy_prop_int_get_fn()

◆ bpy_prop_int_get_transform_fn()

◆ bpy_prop_int_set_fn()

◆ bpy_prop_int_set_transform_fn()

◆ bpy_prop_pointer_poll_fn()

◆ bpy_prop_py_data_ensure()

◆ bpy_prop_py_data_remove()

void bpy_prop_py_data_remove ( PropertyRNA * prop)
static

Perform all removal actions except for freeing, which is handled by RNA.

Definition at line 209 of file bpy_props.cc.

References BLI_remlink(), BPY_PROP_STORE_PY_DATA_SIZE, g_bpy_prop_store_list, i, BPyPropStore::py_data, and RNA_property_py_data_get().

Referenced by BPY_rna_props().

◆ bpy_prop_string_from_callback_or_error()

std::optional< std::string > bpy_prop_string_from_callback_or_error ( PyObject * str_obj,
const size_t max_length,
PyObject * py_func )
static

◆ bpy_prop_string_get_fn()

std::string bpy_prop_string_get_fn ( PointerRNA * ptr,
PropertyRNA * prop )
static

◆ bpy_prop_string_get_locked_fn()

◆ bpy_prop_string_get_transform_fn()

std::string bpy_prop_string_get_transform_fn ( PointerRNA * ptr,
PropertyRNA * prop,
const std::string & curr_value,
bool is_set )
static

◆ bpy_prop_string_get_transform_locked_fn()

std::string bpy_prop_string_get_transform_locked_fn ( PointerRNA * ptr,
PropertyRNA * prop,
const std::string & curr_value,
bool is_set )
static

◆ bpy_prop_string_length_fn()

int bpy_prop_string_length_fn ( PointerRNA * ptr,
PropertyRNA * prop )
static

◆ bpy_prop_string_set_fn()

◆ bpy_prop_string_set_transform_fn()

std::string bpy_prop_string_set_transform_fn ( PointerRNA * ptr,
PropertyRNA * prop,
const std::string & new_value,
const std::string & curr_value,
bool is_set )
static

◆ bpy_prop_string_visit_fn_call()

bool bpy_prop_string_visit_fn_call ( PyObject * py_func,
PyObject * item,
blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn )
static

◆ bpy_prop_string_visit_for_search_fn()

◆ bpy_prop_update_fn()

◆ bpy_py_object_from_prop_array_with_dims()

◆ BPy_RemoveProperty()

PyObject * BPy_RemoveProperty ( PyObject * self,
PyObject * args,
PyObject * kw )
static

◆ BPY_rna_props()

PyObject * BPY_rna_props ( )
nodiscard

◆ BPY_rna_props_clear_all()

void BPY_rna_props_clear_all ( )

Run this on exit, clearing all Python callback users and disable the RNA callback, as it would be called after Python has already finished.

Definition at line 5760 of file bpy_props.cc.

References BLI_listbase_clear(), g_bpy_prop_store_list, props_clear(), and RNA_def_property_free_pointers_set_py_data_callback().

Referenced by BPY_python_end().

◆ BPy_StringProperty()

◆ enum_items_from_py()

const EnumPropertyItem * enum_items_from_py ( PyObject * seq_fast,
const bool is_enum_flag,
PyObject * default_py,
int * r_default_value )
static

◆ icon_id_from_name()

int icon_id_from_name ( const char * name)
static

◆ pointer_type_from_py()

StructRNA * pointer_type_from_py ( PyObject * value,
const char * error_prefix )
nodiscard

Definition at line 5223 of file bpy_props.cc.

References Py_DECREF(), PyC_ExceptionBuffer(), and srna_from_self().

Referenced by BPy_CollectionProperty(), and BPy_PointerProperty().

◆ props_clear()

int props_clear ( PyObject * )
static

◆ props_visit()

int props_visit ( PyObject * ,
visitproc visit,
void * arg )
static

Definition at line 5681 of file bpy_props.cc.

References BPY_PROP_STORE_PY_DATA_SIZE, g_bpy_prop_store_list, i, and LISTBASE_FOREACH.

◆ py_long_as_int()

bool py_long_as_int ( PyObject * py_long,
int * r_int )
static

Definition at line 2410 of file bpy_props.cc.

Referenced by BPy_EnumProperty(), and enum_items_from_py().

◆ PyDoc_STRVAR() [1/13]

PyDoc_STRVAR ( BPy_BoolProperty_doc ,
".. function:: BoolProperty" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=False, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new boolean property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_NUMBER_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("bool") BPY_PROPDEF_SET_DOC("bool") BPY_PROPDEF_GET_TRANSFORM_DOC("bool") BPY_PROPDEF_SET_TRANSFORM_DOC("bool" )

◆ PyDoc_STRVAR() [2/13]

PyDoc_STRVAR ( BPy_BoolVectorProperty_doc ,
".. function:: BoolVectorProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=(False, False, False), " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "size=3, " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new vector boolean property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC " :arg default: sequence of booleans the length of *size*.\n" " :type default: Sequence\n" BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_NUMBER_ARRAY_DOC BPY_PROPDEF_VECSIZE_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("Sequence[bool]") BPY_PROPDEF_SET_TRANSFORM_DOC("Sequence[bool]")[bool] )

◆ PyDoc_STRVAR() [3/13]

PyDoc_STRVAR ( BPy_CollectionProperty_doc ,
".. function:: CollectionProperty(" "type, " "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "options={'ANIMATABLE'}, " "override=set(), " "tags=set())\n" "\n" " Returns a new collection property definition.\n" "\n" BPY_PROPDEF_COLLECTION_TYPE_DOC BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_COLLECTION_DOC BPY_PROPDEF_TAGS_DOC )

◆ PyDoc_STRVAR() [4/13]

PyDoc_STRVAR ( BPy_EnumProperty_doc ,
".. function:: EnumProperty(" "items, " "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=None, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new enumerator property definition.\n" "\n" " :arg items: sequence of enum items formatted:\n" " ````.\n" "\n" " The first three elements of the tuples are mandatory.\n" "\n" " :identifier: The identifier is used for Python access.\n" " An empty identifier means that the item is a separator\n" " :name: Name for the interface.\n" " :description: Used for documentation and tooltips.\n" " :icon: An icon string identifier or integer icon value\n" " (e.g. returned by :class:`bpy.types.UILayout.icon`)\n" " :number: Unique value used as the identifier for this item (stored in file data).\n" " Use when the identifier may need to change. If the *ENUM_FLAG* option is used[(identifier, name, description, icon, number),...],
\n" " the values are bit-masks and should be powers of two.\n" "\n" " When an item only contains 4 items they define `` identifier, name, description, " "number)``.\n" "\n" " Separators may be added using either None(nameless separator,
\n" " or a regular item tuple with an empty identifier string,
in which case the name,
\n" " if non- empty,
will be displayed in the UI above the separator line." "\n" " For dynamic values a callback can be passed which returns a list in\n" " the same format as the static list.\n" " This function must take 2 arguments ``(self, context)`` ,
**context may be None **.\n" "\n" " .. warning::\n" "\n" " There is a known bug with using a callback,
\n" " Python must keep a reference to the strings returned by the callback or Blender\n" " will misbehave or even crash." "\n" " :type items:Iterable|" "tuple|" "tuple|" "None]|" " Callable[" "tuple[str, str, str][str, str, str, int][str, str, str, int, int][[:class:`bpy.types.bpy_struct`, :class:`bpy.types.Context`|None],
" "Iterable|" "tuple|" "tuple|" "None]" "]\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC " :arg default:The default value for this enum[" "tuple[str, str, str][str, str, str, int][str, str, str, int, int],
a string from the identifiers used in " " *items * ,
or integer matching an item number.\n" " If the *ENUM_FLAG *option is used this must be a set of such string identifiers " "instead.\n" " WARNING:Strings cannot be specified for dynamic enums\n" " (i.e. if a callback function is given as *items *parameter).\n" " :type default:str|int|set\n" BPY_PROPDEF_OPTIONS_ENUM_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("int") BPY_PROPDEF_SET_DOC("int") BPY_PROPDEF_GET_TRANSFORM_DOC("int") BPY_PROPDEF_SET_TRANSFORM_DOC("int")[str] )

◆ PyDoc_STRVAR() [5/13]

PyDoc_STRVAR ( BPy_FloatProperty_doc ,
".. function:: FloatProperty" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=0.0, " "min=-3.402823e+38, max=3.402823e+38, " "soft_min=-3.402823e+38, soft_max=3.402823e+38, " "step=3, " "precision=2, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "unit='NONE', " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new float (single precision) property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC BPY_PROPDEF_NUM_MINMAX_DOC("float") BPY_PROPDEF_NUM_SOFT_MINMAX_DOC("float") BPY_PROPDEF_FLOAT_STEP_DOC BPY_PROPDEF_FLOAT_PREC_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_NUMBER_DOC BPY_PROPDEF_UNIT_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("float") BPY_PROPDEF_SET_DOC("float") BPY_PROPDEF_GET_TRANSFORM_DOC("float") BPY_PROPDEF_SET_TRANSFORM_DOC("float" )

◆ PyDoc_STRVAR() [6/13]

PyDoc_STRVAR ( BPy_FloatVectorProperty_doc ,
".. function:: FloatVectorProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=(0.0, 0.0, 0.0), " "min=sys.float_info.min, max=sys.float_info.max, " "soft_min=sys.float_info.min, soft_max=sys.float_info.max, " "step=3, " "precision=2, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "unit='NONE', " "size=3, " "update=None, " "get=None, " "set=None)\n" "\n" " Returns a new vector float property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC " :arg default: Sequence of floats the length of *size*.\n" " :type default: Sequence\n" BPY_PROPDEF_NUM_MINMAX_DOC("float") BPY_PROPDEF_NUM_SOFT_MINMAX_DOC("float") BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_FLOAT_STEP_DOC BPY_PROPDEF_FLOAT_PREC_DOC BPY_PROPDEF_SUBTYPE_NUMBER_ARRAY_DOC BPY_PROPDEF_UNIT_DOC BPY_PROPDEF_VECSIZE_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("Sequence[float]") BPY_PROPDEF_SET_TRANSFORM_DOC("Sequence[float]")[float] )

◆ PyDoc_STRVAR() [7/13]

PyDoc_STRVAR ( BPy_IntProperty_doc ,
".. function:: IntProperty" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=0, " "min=-2**31, max=2**31-1, " "soft_min=-2**31, soft_max=2**31-1, " "step=1, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new int property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC BPY_PROPDEF_NUM_MINMAX_DOC("int") BPY_PROPDEF_NUM_SOFT_MINMAX_DOC("int") BPY_PROPDEF_INT_STEP_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_NUMBER_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("int") BPY_PROPDEF_SET_DOC("int") BPY_PROPDEF_GET_TRANSFORM_DOC("int") BPY_PROPDEF_SET_TRANSFORM_DOC("int" )

◆ PyDoc_STRVAR() [8/13]

PyDoc_STRVAR ( BPy_IntVectorProperty_doc ,
".. function:: IntVectorProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=(0, 0, 0), min=-2**31, max=2**31-1, " "soft_min=-2**31, " "soft_max=2**31-1, " "step=1, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "size=3, " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None)\n" "\n" " Returns a new vector int property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC " :arg default: sequence of ints the length of *size*.\n" " :type default: Sequence\n" BPY_PROPDEF_NUM_MINMAX_DOC("int") BPY_PROPDEF_INT_STEP_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_NUMBER_ARRAY_DOC BPY_PROPDEF_VECSIZE_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("Sequence[int]") BPY_PROPDEF_SET_TRANSFORM_DOC("Sequence[int]")[int] )

◆ PyDoc_STRVAR() [9/13]

PyDoc_STRVAR ( BPy_PointerProperty_doc ,
".. function:: PointerProperty(" "type, " "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "poll=None, " "update=None)\n" "\n" " Returns a new pointer property definition.\n" "\n" BPY_PROPDEF_POINTER_TYPE_DOC BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_POLL_DOC BPY_PROPDEF_UPDATE_DOC "\n" ".. note:: Pointer properties do not support storing references to embedded IDs " "(e.g. :class:`bpy.types.Scene.collection`, :class:`bpy.types.Material.node_tree`).\n" " These should exclusively be referenced and accessed through their owner ID " "(e.g. the scene or material).\n"  )

◆ PyDoc_STRVAR() [10/13]

PyDoc_STRVAR ( bpy_prop_deferred_doc ,
"Intermediate storage for properties before registration.\n" "\n" ".. note::\n" "\n" " This is not part of the stable API and may change between releases.\n"  )

◆ PyDoc_STRVAR() [11/13]

PyDoc_STRVAR ( BPy_RemoveProperty_doc ,
".. function:: RemoveProperty(cls, attr)\n" "\n" " Removes a dynamically defined property.\n" "\n" " :arg cls: The class containing the property (must be a positional argument).\n" " :type cls: type\n" " :arg attr: Property name (must be passed as a keyword).\n" " :type attr: str\n" "\n" ".. note:: Typically this function doesn't need to be accessed directly.\n" " Instead use ``del cls.attr``\n"  )

◆ PyDoc_STRVAR() [12/13]

PyDoc_STRVAR ( BPy_StringProperty_doc ,
".. function:: StringProperty(" "*, " "name=\"\", " "description=\"\", " "translation_context=\"*\", " "default=\"\", " "maxlen=0, " "options={'ANIMATABLE'}, " "override=set(), " "tags=set(), " "subtype='NONE', " "update=None, " "get=None, " "set=None, " "get_transform=None, " "set_transform=None, " "search=None, " "search_options={'SUGGESTION'})\n" "\n" " Returns a new string property definition.\n" "\n" BPY_PROPDEF_NAME_DOC BPY_PROPDEF_DESC_DOC BPY_PROPDEF_CTXT_DOC " :arg default: initializer string.\n" " :type default: str\n" " :arg maxlen: maximum length of the string.\n" " :type maxlen: int\n" BPY_PROPDEF_OPTIONS_DOC BPY_PROPDEF_OPTIONS_OVERRIDE_DOC BPY_PROPDEF_TAGS_DOC BPY_PROPDEF_SUBTYPE_STRING_DOC BPY_PROPDEF_UPDATE_DOC BPY_PROPDEF_GET_DOC("str") BPY_PROPDEF_SET_DOC("str") BPY_PROPDEF_GET_TRANSFORM_DOC("str") BPY_PROPDEF_SET_TRANSFORM_DOC("str") BPY_PROPDEF_SEARCH_DOC )

◆ PyDoc_STRVAR() [13/13]

PyDoc_STRVAR ( props_module_doc ,
"This module defines properties to extend Blender's internal data. The result of these " "functions" " is used to assign properties to classes registered with Blender and can't be used " "directly.\n" "\n" ".. note:: All parameters to these functions must be passed as keywords.\n"  )

◆ pyrna_struct_as_instance()

Variable Documentation

◆ bpy_prop_deferred_getset

PyGetSetDef bpy_prop_deferred_getset[]
static
Initial value:
= {
{"function", (getter)bpy_prop_deferred_function_get, (setter) nullptr, nullptr, nullptr},
{"keywords", (getter)bpy_prop_deferred_keywords_get, (setter) nullptr, nullptr, nullptr},
{nullptr, nullptr, nullptr, nullptr, nullptr}
}
static PyObject * bpy_prop_deferred_keywords_get(BPy_PropDeferred *self, void *)
Definition bpy_props.cc:288
static PyObject * bpy_prop_deferred_function_get(BPy_PropDeferred *self, void *)
Definition bpy_props.cc:277

Definition at line 295 of file bpy_props.cc.

◆ bpy_prop_deferred_Type

PyTypeObject bpy_prop_deferred_Type

Definition at line 309 of file bpy_props.cc.

Referenced by bpy_prop_deferred_data_CreatePyObject(), and BPY_rna_props().

◆ g_bpy_prop_store_list

ListBase g_bpy_prop_store_list = {nullptr, nullptr}
static

Maintain a list of Python defined properties, so the GC can visit them, and so they can be cleared on exit.

Definition at line 193 of file bpy_props.cc.

Referenced by bpy_prop_py_data_ensure(), bpy_prop_py_data_remove(), BPY_rna_props_clear_all(), props_clear(), and props_visit().

◆ props_methods

PyMethodDef props_methods[]
static

Definition at line 5624 of file bpy_props.cc.

◆ props_module

PyModuleDef props_module
static
Initial value:
= {
"bpy.props",
props_module_doc,
-1,
nullptr,
nullptr,
}
static PyMethodDef props_methods[]
static int props_clear(PyObject *)
static int props_visit(PyObject *, visitproc visit, void *arg)

Definition at line 5712 of file bpy_props.cc.

Referenced by BPY_rna_props().

◆ pymeth_BoolProperty

PyObject* pymeth_BoolProperty = nullptr
static

Definition at line 384 of file bpy_props.cc.

Referenced by BPy_BoolProperty().

◆ pymeth_BoolVectorProperty

PyObject* pymeth_BoolVectorProperty = nullptr
static

Definition at line 385 of file bpy_props.cc.

Referenced by BPy_BoolVectorProperty().

◆ pymeth_CollectionProperty

PyObject* pymeth_CollectionProperty = nullptr
static

Definition at line 393 of file bpy_props.cc.

Referenced by BPy_CollectionProperty().

◆ pymeth_EnumProperty

PyObject* pymeth_EnumProperty = nullptr
static

Definition at line 391 of file bpy_props.cc.

Referenced by BPy_EnumProperty().

◆ pymeth_FloatProperty

PyObject* pymeth_FloatProperty = nullptr
static

Definition at line 388 of file bpy_props.cc.

Referenced by BPy_FloatProperty().

◆ pymeth_FloatVectorProperty

PyObject* pymeth_FloatVectorProperty = nullptr
static

Definition at line 389 of file bpy_props.cc.

Referenced by BPy_FloatVectorProperty().

◆ pymeth_IntProperty

PyObject* pymeth_IntProperty = nullptr
static

Definition at line 386 of file bpy_props.cc.

Referenced by BPy_IntProperty().

◆ pymeth_IntVectorProperty

PyObject* pymeth_IntVectorProperty = nullptr
static

Definition at line 387 of file bpy_props.cc.

Referenced by BPy_IntVectorProperty().

◆ pymeth_PointerProperty

PyObject* pymeth_PointerProperty = nullptr
static

Definition at line 392 of file bpy_props.cc.

Referenced by BPy_PointerProperty().

◆ pymeth_RemoveProperty

PyObject* pymeth_RemoveProperty = nullptr
static

Definition at line 394 of file bpy_props.cc.

◆ pymeth_StringProperty

PyObject* pymeth_StringProperty = nullptr
static

Definition at line 390 of file bpy_props.cc.

Referenced by BPy_StringProperty().