Page MenuHome

Blender development todo list -- Scripting
Open, NormalPublic

Description

Notes:
- 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
Inconsistencies
  • 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

Python Console

  • 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

Details

Type
To Do

Event Timeline

Philipp Oeser (lichtwerk) lowered the priority of this task from Needs Triage by Developer to Normal.Jun 7 2018, 12:54 PM
Philipp Oeser (lichtwerk) created this task.