|- This is a direct dump of https://wiki.blender.org/index.php?title=Dev:Source/Development/Todo/Scripting (without cherrypicking the [still] valid items)|
|- Changed the broken python documentation links|
Unstable or poorly tested
- BMesh operators currently use int's for enums that have undocumented values. T34914
Fixes that still need doing.
Internal API Problems
- Class registration needs to be reworked. as well as some internal bugs fixed.
- RNA api has a bug where 'raw_type' defaults to INT but is not set for MFace verts in makesrna.
- ID data returned from functions is not included unless the type is an ID itself.Returning a mesh will work but not a meshes face for eg. See bpy_rna.c - / XXX this is missing the ID part! /
- Dynamic enums currently refer to invalid memory when accessed from python, we need a way for python to hold the memory until its done with the dynamic enum.
Low Priority Py API
- Re-Registering classes leaks memory, would be good to resolve this. (see comments in bpy_rna.c)
- 'Safe Mode' - where writes to invalid memory are detected.
- Implement import hooks rather than replacing import/reload https://www.python.org/dev/peps/pep-0302/
Python/RNA API Design TODO
- Add a way to cancel running scripts from the user interface, with no console this becomes very problematic (Esc --> KeyboardInterrupt for example).
- Currently there is no way to write packed images from blend files, support for this should be added to exporters. eg: image.pack_write("somepath.png")
- Addressing operators/panels/menus, should we translate all names fromSOME_MT_menu --> some.menu, ONE_PT_panel --> one.panel ? would mean the UI code could reference them by this more pythonic syntax.
- need to decide how 2.4x api's will fit in with new apis. PyNodes, PyConstraints.
- convenience function to get selected verts/edges/faces to prevent expensive iteration over meshes. Something like: me.verts.selected
- Design a method to allow custom UIs to filter properties/options. Useful for Blender GE too (example: which constraints are supported (T26804). Complex matter for which rna needs to be extended?
- Zero bytes are not supported in RNA byte string types, see T32581
- Better python API and undo stack integration, see T38386
- bpy.ops.mode_set(...) has different mode-names than bpy.context.mode. E.g. TEXTURE_PAINT vs PAINT_TEXTURE''CoDEmanX:'' Getting mode from bpy.context.mode for mode_set() is inappropriate, use '''bpy.context.object.mode''' instead!
- bpy.ops.object.move_to_layer() takes a boolean array of 20 elements (like in Blender GUI), but most functions require 32 elements. bpy.ops.object.add() for example.
- bone.matrix returns a matrix, but requires a list when assigning to it. This also goes for some of the other matrix attributes of bone, editbone and posebone. [appears to be resolved as of 2.67?]
- the term 'size' is used incorrectly in some cases, where it should be 'scale' instead. Review and correct: https://docs.blender.org/api/current/search.html?q=size&check_keywords=yes&area=default
- keyframe_insert(), options for insert or replacing existing keyframes, threshold for detecting doubles see: https://docs.blender.org/api/current/bpy.types.bpy_struct.html#bpy.types.bpy_struct.keyframe_insert
- The ID data block path returned by RNA_path_full_ID_py (rna_access.c) for node trees only works for node groups, which are stored as true ID data blocks in bpy.data.node_groups. For material/compo/texture nodes which are part of Material/Scene/Texture respectively the function can not determine the correct path. Best solution would be to get rid of nested ID data blocks altogether T35720
Python RNA access
- Remove mesh vertices / edges / polygons (without bmesh module)
- Shorthand for active vertex / active edge (bmesh module)
- Active vertex / edge index for meshes (like Mesh.polygons.active)
- Remove Shape Key
- Remove Curve Points
- Particle edit mode
- Start/stop the physics sim
- Sculpt mask custom data
- Add / remove rigid body + constraints + world
- Add / remove transform orientation
- Add / remove Text curve object Textboxes
- Add / remove Particle Systems
- Sequencer, ability to load and images T40663
- Pixels and resolution are not available with multilayer EXR or Render Result images T53768
- Append to (and remove from?) SpaceConsole .history and .scrollback
- input() is not supported T40592
General todo items
- Operator redo (toolbar) could also change the last InfoWindow print of the python operator equivalent.
- mathutil.geometry.intersect_point_quad_2d works inpredictable for non-concave or quads with singularity edges T30831
- modules/rna_xml.py: BoolVectorProperty and CollectionProperty issue T32882
- Drivers should be able to access '''self''' for bones and objects.
- Add the ability to report() without an operator, internally use CTX_wm_reports(C), See: http://blender.stackexchange.com/questions/1826/operator-report-outside-operators