fake-bpy-module-latest 20251003__py3-none-any.whl → 20260114__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. {bl_console_utils → _bl_console_utils}/autocomplete/complete_calltip/__init__.pyi +0 -13
  2. {bl_console_utils → _bl_console_utils}/autocomplete/complete_import/__init__.pyi +0 -5
  3. {bl_console_utils → _bl_console_utils}/autocomplete/complete_namespace/__init__.pyi +0 -11
  4. {bl_console_utils → _bl_console_utils}/autocomplete/intellisense/__init__.pyi +0 -10
  5. {bl_i18n_utils → _bl_i18n_utils}/__init__.pyi +1 -0
  6. {bl_i18n_utils → _bl_i18n_utils}/settings/__init__.pyi +2 -0
  7. _bl_i18n_utils/utils_spell_check/__init__.pyi +22 -0
  8. {bl_ui_utils → _bl_ui_utils}/__init__.pyi +1 -0
  9. _bpy_internal/__init__.pyi +1 -0
  10. _bpy_internal/disk_file_hash_service/__init__.pyi +19 -0
  11. _bpy_internal/disk_file_hash_service/backend_sqlite/__init__.pyi +48 -0
  12. _bpy_internal/disk_file_hash_service/hash_service/__init__.pyi +64 -0
  13. _bpy_internal/disk_file_hash_service/types/__init__.pyi +53 -0
  14. _bpy_types/__init__.pyi +18 -123
  15. {rna_info → _rna_info}/__init__.pyi +0 -1
  16. addon_utils/__init__.pyi +0 -13
  17. aud/__init__.pyi +55 -131
  18. bl_math/__init__.pyi +2 -12
  19. bl_operators/__init__.pyi +1 -0
  20. bl_operators/add_mesh_torus/__init__.pyi +0 -2
  21. bl_operators/anim/__init__.pyi +40 -24
  22. bl_operators/assets/__init__.pyi +0 -6
  23. bl_operators/bone_selection_sets/__init__.pyi +0 -28
  24. bl_operators/clip/__init__.pyi +0 -20
  25. bl_operators/connect_to_output/__init__.pyi +0 -2
  26. bl_operators/console/__init__.pyi +0 -10
  27. bl_operators/constraint/__init__.pyi +0 -8
  28. bl_operators/copy_global_transform/__init__.pyi +261 -0
  29. bl_operators/file/__init__.pyi +0 -6
  30. bl_operators/freestyle/__init__.pyi +0 -8
  31. bl_operators/geometry_nodes/__init__.pyi +0 -8
  32. bl_operators/grease_pencil/__init__.pyi +0 -2
  33. bl_operators/image/__init__.pyi +0 -10
  34. bl_operators/image_as_planes/__init__.pyi +0 -4
  35. bl_operators/mesh/__init__.pyi +0 -4
  36. bl_operators/node/__init__.pyi +36 -46
  37. bl_operators/object/__init__.pyi +0 -37
  38. bl_operators/object_align/__init__.pyi +0 -2
  39. bl_operators/object_quick_effects/__init__.pyi +0 -8
  40. bl_operators/object_randomize_transform/__init__.pyi +0 -2
  41. bl_operators/presets/__init__.pyi +0 -50
  42. bl_operators/rigidbody/__init__.pyi +0 -6
  43. bl_operators/screen_play_rendered_anim/__init__.pyi +0 -2
  44. bl_operators/sequencer/__init__.pyi +0 -16
  45. bl_operators/spreadsheet/__init__.pyi +0 -2
  46. bl_operators/userpref/__init__.pyi +0 -50
  47. bl_operators/uvcalc_follow_active/__init__.pyi +1 -3
  48. bl_operators/uvcalc_lightmap/__init__.pyi +0 -2
  49. bl_operators/uvcalc_transform/__init__.pyi +21 -12
  50. bl_operators/vertexpaint_dirt/__init__.pyi +0 -2
  51. bl_operators/view3d/__init__.pyi +0 -16
  52. bl_operators/wm/__init__.pyi +0 -92
  53. bl_operators/world/__init__.pyi +0 -2
  54. bl_ui/__init__.pyi +3 -4
  55. bl_ui/anim/__init__.pyi +0 -2
  56. bl_ui/asset_shelf/__init__.pyi +0 -2
  57. bl_ui/generic_ui_list/__init__.pyi +1 -17
  58. bl_ui/node_add_menu/__init__.pyi +13 -16
  59. bl_ui/node_add_menu_compositor/__init__.pyi +19 -57
  60. bl_ui/node_add_menu_geometry/__init__.pyi +56 -168
  61. bl_ui/node_add_menu_shader/__init__.pyi +10 -30
  62. bl_ui/node_add_menu_texture/__init__.pyi +1 -17
  63. bl_ui/properties_collection/__init__.pyi +0 -14
  64. bl_ui/properties_constraint/__init__.pyi +64 -150
  65. bl_ui/properties_data_armature/__init__.pyi +0 -36
  66. bl_ui/properties_data_bone/__init__.pyi +0 -20
  67. bl_ui/properties_data_camera/__init__.pyi +0 -30
  68. bl_ui/properties_data_curve/__init__.pyi +0 -30
  69. bl_ui/properties_data_curves/__init__.pyi +0 -16
  70. bl_ui/properties_data_empty/__init__.pyi +0 -4
  71. bl_ui/properties_data_grease_pencil/__init__.pyi +0 -40
  72. bl_ui/properties_data_lattice/__init__.pyi +0 -8
  73. bl_ui/properties_data_light/__init__.pyi +0 -20
  74. bl_ui/properties_data_lightprobe/__init__.pyi +0 -28
  75. bl_ui/properties_data_mesh/__init__.pyi +0 -42
  76. bl_ui/properties_data_metaball/__init__.pyi +0 -12
  77. bl_ui/properties_data_modifier/__init__.pyi +0 -18
  78. bl_ui/properties_data_pointcloud/__init__.pyi +0 -12
  79. bl_ui/properties_data_shaderfx/__init__.pyi +0 -2
  80. bl_ui/properties_data_speaker/__init__.pyi +0 -12
  81. bl_ui/properties_data_volume/__init__.pyi +0 -18
  82. bl_ui/properties_freestyle/__init__.pyi +0 -50
  83. bl_ui/properties_grease_pencil_common/__init__.pyi +0 -14
  84. bl_ui/properties_mask_common/__init__.pyi +0 -14
  85. bl_ui/properties_material/__init__.pyi +0 -32
  86. bl_ui/properties_material_gpencil/__init__.pyi +0 -22
  87. bl_ui/properties_object/__init__.pyi +35 -42
  88. bl_ui/properties_output/__init__.pyi +0 -40
  89. bl_ui/properties_paint_common/__init__.pyi +23 -7
  90. bl_ui/properties_particle/__init__.pyi +0 -106
  91. bl_ui/properties_physics_cloth/__init__.pyi +0 -28
  92. bl_ui/properties_physics_common/__init__.pyi +0 -2
  93. bl_ui/properties_physics_dynamicpaint/__init__.pyi +0 -44
  94. bl_ui/properties_physics_field/__init__.pyi +0 -20
  95. bl_ui/properties_physics_fluid/__init__.pyi +0 -56
  96. bl_ui/properties_physics_geometry_nodes/__init__.pyi +0 -2
  97. bl_ui/properties_physics_rigidbody/__init__.pyi +0 -16
  98. bl_ui/properties_physics_rigidbody_constraint/__init__.pyi +0 -26
  99. bl_ui/properties_physics_softbody/__init__.pyi +0 -30
  100. bl_ui/properties_render/__init__.pyi +0 -90
  101. bl_ui/properties_scene/__init__.pyi +0 -34
  102. bl_ui/properties_strip/__init__.pyi +744 -0
  103. bl_ui/properties_strip_modifier/__init__.pyi +45 -0
  104. bl_ui/properties_texture/__init__.pyi +0 -54
  105. bl_ui/properties_view_layer/__init__.pyi +7 -28
  106. bl_ui/properties_workspace/__init__.pyi +0 -8
  107. bl_ui/properties_world/__init__.pyi +0 -22
  108. bl_ui/space_clip/__init__.pyi +1 -150
  109. bl_ui/space_console/__init__.pyi +0 -12
  110. bl_ui/space_dopesheet/__init__.pyi +52 -60
  111. bl_ui/space_filebrowser/__init__.pyi +0 -60
  112. bl_ui/space_graph/__init__.pyi +0 -44
  113. bl_ui/space_image/__init__.pyi +2 -144
  114. bl_ui/space_info/__init__.pyi +0 -12
  115. bl_ui/space_nla/__init__.pyi +0 -36
  116. bl_ui/space_node/__init__.pyi +27 -66
  117. bl_ui/space_outliner/__init__.pyi +0 -30
  118. bl_ui/space_properties/__init__.pyi +29 -6
  119. bl_ui/space_sequencer/__init__.pyi +46 -912
  120. bl_ui/space_spreadsheet/__init__.pyi +0 -6
  121. bl_ui/space_statusbar/__init__.pyi +0 -2
  122. bl_ui/space_text/__init__.pyi +0 -32
  123. bl_ui/space_time/__init__.pyi +50 -8
  124. bl_ui/space_topbar/__init__.pyi +7 -52
  125. bl_ui/space_userpref/__init__.pyi +7 -188
  126. bl_ui/space_view3d/__init__.pyi +36 -544
  127. bl_ui/space_view3d_sidebar/__init__.pyi +127 -0
  128. bl_ui/space_view3d_toolbar/__init__.pyi +2 -163
  129. blf/__init__.pyi +6 -50
  130. bmesh/__init__.pyi +0 -7
  131. bmesh/geometry/__init__.pyi +0 -3
  132. bmesh/ops/__init__.pyi +2 -450
  133. bmesh/types/__init__.pyi +206 -420
  134. bmesh/utils/__init__.pyi +16 -43
  135. bpy/app/__init__.pyi +53 -56
  136. bpy/app/icons/__init__.pyi +0 -6
  137. bpy/app/timers/__init__.pyi +0 -6
  138. bpy/app/translations/__init__.pyi +1 -16
  139. bpy/msgbus/__init__.pyi +1 -4
  140. bpy/ops/action/__init__.pyi +15 -165
  141. bpy/ops/anim/__init__.pyi +38 -279
  142. bpy/ops/armature/__init__.pyi +18 -192
  143. bpy/ops/asset/__init__.pyi +11 -97
  144. bpy/ops/boid/__init__.pyi +7 -38
  145. bpy/ops/brush/__init__.pyi +3 -72
  146. bpy/ops/buttons/__init__.pyi +4 -71
  147. bpy/ops/cachefile/__init__.pyi +2 -63
  148. bpy/ops/camera/__init__.pyi +0 -11
  149. bpy/ops/clip/__init__.pyi +43 -427
  150. bpy/ops/cloth/__init__.pyi +0 -5
  151. bpy/ops/collection/__init__.pyi +2 -34
  152. bpy/ops/console/__init__.pyi +10 -88
  153. bpy/ops/constraint/__init__.pyi +3 -80
  154. bpy/ops/curve/__init__.pyi +23 -254
  155. bpy/ops/curves/__init__.pyi +17 -166
  156. bpy/ops/cycles/__init__.pyi +1 -14
  157. bpy/ops/dpaint/__init__.pyi +3 -21
  158. bpy/ops/ed/__init__.pyi +10 -82
  159. bpy/ops/export_anim/__init__.pyi +2 -10
  160. bpy/ops/export_scene/__init__.pyi +1 -155
  161. bpy/ops/extensions/__init__.pyi +15 -150
  162. bpy/ops/file/__init__.pyi +27 -217
  163. bpy/ops/fluid/__init__.pyi +13 -70
  164. bpy/ops/font/__init__.pyi +10 -134
  165. bpy/ops/geometry/__init__.pyi +3 -124
  166. bpy/ops/gizmogroup/__init__.pyi +1 -12
  167. bpy/ops/gpencil/__init__.pyi +5 -38
  168. bpy/ops/graph/__init__.pyi +18 -316
  169. bpy/ops/grease_pencil/__init__.pyi +29 -524
  170. bpy/ops/image/__init__.pyi +19 -379
  171. bpy/ops/import_anim/__init__.pyi +2 -16
  172. bpy/ops/import_curve/__init__.pyi +0 -6
  173. bpy/ops/import_scene/__init__.pyi +0 -50
  174. bpy/ops/info/__init__.pyi +4 -35
  175. bpy/ops/lattice/__init__.pyi +3 -33
  176. bpy/ops/marker/__init__.pyi +2 -50
  177. bpy/ops/mask/__init__.pyi +17 -176
  178. bpy/ops/material/__init__.pyi +3 -15
  179. bpy/ops/mball/__init__.pyi +1 -30
  180. bpy/ops/mesh/__init__.pyi +32 -915
  181. bpy/ops/nla/__init__.pyi +20 -184
  182. bpy/ops/node/__init__.pyi +71 -741
  183. bpy/ops/object/__init__.pyi +137 -1254
  184. bpy/ops/outliner/__init__.pyi +47 -327
  185. bpy/ops/paint/__init__.pyi +14 -279
  186. bpy/ops/paintcurve/__init__.pyi +4 -36
  187. bpy/ops/palette/__init__.pyi +3 -27
  188. bpy/ops/particle/__init__.pyi +20 -160
  189. bpy/ops/pointcloud/__init__.pyi +3 -35
  190. bpy/ops/pose/__init__.pyi +28 -233
  191. bpy/ops/poselib/__init__.pyi +4 -47
  192. bpy/ops/preferences/__init__.pyi +9 -177
  193. bpy/ops/ptcache/__init__.pyi +5 -31
  194. bpy/ops/render/__init__.pyi +6 -70
  195. bpy/ops/rigidbody/__init__.pyi +6 -56
  196. bpy/ops/scene/__init__.pyi +22 -167
  197. bpy/ops/screen/__init__.pyi +36 -202
  198. bpy/ops/script/__init__.pyi +1 -12
  199. bpy/ops/sculpt/__init__.pyi +36 -311
  200. bpy/ops/sculpt_curves/__init__.pyi +1 -20
  201. bpy/ops/sequencer/__init__.pyi +90 -662
  202. bpy/ops/sound/__init__.pyi +3 -109
  203. bpy/ops/spreadsheet/__init__.pyi +5 -32
  204. bpy/ops/surface/__init__.pyi +0 -48
  205. bpy/ops/text/__init__.pyi +27 -225
  206. bpy/ops/text_editor/__init__.pyi +0 -5
  207. bpy/ops/texture/__init__.pyi +3 -18
  208. bpy/ops/transform/__init__.pyi +10 -382
  209. bpy/ops/ui/__init__.pyi +21 -158
  210. bpy/ops/uilist/__init__.pyi +0 -13
  211. bpy/ops/uv/__init__.pyi +52 -305
  212. bpy/ops/view2d/__init__.pyi +3 -73
  213. bpy/ops/view3d/__init__.pyi +37 -339
  214. bpy/ops/wm/__init__.pyi +39 -1334
  215. bpy/ops/workspace/__init__.pyi +7 -39
  216. bpy/ops/world/__init__.pyi +2 -10
  217. bpy/path/__init__.pyi +0 -34
  218. bpy/props/__init__.pyi +15 -157
  219. bpy/stub_internal/rna_enums/__init__.pyi +52 -20
  220. bpy/types/__init__.pyi +15386 -56984
  221. bpy/utils/__init__.pyi +4 -75
  222. bpy/utils/previews/__init__.pyi +1 -10
  223. bpy/utils/units/__init__.pyi +0 -12
  224. bpy_extras/anim_utils/__init__.pyi +9 -8
  225. bpy_extras/bmesh_utils/__init__.pyi +0 -1
  226. bpy_extras/id_map_utils/__init__.pyi +14 -6
  227. bpy_extras/image_utils/__init__.pyi +0 -9
  228. bpy_extras/io_utils/__init__.pyi +2 -22
  229. bpy_extras/keyconfig_utils/__init__.pyi +1 -1
  230. bpy_extras/mesh_utils/__init__.pyi +0 -12
  231. bpy_extras/object_utils/__init__.pyi +0 -14
  232. bpy_extras/view3d_utils/__init__.pyi +0 -18
  233. {fake_bpy_module_latest-20251003.dist-info → fake_bpy_module_latest-20260114.dist-info}/METADATA +4 -1
  234. fake_bpy_module_latest-20260114.dist-info/RECORD +382 -0
  235. {fake_bpy_module_latest-20251003.dist-info → fake_bpy_module_latest-20260114.dist-info}/top_level.txt +14 -14
  236. freestyle/chainingiterators/__init__.pyi +0 -22
  237. freestyle/functions/__init__.pyi +0 -139
  238. freestyle/predicates/__init__.pyi +0 -51
  239. freestyle/shaders/__init__.pyi +0 -65
  240. freestyle/types/__init__.pyi +139 -777
  241. freestyle/utils/ContextFunctions/__init__.pyi +0 -23
  242. freestyle/utils/__init__.pyi +1 -7
  243. gpu/capabilities/__init__.pyi +0 -21
  244. gpu/matrix/__init__.pyi +1 -10
  245. gpu/platform/__init__.pyi +0 -5
  246. gpu/shader/__init__.pyi +22 -6
  247. gpu/state/__init__.pyi +59 -38
  248. gpu/texture/__init__.pyi +0 -2
  249. gpu/types/__init__.pyi +84 -152
  250. gpu_extras/batch/__init__.pyi +0 -4
  251. gpu_extras/presets/__init__.pyi +6 -8
  252. idprop/types/__init__.pyi +5 -5
  253. imbuf/__init__.pyi +2 -9
  254. imbuf/types/__init__.pyi +5 -25
  255. keyingsets_builtins/__init__.pyi +1 -45
  256. mathutils/__init__.pyi +82 -2172
  257. mathutils/bvhtree/__init__.pyi +3 -25
  258. mathutils/geometry/__init__.pyi +24 -135
  259. mathutils/interpolate/__init__.pyi +3 -4
  260. mathutils/kdtree/__init__.pyi +0 -11
  261. mathutils/noise/__init__.pyi +0 -62
  262. fake_bpy_module_latest-20251003.dist-info/RECORD +0 -373
  263. {animsys_refactor → _animsys_refactor}/__init__.pyi +0 -0
  264. {animsys_refactor → _animsys_refactor}/py.typed +0 -0
  265. {bl_console_utils → _bl_console_utils}/__init__.pyi +0 -0
  266. {bl_console_utils → _bl_console_utils}/autocomplete/__init__.pyi +0 -0
  267. {bl_console_utils → _bl_console_utils}/py.typed +0 -0
  268. {bl_i18n_utils → _bl_i18n_utils}/bl_extract_messages/__init__.pyi +0 -0
  269. {bl_i18n_utils → _bl_i18n_utils}/merge_po/__init__.pyi +0 -0
  270. {bl_i18n_utils → _bl_i18n_utils}/py.typed +0 -0
  271. {bl_i18n_utils → _bl_i18n_utils}/utils/__init__.pyi +0 -0
  272. {bl_i18n_utils → _bl_i18n_utils}/utils_cli/__init__.pyi +0 -0
  273. {bl_i18n_utils → _bl_i18n_utils}/utils_languages_menu/__init__.pyi +0 -0
  274. {bl_i18n_utils → _bl_i18n_utils}/utils_rtl/__init__.pyi +0 -0
  275. {bl_previews_utils → _bl_previews_utils}/__init__.pyi +0 -0
  276. {bl_previews_utils → _bl_previews_utils}/bl_previews_render/__init__.pyi +0 -0
  277. {bl_previews_utils → _bl_previews_utils}/py.typed +0 -0
  278. {bl_rna_utils → _bl_rna_utils}/__init__.pyi +0 -0
  279. {bl_rna_utils → _bl_rna_utils}/data_path/__init__.pyi +0 -0
  280. {bl_rna_utils → _bl_rna_utils}/py.typed +0 -0
  281. {bl_text_utils → _bl_text_utils}/__init__.pyi +0 -0
  282. {bl_text_utils → _bl_text_utils}/external_editor/__init__.pyi +0 -0
  283. {bl_text_utils → _bl_text_utils}/py.typed +0 -0
  284. {bl_ui_utils → _bl_ui_utils}/layout/__init__.pyi +0 -0
  285. {bl_ui_utils → _bl_ui_utils}/py.typed +0 -0
  286. {bpy_restrict_state → _bpy_restrict_state}/__init__.pyi +0 -0
  287. {bpy_restrict_state → _bpy_restrict_state}/py.typed +0 -0
  288. {console_python → _console_python}/__init__.pyi +0 -0
  289. {console_python → _console_python}/py.typed +0 -0
  290. {console_shell → _console_shell}/__init__.pyi +0 -0
  291. {console_shell → _console_shell}/py.typed +0 -0
  292. {graphviz_export → _graphviz_export}/__init__.pyi +0 -0
  293. {graphviz_export → _graphviz_export}/py.typed +0 -0
  294. {keyingsets_utils → _keyingsets_utils}/__init__.pyi +0 -0
  295. {keyingsets_utils → _keyingsets_utils}/py.typed +0 -0
  296. {rna_info → _rna_info}/py.typed +0 -0
  297. {rna_xml → _rna_xml}/__init__.pyi +0 -0
  298. {rna_xml → _rna_xml}/py.typed +0 -0
  299. {fake_bpy_module_latest-20251003.dist-info → fake_bpy_module_latest-20260114.dist-info}/WHEEL +0 -0
bpy/utils/__init__.pyi CHANGED
@@ -23,7 +23,6 @@ def app_template_paths(*, path: str | None = None) -> None:
23
23
  """Returns valid application template paths.
24
24
 
25
25
  :param path: Optional subdir.
26
- :type path: str | None
27
26
  :return: App template paths.
28
27
  """
29
28
 
@@ -33,31 +32,23 @@ def blend_paths(
33
32
  """Returns a list of paths to external files referenced by the loaded .blend file.
34
33
 
35
34
  :param absolute: When true the paths returned are made absolute.
36
- :type absolute: bool
37
- :param packed: When true skip file paths for packed data.
38
- :type packed: bool
35
+ :param packed: When true include file paths for packed data.
39
36
  :param local: When true skip linked library paths.
40
- :type local: bool
41
37
  :return: path list.
42
- :rtype: list[str]
43
38
  """
44
39
 
45
40
  def escape_identifier(string: str) -> str:
46
41
  """Simple string escaping function used for animation paths.
47
42
 
48
43
  :param string: text
49
- :type string: str
50
44
  :return: The escaped string.
51
- :rtype: str
52
45
  """
53
46
 
54
47
  def execfile(filepath: str, *, mod: None | None = None) -> None:
55
48
  """Execute a file path as a Python script.
56
49
 
57
50
  :param filepath: Path of the script to execute.
58
- :type filepath: str
59
51
  :param mod: Optional cached module, the result of a previous execution.
60
- :type mod: None | None
61
52
  :return: The module which can be passed back in as mod.
62
53
  """
63
54
 
@@ -72,13 +63,9 @@ def extension_path_user(package: str, *, path: str = "", create: bool = False) -
72
63
  """Return a user writable directory associated with an extension.
73
64
 
74
65
  :param package: The __package__ of the extension.
75
- :type package: str
76
66
  :param path: Optional subdirectory.
77
- :type path: str
78
67
  :param create: Treat the path as a directory and create it if its not existing.
79
- :type create: bool
80
68
  :return: a path.
81
- :rtype: str
82
69
  """
83
70
 
84
71
  def flip_name(name: str, *, strip_digits: bool = False) -> str:
@@ -86,27 +73,20 @@ def flip_name(name: str, *, strip_digits: bool = False) -> str:
86
73
  mirroring bone names.
87
74
 
88
75
  :param name: Bone name to flip.
89
- :type name: str
90
76
  :param strip_digits: Whether to remove .### suffix.
91
- :type strip_digits: bool
92
77
  :return: The flipped name.
93
- :rtype: str
94
78
  """
95
79
 
96
80
  def is_path_builtin(path: str) -> bool:
97
81
  """Returns True if the path is one of the built-in paths used by Blender.
98
82
 
99
83
  :param path: Path you want to check if it is in the built-in settings directory
100
- :type path: str
101
- :rtype: bool
102
84
  """
103
85
 
104
86
  def is_path_extension(path: str) -> bool:
105
87
  """Returns True if the path is from an extensions repository.
106
88
 
107
89
  :param path: Path to check if it is within an extension repository.
108
- :type path: str
109
- :rtype: bool
110
90
  """
111
91
 
112
92
  def keyconfig_init() -> None: ...
@@ -121,12 +101,9 @@ def load_scripts(
121
101
 
122
102
  :param reload_scripts: Causes all scripts to have their unregister method
123
103
  called before loading.
124
- :type reload_scripts: bool
125
104
  :param refresh_scripts: only load scripts which are not already loaded
126
105
  as modules.
127
- :type refresh_scripts: bool
128
106
  :param extensions: Loads additional scripts (add-ons & app-templates).
129
- :type extensions: bool
130
107
  """
131
108
 
132
109
  def load_scripts_extensions(*, reload_scripts: bool = False) -> None:
@@ -134,7 +111,6 @@ def load_scripts_extensions(*, reload_scripts: bool = False) -> None:
134
111
 
135
112
  :param reload_scripts: Causes all scripts to have their unregister method
136
113
  called before loading.
137
- :type reload_scripts: bool
138
114
  """
139
115
 
140
116
  def make_rna_paths(
@@ -143,15 +119,11 @@ def make_rna_paths(
143
119
  """Create RNA "paths" from given names.
144
120
 
145
121
  :param struct_name: Name of a RNA struct (like e.g. "Scene").
146
- :type struct_name: str
147
122
  :param prop_name: Name of a RNA structs property.
148
- :type prop_name: str
149
123
  :param enum_name: Name of a RNA enum identifier.
150
- :type enum_name: str
151
124
  :return: A triple of three "RNA paths"
152
125
  (most_complete_path, "struct.prop", "struct.prop:enum").
153
126
  If no enum_name is given, the third element will always be void.
154
- :rtype: tuple[str, str, str]
155
127
  """
156
128
 
157
129
  def manual_language_code(default="en") -> str:
@@ -159,19 +131,16 @@ def manual_language_code(default="en") -> str:
159
131
 
160
132
  :return: The language code used for user manual URL component based on the current language user-preference,
161
133
  falling back to the default when unavailable.
162
- :rtype: str
163
134
  """
164
135
 
165
136
  def manual_map() -> None: ...
166
- def modules_from_path(path: str, loaded_modules) -> list:
137
+ def modules_from_path(path: str, loaded_modules: set) -> list:
167
138
  """Load all modules in a path and return them as a list.
168
139
 
169
140
  :param path: this path is scanned for scripts and packages.
170
- :type path: str
171
141
  :param loaded_modules: already loaded module names, files matching these
172
142
  names will be ignored.
173
143
  :return: all loaded modules.
174
- :rtype: list
175
144
  """
176
145
 
177
146
  def preset_find(name, preset_path, *, display_name=False, ext=".py") -> None: ...
@@ -179,9 +148,7 @@ def preset_paths(subdir: str) -> list[str]:
179
148
  """Returns a list of paths for a specific preset.
180
149
 
181
150
  :param subdir: preset subdirectory (must not be an absolute path).
182
- :type subdir: str
183
151
  :return: Script paths.
184
- :rtype: list[str]
185
152
  """
186
153
 
187
154
  def refresh_script_paths() -> None:
@@ -208,7 +175,6 @@ def register_class(
208
175
  """Register a subclass of a Blender type class.
209
176
 
210
177
  :param cls: Registerable Blender class type.
211
- :type cls: type[bpy.types.Panel | bpy.types.UIList | bpy.types.Menu | bpy.types.Header | bpy.types.Operator | bpy.types.KeyingSetInfo | bpy.types.RenderEngine | bpy.types.AssetShelf | bpy.types.FileHandler | bpy.types.PropertyGroup | bpy.types.AddonPreferences | bpy.types.NodeTree | bpy.types.Node | bpy.types.NodeSocket]
212
178
  """
213
179
 
214
180
  def register_classes_factory(classes) -> None:
@@ -225,11 +191,9 @@ def register_cli_command(id: str, execute: collections.abc.Callable) -> None:
225
191
  :param id: The command identifier (must pass an str.isidentifier check).
226
192
 
227
193
  If the id is already registered, a warning is printed and the command is inaccessible to prevent accidents invoking the wrong command.
228
- :type id: str
229
194
  :param execute: Callback, taking a single list of strings and returns an int.
230
195
  The arguments are built from all command-line arguments following the command id.
231
196
  The return value should be 0 for success, 1 on failure (specific error codes from the os module can also be used).
232
- :type execute: collections.abc.Callable
233
197
  :return: The command handle which can be passed to `unregister_cli_command`.
234
198
 
235
199
  This uses Pythons capsule type however the result should be considered an opaque handle only used for unregistering.
@@ -247,9 +211,7 @@ def register_preset_path(path: str) -> bool:
247
211
  When the __init__.py is in the same location as a presets directory.
248
212
  For example an operators preset would be located under: presets/operator/{operator.id}/
249
213
  where operator.id is the bl_idname of the operator.
250
- :type path: str
251
214
  :return: success
252
- :rtype: bool
253
215
  """
254
216
 
255
217
  def register_submodule_factory(
@@ -260,45 +222,34 @@ def register_submodule_factory(
260
222
  calling their register & unregister functions.
261
223
 
262
224
  :param module_name: The module name, typically __name__.
263
- :type module_name: str
264
225
  :param submodule_names: List of submodule names to load and unload.
265
- :type submodule_names: list[str]
266
226
  :return: register and unregister functions.
267
- :rtype: tuple[collections.abc.Callable[None], collections.abc.Callable[None]]
268
227
  """
269
228
 
270
229
  def register_tool(
271
230
  tool_cls: type[bpy.types.WorkSpaceTool],
272
231
  *,
273
- after: None | collections.abc.Sequence[str] | None = None,
232
+ after: None | collections.abc.Sequence[str] | set[str] | None = None,
274
233
  separator: bool = False,
275
234
  group: bool = False,
276
235
  ) -> None:
277
236
  """Register a tool in the toolbar.
278
237
 
279
238
  :param tool_cls: A tool subclass.
280
- :type tool_cls: type[bpy.types.WorkSpaceTool]
281
239
  :param after: Optional identifiers this tool will be added after.
282
- :type after: None | collections.abc.Sequence[str] | None
283
240
  :param separator: When true, add a separator before this tool.
284
- :type separator: bool
285
241
  :param group: When true, add a new nested group of tools.
286
- :type group: bool
287
242
  """
288
243
 
289
244
  def resource_path(
290
- type: str, *, major: int = bpy.app.version[0], minor: str = bpy.app.version[1]
245
+ type: str, *, major: int = bpy.app.version[0], minor: int = bpy.app.version[1]
291
246
  ) -> str:
292
247
  """Return the base path for storing system files.
293
248
 
294
249
  :param type: string in [USER, LOCAL, SYSTEM].
295
- :type type: str
296
250
  :param major: major version, defaults to current.
297
- :type major: int
298
251
  :param minor: minor version, defaults to current.
299
- :type minor: str
300
252
  :return: the resource path (not necessarily existing).
301
- :rtype: str
302
253
  """
303
254
 
304
255
  def script_path_user() -> None:
@@ -315,17 +266,11 @@ def script_paths(
315
266
  """Returns a list of valid script paths.
316
267
 
317
268
  :param subdir: Optional subdir.
318
- :type subdir: str | None
319
269
  :param user_pref: Include the user preference script paths.
320
- :type user_pref: bool
321
270
  :param check_all: Include local, user and system paths rather just the paths Blender uses.
322
- :type check_all: bool
323
271
  :param use_user: Include user paths
324
- :type use_user: bool
325
272
  :param use_system_environment: Include BLENDER_SYSTEM_SCRIPTS variable path
326
- :type use_system_environment: bool
327
273
  :return: script paths.
328
- :rtype: list[str]
329
274
  """
330
275
 
331
276
  def script_paths_pref() -> None:
@@ -339,9 +284,7 @@ def smpte_from_frame(frame: float, *, fps=None, fps_base=None) -> str:
339
284
  HH:MM:SS:FF.If fps and fps_base are not given the current scene is used.
340
285
 
341
286
  :param frame: frame number.
342
- :type frame: float
343
287
  :return: the frame string.
344
- :rtype: str
345
288
  """
346
289
 
347
290
  def smpte_from_seconds(time: float, *, fps=None, fps_base=None) -> str:
@@ -349,16 +292,13 @@ def smpte_from_seconds(time: float, *, fps=None, fps_base=None) -> str:
349
292
  HH:MM:SS:FF.If fps and fps_base are not given the current scene is used.
350
293
 
351
294
  :param time: time in seconds.
352
- :type time: float
353
295
  :return: the frame string.
354
- :rtype: str
355
296
  """
356
297
 
357
298
  def time_from_frame(frame: float, *, fps=None, fps_base=None) -> None:
358
299
  """Returns the time from a frame number .If fps and fps_base are not given the current scene is used.
359
300
 
360
301
  :param frame: number.
361
- :type frame: float
362
302
  :return: the time in seconds.
363
303
  """
364
304
 
@@ -367,9 +307,7 @@ def time_to_frame(time: float, *, fps=None, fps_base=None) -> float:
367
307
  as a datetime.timedelta object.If fps and fps_base are not given the current scene is used.
368
308
 
369
309
  :param time: time in seconds.
370
- :type time: float
371
310
  :return: The frame.
372
- :rtype: float
373
311
  """
374
312
 
375
313
  def unescape_identifier(string: str) -> str:
@@ -377,9 +315,7 @@ def unescape_identifier(string: str) -> str:
377
315
  This performs the reverse of `escape_identifier`.
378
316
 
379
317
  :param string: text
380
- :type string: str
381
318
  :return: The un-escaped string.
382
- :rtype: str
383
319
  """
384
320
 
385
321
  def unregister_class(
@@ -405,7 +341,6 @@ def unregister_class(
405
341
  :param cls: Blender type class,
406
342
  see `bpy.utils.register_class` for classes which can
407
343
  be registered.
408
- :type cls: type[bpy.types.Panel | bpy.types.UIList | bpy.types.Menu | bpy.types.Header | bpy.types.Operator | bpy.types.KeyingSetInfo | bpy.types.RenderEngine | bpy.types.AssetShelf | bpy.types.FileHandler | bpy.types.PropertyGroup | bpy.types.AddonPreferences | bpy.types.NodeTree | bpy.types.Node | bpy.types.NodeSocket]
409
344
  """
410
345
 
411
346
  def unregister_cli_command(handle) -> None:
@@ -421,9 +356,7 @@ def unregister_preset_path(path: str) -> bool:
421
356
  :param path: preset directory (must be an absolute path).
422
357
 
423
358
  This must match the registered path exactly.
424
- :type path: str
425
359
  :return: success
426
- :rtype: bool
427
360
  """
428
361
 
429
362
  def unregister_tool(tool_cls) -> None: ...
@@ -431,11 +364,7 @@ def user_resource(resource_type: str, *, path: str = "", create: bool = False) -
431
364
  """Return a user resource path (normally from the users home directory).
432
365
 
433
366
  :param resource_type: Resource type in [DATAFILES, CONFIG, SCRIPTS, EXTENSIONS].
434
- :type resource_type: str
435
367
  :param path: Optional subdirectory.
436
- :type path: str
437
368
  :param create: Treat the path as a directory and create it if its not existing.
438
- :type create: bool
439
369
  :return: a path.
440
- :rtype: str
441
370
  """
@@ -40,36 +40,27 @@ class ImagePreviewCollection(dict[str, bpy.types.ImagePreview]):
40
40
  """Generate a new preview from given file path.
41
41
 
42
42
  :param name: The name (unique id) identifying the preview.
43
- :type name: str | None
44
43
  :param filepath: The file path to generate the preview from.
45
- :type filepath: bytes | str | None
46
- :param filetype: The type of file, needed to generate the preview in [IMAGE, MOVIE, BLEND, FONT].
47
- :type filetype: str | None
44
+ :param filetype: The type of file, needed to generate the preview in [IMAGE, MOVIE, BLEND, FONT, OBJECT_IO].
48
45
  :param force_reload: If True, force running thumbnail manager even if preview already exists in cache.
49
- :type force_reload: bool | None
50
46
  :return: The Preview matching given name, or a new empty one.
51
- :rtype: bpy.types.ImagePreview
52
47
  """
53
48
 
54
49
  def new(self, name: str | None) -> bpy.types.ImagePreview:
55
50
  """Generate a new empty preview.
56
51
 
57
52
  :param name: The name (unique id) identifying the preview.
58
- :type name: str | None
59
53
  :return: The Preview matching given name, or a new empty one.
60
- :rtype: bpy.types.ImagePreview
61
54
  """
62
55
 
63
56
  def new() -> ImagePreviewCollection:
64
57
  """
65
58
 
66
59
  :return: a new preview collection.
67
- :rtype: ImagePreviewCollection
68
60
  """
69
61
 
70
62
  def remove(pcoll: ImagePreviewCollection | None) -> None:
71
63
  """Remove the specified previews collection.
72
64
 
73
65
  :param pcoll: Preview collection to close.
74
- :type pcoll: ImagePreviewCollection | None
75
66
  """
@@ -20,20 +20,13 @@ def to_string(
20
20
  """Convert a given input float value into a string with units.
21
21
 
22
22
  :param unit_system: The unit system, from `bpy.utils.units.systems`.
23
- :type unit_system: str | None
24
23
  :param unit_category: The category of data we are converting (length, area, rotation, etc.),
25
24
  from `bpy.utils.units.categories`.
26
- :type unit_category: str | None
27
25
  :param value: The value to convert to a string.
28
- :type value: float | None
29
26
  :param precision: Number of digits after the comma.
30
- :type precision: int | None
31
27
  :param split_unit: Whether to use several units if needed (1m1cm), or always only one (1.01m).
32
- :type split_unit: bool | None
33
28
  :param compatible_unit: Whether to use keyboard-friendly units (1m2) or nicer UTF8 ones (1m).
34
- :type compatible_unit: bool | None
35
29
  :return: The converted string.
36
- :rtype: str
37
30
  """
38
31
 
39
32
  def to_value(
@@ -46,16 +39,11 @@ def to_value(
46
39
  """Convert a given input string into a float value.
47
40
 
48
41
  :param unit_system: The unit system, from `bpy.utils.units.systems`.
49
- :type unit_system: str | None
50
42
  :param unit_category: The category of data we are converting (length, area, rotation, etc.),
51
43
  from `bpy.utils.units.categories`.
52
- :type unit_category: str | None
53
44
  :param str_input: The string to convert to a float value.
54
- :type str_input: str | None
55
45
  :param str_ref_unit: A reference string from which to extract a default unit, if none is found in str_input.
56
- :type str_ref_unit: None | str | None
57
46
  :return: The converted/interpreted value.
58
- :rtype: float
59
47
  """
60
48
 
61
49
  categories: typing.Any
@@ -4,6 +4,9 @@ import typing_extensions
4
4
  import numpy.typing as npt
5
5
  import bpy.types
6
6
 
7
+ class AutoKeying:
8
+ """Auto-keying support.Retrieve the lock status for 4D rotation."""
9
+
7
10
  class BakeOptions:
8
11
  """BakeOptions(only_selected: bool, do_pose: bool, do_object: bool, do_visual_keying: bool, do_constraint_clear: bool, do_parents_clear: bool, do_clean: bool, do_location: bool, do_rotation: bool, do_scale: bool, do_bbone: bool, do_custom_props: bool)"""
9
12
 
@@ -78,21 +81,23 @@ def action_get_first_suitable_slot(action, target_id_type) -> None:
78
81
 
79
82
  """
80
83
 
84
+ def animdata_get_channelbag_for_assigned_slot(anim_data) -> None:
85
+ """Return the channelbag used in the given anim_data or None if there is no Action
86
+ + Slot combination defined.
87
+
88
+ """
89
+
81
90
  def bake_action(
82
91
  obj: bpy.types.Object, *, action: None | bpy.types.Action, frames: int, bake_options
83
92
  ) -> None | bpy.types.Action:
84
93
  """
85
94
 
86
95
  :param obj: Object to bake.
87
- :type obj: bpy.types.Object
88
96
  :param action: An action to bake the data into, or None for a new action
89
97
  to be created.
90
- :type action: None | bpy.types.Action
91
98
  :param frames: Frames to bake.
92
- :type frames: int
93
99
  :param bake_options: Options for baking.
94
100
  :return: Action or None.
95
- :rtype: None | bpy.types.Action
96
101
  """
97
102
 
98
103
  def bake_action_iter(
@@ -101,13 +106,10 @@ def bake_action_iter(
101
106
  """An coroutine that bakes action for a single object.
102
107
 
103
108
  :param obj: Object to bake.
104
- :type obj: bpy.types.Object
105
109
  :param action: An action to bake the data into, or None for a new action
106
110
  to be created.
107
- :type action: None | bpy.types.Action
108
111
  :param bake_options: Boolean options of what to include into the action bake.
109
112
  :return: an action or None
110
- :rtype: bpy.types.Action
111
113
  """
112
114
 
113
115
  def bake_action_objects(
@@ -118,7 +120,6 @@ def bake_action_objects(
118
120
  :param frames: Frames to bake.
119
121
  :param bake_options: Options for baking.
120
122
  :return: A sequence of Action or None types (aligned with object_action_pairs)
121
- :rtype: collections.abc.Sequence[bpy.types.Action]
122
123
  """
123
124
 
124
125
  def bake_action_objects_iter(object_action_pairs, bake_options) -> None:
@@ -9,7 +9,6 @@ def bmesh_linked_uv_islands(bm, uv_layer) -> list[list[int]]:
9
9
  :param bm: the bmesh used to group with.
10
10
  :param uv_layer: the UV layer to source UVs from.
11
11
  :return: list of lists containing polygon indices
12
- :rtype: list[list[int]]
13
12
  """
14
13
 
15
14
  def match_uv(face, vert, uv, uv_layer) -> None: ...
@@ -2,12 +2,20 @@ import typing
2
2
  import collections.abc
3
3
  import typing_extensions
4
4
  import numpy.typing as npt
5
+ import bpy.types
5
6
 
6
- def get_all_referenced_ids(id, ref_map) -> None:
7
- """Return a set of IDs directly or indirectly referenced by id."""
7
+ def get_all_referenced_ids(
8
+ id: bpy.types.ID, ref_map: dict[bpy.types.ID, set[bpy.types.ID]]
9
+ ) -> set[bpy.types.ID]:
10
+ """Return a set of IDs directly or indirectly referenced by id.
8
11
 
9
- def get_id_reference_map() -> None:
10
- """Return a dictionary of direct data-block references for every data-block in the blend file."""
12
+ :param id: Datablock whose references were interested in.
13
+ :param ref_map: The global ID reference map, retrieved from get_id_reference_map()
14
+ :return: Set of datablocks referenced by id.
15
+ """
11
16
 
12
- def recursive_get_referenced_ids(ref_map, id, referenced_ids, visited) -> None:
13
- """Recursively populate referenced_ids with IDs referenced by id."""
17
+ def get_id_reference_map() -> dict[bpy.types.ID, set[bpy.types.ID]]:
18
+ """Return a dictionary of direct data-block references for every data-block in the blend file.
19
+
20
+ :return: Each datablock of the .blend file mapped to the set of IDs they directly reference.
21
+ """
@@ -21,32 +21,23 @@ def load_image(
21
21
 
22
22
  :param dirname: is the directory where the image may be located - any file at
23
23
  the end will be ignored.
24
- :type dirname: str
25
24
  :param place_holder: if True a new place holder image will be created.
26
25
  this is useful so later you can relink the image to its original data.
27
- :type place_holder: bool
28
26
  :param recursive: If True, directories will be recursively searched.
29
27
  Be careful with this if you have files in your root directory because
30
28
  it may take a long time.
31
- :type recursive: bool
32
29
  :param ncase_cmp: on non windows systems, find the correct case for the file.
33
- :type ncase_cmp: bool
34
30
  :param convert_callback: a function that takes an existing path and returns
35
31
  a new one. Use this when loading image formats blender may not support,
36
32
  the CONVERT_CALLBACK can take the path for a GIF (for example),
37
33
  convert it to a PNG and return the PNGs path.
38
34
  For formats blender can read, simply return the path that is given.
39
- :type convert_callback: typing.Any | None
40
35
  :param relpath: If not None, make the file relative to this path.
41
- :type relpath: None | str | None
42
36
  :param check_existing: If true,
43
37
  returns already loaded image data-block if possible
44
38
  (based on file path).
45
- :type check_existing: bool
46
39
  :param force_reload: If true,
47
40
  force reloading of image (only useful when check_existing
48
41
  is also enabled).
49
- :type force_reload: bool
50
42
  :return: an image or None
51
- :rtype: None | bpy.types.Image
52
43
  """
@@ -54,13 +54,9 @@ def axis_conversion_ensure(
54
54
  to be used from `bpy.types.Operator.check`.
55
55
 
56
56
  :param operator: the operator to access axis attributes from.
57
- :type operator: bpy.types.Operator
58
57
  :param forward_attr: attribute storing the forward axis
59
- :type forward_attr: str
60
58
  :param up_attr: attribute storing the up axis
61
- :type up_attr: str
62
59
  :return: True if the value was modified.
63
- :rtype: bool
64
60
  """
65
61
 
66
62
  def create_derived_objects(
@@ -69,12 +65,9 @@ def create_derived_objects(
69
65
  """This function takes a sequence of objects, returning their instances.
70
66
 
71
67
  :param depsgraph: The evaluated depsgraph.
72
- :type depsgraph: bpy.types.Depsgraph
73
68
  :param objects: A sequencer of objects.
74
- :type objects: collections.abc.Sequence[bpy.types.Object]
75
69
  :return: A dictionary where each key is an object from objects,
76
70
  values are lists of (object, matrix) tuples representing instances.
77
- :rtype: dict[bpy.types.Object, list[tuple[bpy.types.Object, mathutils.Matrix]]]
78
71
  """
79
72
 
80
73
  def orientation_helper(axis_forward="Y", axis_up="Z") -> None:
@@ -89,7 +82,7 @@ def path_reference(
89
82
  base_dst: str,
90
83
  mode: str = "AUTO",
91
84
  copy_subdir: str = "",
92
- copy_set=None,
85
+ copy_set: set[tuple[str, str]] | None = None,
93
86
  library: None | bpy.types.Library | None = None,
94
87
  ) -> str:
95
88
  """Return a filepath relative to a destination directory, for use with
@@ -97,34 +90,26 @@ def path_reference(
97
90
 
98
91
  :param filepath: the file path to return,
99
92
  supporting blenders relative // prefix.
100
- :type filepath: str
101
93
  :param base_src: the directory the filepath is relative too
102
94
  (normally the blend file).
103
- :type base_src: str
104
95
  :param base_dst: the directory the filepath will be referenced from
105
96
  (normally the export path).
106
- :type base_dst: str
107
97
  :param mode: the method used get the path in
108
98
  [AUTO, ABSOLUTE, RELATIVE, MATCH, STRIP, COPY]
109
- :type mode: str
110
99
  :param copy_subdir: the subdirectory of base_dst to use when mode=COPY.
111
- :type copy_subdir: str
112
100
  :param copy_set: collect from/to pairs when mode=COPY,
113
101
  pass to path_reference_copy when exporting is done.
114
102
  :param library: The library this path is relative to.
115
- :type library: None | bpy.types.Library | None
116
103
  :return: the new filepath.
117
- :rtype: str
118
104
  """
119
105
 
120
106
  def path_reference_copy(
121
- copy_set, report: collections.abc.Callable[str, None] = print
107
+ copy_set: set[tuple[str, str]], report: collections.abc.Callable[str, None] = print
122
108
  ) -> None:
123
109
  """Execute copying files of path_reference
124
110
 
125
111
  :param copy_set: set of (from, to) pairs to copy.
126
112
  :param report: function used for reporting warnings, takes a string argument.
127
- :type report: collections.abc.Callable[str, None]
128
113
  """
129
114
 
130
115
  def poll_file_object_drop(context) -> None:
@@ -148,18 +133,13 @@ def unique_name(
148
133
  when available.
149
134
  This can be the object, mesh, material, etc instance itself.
150
135
  Any hashable object associated with the name.
151
- :type key: typing.Any
152
136
  :param name: The name used to create a unique value in name_dict.
153
- :type name: str
154
137
  :param name_dict: This is used to cache namespace to ensure no collisions
155
138
  occur, this should be an empty dict initially and only modified by this
156
139
  function.
157
- :type name_dict: dict
158
140
  :param clean_func: Function to call on name before creating a unique value.
159
- :type clean_func: typing.Any | None
160
141
  :param sep: Separator to use when between the name and a number when a
161
142
  duplicate name is found.
162
- :type sep: str
163
143
  """
164
144
 
165
145
  def unpack_face_list(list_of_tuples) -> None: ...
@@ -4,7 +4,7 @@ import typing_extensions
4
4
  import numpy.typing as npt
5
5
 
6
6
  def addon_keymap_register(keymap_data) -> None:
7
- """Register a set of keymaps for addons using a list of keymaps.See blender_defaults.py for examples of the format this takes."""
7
+ """Register a set of keymaps for addons using a list of keymaps.See blender_default.py for examples of the format this takes."""
8
8
 
9
9
  def addon_keymap_unregister(keymap_data) -> None:
10
10
  """Unregister a set of keymaps for addons."""