Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'doc/python_api')
-rw-r--r--doc/python_api/examples/bge.texture.py19
-rw-r--r--doc/python_api/examples/blf.py49
-rw-r--r--doc/python_api/examples/bmesh.ops.1.py2
-rw-r--r--doc/python_api/examples/bpy.app.translations.py59
-rw-r--r--doc/python_api/examples/bpy.props.1.py52
-rw-r--r--doc/python_api/examples/bpy.props.5.py36
-rw-r--r--doc/python_api/examples/bpy.types.Menu.4.py81
-rw-r--r--doc/python_api/examples/bpy.types.Operator.5.py15
-rw-r--r--doc/python_api/examples/bpy.types.Operator.6.py38
-rw-r--r--doc/python_api/examples/bpy.types.RenderEngine.py12
-rw-r--r--doc/python_api/rst/bge.app.rst1
-rw-r--r--doc/python_api/rst/bge.constraints.rst22
-rw-r--r--doc/python_api/rst/bge.texture.rst149
-rw-r--r--doc/python_api/rst/bge.types.rst1
-rw-r--r--doc/python_api/rst/bge_types/bge.types.BL_ActionActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.BL_ArmatureActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.BL_ArmatureBone.rst2
-rw-r--r--doc/python_api/rst/bge_types/bge.types.BL_ArmatureChannel.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.BL_ArmatureConstraint.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.BL_ArmatureObject.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.BL_Shader.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.BL_ShapeActionActuator.rst6
-rw-r--r--doc/python_api/rst/bge_types/bge.types.CListValue.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.CPropValue.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.CValue.rst2
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_ArmatureSensor.rst2
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_BlenderMaterial.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_Camera.rst2
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_CameraActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_CharacterWrapper.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_ConstraintActuator.rst2
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_ConstraintWrapper.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_FontObject.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_GameActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst2
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_LibLoadStatus.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_LightObject.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_MeshProxy.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_MouseActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_MouseFocusSensor.rst2
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_NavMeshObject.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_NearSensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_NetworkMessageActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_NetworkMessageSensor.rst4
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_ObjectActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_ParentActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_PolyProxy.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_RadarSensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_RaySensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_SCA_AddObjectActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_SCA_DynamicActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_SCA_EndObjectActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_SCA_ReplaceMeshActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_Scene.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_SceneActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_SoundActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_StateActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_SteeringActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_TouchSensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_TrackToActuator.rst2
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_VehicleWrapper.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_VertexProxy.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_VisibilityActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.KX_WorldInfo.rst2
-rw-r--r--doc/python_api/rst/bge_types/bge.types.PyObjectPlus.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_2DFilterActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_ANDController.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_ActuatorSensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_AlwaysSensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_DelaySensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_IActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_IController.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_ILogicBrick.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_IObject.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_ISensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_JoystickSensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_KeyboardSensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_MouseSensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_NANDController.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_NORController.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_ORController.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_PropertyActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_PropertySensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_PythonController.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_PythonJoystick.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_PythonKeyboard.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_PythonMouse.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_RandomActuator.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_RandomSensor.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_XNORController.rst3
-rw-r--r--doc/python_api/rst/bge_types/bge.types.SCA_XORController.rst3
-rw-r--r--doc/python_api/rst/change_log.rst5651
-rw-r--r--doc/python_api/rst/gpu.rst8
-rw-r--r--doc/python_api/rst/include__bmesh.rst15
-rw-r--r--doc/python_api/rst/info_api_reference.rst2
-rw-r--r--doc/python_api/rst/info_overview.rst47
-rw-r--r--doc/python_api/rst/info_tutorial_addon.rst635
-rw-r--r--doc/python_api/rst_from_bmesh_opdefines.py2
-rw-r--r--doc/python_api/sphinx_doc_gen.py81
-rwxr-xr-xdoc/python_api/sphinx_doc_update.py32
-rw-r--r--doc/python_api/static/blender_logo.svg116
-rw-r--r--doc/python_api/static/favicon.ico (renamed from doc/python_api/blender-org/static/favicon.ico)bin1150 -> 1150 bytes
102 files changed, 6285 insertions, 1066 deletions
diff --git a/doc/python_api/examples/bge.texture.py b/doc/python_api/examples/bge.texture.py
index ac1f5a21447..8b24530b10a 100644
--- a/doc/python_api/examples/bge.texture.py
+++ b/doc/python_api/examples/bge.texture.py
@@ -1,8 +1,11 @@
"""
Basic Video Playback
++++++++++++++++++++
-Example of how to replace a texture in game with a video. It needs to run
-everyframe.
+Example of how to replace a texture in game with a video.
+It needs to run everyframe.
+To avoid any confusion with the location of the file,
+we will use ``GameLogic.expandPath()`` to build an absolute file name,
+assuming the video file is in the same directory as the blend-file.
"""
import bge
from bge import texture
@@ -26,8 +29,18 @@ if not hasattr(logic, 'video'):
logic.video.source = texture.VideoFFmpeg(movie)
logic.video.source.scale = True
+ # Note that we can change the ``Texture`` source at any time.
+ # Suppose we want to switch between two movies during the game:
+ logic.mySources[0] = texture.VideoFFmpeg('movie1.avi')
+ logic.mySources[1] = texture.VideoFFmpeg('movie2.avi')
+
+ #And then assign (and reassign) the source during the game
+ logic.video.source = logic.mySources[movieSel]
+
# quick off the movie, but it wont play in the background
logic.video.source.play()
-# you need to call this function every frame to ensure update of the texture.
+
+# Video playback is not a background process: it happens only when we refresh the texture.
+# So you need to call this function every frame to ensure update of the texture.
logic.video.refresh(True)
diff --git a/doc/python_api/examples/blf.py b/doc/python_api/examples/blf.py
index f6e87cf488d..e288ac9db66 100644
--- a/doc/python_api/examples/blf.py
+++ b/doc/python_api/examples/blf.py
@@ -2,43 +2,44 @@
Hello World Text Example
++++++++++++++++++++++++
-Blender Game Engine example of using the blf module. For this module to work we
+Example of using the blf module. For this module to work we
need to use the OpenGL wrapper :class:`~bgl` as well.
"""
-# import game engine modules
-from bge import render
-from bge import logic
# import stand alone modules
import bgl
import blf
+import bpy
+font_info = {
+ "font_id": 0,
+ "handler": None,
+}
def init():
"""init function - runs once"""
- # create a new font object, use external ttf file
- font_path = logic.expandPath('//Zeyada.ttf')
- # store the font indice - to use later
- logic.font_id = blf.load(font_path)
+ import os
+ # Create a new font object, use external ttf file.
+ font_path = bpy.path.abspath('//Zeyada.ttf')
+ # Store the font indice - to use later.
+ if os.path.exists(font_path):
+ font_info["font_id"] = blf.load(font_path)
+ else:
+ # Default font.
+ font_info["font_id"] = 0
# set the font drawing routine to run every frame
- scene = logic.getCurrentScene()
- scene.post_draw = [write]
+ font_info["handler"] = bpy.types.SpaceView3D.draw_handler_add(
+ draw_callback_px, (None, None), 'WINDOW', 'POST_PIXEL')
-def write():
- """write on screen"""
- width = render.getWindowWidth()
- height = render.getWindowHeight()
-
- # OpenGL setup
- bgl.glMatrixMode(bgl.GL_PROJECTION)
- bgl.glLoadIdentity()
- bgl.gluOrtho2D(0, width, 0, height)
- bgl.glMatrixMode(bgl.GL_MODELVIEW)
- bgl.glLoadIdentity()
-
+def draw_callback_px(self, context):
+ """Draw on the viewports"""
# BLF drawing routine
- font_id = logic.font_id
- blf.position(font_id, (width * 0.2), (height * 0.3), 0)
+ font_id = font_info["font_id"]
+ blf.position(font_id, 2, 80, 0)
blf.size(font_id, 50, 72)
blf.draw(font_id, "Hello World")
+
+
+if __name__ == '__main__':
+ init()
diff --git a/doc/python_api/examples/bmesh.ops.1.py b/doc/python_api/examples/bmesh.ops.1.py
index abce087ceb3..b307624467f 100644
--- a/doc/python_api/examples/bmesh.ops.1.py
+++ b/doc/python_api/examples/bmesh.ops.1.py
@@ -12,7 +12,7 @@ bm = bmesh.new()
bmesh.ops.create_circle(
bm,
cap_ends=False,
- diameter=0.2,
+ radius=0.2,
segments=8)
diff --git a/doc/python_api/examples/bpy.app.translations.py b/doc/python_api/examples/bpy.app.translations.py
index e41623d2885..4256147ef31 100644
--- a/doc/python_api/examples/bpy.app.translations.py
+++ b/doc/python_api/examples/bpy.app.translations.py
@@ -32,3 +32,62 @@ Module References
-----------------
"""
+
+import bpy
+
+# This block can be automatically generated by UI translations addon, which also handles conversion with PO format.
+# See also https://wiki.blender.org/index.php/Dev:Doc/Process/Translate_Blender#Translating_non-official_addons
+# It can (should) also be put in a different, specific py file.
+
+# ##### BEGIN AUTOGENERATED I18N SECTION #####
+# NOTE: You can safely move around this auto-generated block (with the begin/end markers!),
+# and edit the translations by hand.
+# Just carefully respect the format of the tuple!
+
+# Tuple of tuples ((msgctxt, msgid), (sources, gen_comments), (lang, translation, (is_fuzzy, comments)), ...)
+translations_tuple = (
+ (("*", ""),
+ ((), ()),
+ ("fr_FR", "Project-Id-Version: Copy Settings 0.1.5 (r0)\nReport-Msgid-Bugs-To: \nPOT-Creation-Date: 2013-04-18 15:27:45.563524\nPO-Revision-Date: 2013-04-18 15:38+0100\nLast-Translator: Bastien Montagne <montagne29@wanadoo.fr>\nLanguage-Team: LANGUAGE <LL@li.org>\nLanguage: __POT__\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n",
+ (False,
+ ("Blender's translation file (po format).",
+ "Copyright (C) 2013 The Blender Foundation.",
+ "This file is distributed under the same license as the Blender package.",
+ "FIRST AUTHOR <EMAIL@ADDRESS>, YEAR."))),
+ ),
+ (("Operator", "Render: Copy Settings"),
+ (("bpy.types.SCENE_OT_render_copy_settings",),
+ ()),
+ ("fr_FR", "Rendu : copier réglages",
+ (False, ())),
+ ),
+ (("*", "Copy render settings from current scene to others"),
+ (("bpy.types.SCENE_OT_render_copy_settings",),
+ ()),
+ ("fr_FR", "Copier les réglages de rendu depuis la scène courante vers d’autres",
+ (False, ())),
+ ),
+ # ... etc, all messages from your addon.
+)
+
+translations_dict = {}
+for msg in translations_tuple:
+ key = msg[0]
+ for lang, trans, (is_fuzzy, comments) in msg[2:]:
+ if trans and not is_fuzzy:
+ translations_dict.setdefault(lang, {})[key] = trans
+
+# ##### END AUTOGENERATED I18N SECTION #####
+
+# Define remaining addon (operators, UI...) here.
+
+def register():
+ # Usual operator/UI/etc. registration...
+
+ bpy.app.translations.register(__name__, translations_dict)
+
+
+def unregister():
+ bpy.app.translations.unregister(__name__)
+
+ # Usual operator/UI/etc. unregistration...
diff --git a/doc/python_api/examples/bpy.props.1.py b/doc/python_api/examples/bpy.props.1.py
index 51534628930..dd3a3ebc432 100644
--- a/doc/python_api/examples/bpy.props.1.py
+++ b/doc/python_api/examples/bpy.props.1.py
@@ -2,30 +2,56 @@
Operator Example
++++++++++++++++
-A common use of custom properties is for python based :class:`Operator` classes.
+A common use of custom properties is for python based :class:`Operator`
+classes. Test this code by running it in the text editor, or by clicking the
+button in the 3D Viewport's Tools panel. The latter will show the properties
+in the Redo panel and allow you to change them.
"""
-
import bpy
-class DialogOperator(bpy.types.Operator):
- bl_idname = "object.dialog_operator"
+class OBJECT_OT_property_example(bpy.types.Operator):
+ bl_idname = "object.property_example"
bl_label = "Property Example"
+ bl_options = {'REGISTER', 'UNDO'}
my_float = bpy.props.FloatProperty(name="Some Floating Point")
my_bool = bpy.props.BoolProperty(name="Toggle Option")
my_string = bpy.props.StringProperty(name="String Value")
def execute(self, context):
- print("Dialog Runs")
+ self.report({'INFO'}, 'F: %.2f B: %s S: %r' %
+ (self.my_float, self.my_bool, self.my_string))
+ print('My float:', self.my_float)
+ print('My bool:', self.my_bool)
+ print('My string:', self.my_string)
return {'FINISHED'}
- def invoke(self, context, event):
- wm = context.window_manager
- return wm.invoke_props_dialog(self)
-
-bpy.utils.register_class(DialogOperator)
-
-# test call
-bpy.ops.object.dialog_operator('INVOKE_DEFAULT')
+class OBJECT_PT_property_example(bpy.types.Panel):
+ bl_idname = "object_PT_property_example"
+ bl_label = "Property Example"
+ bl_space_type = 'VIEW_3D'
+ bl_region_type = 'TOOLS'
+ bl_category = "Tools"
+
+ def draw(self, context):
+ # You can set the property values that should be used when the user
+ # presses the button in the UI.
+ props = self.layout.operator('object.property_example')
+ props.my_bool = True
+ props.my_string = "Shouldn't that be 47?"
+
+ # You can set properties dynamically:
+ if context.object:
+ props.my_float = context.object.location.x
+ else:
+ props.my_float = 327
+
+
+bpy.utils.register_class(OBJECT_OT_property_example)
+bpy.utils.register_class(OBJECT_PT_property_example)
+
+# Demo call. Be sure to also test in the 3D Viewport.
+bpy.ops.object.property_example(my_float=47, my_bool=True,
+ my_string="Shouldn't that be 327?")
diff --git a/doc/python_api/examples/bpy.props.5.py b/doc/python_api/examples/bpy.props.5.py
index 87741cbab8a..a9e79fa0272 100644
--- a/doc/python_api/examples/bpy.props.5.py
+++ b/doc/python_api/examples/bpy.props.5.py
@@ -1,13 +1,12 @@
"""
-Get/Set Example
-+++++++++++++++
+Getter/Setter Example
++++++++++++++++++++++
-Get/Set functions can be used for boolean, int, float, string and enum properties.
+Getter/setter functions can be used for boolean, int, float, string and enum properties.
If these callbacks are defined the property will not be stored in the ID properties
-automatically, instead the get/set functions will be called when the property is
-read or written from the API.
+automatically. Instead, the `get` and `set` functions will be called when the property
+is respectively read or written from the API.
"""
-
import bpy
@@ -65,25 +64,24 @@ def set_enum(self, value):
bpy.types.Scene.test_enum = bpy.props.EnumProperty(items=test_items, get=get_enum, set=set_enum)
-# Testing
-
+# Testing the properties:
scene = bpy.context.scene
scene.test_float = 12.34
-print(scene.test_float)
+print('test_float:', scene.test_float)
scene.test_array = (True, False)
-print([x for x in scene.test_array])
+print('test_array:', tuple(scene.test_array))
# scene.test_date = "blah" # this would fail, property is read-only
-print(scene.test_date)
+print('test_date:', scene.test_date)
scene.test_enum = 'BLUE'
-print(scene.test_enum)
-
-
-# >>> 12.34000015258789
-# >>> [True, False]
-# >>> 2013-01-05 16:33:52.135340
-# >>> setting value 3
-# >>> GREEN
+print('test_enum:', scene.test_enum)
+
+# The above outputs:
+# test_float: 12.34000015258789
+# test_array: (True, False)
+# test_date: 2018-03-14 11:36:53.158653
+# setting value 3
+# test_enum: GREEN
diff --git a/doc/python_api/examples/bpy.types.Menu.4.py b/doc/python_api/examples/bpy.types.Menu.4.py
new file mode 100644
index 00000000000..04ceb6654da
--- /dev/null
+++ b/doc/python_api/examples/bpy.types.Menu.4.py
@@ -0,0 +1,81 @@
+"""
+Extending the Button Context Menu
++++++++++++++++++++++++++++++++++
+
+This example enables you to insert your own menu entry into the common
+right click menu that you get while hovering over a value field,
+color, string, etc.
+
+To make the example work, you have to first select an object
+then right click on an user interface element (maybe a color in the
+material properties) and choose *Execute Custom Action*.
+
+Executing the operator will then print all values.
+"""
+
+import bpy
+from bpy.types import Menu
+
+
+def dump(obj, text):
+ for attr in dir(obj):
+ print("%r.%s = %s" % (obj, attr, getattr(obj, attr)))
+
+
+class WM_OT_button_context_test(bpy.types.Operator):
+ """Right click entry test"""
+ bl_idname = "wm.button_context_test"
+ bl_label = "Run Context Test"
+
+ @classmethod
+ def poll(cls, context):
+ return context.active_object is not None
+
+ def execute(self, context):
+ value = getattr(context, "button_pointer", None)
+ if value is not None:
+ dump(value, "button_pointer")
+
+ value = getattr(context, "button_prop", None)
+ if value is not None:
+ dump(value, "button_prop")
+
+ value = getattr(context, "button_operator", None)
+ if value is not None:
+ dump(value, "button_operator")
+
+ return {'FINISHED'}
+
+
+# This class has to be exactly named like that to insert an entry in the right click menu
+class WM_MT_button_context(Menu):
+ bl_label = "Unused"
+
+ def draw(self, context):
+ pass
+
+
+def menu_func(self, context):
+ layout = self.layout
+ layout.separator()
+ layout.operator(WM_OT_button_context_test.bl_idname)
+
+classes = (
+ WM_OT_button_context_test,
+ WM_MT_button_context,
+)
+
+
+def register():
+ for cls in classes:
+ bpy.utils.register_class(cls)
+ bpy.types.WM_MT_button_context.append(menu_func)
+
+
+def unregister():
+ for cls in classes:
+ bpy.utils.unregister_class(cls)
+ bpy.types.WM_MT_button_context.remove(menu_func)
+
+if __name__ == "__main__":
+ register()
diff --git a/doc/python_api/examples/bpy.types.Operator.5.py b/doc/python_api/examples/bpy.types.Operator.5.py
index 310eeceadf3..c1a49a756a0 100644
--- a/doc/python_api/examples/bpy.types.Operator.5.py
+++ b/doc/python_api/examples/bpy.types.Operator.5.py
@@ -2,13 +2,14 @@
Modal Execution
+++++++++++++++
-This operator defines a :class:`Operator.modal` function which running,
-handling events until it returns ``{'FINISHED'}`` or ``{'CANCELLED'}``.
-
-Grab, Rotate, Scale and Fly-Mode are examples of modal operators.
-They are especially useful for interactive tools,
-your operator can have its own state where keys toggle options as the operator
-runs.
+This operator defines a :class:`Operator.modal` function that will keep being
+run to handle events until it returns ``{'FINISHED'}`` or ``{'CANCELLED'}``.
+
+Modal operators run every time a new event is detected, such as a mouse click
+or key press. Conversely, when no new events are detected, the modal operator
+will not run. Modal operators are especially useful for interactive tools, an
+operator can have its own state where keys toggle options as the operator runs.
+Grab, Rotate, Scale, and Fly-Mode are examples of modal operators.
:class:`Operator.invoke` is used to initialize the operator as being by
returning ``{'RUNNING_MODAL'}``, initializing the modal loop.
diff --git a/doc/python_api/examples/bpy.types.Operator.6.py b/doc/python_api/examples/bpy.types.Operator.6.py
new file mode 100644
index 00000000000..d32a7d5fd4a
--- /dev/null
+++ b/doc/python_api/examples/bpy.types.Operator.6.py
@@ -0,0 +1,38 @@
+"""
+Enum Search Popup
++++++++++++++++++
+
+You may want to have an operator prompt the user to select an item
+from a search field, this can be done using :class:`bpy.types.Operator.invoke_search_popup`.
+"""
+import bpy
+from bpy.props import EnumProperty
+
+
+class SearchEnumOperator(bpy.types.Operator):
+ bl_idname = "object.search_enum_operator"
+ bl_label = "Search Enum Operator"
+ bl_property = "my_search"
+
+ my_search = EnumProperty(
+ name="My Search",
+ items=(
+ ('FOO', "Foo", ""),
+ ('BAR', "Bar", ""),
+ ('BAZ', "Baz", ""),
+ ),
+ )
+
+ def execute(self, context):
+ self.report({'INFO'}, "Selected:" + self.my_search)
+ return {'FINISHED'}
+
+ def invoke(self, context, event):
+ context.window_manager.invoke_search_popup(self)
+ return {'RUNNING_MODAL'}
+
+
+bpy.utils.register_class(SearchEnumOperator)
+
+# test call
+bpy.ops.object.search_enum_operator('INVOKE_DEFAULT')
diff --git a/doc/python_api/examples/bpy.types.RenderEngine.py b/doc/python_api/examples/bpy.types.RenderEngine.py
index efb7640bcc7..f7b2be48bc4 100644
--- a/doc/python_api/examples/bpy.types.RenderEngine.py
+++ b/doc/python_api/examples/bpy.types.RenderEngine.py
@@ -64,9 +64,9 @@ def register():
# In this example, we need to see the main render image button and
# the material preview panel.
from bl_ui import (
- properties_render,
- properties_material,
- )
+ properties_render,
+ properties_material,
+ )
properties_render.RENDER_PT_render.COMPAT_ENGINES.add(CustomRenderEngine.bl_idname)
properties_material.MATERIAL_PT_preview.COMPAT_ENGINES.add(CustomRenderEngine.bl_idname)
@@ -75,9 +75,9 @@ def unregister():
bpy.utils.unregister_class(CustomRenderEngine)
from bl_ui import (
- properties_render,
- properties_material,
- )
+ properties_render,
+ properties_material,
+ )
properties_render.RENDER_PT_render.COMPAT_ENGINES.remove(CustomRenderEngine.bl_idname)
properties_material.MATERIAL_PT_preview.COMPAT_ENGINES.remove(CustomRenderEngine.bl_idname)
diff --git a/doc/python_api/rst/bge.app.rst b/doc/python_api/rst/bge.app.rst
index 34b9263db0c..e8b91ffbcaf 100644
--- a/doc/python_api/rst/bge.app.rst
+++ b/doc/python_api/rst/bge.app.rst
@@ -47,4 +47,3 @@ Module to access application values that remain unchanged during runtime.
True if the BGE has been built with physics support.
:type: bool
-
diff --git a/doc/python_api/rst/bge.constraints.rst b/doc/python_api/rst/bge.constraints.rst
index ed965c3dfc1..3cca22e9cff 100644
--- a/doc/python_api/rst/bge.constraints.rst
+++ b/doc/python_api/rst/bge.constraints.rst
@@ -2,12 +2,33 @@
Physics Constraints (bge.constraints)
=====================================
+Bullet Physics provides collision detection
+and rigid body dynamics for the Blender Game Engine.
+
+Features:
+
+- Vehicle simulation.
+- Rigid body constraints: hinge and point to point (ball socket).
+- Access to internal physics settings,
+ like deactivation time, and debugging features
+
.. module:: bge.constraints
+.. note:: Note about parameter settings
+
+ Since this API is not well documented, it can be unclear what kind of values to use for setting parameters.
+ In general, damping settings should be in the range of 0 to 1 and
+ stiffness settings should not be much higher than about 10.
+
Examples
--------
+.. seealso::
+
+ For more examples of Bullet physics and how to use them
+ see the `pybullet forum <https://pybullet.org/Bullet/phpBB3/viewforum.php?f=17>`__.
+
.. include:: __/examples/bge.constraints.py
:start-line: 1
:end-line: 4
@@ -333,4 +354,3 @@ Constraint type to be used with :func:`createConstraint`.
.. data:: GENERIC_6DOF_CONSTRAINT
.. to do
-
diff --git a/doc/python_api/rst/bge.texture.rst b/doc/python_api/rst/bge.texture.rst
index 49f6c4469a4..cd99cde0bc8 100644
--- a/doc/python_api/rst/bge.texture.rst
+++ b/doc/python_api/rst/bge.texture.rst
@@ -6,18 +6,15 @@ Video Texture (bge.texture)
Introduction
************
-The bge.texture module allows you to manipulate textures during the game.
-
-Several sources for texture are possible: video files, image files, video capture, memory buffer,
-camera render or a mix of that.
-
-The video and image files can be loaded from the internet using an URL instead of a file name.
-
-In addition, you can apply filters on the images before sending them to the GPU, allowing video effect:
-blue screen, color band, gray, normal map.
-
-bge.texture uses FFmpeg to load images and videos.
-All the formats and codecs that FFmpeg supports are supported by this module, including but not limited to:
+The ``bge.texture`` module allows you to manipulate textures during the game.
+Several sources for texture are possible: video files, image files, video capture,
+memory buffer, camera render or a mix of that.
+The video and image files can be loaded from the Internet using a URL instead of a file name.
+In addition, you can apply filters on the images before sending them to the GPU,
+allowing video effect: blue screen, color band, gray, normal map.
+``bge.texture`` uses FFmpeg to load images and videos.
+All the formats and codecs that FFmpeg supports are supported by ``bge.texture``,
+including but not limited to:
* AVI
* Ogg
@@ -28,16 +25,45 @@ All the formats and codecs that FFmpeg supports are supported by this module, in
* videoForWindows capture card (this includes many webcams)
* JPG
-The principle is simple: first you identify a texture on an existing object using
-the :class:`~bge.texture.materialID` function, then you create a new texture with dynamic content
+
+How it works
+------------
+
+The principle is simple: first you identify a texture on an existing object using the
+:class:`~bge.texture.materialID` function, then you create a new texture with dynamic content
and swap the two textures in the GPU.
-The GE is not aware of the substitution and continues to display the object as always,
+The game engine is not aware of the substitution and continues to display the object as always,
except that you are now in control of the texture.
When the texture object is deleted, the new texture is deleted and the old texture restored.
-.. module:: bge.texture
+
+Game Preparation
+----------------
+
+Before you can use the :mod:`bge.texture` module,
+you must have objects with textures applied appropriately.
+
+Imagine you want to have a television showing live broadcast programs in the game.
+You will create a television object and UV-apply a different texture at the place of the screen,
+for example ``tv.png``. What this texture looks like is not important;
+probably you want to make it dark gray to simulate power-off state.
+When the television must be turned on, you create a dynamic texture from a video capture card
+and use it instead of ``tv.png``: the TV screen will come to life.
+
+You have two ways to define textures that ``bge.texture`` can grab:
+
+- Simple UV texture.
+- Blender material with image texture channel.
+
+Because ``bge.texture`` works at texture level, it is compatible with all
+the Blender Game Engine's fancy texturing features: GLSL, multi-texture, custom shaders, etc.
+
+
+********
+Examples
+********
.. include:: __/examples/bge.texture.py
:start-line: 1
@@ -53,7 +79,6 @@ When the texture object is deleted, the new texture is deleted and the old textu
.. literalinclude:: __/examples/bge.texture.1.py
:lines: 8-
-
.. include:: __/examples/bge.texture.2.py
:start-line: 1
:end-line: 6
@@ -62,13 +87,15 @@ When the texture object is deleted, the new texture is deleted and the old textu
:lines: 8-
+.. module:: bge.texture
+
*************
Video classes
*************
.. class:: VideoFFmpeg(file, capture=-1, rate=25.0, width=0, height=0)
- FFmpeg video source.
+ FFmpeg video source, used for video files, video captures, or video streams.
:arg file: Path to the video to load; if capture >= 0 on Windows, this parameter will not be used.
:type file: str
@@ -90,19 +117,20 @@ Video classes
.. attribute:: range
- Replay range.
+ The start and stop time of the video playback, expressed in seconds from beginning.
+ By default the entire video.
:type: sequence of two floats
.. attribute:: repeat
- Repeat count, -1 for infinite repeat.
+ Number of times to replay the video, -1 for infinite repeat.
:type: int
.. attribute:: framerate
- Frame rate.
+ Relative frame rate, <1.0 for slow, >1.0 for fast.
:type: float
@@ -126,21 +154,26 @@ Video classes
.. attribute:: scale
- Fast scale of image (near neighbour).
+ Set to True to activate fast nearest neighbor scaling algorithm.
+ Texture width and height must be a power of 2.
+ If the video picture size is not a power of 2, rescaling is required.
+ By default ``bge.texture`` uses the precise but slow ``gluScaleImage()`` function.
+ Best is to rescale the video offline so that no scaling is necessary at runtime!
:type: bool
.. attribute:: flip
- Flip image vertically.
+ If True the imaged will be flipped vertically.
+ FFmpeg always delivers the image upside down, so this attribute is set to True by default.
:type: bool
.. attribute:: filter
- Pixel filter.
+ An additional filter that is applied on the video before sending it to the GPU.
- :type: one of...
+ :type: one of:
* :class:`FilterBGR24`
* :class:`FilterBlueScreen`
@@ -207,7 +240,7 @@ Image classes
.. class:: ImageFFmpeg(file)
- FFmpeg image source.
+ FFmpeg image source, used for image files and web based images.
:arg file: Path to the image to load.
:type file: str
@@ -286,7 +319,8 @@ Image classes
.. class:: ImageBuff(width, height, color=0, scale=False)
- Image source from image buffer.
+ Image from application memory.
+ For computer generated images, drawing applications.
:arg width: Width of the image.
:type width: int
@@ -477,7 +511,7 @@ Image classes
.. class:: ImageMix
- Image mixer.
+ Image mixer used to mix multiple image sources together.
.. attribute:: filter
@@ -592,7 +626,7 @@ Image classes
.. class:: ImageRender(scene, camera)
- Image source from render.
+ Image source from a render of a non active camera.
The render is done on a custom framebuffer object if fbo is specified,
otherwise on the default framebuffer.
@@ -681,7 +715,7 @@ Image classes
.. attribute:: zbuff
- Use depth component of render as grey scale color - suitable for texture source.
+ Use depth component of render as grayscale color - suitable for texture source.
:type: bool
@@ -723,7 +757,8 @@ Image classes
.. class:: ImageViewport
- Image source from viewport.
+ Image source from viewport rendered by the active camera.
+ To render from a non active camera see :class:`ImageRender`.
.. attribute:: alpha
@@ -774,11 +809,10 @@ Image classes
Refresh video - copy the viewport to an external buffer (optional) then invalidate its current content.
- :arg buffer: An optional object that implements the buffer protocol.
- If specified, the image is copied to the buffer, which must be big enough or an exception is thrown.
- The transfer to the buffer is optimal if no processing of the image is needed.
- This is the case if ``flip=False, alpha=True, scale=False, whole=True, depth=False, zbuff=False``
- and no filter is set.
+ :arg buffer: An optional object that implements the buffer protocol. If specified,
+ the image is copied to the buffer, which must be big enough or an exception is thrown.
+ The transfer to the buffer is optimal if no processing of the image is needed. This is the case if
+ ``flip=False, alpha=True, scale=False, whole=True, depth=False, zbuff=False`` and no filter is set.
:type buffer: any buffer type
:arg format: An optional image format specifier for the image that will be copied to the buffer.
Only valid values are "RGBA" or "BGRA"
@@ -817,7 +851,7 @@ Image classes
.. attribute:: zbuff
- Use depth component of viewport as grey scale color - suitable for texture source.
+ Use depth component of viewport as grayscale color - suitable for texture source.
:type: bool
@@ -838,18 +872,16 @@ Image classes
:arg capture: Card number from which the input video must be captured.
:type capture: int
- The format argument must be written as ``<displayMode>/<pixelFormat>[/3D][:<cacheSize>]`` where ``<displayMode>``
- describes the frame size and rate and <pixelFormat> the encoding of the pixels.
+ The format argument must be written as ``<displayMode>/<pixelFormat>[/3D][:<cacheSize>]``
+ where ``<displayMode>`` describes the frame size and rate and <pixelFormat> the encoding of the pixels.
The optional ``/3D`` suffix is to be used if the video stream is stereo with a left and right eye feed.
The optional ``:<cacheSize>`` suffix determines the number of the video frames kept in cache, by default 8.
- Some DeckLink cards won't work below a certain cache size.
- The default value 8 should be sufficient for all cards.
+ Some DeckLink cards won't work below a certain cache size. The default value 8 should be sufficient for all cards.
You may try to reduce the cache size to reduce the memory footprint. For example the The 4K Extreme is known
to work with 3 frames only, the Extreme 2 needs 4 frames and the Intensity Shuttle needs 6 frames, etc.
Reducing the cache size may be useful when Decklink is used in conjunction with GPUDirect:
all frames must be locked in memory in that case and that puts a lot of pressure on memory.
- If you reduce the cache size too much,
- you'll get no error but no video feed either.
+ If you reduce the cache size too much, you'll get no error but no video feed either.
The valid ``<displayMode>`` values are copied from the ``BMDDisplayMode`` enum in the DeckLink API
without the 'bmdMode' prefix. In case a mode that is not in this list is added in a later version
@@ -1006,15 +1038,20 @@ Texture classes
.. class:: Texture(gameObj, materialID=0, textureID=0, textureObj=None)
- Texture object.
+ Class that creates the ``Texture`` object that loads the dynamic texture on the GPU.
:arg gameObj: Game object to be created a video texture on.
:type gameObj: :class:`~bge.types.KX_GameObject`
- :arg materialID: Material ID. (optional)
+ :arg materialID: Material ID default, 0 is the first material. (optional)
:type materialID: int
- :arg textureID: Texture ID. (optional)
+ :arg textureID: Texture index in case of multi-texture channel, 0 = first channel by default.
+ In case of UV texture, this parameter should always be 0. (optional)
:type textureID: int
- :arg textureObj: Texture object with shared bindId. (optional)
+ :arg textureObj: Reference to another ``Texture`` object with shared bindId
+ which he user might want to reuse the texture.
+ If this argument is used, you should not create any source on this texture
+ and there is no need to refresh it either: the other ``Texture`` object will
+ provide the texture for both materials/textures.(optional)
:type textureObj: :class:`Texture`
.. attribute:: bindId
@@ -1094,7 +1131,7 @@ Texture classes
.. attribute:: source
- This attribute must be set to one of the image source. If the image size does not fit exactly
+ This attribute must be set to one of the image sources. If the image size does not fit exactly
the frame size, the extend attribute determines what to do.
For best performance, the source image should match exactly the size of the output frame.
@@ -1260,8 +1297,8 @@ Filter classes
.. class:: FilterGray
- Filter for gray scale effect.
- Proportions of R, G and B contributions in the output gray scale are 28:151:77.
+ Filter for grayscale effect.
+ Proportions of R, G and B contributions in the output grayscale are 28:151:77.
.. attribute:: previous
@@ -1368,7 +1405,7 @@ Functions
Returns a :class:`~bgl.Buffer` corresponding to the current image stored in a texture source object.
- :arg image: Image source object of type ...
+ :arg image: Image source object of type:
* :class:`VideoFFmpeg`
* :class:`ImageFFmpeg`
@@ -1387,7 +1424,7 @@ Functions
- "BGR" will return 3 bytes per pixel with the
Blue, Green and Red channels in that order.
- - "RGB1" will return 4 bytes per pixel with the
+ - "RGB1" will return 4 bytes per pixel with the
Red, Green, Blue channels in that order and the alpha channel forced to 255.
- A special mode "F" allows to return the image as an array of float.
@@ -1429,9 +1466,10 @@ Functions
.. function:: setLogFile(filename)
- Sets the name of a text file in which runtime error messages will be written, in addition to the printing
- of the messages on the Python console. Only the runtime errors specific to the VideoTexture module
- are written in that file, ordinary runtime time errors are not written.
+ Sets the name of a text file in which runtime error messages will be written,
+ in addition to the printing of the messages on the Python console.
+ Only the runtime errors specific to the VideoTexture module are written in that file,
+ ordinary runtime time errors are not written.
:arg filename: Name of the error log file.
:type filename: str
@@ -1517,4 +1555,3 @@ See Wikipedia's `Blend Modes <https://en.wikipedia.org/wiki/Blend_modes>`_ for r
.. data:: IMB_BLEND_COPY_RGB
.. data:: IMB_BLEND_COPY_ALPHA
-
diff --git a/doc/python_api/rst/bge.types.rst b/doc/python_api/rst/bge.types.rst
index f24cc3f998c..b043f53e413 100644
--- a/doc/python_api/rst/bge.types.rst
+++ b/doc/python_api/rst/bge.types.rst
@@ -35,4 +35,3 @@ Types
:glob:
bge.types.*
-
diff --git a/doc/python_api/rst/bge_types/bge.types.BL_ActionActuator.rst b/doc/python_api/rst/bge_types/bge.types.BL_ActionActuator.rst
index 9b95a5ba611..c761a0d4e44 100644
--- a/doc/python_api/rst/bge_types/bge.types.BL_ActionActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.BL_ActionActuator.rst
@@ -1,8 +1,6 @@
BL_ActionActuator(SCA_IActuator)
================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: BL_ActionActuator(SCA_IActuator)
@@ -75,4 +73,3 @@ base class --- :class:`SCA_IActuator`
The name of the property that is set to the current frame number.
:type: string
-
diff --git a/doc/python_api/rst/bge_types/bge.types.BL_ArmatureActuator.rst b/doc/python_api/rst/bge_types/bge.types.BL_ArmatureActuator.rst
index 579186ac1d6..d60782dde32 100644
--- a/doc/python_api/rst/bge_types/bge.types.BL_ArmatureActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.BL_ArmatureActuator.rst
@@ -1,8 +1,6 @@
BL_ArmatureActuator(SCA_IActuator)
==================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: BL_ArmatureActuator(SCA_IActuator)
@@ -58,4 +56,3 @@ base class --- :class:`SCA_IActuator`
The influence this actuator will set on the constraint it controls.
:type: float.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.BL_ArmatureBone.rst b/doc/python_api/rst/bge_types/bge.types.BL_ArmatureBone.rst
index 14a9ebe9ef3..0200c9c513b 100644
--- a/doc/python_api/rst/bge_types/bge.types.BL_ArmatureBone.rst
+++ b/doc/python_api/rst/bge_types/bge.types.BL_ArmatureBone.rst
@@ -1,8 +1,6 @@
BL_ArmatureBone(PyObjectPlus)
=============================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: BL_ArmatureBone(PyObjectPlus)
diff --git a/doc/python_api/rst/bge_types/bge.types.BL_ArmatureChannel.rst b/doc/python_api/rst/bge_types/bge.types.BL_ArmatureChannel.rst
index 07220534b28..d8fcfa8cbe4 100644
--- a/doc/python_api/rst/bge_types/bge.types.BL_ArmatureChannel.rst
+++ b/doc/python_api/rst/bge_types/bge.types.BL_ArmatureChannel.rst
@@ -1,8 +1,6 @@
BL_ArmatureChannel(PyObjectPlus)
================================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: BL_ArmatureChannel(PyObjectPlus)
@@ -275,4 +273,3 @@ base class --- :class:`PyObjectPlus`
.. note::
You can read the result of the calculation in rotation or euler_rotation attributes after setting this attribute.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.BL_ArmatureConstraint.rst b/doc/python_api/rst/bge_types/bge.types.BL_ArmatureConstraint.rst
index 1a4370945c1..8a62d2d688f 100644
--- a/doc/python_api/rst/bge_types/bge.types.BL_ArmatureConstraint.rst
+++ b/doc/python_api/rst/bge_types/bge.types.BL_ArmatureConstraint.rst
@@ -1,8 +1,6 @@
BL_ArmatureConstraint(PyObjectPlus)
===================================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: BL_ArmatureConstraint(PyObjectPlus)
@@ -126,4 +124,3 @@ base class --- :class:`PyObjectPlus`
Additional mode for IK constraint. Currently only used for Distance constraint:
:type: integer
-
diff --git a/doc/python_api/rst/bge_types/bge.types.BL_ArmatureObject.rst b/doc/python_api/rst/bge_types/bge.types.BL_ArmatureObject.rst
index 8389affe8a9..336ae29daac 100644
--- a/doc/python_api/rst/bge_types/bge.types.BL_ArmatureObject.rst
+++ b/doc/python_api/rst/bge_types/bge.types.BL_ArmatureObject.rst
@@ -1,8 +1,6 @@
BL_ArmatureObject(KX_GameObject)
================================
-.. module:: bge.types
-
base class --- :class:`KX_GameObject`
.. class:: BL_ArmatureObject(KX_GameObject)
@@ -31,4 +29,3 @@ base class --- :class:`KX_GameObject`
This action is unecessary if a KX_ArmatureActuator with mode run is active
or if an action is playing. Use this function in other cases. It must be called
on each frame to ensure that the armature is updated continously.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.BL_Shader.rst b/doc/python_api/rst/bge_types/bge.types.BL_Shader.rst
index a389f68ee04..53544978482 100644
--- a/doc/python_api/rst/bge_types/bge.types.BL_Shader.rst
+++ b/doc/python_api/rst/bge_types/bge.types.BL_Shader.rst
@@ -1,8 +1,6 @@
BL_Shader(PyObjectPlus)
=======================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: BL_Shader(PyObjectPlus)
@@ -227,4 +225,3 @@ base class --- :class:`PyObjectPlus`
.. method:: validate()
Validate the shader object.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.BL_ShapeActionActuator.rst b/doc/python_api/rst/bge_types/bge.types.BL_ShapeActionActuator.rst
index d08a761ed95..4c8d113ad87 100644
--- a/doc/python_api/rst/bge_types/bge.types.BL_ShapeActionActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.BL_ShapeActionActuator.rst
@@ -1,8 +1,6 @@
BL_ShapeActionActuator(SCA_IActuator)
=====================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: BL_ShapeActionActuator(SCA_IActuator)
@@ -59,7 +57,7 @@ base class --- :class:`SCA_IActuator`
.. attribute:: mode
- The operation mode of the actuator. Can be one of :ref:`these constants<shape-action-actuator>`.
+ The operation mode of the actuator. Can be one of :ref:`these constants<action-actuator>`.
:type: integer
@@ -68,5 +66,3 @@ base class --- :class:`SCA_IActuator`
The name of the property that is set to the current frame number.
:type: string
-
-
diff --git a/doc/python_api/rst/bge_types/bge.types.CListValue.rst b/doc/python_api/rst/bge_types/bge.types.CListValue.rst
index ca4cdc44bf5..e47cf351f60 100644
--- a/doc/python_api/rst/bge_types/bge.types.CListValue.rst
+++ b/doc/python_api/rst/bge_types/bge.types.CListValue.rst
@@ -1,8 +1,6 @@
CListValue(CPropValue)
======================
-.. module:: bge.types
-
base class --- :class:`CPropValue`
.. class:: CListValue(CPropValue)
@@ -69,4 +67,3 @@ base class --- :class:`CPropValue`
.. warning::
The id can't be stored as an integer in game object properties, as those only have a limited range that the id may not be contained in. Instead an id can be stored as a string game property and converted back to an integer for use in from_id lookups.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.CPropValue.rst b/doc/python_api/rst/bge_types/bge.types.CPropValue.rst
index 7be28c1e006..67fc2c4fafd 100644
--- a/doc/python_api/rst/bge_types/bge.types.CPropValue.rst
+++ b/doc/python_api/rst/bge_types/bge.types.CPropValue.rst
@@ -1,11 +1,8 @@
CPropValue(CValue)
==================
-.. module:: bge.types
-
base class --- :class:`CValue`
.. class:: CPropValue(CValue)
This class has no python functions
-
diff --git a/doc/python_api/rst/bge_types/bge.types.CValue.rst b/doc/python_api/rst/bge_types/bge.types.CValue.rst
index 52906de5576..3255471daf2 100644
--- a/doc/python_api/rst/bge_types/bge.types.CValue.rst
+++ b/doc/python_api/rst/bge_types/bge.types.CValue.rst
@@ -1,8 +1,6 @@
CValue(PyObjectPlus)
====================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: CValue(PyObjectPlus)
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_ArmatureSensor.rst b/doc/python_api/rst/bge_types/bge.types.KX_ArmatureSensor.rst
index a7123eb5c9d..ca617395a69 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_ArmatureSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_ArmatureSensor.rst
@@ -1,8 +1,6 @@
KX_ArmatureSensor(SCA_ISensor)
==============================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: KX_ArmatureSensor(SCA_ISensor)
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_BlenderMaterial.rst b/doc/python_api/rst/bge_types/bge.types.KX_BlenderMaterial.rst
index ece2a65af71..fd3bbc58a7c 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_BlenderMaterial.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_BlenderMaterial.rst
@@ -1,8 +1,6 @@
KX_BlenderMaterial(PyObjectPlus)
================================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: KX_BlenderMaterial(PyObjectPlus)
@@ -182,4 +180,3 @@ base class --- :class:`PyObjectPlus`
:return: the material's index
:rtype: integer
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_Camera.rst b/doc/python_api/rst/bge_types/bge.types.KX_Camera.rst
index ac5ab4b5fe5..8c8c68fc051 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_Camera.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_Camera.rst
@@ -1,8 +1,6 @@
KX_Camera(KX_GameObject)
========================
-.. module:: bge.types
-
base class --- :class:`KX_GameObject`
.. class:: KX_Camera(KX_GameObject)
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_CameraActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_CameraActuator.rst
index bc5efed4b08..14cf1e47070 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_CameraActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_CameraActuator.rst
@@ -1,8 +1,6 @@
KX_CameraActuator(SCA_IActuator)
================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_CameraActuator(SCA_IActuator)
@@ -44,4 +42,3 @@ base class --- :class:`SCA_IActuator`
the object this actuator tracks.
:type: :class:`KX_GameObject` or None
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_CharacterWrapper.rst b/doc/python_api/rst/bge_types/bge.types.KX_CharacterWrapper.rst
index adff6e0a2ad..df95b842b5d 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_CharacterWrapper.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_CharacterWrapper.rst
@@ -1,8 +1,6 @@
KX_CharacterWrapper(PyObjectPlus)
=================================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: KX_CharacterWrapper(PyObjectPlus)
@@ -42,4 +40,3 @@ base class --- :class:`PyObjectPlus`
.. method:: jump()
The character jumps based on it's jump speed.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_ConstraintActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_ConstraintActuator.rst
index 498990449fe..56c87cc110e 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_ConstraintActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_ConstraintActuator.rst
@@ -1,8 +1,6 @@
KX_ConstraintActuator(SCA_IActuator)
====================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_ConstraintActuator(SCA_IActuator)
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_ConstraintWrapper.rst b/doc/python_api/rst/bge_types/bge.types.KX_ConstraintWrapper.rst
index d9f03395c34..77eec6bde78 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_ConstraintWrapper.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_ConstraintWrapper.rst
@@ -1,8 +1,6 @@
KX_ConstraintWrapper(PyObjectPlus)
==================================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: KX_ConstraintWrapper(PyObjectPlus)
@@ -140,4 +138,3 @@ base class --- :class:`PyObjectPlus`
- :class:`~bge.constraints.CONETWIST_CONSTRAINT`
- :class:`~bge.constraints.VEHICLE_CONSTRAINT`
- :class:`~bge.constraints.GENERIC_6DOF_CONSTRAINT`
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_FontObject.rst b/doc/python_api/rst/bge_types/bge.types.KX_FontObject.rst
index ca35ff49a08..f02609af0fa 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_FontObject.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_FontObject.rst
@@ -1,8 +1,6 @@
KX_FontObject(KX_GameObject)
============================
-.. module:: bge.types
-
base class --- :class:`KX_GameObject`
.. class:: KX_FontObject(KX_GameObject)
@@ -29,4 +27,3 @@ base class --- :class:`KX_GameObject`
The text displayed by this Font object.
:type: string
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_GameActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_GameActuator.rst
index 54702c5318d..a36c49d57e2 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_GameActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_GameActuator.rst
@@ -1,8 +1,6 @@
KX_GameActuator(SCA_IActuator)
==============================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_GameActuator(SCA_IActuator)
@@ -20,4 +18,3 @@ base class --- :class:`SCA_IActuator`
The mode of this actuator. Can be on of :ref:`these constants <game-actuator>`
:type: Int
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst b/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst
index c5729fd5b19..2797e8ef361 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst
@@ -1,8 +1,6 @@
KX_GameObject(SCA_IObject)
==========================
-.. module:: bge.types
-
base class --- :class:`SCA_IObject`
.. class:: KX_GameObject(SCA_IObject)
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_LibLoadStatus.rst b/doc/python_api/rst/bge_types/bge.types.KX_LibLoadStatus.rst
index a37b4dad585..3e7d370476e 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_LibLoadStatus.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_LibLoadStatus.rst
@@ -1,8 +1,6 @@
KX_LibLoadStatus(PyObjectPlus)
==============================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: KX_LibLoadStatus(PyObjectPlus)
@@ -48,4 +46,3 @@ base class --- :class:`PyObjectPlus`
The amount of time, in seconds, the lib load took (0 until the operation is complete).
:type: float
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_LightObject.rst b/doc/python_api/rst/bge_types/bge.types.KX_LightObject.rst
index 6748df13873..ca4e4eaf1b3 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_LightObject.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_LightObject.rst
@@ -1,8 +1,6 @@
KX_LightObject(KX_GameObject)
=============================
-.. module:: bge.types
-
base class --- :class:`KX_GameObject`
.. class:: KX_LightObject(KX_GameObject)
@@ -161,4 +159,3 @@ base class --- :class:`KX_GameObject`
.. note::
Higher values result in a more focused light source.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_MeshProxy.rst b/doc/python_api/rst/bge_types/bge.types.KX_MeshProxy.rst
index 13fb3263a59..c009db17e4d 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_MeshProxy.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_MeshProxy.rst
@@ -1,8 +1,6 @@
KX_MeshProxy(SCA_IObject)
=========================
-.. module:: bge.types
-
base class --- :class:`SCA_IObject`
.. class:: KX_MeshProxy(SCA_IObject)
@@ -131,4 +129,3 @@ base class --- :class:`SCA_IObject`
:type uv_index: integer
:arg uv_index_from: optional uv index to copy from, -1 to transform the current uv.
:type uv_index_from: integer
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_MouseActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_MouseActuator.rst
index cc3ce49d0a5..e0fe32baa2b 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_MouseActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_MouseActuator.rst
@@ -1,8 +1,6 @@
KX_MouseActuator(SCA_IActuator)
====================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_MouseActuator(SCA_IActuator)
@@ -100,4 +98,3 @@ base class --- :class:`SCA_IActuator`
The current rotational offset caused by the mouse actuator in degrees.
:type: list (vector of 2 floats)
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_MouseFocusSensor.rst b/doc/python_api/rst/bge_types/bge.types.KX_MouseFocusSensor.rst
index 0600a4b5aae..1d7eb007c1e 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_MouseFocusSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_MouseFocusSensor.rst
@@ -1,8 +1,6 @@
KX_MouseFocusSensor(SCA_MouseSensor)
====================================
-.. module:: bge.types
-
base class --- :class:`SCA_MouseSensor`
.. class:: KX_MouseFocusSensor(SCA_MouseSensor)
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_NavMeshObject.rst b/doc/python_api/rst/bge_types/bge.types.KX_NavMeshObject.rst
index 5c73d0aa1d3..00d51108937 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_NavMeshObject.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_NavMeshObject.rst
@@ -1,8 +1,6 @@
KX_NavMeshObject(KX_GameObject)
===============================
-.. module:: bge.types
-
base class --- :class:`KX_GameObject`
.. class:: KX_NavMeshObject(KX_GameObject)
@@ -44,4 +42,3 @@ base class --- :class:`KX_GameObject`
Rebuild the navigation mesh.
:return: None
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_NearSensor.rst b/doc/python_api/rst/bge_types/bge.types.KX_NearSensor.rst
index 995e645b979..91969dfc79d 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_NearSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_NearSensor.rst
@@ -1,8 +1,6 @@
KX_NearSensor(KX_TouchSensor)
=============================
-.. module:: bge.types
-
base class --- :class:`KX_TouchSensor`
.. class:: KX_NearSensor(KX_TouchSensor)
@@ -20,4 +18,3 @@ base class --- :class:`KX_TouchSensor`
The near sensor deactivates when the object exceeds this distance.
:type: float
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_NetworkMessageActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_NetworkMessageActuator.rst
index b8dcd01fe43..525289ae71f 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_NetworkMessageActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_NetworkMessageActuator.rst
@@ -1,8 +1,6 @@
KX_NetworkMessageActuator(SCA_IActuator)
========================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_NetworkMessageActuator(SCA_IActuator)
@@ -32,4 +30,3 @@ base class --- :class:`SCA_IActuator`
Send a property instead of a regular body message.
:type: boolean
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_NetworkMessageSensor.rst b/doc/python_api/rst/bge_types/bge.types.KX_NetworkMessageSensor.rst
index a6b1082a4fe..a732c1e48f7 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_NetworkMessageSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_NetworkMessageSensor.rst
@@ -1,8 +1,6 @@
KX_NetworkMessageSensor(SCA_ISensor)
====================================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: KX_NetworkMessageSensor(SCA_ISensor)
@@ -34,5 +32,3 @@ base class --- :class:`SCA_ISensor`
The list of message bodies received. (read-only).
:type: list of strings
-
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_ObjectActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_ObjectActuator.rst
index 347b000be3d..f3948578cd5 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_ObjectActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_ObjectActuator.rst
@@ -1,8 +1,6 @@
KX_ObjectActuator(SCA_IActuator)
================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_ObjectActuator(SCA_IActuator)
@@ -126,4 +124,3 @@ base class --- :class:`SCA_IActuator`
The object that is used as reference to compute the velocity for the servo controller.
:type: :class:`KX_GameObject` or None
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_ParentActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_ParentActuator.rst
index 77dcb907d6a..13f4bcb7615 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_ParentActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_ParentActuator.rst
@@ -1,8 +1,6 @@
KX_ParentActuator(SCA_IActuator)
================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_ParentActuator(SCA_IActuator)
@@ -35,4 +33,3 @@ base class --- :class:`SCA_IActuator`
Effective only if the shape is not added to the parent compound shape.
:type: boolean
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_PolyProxy.rst b/doc/python_api/rst/bge_types/bge.types.KX_PolyProxy.rst
index f43cf62eec1..68baff8d45c 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_PolyProxy.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_PolyProxy.rst
@@ -1,8 +1,6 @@
KX_PolyProxy(SCA_IObject)
=========================
-.. module:: bge.types
-
base class --- :class:`SCA_IObject`
.. class:: KX_PolyProxy(SCA_IObject)
@@ -136,4 +134,3 @@ base class --- :class:`SCA_IObject`
:return: mesh proxy
:rtype: :class:`MeshProxy`
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_RadarSensor.rst b/doc/python_api/rst/bge_types/bge.types.KX_RadarSensor.rst
index 4274c1142f4..82028cfc186 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_RadarSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_RadarSensor.rst
@@ -1,8 +1,6 @@
KX_RadarSensor(KX_NearSensor)
=============================
-.. module:: bge.types
-
base class --- :class:`KX_NearSensor`
.. class:: KX_RadarSensor(KX_NearSensor)
@@ -41,4 +39,3 @@ base class --- :class:`KX_NearSensor`
KX_RADAR_AXIS_POS_X, KX_RADAR_AXIS_POS_Y, KX_RADAR_AXIS_POS_Z,
KX_RADAR_AXIS_NEG_X, KX_RADAR_AXIS_NEG_Y, KX_RADAR_AXIS_NEG_Z
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_RaySensor.rst b/doc/python_api/rst/bge_types/bge.types.KX_RaySensor.rst
index f182a84409f..75e171dd612 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_RaySensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_RaySensor.rst
@@ -1,8 +1,6 @@
KX_RaySensor(SCA_ISensor)
=========================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: KX_RaySensor(SCA_ISensor)
@@ -75,4 +73,3 @@ base class --- :class:`SCA_ISensor`
* KX_RAY_AXIS_NEG_X
* KX_RAY_AXIS_NEG_Y
* KX_RAY_AXIS_NEG_Z
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_SCA_AddObjectActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_SCA_AddObjectActuator.rst
index fecc863909d..9b7d2ad874a 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_SCA_AddObjectActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_SCA_AddObjectActuator.rst
@@ -1,8 +1,6 @@
KX_SCA_AddObjectActuator(SCA_IActuator)
=======================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_SCA_AddObjectActuator(SCA_IActuator)
@@ -52,4 +50,3 @@ base class --- :class:`SCA_IActuator`
adds the object without needing to calling SCA_PythonController.activate()
.. note:: Use objectLastCreated to get the newly created object.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_SCA_DynamicActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_SCA_DynamicActuator.rst
index 055c4098253..822c343aacd 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_SCA_DynamicActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_SCA_DynamicActuator.rst
@@ -1,8 +1,6 @@
KX_SCA_DynamicActuator(SCA_IActuator)
=====================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_SCA_DynamicActuator(SCA_IActuator)
@@ -26,4 +24,3 @@ base class --- :class:`SCA_IActuator`
the mass value for the KX_DYN_SET_MASS operation.
:type: float
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_SCA_EndObjectActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_SCA_EndObjectActuator.rst
index 8d9221febb0..3a414df9493 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_SCA_EndObjectActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_SCA_EndObjectActuator.rst
@@ -1,8 +1,6 @@
KX_SCA_EndObjectActuator(SCA_IActuator)
=======================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_SCA_EndObjectActuator(SCA_IActuator)
@@ -10,4 +8,3 @@ base class --- :class:`SCA_IActuator`
Edit Object Actuator (in End Object mode)
This actuator has no python methods.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_SCA_ReplaceMeshActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_SCA_ReplaceMeshActuator.rst
index 137c63ea829..8a88dff99b9 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_SCA_ReplaceMeshActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_SCA_ReplaceMeshActuator.rst
@@ -1,8 +1,6 @@
KX_SCA_ReplaceMeshActuator(SCA_IActuator)
=========================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_SCA_ReplaceMeshActuator(SCA_IActuator)
@@ -86,4 +84,3 @@ base class --- :class:`SCA_IActuator`
.. method:: instantReplaceMesh()
Immediately replace mesh without delay.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_Scene.rst b/doc/python_api/rst/bge_types/bge.types.KX_Scene.rst
index 5bd8e3a77de..7e632d2c8d4 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_Scene.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_Scene.rst
@@ -1,8 +1,6 @@
KX_Scene(PyObjectPlus)
======================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: KX_Scene(PyObjectPlus)
@@ -183,4 +181,3 @@ base class --- :class:`PyObjectPlus`
.. method:: drawObstacleSimulation()
Draw debug visualization of obstacle simulation.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_SceneActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_SceneActuator.rst
index 9d073ff5b19..b6aeaff282c 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_SceneActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_SceneActuator.rst
@@ -1,8 +1,6 @@
KX_SceneActuator(SCA_IActuator)
===============================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_SceneActuator(SCA_IActuator)
@@ -46,4 +44,3 @@ base class --- :class:`SCA_IActuator`
The mode of the actuator.
:type: integer from 0 to 5.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_SoundActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_SoundActuator.rst
index aa85bd663b8..d6d258b40d5 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_SoundActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_SoundActuator.rst
@@ -1,8 +1,6 @@
KX_SoundActuator(SCA_IActuator)
===============================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_SoundActuator(SCA_IActuator)
@@ -112,4 +110,3 @@ base class --- :class:`SCA_IActuator`
Stops the sound.
:return: None
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_StateActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_StateActuator.rst
index c9d08457cc6..7dbe47276fd 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_StateActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_StateActuator.rst
@@ -1,8 +1,6 @@
KX_StateActuator(SCA_IActuator)
===============================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_StateActuator(SCA_IActuator)
@@ -26,4 +24,3 @@ base class --- :class:`SCA_IActuator`
The bits that are 0 are will be left unmodified expect for the Copy operation which copies the mask to the object state.
:type: integer
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_SteeringActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_SteeringActuator.rst
index f0ce248f069..9e2f2a427a1 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_SteeringActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_SteeringActuator.rst
@@ -1,8 +1,6 @@
KX_SteeringActuator(SCA_IActuator)
==================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_SteeringActuator(SCA_IActuator)
@@ -68,4 +66,3 @@ base class --- :class:`SCA_IActuator`
Path update period
:type: int
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_TouchSensor.rst b/doc/python_api/rst/bge_types/bge.types.KX_TouchSensor.rst
index 876d14bc6c8..79fd1a63151 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_TouchSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_TouchSensor.rst
@@ -1,8 +1,6 @@
KX_TouchSensor(SCA_ISensor)
===========================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: KX_TouchSensor(SCA_ISensor)
@@ -44,4 +42,3 @@ base class --- :class:`SCA_ISensor`
The material of the object in the face hit by the ray. (read-only).
:type: string
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_TrackToActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_TrackToActuator.rst
index 5b5c5d0c0db..fd80c547ce3 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_TrackToActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_TrackToActuator.rst
@@ -1,8 +1,6 @@
KX_TrackToActuator(SCA_IActuator)
=================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_TrackToActuator(SCA_IActuator)
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_VehicleWrapper.rst b/doc/python_api/rst/bge_types/bge.types.KX_VehicleWrapper.rst
index 631075363ca..0d7b7103ba4 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_VehicleWrapper.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_VehicleWrapper.rst
@@ -1,8 +1,6 @@
KX_VehicleWrapper(PyObjectPlus)
===============================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: KX_VehicleWrapper(PyObjectPlus)
@@ -163,4 +161,3 @@ base class --- :class:`PyObjectPlus`
:arg wheelIndex: the wheel index
:type wheelIndex: integer
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_VertexProxy.rst b/doc/python_api/rst/bge_types/bge.types.KX_VertexProxy.rst
index 73d692770d6..f6b52affa27 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_VertexProxy.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_VertexProxy.rst
@@ -1,8 +1,6 @@
KX_VertexProxy(SCA_IObject)
===========================
-.. module:: bge.types
-
base class --- :class:`SCA_IObject`
.. class:: KX_VertexProxy(SCA_IObject)
@@ -206,4 +204,3 @@ base class --- :class:`SCA_IObject`
:type: sequence of floats [r, g, b]
:arg normal: the new normal of this vertex.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_VisibilityActuator.rst b/doc/python_api/rst/bge_types/bge.types.KX_VisibilityActuator.rst
index 4beb6539e0e..fc6c042e5b1 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_VisibilityActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_VisibilityActuator.rst
@@ -1,8 +1,6 @@
KX_VisibilityActuator(SCA_IActuator)
====================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: KX_VisibilityActuator(SCA_IActuator)
@@ -26,4 +24,3 @@ base class --- :class:`SCA_IActuator`
whether the visibility/occlusion should be propagated to all children of the object.
:type: boolean
-
diff --git a/doc/python_api/rst/bge_types/bge.types.KX_WorldInfo.rst b/doc/python_api/rst/bge_types/bge.types.KX_WorldInfo.rst
index 1501d85b86c..d96d1c1190f 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_WorldInfo.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_WorldInfo.rst
@@ -1,8 +1,6 @@
KX_WorldInfo(PyObjectPlus)
=============================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: KX_WorldInfo(PyObjectPlus)
diff --git a/doc/python_api/rst/bge_types/bge.types.PyObjectPlus.rst b/doc/python_api/rst/bge_types/bge.types.PyObjectPlus.rst
index e035f457a96..4c8ddb9bcf5 100644
--- a/doc/python_api/rst/bge_types/bge.types.PyObjectPlus.rst
+++ b/doc/python_api/rst/bge_types/bge.types.PyObjectPlus.rst
@@ -1,8 +1,6 @@
PyObjectPlus
============
-.. module:: bge.types
-
.. class:: PyObjectPlus
PyObjectPlus base class of most other types in the Game Engine.
@@ -18,4 +16,3 @@ PyObjectPlus
The invalid attribute allows testing for this case without exception handling.
:type: boolean
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_2DFilterActuator.rst b/doc/python_api/rst/bge_types/bge.types.SCA_2DFilterActuator.rst
index 0a6c5fc9025..b4c00ff0181 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_2DFilterActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_2DFilterActuator.rst
@@ -1,8 +1,6 @@
SCA_2DFilterActuator(SCA_IActuator)
===================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: SCA_2DFilterActuator(SCA_IActuator)
@@ -46,4 +44,3 @@ base class --- :class:`SCA_IActuator`
argument for motion blur filter.
:type: float (0.0-100.0)
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_ANDController.rst b/doc/python_api/rst/bge_types/bge.types.SCA_ANDController.rst
index 0942f715231..abef7dd5cb3 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_ANDController.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_ANDController.rst
@@ -1,8 +1,6 @@
SCA_ANDController(SCA_IController)
==================================
-.. module:: bge.types
-
base class --- :class:`SCA_IController`
.. class:: SCA_ANDController(SCA_IController)
@@ -10,4 +8,3 @@ base class --- :class:`SCA_IController`
An AND controller activates only when all linked sensors are activated.
There are no special python methods for this controller.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_ActuatorSensor.rst b/doc/python_api/rst/bge_types/bge.types.SCA_ActuatorSensor.rst
index 54916389298..cc89fd192c2 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_ActuatorSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_ActuatorSensor.rst
@@ -1,8 +1,6 @@
SCA_ActuatorSensor(SCA_ISensor)
===============================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: SCA_ActuatorSensor(SCA_ISensor)
@@ -16,4 +14,3 @@ base class --- :class:`SCA_ISensor`
the name of the actuator that the sensor is monitoring.
:type: string
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_AlwaysSensor.rst b/doc/python_api/rst/bge_types/bge.types.SCA_AlwaysSensor.rst
index a217b114d62..2a654a2bf38 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_AlwaysSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_AlwaysSensor.rst
@@ -1,11 +1,8 @@
SCA_AlwaysSensor(SCA_ISensor)
=============================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: SCA_AlwaysSensor(SCA_ISensor)
This sensor is always activated.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_DelaySensor.rst b/doc/python_api/rst/bge_types/bge.types.SCA_DelaySensor.rst
index ce2b8e52eec..34bdc4da44e 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_DelaySensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_DelaySensor.rst
@@ -1,8 +1,6 @@
SCA_DelaySensor(SCA_ISensor)
============================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: SCA_DelaySensor(SCA_ISensor)
@@ -36,4 +34,3 @@ base class --- :class:`SCA_ISensor`
1 if the OFF-ON cycle should be repeated indefinately, 0 if it should run once.
:type: integer
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_IActuator.rst b/doc/python_api/rst/bge_types/bge.types.SCA_IActuator.rst
index 1432d5166ef..b6afe4acc2f 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_IActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_IActuator.rst
@@ -1,11 +1,8 @@
SCA_IActuator(SCA_ILogicBrick)
==============================
-.. module:: bge.types
-
base class --- :class:`SCA_ILogicBrick`
.. class:: SCA_IActuator(SCA_ILogicBrick)
Base class for all actuator logic bricks.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_IController.rst b/doc/python_api/rst/bge_types/bge.types.SCA_IController.rst
index 5eb225ed329..4532070c814 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_IController.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_IController.rst
@@ -1,8 +1,6 @@
SCA_IController(SCA_ILogicBrick)
================================
-.. module:: bge.types
-
base class --- :class:`SCA_ILogicBrick`
.. class:: SCA_IController(SCA_ILogicBrick)
@@ -52,4 +50,3 @@ base class --- :class:`SCA_ILogicBrick`
.. note::
Order of execution between high priority controllers is not guaranteed.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_ILogicBrick.rst b/doc/python_api/rst/bge_types/bge.types.SCA_ILogicBrick.rst
index 5ed44c4bb38..e8d9413d7e5 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_ILogicBrick.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_ILogicBrick.rst
@@ -1,8 +1,6 @@
SCA_ILogicBrick(CValue)
=======================
-.. module:: bge.types
-
base class --- :class:`CValue`
.. class:: SCA_ILogicBrick(CValue)
@@ -26,4 +24,3 @@ base class --- :class:`CValue`
The name of this logic brick (read-only).
:type: string
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_IObject.rst b/doc/python_api/rst/bge_types/bge.types.SCA_IObject.rst
index 22065944542..a3080879fd0 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_IObject.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_IObject.rst
@@ -1,11 +1,8 @@
SCA_IObject(CValue)
===================
-.. module:: bge.types
-
base class --- :class:`CValue`
.. class:: SCA_IObject(CValue)
This class has no python functions
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_ISensor.rst b/doc/python_api/rst/bge_types/bge.types.SCA_ISensor.rst
index af444fb9e65..7c8d632b0a2 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_ISensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_ISensor.rst
@@ -1,8 +1,6 @@
SCA_ISensor(SCA_ILogicBrick)
============================
-.. module:: bge.types
-
base class --- :class:`SCA_ILogicBrick`
.. class:: SCA_ISensor(SCA_ILogicBrick)
@@ -98,4 +96,3 @@ base class --- :class:`SCA_ILogicBrick`
Reset sensor internal state, effect depends on the type of sensor and settings.
The sensor is put in its initial state as if it was just activated.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_JoystickSensor.rst b/doc/python_api/rst/bge_types/bge.types.SCA_JoystickSensor.rst
index 5b6628f60be..824b9932dc1 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_JoystickSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_JoystickSensor.rst
@@ -1,8 +1,6 @@
SCA_JoystickSensor(SCA_ISensor)
===============================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: SCA_JoystickSensor(SCA_ISensor)
@@ -130,4 +128,3 @@ base class --- :class:`SCA_ISensor`
:type buttonIndex: integer
:return: The current pressed state of the specified button.
:rtype: boolean
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_KeyboardSensor.rst b/doc/python_api/rst/bge_types/bge.types.SCA_KeyboardSensor.rst
index 91613068ad0..7450d9c19bb 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_KeyboardSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_KeyboardSensor.rst
@@ -1,8 +1,6 @@
SCA_KeyboardSensor(SCA_ISensor)
===============================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: SCA_KeyboardSensor(SCA_ISensor)
@@ -61,4 +59,3 @@ base class --- :class:`SCA_ISensor`
:type keycode: integer
:return: The state of the given key, can be one of :ref:`these constants<input-status>`
:rtype: int
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_MouseSensor.rst b/doc/python_api/rst/bge_types/bge.types.SCA_MouseSensor.rst
index bbc695e4cbf..8f22ec06404 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_MouseSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_MouseSensor.rst
@@ -1,8 +1,6 @@
SCA_MouseSensor(SCA_ISensor)
============================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: SCA_MouseSensor(SCA_ISensor)
@@ -36,4 +34,3 @@ base class --- :class:`SCA_ISensor`
:type button: int
:return: The state of the given key, can be one of :ref:`these constants<input-status>`
:rtype: int
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_NANDController.rst b/doc/python_api/rst/bge_types/bge.types.SCA_NANDController.rst
index 4bd67fb22ee..74094f476f3 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_NANDController.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_NANDController.rst
@@ -1,8 +1,6 @@
SCA_NANDController(SCA_IController)
===================================
-.. module:: bge.types
-
base class --- :class:`SCA_IController`
.. class:: SCA_NANDController(SCA_IController)
@@ -10,4 +8,3 @@ base class --- :class:`SCA_IController`
An NAND controller activates when all linked sensors are not active.
There are no special python methods for this controller.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_NORController.rst b/doc/python_api/rst/bge_types/bge.types.SCA_NORController.rst
index 5a567c84ece..ee06cda19aa 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_NORController.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_NORController.rst
@@ -1,8 +1,6 @@
SCA_NORController(SCA_IController)
==================================
-.. module:: bge.types
-
base class --- :class:`SCA_IController`
.. class:: SCA_NORController(SCA_IController)
@@ -10,4 +8,3 @@ base class --- :class:`SCA_IController`
An NOR controller activates only when all linked sensors are de-activated.
There are no special python methods for this controller.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_ORController.rst b/doc/python_api/rst/bge_types/bge.types.SCA_ORController.rst
index ed57b0dbaf2..874e706b3ab 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_ORController.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_ORController.rst
@@ -1,8 +1,6 @@
SCA_ORController(SCA_IController)
=================================
-.. module:: bge.types
-
base class --- :class:`SCA_IController`
.. class:: SCA_ORController(SCA_IController)
@@ -10,4 +8,3 @@ base class --- :class:`SCA_IController`
An OR controller activates when any connected sensor activates.
There are no special python methods for this controller.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_PropertyActuator.rst b/doc/python_api/rst/bge_types/bge.types.SCA_PropertyActuator.rst
index 36a4ea7fefe..149b2607077 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_PropertyActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_PropertyActuator.rst
@@ -1,8 +1,6 @@
SCA_PropertyActuator(SCA_IActuator)
===================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: SCA_PropertyActuator(SCA_IActuator)
@@ -26,4 +24,3 @@ base class --- :class:`SCA_IActuator`
TODO - add constants to game logic dict!.
:type: integer
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_PropertySensor.rst b/doc/python_api/rst/bge_types/bge.types.SCA_PropertySensor.rst
index 3c41e4679db..d9fd1cc313f 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_PropertySensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_PropertySensor.rst
@@ -1,8 +1,6 @@
SCA_PropertySensor(SCA_ISensor)
===============================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: SCA_PropertySensor(SCA_ISensor)
@@ -38,4 +36,3 @@ base class --- :class:`SCA_ISensor`
the maximum value of the range used to evaluate the property when in interval mode.
:type: string
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_PythonController.rst b/doc/python_api/rst/bge_types/bge.types.SCA_PythonController.rst
index 7b5619106ed..a11c1398546 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_PythonController.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_PythonController.rst
@@ -1,8 +1,6 @@
SCA_PythonController(SCA_IController)
=====================================
-.. module:: bge.types
-
base class --- :class:`SCA_IController`
.. class:: SCA_PythonController(SCA_IController)
@@ -51,4 +49,3 @@ base class --- :class:`SCA_IController`
:arg actuator: The actuator to operate on.
:type actuator: actuator or the actuator name as a string
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_PythonJoystick.rst b/doc/python_api/rst/bge_types/bge.types.SCA_PythonJoystick.rst
index bcec751929d..a8867ee7f96 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_PythonJoystick.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_PythonJoystick.rst
@@ -1,8 +1,6 @@
SCA_PythonJoystick(PyObjectPlus)
================================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: SCA_PythonJoystick(PyObjectPlus)
@@ -74,4 +72,3 @@ base class --- :class:`PyObjectPlus`
The number of hats for the joystick at this index. (read-only).
:type: integer
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_PythonKeyboard.rst b/doc/python_api/rst/bge_types/bge.types.SCA_PythonKeyboard.rst
index 7511f6724d8..59a3d99efc2 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_PythonKeyboard.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_PythonKeyboard.rst
@@ -1,8 +1,6 @@
SCA_PythonKeyboard(PyObjectPlus)
================================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: SCA_PythonKeyboard(PyObjectPlus)
@@ -34,4 +32,3 @@ base class --- :class:`PyObjectPlus`
:arg text: New clipboard text
:type text: string
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_PythonMouse.rst b/doc/python_api/rst/bge_types/bge.types.SCA_PythonMouse.rst
index 5dfa78d3942..6088d785eeb 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_PythonMouse.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_PythonMouse.rst
@@ -1,8 +1,6 @@
SCA_PythonMouse(PyObjectPlus)
=============================
-.. module:: bge.types
-
base class --- :class:`PyObjectPlus`
.. class:: SCA_PythonMouse(PyObjectPlus)
@@ -32,4 +30,3 @@ base class --- :class:`PyObjectPlus`
The visibility of the mouse cursor.
:type: boolean
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_RandomActuator.rst b/doc/python_api/rst/bge_types/bge.types.SCA_RandomActuator.rst
index 68357229262..ef497d81643 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_RandomActuator.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_RandomActuator.rst
@@ -1,8 +1,6 @@
SCA_RandomActuator(SCA_IActuator)
=================================
-.. module:: bge.types
-
base class --- :class:`SCA_IActuator`
.. class:: SCA_RandomActuator(SCA_IActuator)
@@ -124,4 +122,3 @@ base class --- :class:`SCA_IActuator`
The half-life 'time' is characterized by half_life.
:type half_life: float
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_RandomSensor.rst b/doc/python_api/rst/bge_types/bge.types.SCA_RandomSensor.rst
index 05e61ccf118..aaa8b1084fe 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_RandomSensor.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_RandomSensor.rst
@@ -1,8 +1,6 @@
SCA_RandomSensor(SCA_ISensor)
=============================
-.. module:: bge.types
-
base class --- :class:`SCA_ISensor`
.. class:: SCA_RandomSensor(SCA_ISensor)
@@ -20,4 +18,3 @@ base class --- :class:`SCA_ISensor`
The seed of the random number generator.
:type: integer
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_XNORController.rst b/doc/python_api/rst/bge_types/bge.types.SCA_XNORController.rst
index d0235f29a20..a46ac104307 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_XNORController.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_XNORController.rst
@@ -1,8 +1,6 @@
SCA_XNORController(SCA_IController)
===================================
-.. module:: bge.types
-
base class --- :class:`SCA_IController`
.. class:: SCA_XNORController(SCA_IController)
@@ -10,4 +8,3 @@ base class --- :class:`SCA_IController`
An XNOR controller activates when all linked sensors are the same (activated or inative).
There are no special python methods for this controller.
-
diff --git a/doc/python_api/rst/bge_types/bge.types.SCA_XORController.rst b/doc/python_api/rst/bge_types/bge.types.SCA_XORController.rst
index 98ccf142f63..bc69df421ea 100644
--- a/doc/python_api/rst/bge_types/bge.types.SCA_XORController.rst
+++ b/doc/python_api/rst/bge_types/bge.types.SCA_XORController.rst
@@ -1,8 +1,6 @@
SCA_XORController(SCA_IController)
==================================
-.. module:: bge.types
-
base class --- :class:`SCA_IController`
.. class:: SCA_XORController(SCA_IController)
@@ -10,4 +8,3 @@ base class --- :class:`SCA_IController`
An XOR controller activates when there is the input is mixed, but not when all are on or off.
There are no special python methods for this controller.
-
diff --git a/doc/python_api/rst/change_log.rst b/doc/python_api/rst/change_log.rst
index 5a3bf2a6d8d..21c7cf96135 100644
--- a/doc/python_api/rst/change_log.rst
+++ b/doc/python_api/rst/change_log.rst
@@ -1,3 +1,5 @@
+:tocdepth: 2
+
Blender API Change Log
**********************
@@ -5648,3 +5650,5652 @@ Added
* :class:`bpy.types.SceneRenderLayer.freestyle_settings`
* :class:`bpy.types.SceneRenderLayer.use_freestyle`
+
+2.67 to 2.68
+============
+
+bpy.types.BlendDataTexts
+------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataTexts.load` (filepath, internal), *was (filepath)*
+
+bpy.types.DopeSheet
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DopeSheet.show_modifiers`
+
+bpy.types.Armature
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Armature.is_editmode`
+
+bpy.types.Curve
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Curve.is_editmode`
+
+bpy.types.Lattice
+-----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Lattice.is_editmode`
+
+bpy.types.Mesh
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Mesh.calc_smooth_groups`
+* :class:`bpy.types.Mesh.is_editmode`
+
+bpy.types.MetaBall
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MetaBall.is_editmode`
+
+bpy.types.ParticleSettings
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ParticleSettings.use_modifier_stack`
+
+bpy.types.WindowManager
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.WindowManager.popup_menu`
+* :class:`bpy.types.WindowManager.pupmenu_begin__internal`
+* :class:`bpy.types.WindowManager.pupmenu_end__internal`
+
+bpy.types.World
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.World.cycles_visibility`
+
+bpy.types.MaskSpline
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MaskSpline.points`
+
+bpy.types.MaskSplines
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MaskSplines.new`
+* :class:`bpy.types.MaskSplines.remove`
+
+Removed
+^^^^^^^
+
+* **add**
+
+bpy.types.MeshPolygon
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MeshPolygon.center`
+
+bpy.types.DecimateModifier
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DecimateModifier.delimit`
+
+bpy.types.MovieTrackingSettings
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieTrackingSettings.use_keyframe_selection`
+
+bpy.types.Node
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Node.dimensions`
+
+bpy.types.NodeSocket
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.NodeSocket.hide_value`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.NodeSocket.draw` (context, layout, node, text), *was (context, layout, node)*
+
+bpy.types.NodeSocketStandard
+----------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.NodeSocketStandard.draw` (context, layout, node, text), *was (context, layout, node)*
+
+bpy.types.NodeSocketInterfaceStandard
+-------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.NodeSocketInterfaceStandard.type`
+
+bpy.types.NodeTreeInputs
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.NodeTreeInputs.move`
+
+bpy.types.NodeTreeOutputs
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.NodeTreeOutputs.move`
+
+bpy.types.CyclesMaterialSettings
+--------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesMaterialSettings.use_transparent_shadow`
+
+bpy.types.CyclesRenderSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesRenderSettings.sampling_pattern`
+
+bpy.types.RenderEngine
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderEngine.bl_use_exclude_layers`
+* :class:`bpy.types.RenderEngine.bl_use_save_buffers`
+
+bpy.types.SmokeDomainSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SmokeDomainSettings.highres_sampling`
+
+Removed
+^^^^^^^
+
+* **use_smooth_emitter**
+
+bpy.types.SmokeFlowSettings
+---------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SmokeFlowSettings.particle_size`
+* :class:`bpy.types.SmokeFlowSettings.subframes`
+* :class:`bpy.types.SmokeFlowSettings.use_particle_size`
+
+bpy.types.SpaceProperties
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceProperties.use_limited_texture_context`
+
+bpy.types.SpaceView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceView3D.transform_manipulators`
+
+Removed
+^^^^^^^
+
+* **use_manipulator_rotate**
+* **use_manipulator_scale**
+* **use_manipulator_translate**
+
+bpy.types.ThemeFontStyle
+------------------------
+
+Renamed
+^^^^^^^
+
+* **shadowalpha** -> :class:`bpy.types.ThemeFontStyle.shadow_alpha`
+* **shadowcolor** -> :class:`bpy.types.ThemeFontStyle.shadow_value`
+
+bpy.types.ThemeView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeView3D.wire_edit`
+
+bpy.types.ToolSettings
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ToolSettings.vertex_group_subset`
+
+bpy.types.UserPreferences
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferences.autoexec_paths`
+
+2.68 to 2.69
+============
+
+bpy.types.ActionActuator
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ActionActuator.blend_mode`
+
+bpy.types.ColorManagedViewSettings
+----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ColorManagedViewSettings.look`
+
+bpy.types.ShrinkwrapConstraint
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShrinkwrapConstraint.project_axis`
+* :class:`bpy.types.ShrinkwrapConstraint.project_axis_space`
+* :class:`bpy.types.ShrinkwrapConstraint.project_limit`
+
+Removed
+^^^^^^^
+
+* **use_x**
+* **use_y**
+* **use_z**
+
+bpy.types.CurveMapping
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CurveMapping.initialize`
+
+bpy.types.DynamicPaintSurface
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DynamicPaintSurface.wave_smoothness`
+
+bpy.types.Mesh
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Mesh.calc_normals_split`
+* :class:`bpy.types.Mesh.free_normals_split`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Mesh.calc_smooth_groups` (use_bitflags), *was ()*
+
+bpy.types.Scene
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Scene.frame_current_final`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Scene.collada_export` (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, include_uv_textures, include_material_textures, use_texture_copies, use_ngons, use_object_instantiation, sort_by_name, open_sim, export_transformation_type), *was (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, include_uv_textures, include_material_textures, use_texture_copies, use_ngons, use_object_instantiation, sort_by_name, second_life, export_transformation_type)*
+
+bpy.types.Text
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Text.current_line_index`
+
+bpy.types.IDMaterials
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.IDMaterials.clear`
+
+bpy.types.KeyMaps
+-----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.KeyMaps.remove`
+
+bpy.types.MaskParent
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MaskParent.type`
+
+bpy.types.MeshLoop
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MeshLoop.normal`
+
+bpy.types.SimpleDeformModifier
+------------------------------
+
+Removed
+^^^^^^^
+
+* **use_relative**
+
+bpy.types.MovieTracking
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieTracking.plane_tracks`
+
+bpy.types.MovieTrackingObject
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieTrackingObject.plane_tracks`
+
+bpy.types.ShaderNodeMapping
+---------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeMapping.vector_type`
+
+bpy.types.ShaderNodeSubsurfaceScattering
+----------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeSubsurfaceScattering.falloff`
+
+bpy.types.ShaderNodeTexSky
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeTexSky.ground_albedo`
+* :class:`bpy.types.ShaderNodeTexSky.sky_type`
+
+bpy.types.ParticleSystem
+------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.ParticleSystem.co_hair` (object, particle_no, step), *was (object, modifier, particle_no, step)*
+
+bpy.types.Property
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Property.is_argument_optional`
+
+bpy.types.CyclesCurveRenderSettings
+-----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesCurveRenderSettings.cull_backfacing`
+* :class:`bpy.types.CyclesCurveRenderSettings.shape`
+
+Removed
+^^^^^^^
+
+* **encasing_ratio**
+* **interpolation**
+* **line_method**
+* **normalmix**
+* **preset**
+* **segments**
+* **triangle_method**
+* **use_backfacing**
+* **use_encasing**
+* **use_joined**
+* **use_parents**
+* **use_smooth**
+* **use_tangent_normal**
+* **use_tangent_normal_correction**
+* **use_tangent_normal_geometry**
+
+bpy.types.CyclesRenderSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesRenderSettings.use_square_samples`
+
+bpy.types.RenderEngine
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderEngine.bind_display_space_shader`
+* :class:`bpy.types.RenderEngine.support_display_space_shader`
+* :class:`bpy.types.RenderEngine.unbind_display_space_shader`
+
+bpy.types.RenderLayer
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderLayer.use_pass_subsurface_color`
+* :class:`bpy.types.RenderLayer.use_pass_subsurface_direct`
+* :class:`bpy.types.RenderLayer.use_pass_subsurface_indirect`
+
+bpy.types.SceneGameData
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SceneGameData.vsync`
+
+bpy.types.SceneRenderLayer
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SceneRenderLayer.use_pass_subsurface_color`
+* :class:`bpy.types.SceneRenderLayer.use_pass_subsurface_direct`
+* :class:`bpy.types.SceneRenderLayer.use_pass_subsurface_indirect`
+
+bpy.types.SpaceNodeEditor
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceNodeEditor.cursor_location_from_region`
+
+bpy.types.SpaceTextEditor
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceTextEditor.top`
+* :class:`bpy.types.SpaceTextEditor.visible_lines`
+
+bpy.types.SpaceView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceView3D.show_occlude_wire`
+
+bpy.types.TexMapping
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TexMapping.vector_type`
+
+bpy.types.ThemeImageEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeImageEditor.uv_others`
+* :class:`bpy.types.ThemeImageEditor.uv_shadow`
+
+bpy.types.UILayout
+------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.UILayout.template_list` (listtype_name, list_id, dataptr, propname, active_dataptr, active_propname, rows, maxrows, type, columns), *was (listtype_name, list_id, dataptr, propname, active_dataptr, active_propname, rows, maxrows, type)*
+
+bpy.types.UIList
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UIList.bitflag_filter_item`
+* :class:`bpy.types.UIList.draw_filter`
+* :class:`bpy.types.UIList.filter_items`
+* :class:`bpy.types.UIList.filter_name`
+* :class:`bpy.types.UIList.use_filter_invert`
+* :class:`bpy.types.UIList.use_filter_show`
+* :class:`bpy.types.UIList.use_filter_sort_alpha`
+* :class:`bpy.types.UIList.use_filter_sort_reverse`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.UIList.draw_item` (context, layout, data, item, icon, active_data, active_property, index, flt_flag), *was (context, layout, data, item, icon, active_data, active_property, index)*
+
+bpy.types.UI_UL_list
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UI_UL_list.filter_items_by_name`
+* :class:`bpy.types.UI_UL_list.sort_items_by_name`
+* :class:`bpy.types.UI_UL_list.sort_items_helper`
+
+bpy.types.Window
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Window.cursor_modal_restore`
+* :class:`bpy.types.Window.cursor_modal_set`
+* :class:`bpy.types.Window.cursor_set`
+* :class:`bpy.types.Window.cursor_warp`
+
+2.69 to 2.70
+============
+
+bpy.types.BlendData
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BlendData.use_autopack`
+
+bpy.types.ClothSettings
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ClothSettings.sewing_force_max`
+* :class:`bpy.types.ClothSettings.shrink_max`
+* :class:`bpy.types.ClothSettings.shrink_min`
+* :class:`bpy.types.ClothSettings.use_sewing_springs`
+* :class:`bpy.types.ClothSettings.vertex_group_shrink`
+
+bpy.types.DupliObject
+---------------------
+
+Removed
+^^^^^^^
+
+* **matrix_original**
+
+bpy.types.FCurve
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FCurve.update_autoflags`
+
+bpy.types.FModifierNoise
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FModifierNoise.offset`
+
+bpy.types.FreestyleSettings
+---------------------------
+
+Removed
+^^^^^^^
+
+* **raycasting_algorithm**
+
+bpy.types.GameObjectSettings
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GameObjectSettings.use_record_animation`
+
+bpy.types.Armature
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Armature.transform`
+
+bpy.types.Brush
+---------------
+
+Renamed
+^^^^^^^
+
+* **use_restore_mesh** -> :class:`bpy.types.Brush.use_drag_dot`
+
+bpy.types.Curve
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Curve.transform`
+
+Removed
+^^^^^^^
+
+* **use_time_offset**
+
+bpy.types.Image
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Image.filepath_from_user`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Image.gl_load` (frame, filter, mag), *was (filter, mag)*
+* :class:`bpy.types.Image.gl_touch` (frame, filter, mag), *was (filter, mag)*
+
+bpy.types.Lattice
+-----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Lattice.transform`
+
+bpy.types.Mesh
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Mesh.calc_tangents`
+* :class:`bpy.types.Mesh.free_tangents`
+
+bpy.types.Object
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Object.image_user`
+* :class:`bpy.types.Object.lod_levels`
+
+bpy.types.ParticleSettings
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ParticleSettings.material_slot`
+
+bpy.types.Scene
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Scene.lock_frame_selection_to_range`
+
+bpy.types.Texture
+-----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Texture.use_clamp`
+
+bpy.types.World
+---------------
+
+Removed
+^^^^^^^
+
+* **star_settings**
+
+bpy.types.MaskLayer
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MaskLayer.use_fill_holes`
+* :class:`bpy.types.MaskLayer.use_fill_overlap`
+
+bpy.types.Menu
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Menu.draw_collapsible`
+
+bpy.types.MeshLoop
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MeshLoop.bitangent`
+* :class:`bpy.types.MeshLoop.bitangent_sign`
+* :class:`bpy.types.MeshLoop.tangent`
+
+bpy.types.BevelModifier
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BevelModifier.offset_type`
+* :class:`bpy.types.BevelModifier.profile`
+
+bpy.types.BuildModifier
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BuildModifier.use_reverse`
+
+bpy.types.ScrewModifier
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ScrewModifier.use_stretch_u`
+* :class:`bpy.types.ScrewModifier.use_stretch_v`
+
+bpy.types.TriangulateModifier
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TriangulateModifier.ngon_method`
+* :class:`bpy.types.TriangulateModifier.quad_method`
+
+Removed
+^^^^^^^
+
+* **use_beauty**
+
+bpy.types.MovieTrackingMarker
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieTrackingMarker.is_keyed`
+
+bpy.types.MovieTrackingPlaneTrack
+---------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieTrackingPlaneTrack.image`
+* :class:`bpy.types.MovieTrackingPlaneTrack.image_opacity`
+
+bpy.types.MovieTrackingSettings
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieTrackingSettings.default_weight`
+* :class:`bpy.types.MovieTrackingSettings.show_extra_expanded`
+
+Removed
+^^^^^^^
+
+* **reconstruction_success_threshold**
+* **use_fallback_reconstruction**
+
+bpy.types.MovieTrackingTrack
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieTrackingTrack.offset`
+* :class:`bpy.types.MovieTrackingTrack.weight`
+
+bpy.types.Node
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Node.draw_label`
+
+bpy.types.CompositorNodeDefocus
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CompositorNodeDefocus.scene`
+
+bpy.types.CompositorNodeDespeckle
+---------------------------------
+
+Renamed
+^^^^^^^
+
+* **threshold_neighbour** -> :class:`bpy.types.CompositorNodeDespeckle.threshold_neighbor`
+
+bpy.types.ShaderNodeOutput
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeOutput.is_active_output`
+
+bpy.types.ShaderNodeOutputLamp
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeOutputLamp.is_active_output`
+
+bpy.types.ShaderNodeOutputMaterial
+----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeOutputMaterial.is_active_output`
+
+bpy.types.ShaderNodeOutputWorld
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeOutputWorld.is_active_output`
+
+bpy.types.NodeSocket
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.NodeSocket.is_output`
+
+Removed
+^^^^^^^
+
+* **in_out**
+
+bpy.types.NodeSocketInterface
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.NodeSocketInterface.is_output`
+
+Removed
+^^^^^^^
+
+* **in_out**
+
+bpy.types.Paint
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Paint.use_symmetry_feather`
+* :class:`bpy.types.Paint.use_symmetry_x`
+* :class:`bpy.types.Paint.use_symmetry_y`
+* :class:`bpy.types.Paint.use_symmetry_z`
+
+bpy.types.Sculpt
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Sculpt.detail_refine_method`
+* :class:`bpy.types.Sculpt.gravity`
+* :class:`bpy.types.Sculpt.gravity_object`
+
+Removed
+^^^^^^^
+
+* **use_edge_collapse**
+* **use_symmetry_feather**
+* **use_symmetry_x**
+* **use_symmetry_y**
+* **use_symmetry_z**
+
+bpy.types.VertexPaint
+---------------------
+
+Removed
+^^^^^^^
+
+* **use_all_faces**
+
+bpy.types.Panel
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Panel.bl_category`
+* :class:`bpy.types.Panel.use_pin`
+
+bpy.types.CyclesRenderSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesRenderSettings.sample_clamp_direct`
+* :class:`bpy.types.CyclesRenderSettings.sample_clamp_indirect`
+* :class:`bpy.types.CyclesRenderSettings.volume_bounces`
+* :class:`bpy.types.CyclesRenderSettings.volume_homogeneous_sampling`
+* :class:`bpy.types.CyclesRenderSettings.volume_max_steps`
+* :class:`bpy.types.CyclesRenderSettings.volume_samples`
+* :class:`bpy.types.CyclesRenderSettings.volume_step_size`
+
+Removed
+^^^^^^^
+
+* **sample_clamp**
+
+bpy.types.CyclesWorldSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesWorldSettings.homogeneous_volume`
+
+bpy.types.RenderEngine
+----------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.RenderEngine.end_result` (result, cancel, do_merge_results), *was (result, cancel)*
+
+bpy.types.RenderSettings
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderSettings.bake_user_scale`
+* :class:`bpy.types.RenderSettings.use_bake_user_scale`
+* :class:`bpy.types.RenderSettings.use_lock_interface`
+
+bpy.types.RigidBodyObject
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RigidBodyObject.mesh_source`
+* :class:`bpy.types.RigidBodyObject.use_deform`
+
+bpy.types.SceneRenderLayer
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SceneRenderLayer.pass_alpha_threshold`
+
+bpy.types.SculptToolCapabilities
+--------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SculptToolCapabilities.has_gravity`
+
+bpy.types.SpaceClipEditor
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceClipEditor.mask_overlay_mode`
+* :class:`bpy.types.SpaceClipEditor.show_graph_tracks_error`
+* :class:`bpy.types.SpaceClipEditor.show_mask_overlay`
+
+Renamed
+^^^^^^^
+
+* **show_graph_tracks** -> :class:`bpy.types.SpaceClipEditor.show_graph_tracks_motion`
+
+bpy.types.SpaceGraphEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceGraphEditor.use_auto_normalization`
+* :class:`bpy.types.SpaceGraphEditor.use_normalization`
+
+bpy.types.SpaceImageEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceImageEditor.mask_overlay_mode`
+* :class:`bpy.types.SpaceImageEditor.show_mask_overlay`
+
+bpy.types.SpaceNodeEditor
+-------------------------
+
+Removed
+^^^^^^^
+
+* **use_hidden_preview**
+
+bpy.types.SpaceView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceView3D.show_textured_shadeless`
+
+bpy.types.TextCharacterFormat
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TextCharacterFormat.material_index`
+
+bpy.types.ThemeDopeSheet
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeDopeSheet.keyframe`
+* :class:`bpy.types.ThemeDopeSheet.keyframe_border`
+* :class:`bpy.types.ThemeDopeSheet.keyframe_border_selected`
+* :class:`bpy.types.ThemeDopeSheet.keyframe_breakdown`
+* :class:`bpy.types.ThemeDopeSheet.keyframe_breakdown_selected`
+* :class:`bpy.types.ThemeDopeSheet.keyframe_extreme`
+* :class:`bpy.types.ThemeDopeSheet.keyframe_extreme_selected`
+* :class:`bpy.types.ThemeDopeSheet.keyframe_jitter`
+* :class:`bpy.types.ThemeDopeSheet.keyframe_jitter_selected`
+* :class:`bpy.types.ThemeDopeSheet.keyframe_selected`
+
+bpy.types.ThemeImageEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeImageEditor.edge_select`
+* :class:`bpy.types.ThemeImageEditor.wire_edit`
+
+bpy.types.ThemeInfo
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeInfo.info_debug`
+* :class:`bpy.types.ThemeInfo.info_debug_text`
+* :class:`bpy.types.ThemeInfo.info_error`
+* :class:`bpy.types.ThemeInfo.info_error_text`
+* :class:`bpy.types.ThemeInfo.info_info`
+* :class:`bpy.types.ThemeInfo.info_info_text`
+* :class:`bpy.types.ThemeInfo.info_selected`
+* :class:`bpy.types.ThemeInfo.info_selected_text`
+* :class:`bpy.types.ThemeInfo.info_warning`
+* :class:`bpy.types.ThemeInfo.info_warning_text`
+
+bpy.types.ThemeNLAEditor
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeNLAEditor.keyframe_border`
+* :class:`bpy.types.ThemeNLAEditor.keyframe_border_selected`
+
+bpy.types.ThemeNodeEditor
+-------------------------
+
+Removed
+^^^^^^^
+
+* **in_out_node**
+
+Renamed
+^^^^^^^
+
+* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.color_node`
+* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.filter_node`
+* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.input_node`
+* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.layout_node`
+* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.output_node`
+* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.pattern_node`
+* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.script_node`
+* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.shader_node`
+* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.texture_node`
+* **operator_node** -> :class:`bpy.types.ThemeNodeEditor.vector_node`
+
+bpy.types.ThemeSpaceGeneric
+---------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeSpaceGeneric.tab_active`
+* :class:`bpy.types.ThemeSpaceGeneric.tab_back`
+* :class:`bpy.types.ThemeSpaceGeneric.tab_inactive`
+* :class:`bpy.types.ThemeSpaceGeneric.tab_outline`
+
+bpy.types.ThemeSpaceGradient
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeSpaceGradient.tab_active`
+* :class:`bpy.types.ThemeSpaceGradient.tab_back`
+* :class:`bpy.types.ThemeSpaceGradient.tab_inactive`
+* :class:`bpy.types.ThemeSpaceGradient.tab_outline`
+
+bpy.types.TimelineMarkers
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.TimelineMarkers.new` (name, frame), *was (name)*
+
+bpy.types.UILayout
+------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.UILayout.prop` (data, property, text, text_ctxt, translate, icon, expand, slider, toggle, icon_only, event, full_event, emboss, index, icon_value), *was (data, property, text, text_ctxt, translate, icon, expand, slider, toggle, icon_only, event, full_event, emboss, index)*
+* :class:`bpy.types.UILayout.template_header` (), *was (menus)*
+
+bpy.types.UserPreferencesEdit
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesEdit.grease_pencil_default_color`
+
+bpy.types.UserPreferencesInput
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesInput.navigation_mode`
+* :class:`bpy.types.UserPreferencesInput.ndof_pan_yz_swap_axis`
+* :class:`bpy.types.UserPreferencesInput.ndof_rotx_invert_axis`
+* :class:`bpy.types.UserPreferencesInput.ndof_roty_invert_axis`
+* :class:`bpy.types.UserPreferencesInput.ndof_rotz_invert_axis`
+* :class:`bpy.types.UserPreferencesInput.ndof_view_navigate_method`
+* :class:`bpy.types.UserPreferencesInput.walk_navigation`
+
+Removed
+^^^^^^^
+
+* **ndof_roll_invert_axis**
+* **ndof_rotate_invert_axis**
+* **ndof_tilt_invert_axis**
+* **ndof_zoom_updown**
+
+2.70 to 2.71
+============
+
+bpy.types.Actuator
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Actuator.active`
+
+bpy.types.BlendDataLineStyles
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BlendDataLineStyles.is_updated`
+
+bpy.types.TransformConstraint
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TransformConstraint.from_max_x_rot`
+* :class:`bpy.types.TransformConstraint.from_max_x_scale`
+* :class:`bpy.types.TransformConstraint.from_max_y_rot`
+* :class:`bpy.types.TransformConstraint.from_max_y_scale`
+* :class:`bpy.types.TransformConstraint.from_max_z_rot`
+* :class:`bpy.types.TransformConstraint.from_max_z_scale`
+* :class:`bpy.types.TransformConstraint.from_min_x_rot`
+* :class:`bpy.types.TransformConstraint.from_min_x_scale`
+* :class:`bpy.types.TransformConstraint.from_min_y_rot`
+* :class:`bpy.types.TransformConstraint.from_min_y_scale`
+* :class:`bpy.types.TransformConstraint.from_min_z_rot`
+* :class:`bpy.types.TransformConstraint.from_min_z_scale`
+* :class:`bpy.types.TransformConstraint.to_max_x_rot`
+* :class:`bpy.types.TransformConstraint.to_max_x_scale`
+* :class:`bpy.types.TransformConstraint.to_max_y_rot`
+* :class:`bpy.types.TransformConstraint.to_max_y_scale`
+* :class:`bpy.types.TransformConstraint.to_max_z_rot`
+* :class:`bpy.types.TransformConstraint.to_max_z_scale`
+* :class:`bpy.types.TransformConstraint.to_min_x_rot`
+* :class:`bpy.types.TransformConstraint.to_min_x_scale`
+* :class:`bpy.types.TransformConstraint.to_min_y_rot`
+* :class:`bpy.types.TransformConstraint.to_min_y_scale`
+* :class:`bpy.types.TransformConstraint.to_min_z_rot`
+* :class:`bpy.types.TransformConstraint.to_min_z_scale`
+
+bpy.types.Controller
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Controller.active`
+
+bpy.types.FCurve
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FCurve.update`
+
+bpy.types.Brush
+---------------
+
+Removed
+^^^^^^^
+
+* **sculpt_stroke_method**
+
+bpy.types.Curve
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Curve.bevel_factor_mapping_end`
+* :class:`bpy.types.Curve.bevel_factor_mapping_start`
+
+bpy.types.FreestyleLineStyle
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FreestyleLineStyle.active_texture`
+* :class:`bpy.types.FreestyleLineStyle.active_texture_index`
+* :class:`bpy.types.FreestyleLineStyle.integration_type`
+* :class:`bpy.types.FreestyleLineStyle.node_tree`
+* :class:`bpy.types.FreestyleLineStyle.sort_key`
+* :class:`bpy.types.FreestyleLineStyle.sort_order`
+* :class:`bpy.types.FreestyleLineStyle.texture_slots`
+* :class:`bpy.types.FreestyleLineStyle.texture_spacing`
+* :class:`bpy.types.FreestyleLineStyle.use_nodes`
+* :class:`bpy.types.FreestyleLineStyle.use_sorting`
+* :class:`bpy.types.FreestyleLineStyle.use_texture`
+
+bpy.types.Material
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Material.use_cast_shadows`
+
+bpy.types.Mesh
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Mesh.show_normal_loop`
+
+bpy.types.Object
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Object.cycles`
+
+bpy.types.Scene
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Scene.show_keys_from_selected_only`
+
+bpy.types.Speaker
+-----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Speaker.relative`
+
+bpy.types.Keyframe
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Keyframe.amplitude`
+* :class:`bpy.types.Keyframe.back`
+* :class:`bpy.types.Keyframe.easing`
+* :class:`bpy.types.Keyframe.period`
+
+bpy.types.Linesets
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Linesets.new`
+* :class:`bpy.types.Linesets.remove`
+
+bpy.types.MaskSplinePoint
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MaskSplinePoint.handle_left_type`
+* :class:`bpy.types.MaskSplinePoint.handle_right_type`
+* :class:`bpy.types.MaskSplinePoint.weight`
+
+bpy.types.MeshEdge
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MeshEdge.use_freestyle_mark`
+
+bpy.types.MeshPolygon
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MeshPolygon.use_freestyle_mark`
+
+bpy.types.MeshTessFace
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MeshTessFace.split_normals`
+
+bpy.types.MovieTrackingCamera
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieTrackingCamera.distortion_model`
+* :class:`bpy.types.MovieTrackingCamera.division_k1`
+* :class:`bpy.types.MovieTrackingCamera.division_k2`
+
+bpy.types.ShaderNodeTexImage
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeTexImage.interpolation`
+
+bpy.types.PackedFile
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.PackedFile.data`
+
+bpy.types.Sculpt
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Sculpt.constant_detail`
+* :class:`bpy.types.Sculpt.detail_type_method`
+
+bpy.types.CyclesRenderSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesRenderSettings.bake_type`
+* :class:`bpy.types.CyclesRenderSettings.sample_all_lights_direct`
+* :class:`bpy.types.CyclesRenderSettings.sample_all_lights_indirect`
+
+bpy.types.RenderEngine
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderEngine.bake`
+* :class:`bpy.types.RenderEngine.frame_set`
+
+bpy.types.CYCLES
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CYCLES.bake`
+
+bpy.types.RenderSettings
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderSettings.bake`
+
+bpy.types.Sensor
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Sensor.active`
+
+bpy.types.SequenceElements
+--------------------------
+
+Renamed
+^^^^^^^
+
+* **push** -> :class:`bpy.types.SequenceElements.append`
+
+bpy.types.SmokeDomainSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SmokeDomainSettings.color_grid`
+* :class:`bpy.types.SmokeDomainSettings.density_grid`
+* :class:`bpy.types.SmokeDomainSettings.flame_grid`
+
+Removed
+^^^^^^^
+
+* **density**
+
+bpy.types.Space
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Space.show_locked_time`
+
+bpy.types.SpaceTimeline
+-----------------------
+
+Removed
+^^^^^^^
+
+* **show_only_selected**
+
+bpy.types.SpaceView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceView3D.region_quadviews`
+
+Removed
+^^^^^^^
+
+* **region_quadview**
+
+bpy.types.SpaceNodeEditorPath
+-----------------------------
+
+Renamed
+^^^^^^^
+
+* **push** -> :class:`bpy.types.SpaceNodeEditorPath.append`
+
+bpy.types.ThemeClipEditor
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeClipEditor.handle_align`
+* :class:`bpy.types.ThemeClipEditor.handle_auto`
+* :class:`bpy.types.ThemeClipEditor.handle_auto_clamped`
+* :class:`bpy.types.ThemeClipEditor.handle_free`
+* :class:`bpy.types.ThemeClipEditor.handle_sel_align`
+* :class:`bpy.types.ThemeClipEditor.handle_sel_auto`
+* :class:`bpy.types.ThemeClipEditor.handle_sel_auto_clamped`
+* :class:`bpy.types.ThemeClipEditor.handle_sel_free`
+
+bpy.types.ThemeImageEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeImageEditor.frame_current`
+* :class:`bpy.types.ThemeImageEditor.handle_align`
+* :class:`bpy.types.ThemeImageEditor.handle_auto`
+* :class:`bpy.types.ThemeImageEditor.handle_auto_clamped`
+* :class:`bpy.types.ThemeImageEditor.handle_free`
+* :class:`bpy.types.ThemeImageEditor.handle_sel_align`
+* :class:`bpy.types.ThemeImageEditor.handle_sel_auto`
+* :class:`bpy.types.ThemeImageEditor.handle_sel_auto_clamped`
+* :class:`bpy.types.ThemeImageEditor.handle_sel_free`
+
+bpy.types.ThemeView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeView3D.view_overlay`
+
+bpy.types.UILayout
+------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.UILayout.template_preview` (id, show_buttons, parent, slot, preview_id), *was (id, show_buttons, parent, slot)*
+
+2.71 to 2.72
+============
+
+bpy.types.EditObjectActuator
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.EditObjectActuator.track_axis`
+* :class:`bpy.types.EditObjectActuator.up_axis`
+
+bpy.types.BlendData
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BlendData.version`
+
+bpy.types.BoneGroups
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BoneGroups.new`
+* :class:`bpy.types.BoneGroups.remove`
+
+bpy.types.BrushCapabilities
+---------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BrushCapabilities.has_smooth_stroke`
+
+bpy.types.ColorRamp
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ColorRamp.color_mode`
+* :class:`bpy.types.ColorRamp.hue_interpolation`
+
+bpy.types.ColorRampElement
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ColorRampElement.alpha`
+
+bpy.types.FollowTrackConstraint
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FollowTrackConstraint.use_undistorted_position`
+
+bpy.types.Event
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Event.is_tablet`
+* :class:`bpy.types.Event.pressure`
+* :class:`bpy.types.Event.tilt`
+
+bpy.types.Brush
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Brush.blur_kernel_radius`
+* :class:`bpy.types.Brush.blur_mode`
+* :class:`bpy.types.Brush.fill_threshold`
+* :class:`bpy.types.Brush.grad_spacing`
+* :class:`bpy.types.Brush.gradient`
+* :class:`bpy.types.Brush.gradient_fill_mode`
+* :class:`bpy.types.Brush.gradient_stroke_mode`
+* :class:`bpy.types.Brush.image_paint_capabilities`
+* :class:`bpy.types.Brush.paint_curve`
+* :class:`bpy.types.Brush.secondary_color`
+* :class:`bpy.types.Brush.sharp_threshold`
+* :class:`bpy.types.Brush.use_curve`
+* :class:`bpy.types.Brush.use_gradient`
+* :class:`bpy.types.Brush.use_line`
+* :class:`bpy.types.Brush.use_pressure_masking`
+
+Renamed
+^^^^^^^
+
+* **use_drag_dot** -> :class:`bpy.types.Brush.use_restore_mesh`
+
+bpy.types.Curve
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Curve.validate_material_indices`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Curve.transform` (matrix, shape_keys), *was (matrix)*
+
+bpy.types.Lattice
+-----------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Lattice.transform` (matrix, shape_keys), *was (matrix)*
+
+bpy.types.Library
+-----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Library.packed_file`
+
+bpy.types.Material
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Material.line_color`
+* :class:`bpy.types.Material.line_priority`
+* :class:`bpy.types.Material.paint_active_slot`
+* :class:`bpy.types.Material.paint_clone_slot`
+* :class:`bpy.types.Material.texture_paint_images`
+* :class:`bpy.types.Material.texture_paint_slots`
+
+bpy.types.Mesh
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Mesh.validate_material_indices`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Mesh.transform` (matrix, shape_keys), *was (matrix)*
+
+bpy.types.WindowManager
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.WindowManager.piemenu_begin__internal`
+* :class:`bpy.types.WindowManager.piemenu_end__internal`
+* :class:`bpy.types.WindowManager.popup_menu_pie`
+
+bpy.types.BevelModifier
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BevelModifier.material`
+
+bpy.types.HookModifier
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.HookModifier.center`
+
+bpy.types.SolidifyModifier
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SolidifyModifier.use_rim_only`
+
+bpy.types.ShaderNodeBsdfAnisotropic
+-----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeBsdfAnisotropic.distribution`
+
+bpy.types.Paint
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Paint.palette`
+
+bpy.types.ImagePaint
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ImagePaint.canvas`
+* :class:`bpy.types.ImagePaint.clone_image`
+* :class:`bpy.types.ImagePaint.detect_data`
+* :class:`bpy.types.ImagePaint.missing_materials`
+* :class:`bpy.types.ImagePaint.missing_stencil`
+* :class:`bpy.types.ImagePaint.missing_texture`
+* :class:`bpy.types.ImagePaint.missing_uvs`
+* :class:`bpy.types.ImagePaint.mode`
+* :class:`bpy.types.ImagePaint.stencil_color`
+* :class:`bpy.types.ImagePaint.stencil_image`
+
+bpy.types.IMAGE_UV_sculpt
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.IMAGE_UV_sculpt.prop_unified_color`
+* :class:`bpy.types.IMAGE_UV_sculpt.prop_unified_color_picker`
+
+bpy.types.CyclesCameraSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesCameraSettings.aperture_ratio`
+
+bpy.types.CyclesMaterialSettings
+--------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesMaterialSettings.volume_sampling`
+
+bpy.types.CyclesRenderSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesRenderSettings.caustics_reflective`
+* :class:`bpy.types.CyclesRenderSettings.caustics_refractive`
+
+Removed
+^^^^^^^
+
+* **no_caustics**
+* **volume_homogeneous_sampling**
+
+bpy.types.CyclesVisibilitySettings
+----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesVisibilitySettings.scatter`
+
+bpy.types.CyclesWorldSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesWorldSettings.volume_sampling`
+
+bpy.types.OperatorStrokeElement
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.OperatorStrokeElement.size`
+
+bpy.types.RenderEngine
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderEngine.bl_use_texture_preview`
+* :class:`bpy.types.RenderEngine.layer_override`
+
+bpy.types.RenderSettings
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderSettings.preview_start_resolution`
+* :class:`bpy.types.RenderSettings.use_render_cache`
+
+bpy.types.MouseSensor
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MouseSensor.material`
+* :class:`bpy.types.MouseSensor.property`
+* :class:`bpy.types.MouseSensor.use_material`
+* :class:`bpy.types.MouseSensor.use_x_ray`
+
+bpy.types.SpaceUVEditor
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceUVEditor.show_texpaint`
+
+bpy.types.ThemeImageEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeImageEditor.handle_vertex`
+* :class:`bpy.types.ThemeImageEditor.handle_vertex_select`
+* :class:`bpy.types.ThemeImageEditor.handle_vertex_size`
+* :class:`bpy.types.ThemeImageEditor.paint_curve_handle`
+* :class:`bpy.types.ThemeImageEditor.paint_curve_pivot`
+
+bpy.types.ThemeUserInterface
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeUserInterface.wcol_pie_menu`
+
+bpy.types.ThemeView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeView3D.paint_curve_handle`
+* :class:`bpy.types.ThemeView3D.paint_curve_pivot`
+* :class:`bpy.types.ThemeView3D.split_normal`
+
+bpy.types.UILayout
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UILayout.menu_pie`
+* :class:`bpy.types.UILayout.template_palette`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.UILayout.template_curve_mapping` (data, property, type, levels, brush, use_negative_slope), *was (data, property, type, levels, brush)*
+
+bpy.types.UnifiedPaintSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UnifiedPaintSettings.color`
+* :class:`bpy.types.UnifiedPaintSettings.secondary_color`
+* :class:`bpy.types.UnifiedPaintSettings.use_unified_color`
+
+bpy.types.UserPreferencesFilePaths
+----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesFilePaths.render_cache_directory`
+
+bpy.types.UserPreferencesSystem
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesSystem.font_path_ui`
+* :class:`bpy.types.UserPreferencesSystem.is_occlusion_query_supported`
+* :class:`bpy.types.UserPreferencesSystem.select_method`
+
+bpy.types.UserPreferencesView
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesView.pie_animation_timeout`
+* :class:`bpy.types.UserPreferencesView.pie_initial_timeout`
+* :class:`bpy.types.UserPreferencesView.pie_menu_radius`
+* :class:`bpy.types.UserPreferencesView.pie_menu_threshold`
+
+2.72 to 2.73
+============
+
+bpy.types.ActionGroup
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ActionGroup.is_custom_color_set`
+
+bpy.types.BoneGroup
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BoneGroup.is_custom_color_set`
+
+bpy.types.StretchToConstraint
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.StretchToConstraint.bulge_max`
+* :class:`bpy.types.StretchToConstraint.bulge_min`
+* :class:`bpy.types.StretchToConstraint.bulge_smooth`
+* :class:`bpy.types.StretchToConstraint.use_bulge_max`
+* :class:`bpy.types.StretchToConstraint.use_bulge_min`
+
+bpy.types.DopeSheet
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DopeSheet.show_gpencil`
+
+bpy.types.FreestyleSettings
+---------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FreestyleSettings.use_view_map_cache`
+
+bpy.types.GPencilLayer
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPencilLayer.after_color`
+* :class:`bpy.types.GPencilLayer.before_color`
+* :class:`bpy.types.GPencilLayer.fill_alpha`
+* :class:`bpy.types.GPencilLayer.fill_color`
+* :class:`bpy.types.GPencilLayer.ghost_after_range`
+* :class:`bpy.types.GPencilLayer.ghost_before_range`
+* :class:`bpy.types.GPencilLayer.use_ghost_custom_colors`
+* :class:`bpy.types.GPencilLayer.use_volumetric_strokes`
+
+Removed
+^^^^^^^
+
+* **ghost_range_max**
+
+bpy.types.GPencilStroke
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPencilStroke.select`
+
+bpy.types.GPencilStrokePoint
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPencilStrokePoint.select`
+
+bpy.types.GreasePencilLayers
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GreasePencilLayers.active_index`
+
+bpy.types.FreestyleLineStyle
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FreestyleLineStyle.chain_count`
+* :class:`bpy.types.FreestyleLineStyle.use_chain_count`
+
+bpy.types.GreasePencil
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GreasePencil.animation_data`
+* :class:`bpy.types.GreasePencil.use_stroke_edit_mode`
+
+bpy.types.Image
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Image.generated_color`
+* :class:`bpy.types.Image.render_slots`
+
+Removed
+^^^^^^^
+
+* **render_slot**
+
+bpy.types.Scene
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Scene.uvedit_aspect`
+
+bpy.types.CyclesLampSettings
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesLampSettings.max_bounces`
+
+bpy.types.CyclesMaterialSettings
+--------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesMaterialSettings.volume_interpolation`
+
+bpy.types.CyclesWorldSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesWorldSettings.volume_interpolation`
+
+bpy.types.RenderEngine
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderEngine.error_set`
+
+bpy.types.RenderPass
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderPass.debug_type`
+
+bpy.types.SculptToolCapabilities
+--------------------------------
+
+Renamed
+^^^^^^^
+
+* **has_strength** -> :class:`bpy.types.SculptToolCapabilities.has_strength_pressure`
+
+bpy.types.SceneSequence
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SceneSequence.use_grease_pencil`
+
+bpy.types.SpaceSequenceEditor
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceSequenceEditor.show_backdrop`
+* :class:`bpy.types.SpaceSequenceEditor.show_strip_offset`
+* :class:`bpy.types.SpaceSequenceEditor.waveform_draw_type`
+
+bpy.types.SpaceView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceView3D.show_world`
+
+bpy.types.ThemeClipEditor
+-------------------------
+
+Removed
+^^^^^^^
+
+* **grid**
+
+bpy.types.ThemeNodeEditor
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeNodeEditor.wire_inner`
+
+bpy.types.ThemeUserInterface
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeUserInterface.widget_emboss`
+
+bpy.types.ToolSettings
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ToolSettings.grease_pencil_source`
+
+bpy.types.UILayout
+------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.UILayout.operator` (operator, text, text_ctxt, translate, icon, emboss, icon_value), *was (operator, text, text_ctxt, translate, icon, emboss)*
+
+bpy.types.UserPreferencesSystem
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesSystem.virtual_pixel_mode`
+
+bpy.types.UserPreferencesView
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesView.pie_menu_confirm`
+
+2.73 to 2.74
+============
+
+bpy.types.SteeringActuator
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SteeringActuator.lock_z_velocity`
+
+bpy.types.BackgroundImage
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BackgroundImage.rotation`
+* :class:`bpy.types.BackgroundImage.use_flip_x`
+* :class:`bpy.types.BackgroundImage.use_flip_y`
+
+bpy.types.BrushCapabilities
+---------------------------
+
+Removed
+^^^^^^^
+
+* **has_texture_angle**
+* **has_texture_angle_source**
+
+bpy.types.ClothCollisionSettings
+--------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ClothCollisionSettings.damping`
+
+bpy.types.ClothSettings
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ClothSettings.bending_damping`
+* :class:`bpy.types.ClothSettings.density_strength`
+* :class:`bpy.types.ClothSettings.density_target`
+* :class:`bpy.types.ClothSettings.voxel_cell_size`
+
+Removed
+^^^^^^^
+
+* **pre_roll**
+
+bpy.types.SplineIKConstraint
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SplineIKConstraint.bulge`
+* :class:`bpy.types.SplineIKConstraint.bulge_max`
+* :class:`bpy.types.SplineIKConstraint.bulge_min`
+* :class:`bpy.types.SplineIKConstraint.bulge_smooth`
+* :class:`bpy.types.SplineIKConstraint.use_bulge_max`
+* :class:`bpy.types.SplineIKConstraint.use_bulge_min`
+
+bpy.types.FCurve
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FCurve.convert_to_keyframes`
+* :class:`bpy.types.FCurve.convert_to_samples`
+
+bpy.types.FileSelectParams
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FileSelectParams.filter_search`
+
+bpy.types.GPencilLayer
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPencilLayer.is_fill_visible`
+* :class:`bpy.types.GPencilLayer.is_stroke_visible`
+
+bpy.types.Brush
+---------------
+
+Removed
+^^^^^^^
+
+* **texture_angle_source_no_random**
+* **texture_angle_source_random**
+* **use_rake**
+* **use_random_rotation**
+
+bpy.types.Camera
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Camera.gpu_dof`
+* :class:`bpy.types.Camera.show_safe_center`
+
+Renamed
+^^^^^^^
+
+* **show_title_safe** -> :class:`bpy.types.Camera.show_safe_areas`
+
+bpy.types.Image
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Image.use_deinterlace`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Image.pack` (as_png, data, data_len), *was (as_png)*
+
+bpy.types.Key
+-------------
+
+Removed
+^^^^^^^
+
+* **slurph**
+
+bpy.types.Mesh
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Mesh.create_normals_split`
+* :class:`bpy.types.Mesh.has_custom_normals`
+* :class:`bpy.types.Mesh.normals_split_custom_set`
+* :class:`bpy.types.Mesh.normals_split_custom_set_from_vertices`
+* :class:`bpy.types.Mesh.vertex_layers_float`
+* :class:`bpy.types.Mesh.vertex_layers_int`
+* :class:`bpy.types.Mesh.vertex_layers_string`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Mesh.calc_normals_split` (), *was (split_angle)*
+* :class:`bpy.types.Mesh.validate` (verbose, clean_customdata), *was (verbose)*
+
+bpy.types.Object
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Object.calc_matrix_camera`
+* :class:`bpy.types.Object.camera_fit_coords`
+
+bpy.types.ParticleSettings
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ParticleSettings.bending_random`
+* :class:`bpy.types.ParticleSettings.clump_curve`
+* :class:`bpy.types.ParticleSettings.clump_noise_size`
+* :class:`bpy.types.ParticleSettings.kink_amplitude_random`
+* :class:`bpy.types.ParticleSettings.kink_axis_random`
+* :class:`bpy.types.ParticleSettings.kink_extra_steps`
+* :class:`bpy.types.ParticleSettings.roughness_curve`
+* :class:`bpy.types.ParticleSettings.show_guide_hairs`
+* :class:`bpy.types.ParticleSettings.show_hair_grid`
+* :class:`bpy.types.ParticleSettings.use_clump_curve`
+* :class:`bpy.types.ParticleSettings.use_clump_noise`
+* :class:`bpy.types.ParticleSettings.use_roughness_curve`
+
+bpy.types.Scene
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Scene.safe_areas`
+
+bpy.types.Screen
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Screen.use_follow`
+
+bpy.types.Sound
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Sound.pack`
+* :class:`bpy.types.Sound.unpack`
+
+bpy.types.VectorFont
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.VectorFont.pack`
+* :class:`bpy.types.VectorFont.unpack`
+
+bpy.types.KeyingSet
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.KeyingSet.use_insertkey_needed`
+* :class:`bpy.types.KeyingSet.use_insertkey_override_needed`
+* :class:`bpy.types.KeyingSet.use_insertkey_override_visual`
+* :class:`bpy.types.KeyingSet.use_insertkey_override_xyz_to_rgb`
+* :class:`bpy.types.KeyingSet.use_insertkey_visual`
+* :class:`bpy.types.KeyingSet.use_insertkey_xyz_to_rgb`
+
+Removed
+^^^^^^^
+
+* **bl_options**
+
+bpy.types.KeyingSetPath
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.KeyingSetPath.use_insertkey_needed`
+* :class:`bpy.types.KeyingSetPath.use_insertkey_override_needed`
+* :class:`bpy.types.KeyingSetPath.use_insertkey_override_visual`
+* :class:`bpy.types.KeyingSetPath.use_insertkey_override_xyz_to_rgb`
+* :class:`bpy.types.KeyingSetPath.use_insertkey_visual`
+* :class:`bpy.types.KeyingSetPath.use_insertkey_xyz_to_rgb`
+
+Removed
+^^^^^^^
+
+* **bl_options**
+
+bpy.types.ClothModifier
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ClothModifier.hair_grid_max`
+* :class:`bpy.types.ClothModifier.hair_grid_min`
+* :class:`bpy.types.ClothModifier.hair_grid_resolution`
+* :class:`bpy.types.ClothModifier.solver_result`
+
+bpy.types.HookModifier
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.HookModifier.falloff_curve`
+* :class:`bpy.types.HookModifier.falloff_type`
+* :class:`bpy.types.HookModifier.use_falloff_uniform`
+
+Renamed
+^^^^^^^
+
+* **falloff** -> :class:`bpy.types.HookModifier.falloff_radius`
+* **force** -> :class:`bpy.types.HookModifier.strength`
+
+bpy.types.Node
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Node.shading_compatibility`
+
+bpy.types.CompositorNodePlaneTrackDeform
+----------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CompositorNodePlaneTrackDeform.motion_blur_samples`
+* :class:`bpy.types.CompositorNodePlaneTrackDeform.motion_blur_shutter`
+* :class:`bpy.types.CompositorNodePlaneTrackDeform.use_motion_blur`
+
+bpy.types.NodeFrame
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.NodeFrame.text`
+
+bpy.types.ShaderNodeTexCoord
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeTexCoord.object`
+
+bpy.types.Paint
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Paint.cavity_curve`
+* :class:`bpy.types.Paint.use_cavity`
+
+bpy.types.ImagePaint
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ImagePaint.dither`
+
+bpy.types.ParticleEdit
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ParticleEdit.shape_object`
+
+bpy.types.CyclesCameraSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesCameraSettings.latitude_max`
+* :class:`bpy.types.CyclesCameraSettings.latitude_min`
+* :class:`bpy.types.CyclesCameraSettings.longitude_max`
+* :class:`bpy.types.CyclesCameraSettings.longitude_min`
+
+bpy.types.RegionView3D
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RegionView3D.window_matrix`
+
+bpy.types.SequenceProxy
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SequenceProxy.use_overwrite`
+
+bpy.types.SpaceFileBrowser
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceFileBrowser.bookmarks`
+* :class:`bpy.types.SpaceFileBrowser.bookmarks_active`
+* :class:`bpy.types.SpaceFileBrowser.recent_folders`
+* :class:`bpy.types.SpaceFileBrowser.recent_folders_active`
+* :class:`bpy.types.SpaceFileBrowser.system_bookmarks`
+* :class:`bpy.types.SpaceFileBrowser.system_bookmarks_active`
+* :class:`bpy.types.SpaceFileBrowser.system_folders`
+* :class:`bpy.types.SpaceFileBrowser.system_folders_active`
+
+bpy.types.SpaceOutliner
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceOutliner.use_sort_alpha`
+
+bpy.types.SpaceSequenceEditor
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceSequenceEditor.show_safe_areas`
+* :class:`bpy.types.SpaceSequenceEditor.show_safe_center`
+
+Removed
+^^^^^^^
+
+* **show_safe_margin**
+
+bpy.types.SpaceTextEditor
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceTextEditor.region_location_from_cursor`
+
+bpy.types.SpaceView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceView3D.fx_settings`
+
+bpy.types.BrushTextureSlot
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BrushTextureSlot.has_random_texture_angle`
+* :class:`bpy.types.BrushTextureSlot.has_texture_angle`
+* :class:`bpy.types.BrushTextureSlot.has_texture_angle_source`
+* :class:`bpy.types.BrushTextureSlot.random_angle`
+* :class:`bpy.types.BrushTextureSlot.use_rake`
+* :class:`bpy.types.BrushTextureSlot.use_random`
+
+bpy.types.ParticleSettingsTextureSlot
+-------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ParticleSettingsTextureSlot.kink_amp_factor`
+* :class:`bpy.types.ParticleSettingsTextureSlot.kink_freq_factor`
+* :class:`bpy.types.ParticleSettingsTextureSlot.use_map_kink_amp`
+* :class:`bpy.types.ParticleSettingsTextureSlot.use_map_kink_freq`
+
+Removed
+^^^^^^^
+
+* **kink_factor**
+* **use_map_kink**
+
+bpy.types.ThemeClipEditor
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeClipEditor.gp_vertex`
+* :class:`bpy.types.ThemeClipEditor.gp_vertex_select`
+* :class:`bpy.types.ThemeClipEditor.gp_vertex_size`
+
+bpy.types.ThemeImageEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeImageEditor.gp_vertex`
+* :class:`bpy.types.ThemeImageEditor.gp_vertex_select`
+* :class:`bpy.types.ThemeImageEditor.gp_vertex_size`
+
+bpy.types.ThemeNodeEditor
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeNodeEditor.gp_vertex`
+* :class:`bpy.types.ThemeNodeEditor.gp_vertex_select`
+* :class:`bpy.types.ThemeNodeEditor.gp_vertex_size`
+
+bpy.types.ThemeSequenceEditor
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeSequenceEditor.gp_vertex`
+* :class:`bpy.types.ThemeSequenceEditor.gp_vertex_select`
+* :class:`bpy.types.ThemeSequenceEditor.gp_vertex_size`
+
+bpy.types.ThemeTimeline
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeTimeline.time_grease_pencil`
+* :class:`bpy.types.ThemeTimeline.time_keyframe`
+
+bpy.types.ThemeView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeView3D.clipping_border_3d`
+* :class:`bpy.types.ThemeView3D.gp_vertex`
+* :class:`bpy.types.ThemeView3D.gp_vertex_select`
+* :class:`bpy.types.ThemeView3D.gp_vertex_size`
+
+bpy.types.UILayout
+------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.UILayout.template_list` (listtype_name, list_id, dataptr, propname, active_dataptr, active_propname, item_dyntip_propname, rows, maxrows, type, columns), *was (listtype_name, list_id, dataptr, propname, active_dataptr, active_propname, rows, maxrows, type, columns)*
+
+bpy.types.UserPreferencesSystem
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesSystem.pixel_size`
+
+bpy.types.UserPreferencesView
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesView.use_gl_warn_support`
+
+bpy.types.VoxelData
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.VoxelData.hair_data_type`
+
+2.74 to 2.75
+============
+
+bpy.types.BakePixel
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BakePixel.object_id`
+
+bpy.types.BlendData
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BlendData.palettes`
+
+bpy.types.BlendDataImages
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataImages.new` (name, width, height, alpha, float_buffer, stereo3d), *was (name, width, height, alpha, float_buffer)*
+
+bpy.types.BlendDataSounds
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BlendDataSounds.load`
+* :class:`bpy.types.BlendDataSounds.remove`
+
+bpy.types.DopeSheet
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DopeSheet.filter_text`
+* :class:`bpy.types.DopeSheet.use_filter_text`
+
+bpy.types.FileSelectParams
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FileSelectParams.thumbnail_size`
+
+bpy.types.GPUDOFSettings
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPUDOFSettings.blades`
+* :class:`bpy.types.GPUDOFSettings.is_hq_supported`
+* :class:`bpy.types.GPUDOFSettings.use_high_quality`
+
+bpy.types.Camera
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Camera.stereo`
+
+bpy.types.Image
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Image.buffers_free`
+* :class:`bpy.types.Image.is_multiview`
+* :class:`bpy.types.Image.is_stereo_3d`
+* :class:`bpy.types.Image.packed_files`
+* :class:`bpy.types.Image.stereo_3d_format`
+* :class:`bpy.types.Image.use_multiview`
+* :class:`bpy.types.Image.views_format`
+
+bpy.types.SunLamp
+-----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SunLamp.show_shadow_box`
+
+bpy.types.Mesh
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Mesh.vertex_paint_masks`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Mesh.calc_tessface` (free_mpoly), *was ()*
+
+bpy.types.Object
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Object.cache_release`
+* :class:`bpy.types.Object.shape_key_remove`
+
+bpy.types.Scene
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Scene.depsgraph`
+
+bpy.types.ImageFormatSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ImageFormatSettings.stereo_3d_format`
+* :class:`bpy.types.ImageFormatSettings.views_format`
+
+bpy.types.ImageUser
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ImageUser.multilayer_view`
+
+Removed
+^^^^^^^
+
+* **multilayer_pass**
+
+bpy.types.LodLevel
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.LodLevel.object_hysteresis_percentage`
+* :class:`bpy.types.LodLevel.use_object_hysteresis`
+
+bpy.types.DecimateModifier
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DecimateModifier.vertex_group_factor`
+
+bpy.types.CompositorNodeImage
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CompositorNodeImage.has_layers`
+* :class:`bpy.types.CompositorNodeImage.has_views`
+* :class:`bpy.types.CompositorNodeImage.view`
+
+bpy.types.TextureNodeImage
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TextureNodeImage.image_user`
+
+bpy.types.Operator
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Operator.macros`
+* :class:`bpy.types.Operator.options`
+
+bpy.types.Sculpt
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Sculpt.detail_percent`
+
+bpy.types.PointCache
+--------------------
+
+Renamed
+^^^^^^^
+
+* **frames_skipped** -> :class:`bpy.types.PointCache.is_frame_skip`
+
+bpy.types.CyclesLampSettings
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesLampSettings.is_portal`
+
+bpy.types.CyclesRenderSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesRenderSettings.use_animated_seed`
+
+bpy.types.Region
+----------------
+
+Removed
+^^^^^^^
+
+* **callback_add**
+
+bpy.types.RenderEngine
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderEngine.active_view_set`
+* :class:`bpy.types.RenderEngine.bl_use_shading_nodes_custom`
+* :class:`bpy.types.RenderEngine.camera_model_matrix`
+* :class:`bpy.types.RenderEngine.camera_shift_x`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.RenderEngine.bake` (scene, object, pass_type, object_id, pixel_array, num_pixels, depth, result), *was (scene, object, pass_type, pixel_array, num_pixels, depth, result)*
+* :class:`bpy.types.RenderEngine.begin_result` (x, y, w, h, layer, view), *was (x, y, w, h, layer)*
+
+bpy.types.CYCLES
+----------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.CYCLES.bake` (self, scene, obj, pass_type, object_id, pixel_array, num_pixels, depth, result), *was (self, scene, obj, pass_type, pixel_array, num_pixels, depth, result)*
+
+bpy.types.RenderLayer
+---------------------
+
+Removed
+^^^^^^^
+
+* **rect**
+
+bpy.types.RenderPass
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderPass.view_id`
+
+bpy.types.RenderResult
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderResult.views`
+
+bpy.types.RenderSettings
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderSettings.simplify_child_particles_render`
+* :class:`bpy.types.RenderSettings.simplify_subdivision_render`
+* :class:`bpy.types.RenderSettings.stereo_views`
+* :class:`bpy.types.RenderSettings.use_multiview`
+* :class:`bpy.types.RenderSettings.views`
+* :class:`bpy.types.RenderSettings.views_format`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.RenderSettings.frame_path` (frame, preview, view), *was (frame)*
+
+bpy.types.SceneGameData
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SceneGameData.scene_hysteresis_percentage`
+* :class:`bpy.types.SceneGameData.use_scene_hysteresis`
+
+bpy.types.Sensor
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Sensor.tick_skip`
+
+Removed
+^^^^^^^
+
+* **frequency**
+
+bpy.types.EffectSequence
+------------------------
+
+Removed
+^^^^^^^
+
+* **use_proxy_custom_directory**
+* **use_proxy_custom_file**
+
+bpy.types.ImageSequence
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ImageSequence.stereo_3d_format`
+* :class:`bpy.types.ImageSequence.use_multiview`
+* :class:`bpy.types.ImageSequence.views_format`
+
+Removed
+^^^^^^^
+
+* **use_proxy_custom_directory**
+* **use_proxy_custom_file**
+
+bpy.types.MetaSequence
+----------------------
+
+Removed
+^^^^^^^
+
+* **use_proxy_custom_directory**
+* **use_proxy_custom_file**
+
+bpy.types.MovieSequence
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieSequence.stereo_3d_format`
+* :class:`bpy.types.MovieSequence.use_multiview`
+* :class:`bpy.types.MovieSequence.views_format`
+
+Removed
+^^^^^^^
+
+* **use_proxy_custom_directory**
+* **use_proxy_custom_file**
+
+bpy.types.SceneSequence
+-----------------------
+
+Removed
+^^^^^^^
+
+* **use_proxy_custom_directory**
+* **use_proxy_custom_file**
+
+bpy.types.SequenceEditor
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SequenceEditor.proxy_dir`
+* :class:`bpy.types.SequenceEditor.proxy_storage`
+
+bpy.types.SequenceProxy
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SequenceProxy.use_proxy_custom_directory`
+* :class:`bpy.types.SequenceProxy.use_proxy_custom_file`
+
+bpy.types.SpaceImageEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceImageEditor.show_stereo_3d`
+
+bpy.types.SpaceSequenceEditor
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceSequenceEditor.show_metadata`
+
+bpy.types.SpaceView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceView3D.show_stereo_3d_cameras`
+* :class:`bpy.types.SpaceView3D.show_stereo_3d_convergence_plane`
+* :class:`bpy.types.SpaceView3D.show_stereo_3d_volume`
+* :class:`bpy.types.SpaceView3D.stereo_3d_camera`
+* :class:`bpy.types.SpaceView3D.stereo_3d_convergence_plane_alpha`
+* :class:`bpy.types.SpaceView3D.stereo_3d_eye`
+* :class:`bpy.types.SpaceView3D.stereo_3d_volume_alpha`
+
+bpy.types.SpaceUVEditor
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceUVEditor.show_metadata`
+
+bpy.types.ThemeImageEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeImageEditor.metadatabg`
+* :class:`bpy.types.ThemeImageEditor.metadatatext`
+
+bpy.types.ThemeSequenceEditor
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeSequenceEditor.metadatabg`
+* :class:`bpy.types.ThemeSequenceEditor.metadatatext`
+
+bpy.types.ToolSettings
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ToolSettings.lock_markers`
+* :class:`bpy.types.ToolSettings.use_proportional_action`
+* :class:`bpy.types.ToolSettings.use_proportional_fcurve`
+
+bpy.types.UILayout
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UILayout.template_image_stereo_3d`
+* :class:`bpy.types.UILayout.template_image_views`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.UILayout.menu` (menu, text, text_ctxt, translate, icon, icon_value), *was (menu, text, text_ctxt, translate, icon)*
+* :class:`bpy.types.UILayout.template_icon_view` (data, property, show_labels), *was (data, property)*
+* :class:`bpy.types.UILayout.template_image` (data, property, image_user, compact, multiview), *was (data, property, image_user, compact)*
+
+bpy.types.UserPreferencesView
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesView.view_frame_keyframes`
+* :class:`bpy.types.UserPreferencesView.view_frame_seconds`
+* :class:`bpy.types.UserPreferencesView.view_frame_type`
+
+bpy.types.Window
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Window.stereo_3d_display`
+
+2.75 to 2.76
+============
+
+bpy.types.ActionFCurves
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ActionFCurves.find`
+
+bpy.types.BlendDataBrushes
+--------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataBrushes.new` (name, mode), *was (name)*
+
+bpy.types.FileSelectParams
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FileSelectParams.filter_id`
+* :class:`bpy.types.FileSelectParams.filter_id_category`
+* :class:`bpy.types.FileSelectParams.recursion_level`
+* :class:`bpy.types.FileSelectParams.use_filter_blendid`
+* :class:`bpy.types.FileSelectParams.use_library_browsing`
+
+bpy.types.GameObjectSettings
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GameObjectSettings.angular_velocity_max`
+* :class:`bpy.types.GameObjectSettings.angular_velocity_min`
+
+bpy.types.ID
+------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ID.preview`
+
+bpy.types.Brush
+---------------
+
+Removed
+^^^^^^^
+
+* **use_wrap**
+
+bpy.types.ImagePreview
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ImagePreview.icon_pixels_float`
+* :class:`bpy.types.ImagePreview.image_pixels_float`
+
+bpy.types.ImageUser
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ImageUser.multilayer_pass`
+
+bpy.types.BevelModifier
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BevelModifier.loop_slide`
+
+bpy.types.SubsurfModifier
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SubsurfModifier.use_opensubdiv`
+
+bpy.types.ShaderNodeTexImage
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeTexImage.extension`
+
+bpy.types.Paint
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Paint.tile_offset`
+* :class:`bpy.types.Paint.tile_x`
+* :class:`bpy.types.Paint.tile_y`
+* :class:`bpy.types.Paint.tile_z`
+
+bpy.types.CyclesObjectBlurSettings
+----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesObjectBlurSettings.use_camera_cull`
+
+bpy.types.CyclesRenderSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesRenderSettings.camera_cull_margin`
+* :class:`bpy.types.CyclesRenderSettings.use_camera_cull`
+
+bpy.types.CyclesWorldSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesWorldSettings.max_bounces`
+
+bpy.types.RenderSettings
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderSettings.use_stamp_strip_meta`
+
+bpy.types.SmokeDomainSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SmokeDomainSettings.velocity_grid`
+
+bpy.types.SpaceClipEditor
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceClipEditor.show_metadata`
+
+bpy.types.SpaceNodeEditor
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceNodeEditor.insert_offset_direction`
+* :class:`bpy.types.SpaceNodeEditor.use_insert_offset`
+
+bpy.types.ToolSettings
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ToolSettings.use_snap_grid_absolute`
+
+bpy.types.UILayout
+------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.UILayout.template_icon_view` (data, property, show_labels, scale), *was (data, property, show_labels)*
+
+bpy.types.UserPreferencesEdit
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesEdit.node_margin`
+
+bpy.types.UserPreferencesInput
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesInput.ndof_deadzone`
+
+bpy.types.UserPreferencesSystem
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesSystem.opensubdiv_compute_type`
+
+2.76 to 2.77
+============
+
+bpy.types.AnimDataDrivers
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.AnimDataDrivers.find`
+
+bpy.types.BakeSettings
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BakeSettings.pass_filter`
+* :class:`bpy.types.BakeSettings.use_pass_ambient_occlusion`
+* :class:`bpy.types.BakeSettings.use_pass_color`
+* :class:`bpy.types.BakeSettings.use_pass_diffuse`
+* :class:`bpy.types.BakeSettings.use_pass_direct`
+* :class:`bpy.types.BakeSettings.use_pass_emit`
+* :class:`bpy.types.BakeSettings.use_pass_glossy`
+* :class:`bpy.types.BakeSettings.use_pass_indirect`
+* :class:`bpy.types.BakeSettings.use_pass_subsurface`
+* :class:`bpy.types.BakeSettings.use_pass_transmission`
+
+bpy.types.BlendData
+-------------------
+
+Removed
+^^^^^^^
+
+* **scripts**
+
+bpy.types.BlendDataFonts
+------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataFonts.load` (filepath, check_existing), *was (filepath)*
+
+bpy.types.BlendDataImages
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataImages.load` (filepath, check_existing), *was (filepath)*
+
+bpy.types.BlendDataMasks
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BlendDataMasks.is_updated`
+
+bpy.types.BlendDataMovieClips
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BlendDataMovieClips.is_updated`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataMovieClips.load` (filepath, check_existing), *was (filepath)*
+
+bpy.types.BlendDataSounds
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataSounds.load` (filepath, check_existing), *was (filepath)*
+
+bpy.types.DopeSheet
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DopeSheet.show_gpencil_3d_only`
+
+bpy.types.FileSelectParams
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FileSelectParams.display_size`
+
+Removed
+^^^^^^^
+
+* **thumbnail_size**
+
+bpy.types.GameObjectSettings
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GameObjectSettings.jump_max`
+
+bpy.types.ID
+------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ID.user_of_id`
+
+bpy.types.Brush
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Brush.rake_factor`
+
+bpy.types.FreestyleLineStyle
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FreestyleLineStyle.animation_data`
+
+bpy.types.GreasePencil
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GreasePencil.use_onion_skinning`
+
+Removed
+^^^^^^^
+
+* **draw_mode**
+* **use_stroke_endpoints**
+
+bpy.types.Object
+----------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Object.closest_point_on_mesh` (origin, distance), *was (point, max_dist)*
+* :class:`bpy.types.Object.ray_cast` (origin, direction, distance), *was (start, end)*
+
+bpy.types.Scene
+---------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Scene.ray_cast` (origin, direction, distance), *was (start, end)*
+
+bpy.types.ImageFormatSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ImageFormatSettings.tiff_codec`
+
+bpy.types.ImagePackedFile
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ImagePackedFile.save`
+
+bpy.types.DataTransferModifier
+------------------------------
+
+Removed
+^^^^^^^
+
+* **data_types_loops_uv**
+* **data_types_loops_vcol**
+* **data_types_verts_vgroup**
+
+bpy.types.DecimateModifier
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DecimateModifier.symmetry_axis`
+* :class:`bpy.types.DecimateModifier.use_symmetry`
+
+bpy.types.Node
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Node.insert_link`
+
+bpy.types.CompositorNodeBlur
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CompositorNodeBlur.use_extended_bounds`
+
+bpy.types.CompositorNodeBokehBlur
+---------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CompositorNodeBokehBlur.use_extended_bounds`
+
+bpy.types.CompositorNodeStabilize
+---------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CompositorNodeStabilize.invert`
+
+bpy.types.ShaderNodeTexEnvironment
+----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeTexEnvironment.interpolation`
+
+bpy.types.ShaderNodeTexPointDensity
+-----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeTexPointDensity.cache_point_density`
+* :class:`bpy.types.ShaderNodeTexPointDensity.calc_point_density_minmax`
+
+bpy.types.ShaderNodeTexWave
+---------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeTexWave.wave_profile`
+
+bpy.types.PoseBone
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.PoseBone.custom_shape_scale`
+* :class:`bpy.types.PoseBone.use_custom_shape_bone_size`
+
+bpy.types.EnumProperty
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.EnumProperty.enum_items_static`
+
+bpy.types.CyclesRenderSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesRenderSettings.debug_opencl_device_type`
+* :class:`bpy.types.CyclesRenderSettings.debug_opencl_kernel_type`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_avx`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_avx2`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_sse2`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_sse3`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_sse41`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_opencl_debug`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_qbvh`
+* :class:`bpy.types.CyclesRenderSettings.motion_blur_position`
+* :class:`bpy.types.CyclesRenderSettings.pixel_filter_type`
+* :class:`bpy.types.CyclesRenderSettings.rolling_shutter_duration`
+* :class:`bpy.types.CyclesRenderSettings.rolling_shutter_type`
+
+Removed
+^^^^^^^
+
+* **use_cache**
+
+bpy.types.RenderEngine
+----------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.RenderEngine.bake` (scene, object, pass_type, pass_filter, object_id, pixel_array, num_pixels, depth, result), *was (scene, object, pass_type, object_id, pixel_array, num_pixels, depth, result)*
+
+bpy.types.CYCLES
+----------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.CYCLES.bake` (self, scene, obj, pass_type, pass_filter, object_id, pixel_array, num_pixels, depth, result), *was (self, scene, obj, pass_type, object_id, pixel_array, num_pixels, depth, result)*
+
+bpy.types.RenderLayer
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderLayer.use_ao`
+
+bpy.types.RenderSettings
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderSettings.motion_blur_shutter_curve`
+
+Removed
+^^^^^^^
+
+* **use_free_unused_nodes**
+
+bpy.types.SceneRenderLayer
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SceneRenderLayer.use_ao`
+
+bpy.types.SculptToolCapabilities
+--------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SculptToolCapabilities.has_rake_factor`
+
+bpy.types.TextSequence
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TextSequence.align_y`
+* :class:`bpy.types.TextSequence.wrap_width`
+
+Renamed
+^^^^^^^
+
+* **align** -> :class:`bpy.types.TextSequence.align_x`
+
+bpy.types.WipeSequence
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.WipeSequence.input_2`
+
+bpy.types.SceneSequence
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SceneSequence.use_sequence`
+
+bpy.types.SoundSequence
+-----------------------
+
+Removed
+^^^^^^^
+
+* **filepath**
+
+bpy.types.SequenceModifier
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SequenceModifier.mask_time`
+
+bpy.types.ShapeKey
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShapeKey.normals_polygon_get`
+* :class:`bpy.types.ShapeKey.normals_split_get`
+* :class:`bpy.types.ShapeKey.normals_vertex_get`
+
+bpy.types.SmokeDomainSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SmokeDomainSettings.cache_file_format`
+* :class:`bpy.types.SmokeDomainSettings.data_depth`
+* :class:`bpy.types.SmokeDomainSettings.openvdb_cache_compress_type`
+
+bpy.types.SpaceGraphEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceGraphEditor.cursor_position_x`
+
+bpy.types.ThemeSequenceEditor
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeSequenceEditor.text_strip`
+
+bpy.types.ThemeView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeView3D.text_grease_pencil`
+* :class:`bpy.types.ThemeView3D.text_keyframe`
+
+bpy.types.ToolSettings
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ToolSettings.gpencil_sculpt`
+* :class:`bpy.types.ToolSettings.gpencil_stroke_placement_image_editor`
+* :class:`bpy.types.ToolSettings.gpencil_stroke_placement_sequencer_preview`
+* :class:`bpy.types.ToolSettings.gpencil_stroke_placement_view2d`
+* :class:`bpy.types.ToolSettings.gpencil_stroke_placement_view3d`
+* :class:`bpy.types.ToolSettings.use_gpencil_additive_drawing`
+* :class:`bpy.types.ToolSettings.use_gpencil_stroke_endpoints`
+
+Renamed
+^^^^^^^
+
+* **use_grease_pencil_sessions** -> :class:`bpy.types.ToolSettings.use_gpencil_continuous_drawing`
+
+bpy.types.UserPreferencesSystem
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesSystem.font_path_ui_mono`
+
+Removed
+^^^^^^^
+
+* **is_occlusion_query_supported**
+* **use_vertex_buffer_objects**
+
+bpy.types.UserPreferencesView
+-----------------------------
+
+Removed
+^^^^^^^
+
+* **use_gl_warn_support**
+
+2.77 to 2.78
+============
+
+bpy.types.AnimData
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.AnimData.use_tweak_mode`
+
+bpy.types.BlendData
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BlendData.cache_files`
+* :class:`bpy.types.BlendData.paint_curves`
+
+bpy.types.BlendDataActions
+--------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataActions.remove` (action, do_unlink), *was (action)*
+
+bpy.types.BlendDataArmatures
+----------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataArmatures.remove` (armature, do_unlink), *was (armature)*
+
+bpy.types.BlendDataBrushes
+--------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataBrushes.remove` (brush, do_unlink), *was (brush)*
+
+bpy.types.BlendDataCameras
+--------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataCameras.remove` (camera, do_unlink), *was (camera)*
+
+bpy.types.BlendDataCurves
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataCurves.remove` (curve, do_unlink), *was (curve)*
+
+bpy.types.BlendDataFonts
+------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataFonts.remove` (vfont, do_unlink), *was (vfont)*
+
+bpy.types.BlendDataGreasePencils
+--------------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataGreasePencils.remove` (grease_pencil, do_unlink), *was (grease_pencil)*
+
+bpy.types.BlendDataGroups
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataGroups.remove` (group, do_unlink), *was (group)*
+
+bpy.types.BlendDataImages
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataImages.remove` (image, do_unlink), *was (image)*
+
+bpy.types.BlendDataLamps
+------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataLamps.remove` (lamp, do_unlink), *was (lamp)*
+
+bpy.types.BlendDataLattices
+---------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataLattices.remove` (lattice, do_unlink), *was (lattice)*
+
+bpy.types.BlendDataLineStyles
+-----------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataLineStyles.remove` (linestyle, do_unlink), *was (linestyle)*
+
+bpy.types.BlendDataMasks
+------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataMasks.remove` (mask, do_unlink), *was (mask)*
+
+bpy.types.BlendDataMaterials
+----------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataMaterials.remove` (material, do_unlink), *was (material)*
+
+bpy.types.BlendDataMeshes
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataMeshes.remove` (mesh, do_unlink), *was (mesh)*
+
+bpy.types.BlendDataMetaBalls
+----------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataMetaBalls.remove` (metaball, do_unlink), *was (metaball)*
+
+bpy.types.BlendDataMovieClips
+-----------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataMovieClips.remove` (clip, do_unlink), *was (clip)*
+
+bpy.types.BlendDataNodeTrees
+----------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataNodeTrees.remove` (tree, do_unlink), *was (tree)*
+
+bpy.types.BlendDataObjects
+--------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataObjects.remove` (object, do_unlink), *was (object)*
+
+bpy.types.BlendDataPalettes
+---------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataPalettes.remove` (palette, do_unlink), *was (palette)*
+
+bpy.types.BlendDataParticles
+----------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataParticles.remove` (particle, do_unlink), *was (particle)*
+
+bpy.types.BlendDataScenes
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataScenes.remove` (scene, do_unlink), *was (scene)*
+
+bpy.types.BlendDataSounds
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataSounds.remove` (sound, do_unlink), *was (sound)*
+
+bpy.types.BlendDataSpeakers
+---------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataSpeakers.remove` (speaker, do_unlink), *was (speaker)*
+
+bpy.types.BlendDataTexts
+------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataTexts.remove` (text, do_unlink), *was (text)*
+
+bpy.types.BlendDataTextures
+---------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataTextures.remove` (texture, do_unlink), *was (texture)*
+
+bpy.types.BlendDataWorlds
+-------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.BlendDataWorlds.remove` (world, do_unlink), *was (world)*
+
+bpy.types.Bone
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Bone.bbone_curveinx`
+* :class:`bpy.types.Bone.bbone_curveiny`
+* :class:`bpy.types.Bone.bbone_curveoutx`
+* :class:`bpy.types.Bone.bbone_curveouty`
+* :class:`bpy.types.Bone.bbone_rollin`
+* :class:`bpy.types.Bone.bbone_rollout`
+* :class:`bpy.types.Bone.bbone_scalein`
+* :class:`bpy.types.Bone.bbone_scaleout`
+* :class:`bpy.types.Bone.use_endroll_as_inroll`
+
+bpy.types.CameraStereoData
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CameraStereoData.pole_merge_angle_from`
+* :class:`bpy.types.CameraStereoData.pole_merge_angle_to`
+* :class:`bpy.types.CameraStereoData.use_pole_merge`
+* :class:`bpy.types.CameraStereoData.use_spherical_stereo`
+
+bpy.types.ClothSettings
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ClothSettings.time_scale`
+* :class:`bpy.types.ClothSettings.use_dynamic_mesh`
+
+bpy.types.CopyLocationConstraint
+--------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CopyLocationConstraint.use_bbone_shape`
+
+bpy.types.CopyTransformsConstraint
+----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CopyTransformsConstraint.use_bbone_shape`
+
+bpy.types.DampedTrackConstraint
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DampedTrackConstraint.use_bbone_shape`
+
+bpy.types.LimitDistanceConstraint
+---------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.LimitDistanceConstraint.use_bbone_shape`
+
+bpy.types.LockedTrackConstraint
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.LockedTrackConstraint.use_bbone_shape`
+
+bpy.types.PivotConstraint
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.PivotConstraint.use_bbone_shape`
+
+bpy.types.StretchToConstraint
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.StretchToConstraint.use_bbone_shape`
+
+bpy.types.TrackToConstraint
+---------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TrackToConstraint.use_bbone_shape`
+
+bpy.types.DopeSheet
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DopeSheet.use_datablock_sort`
+* :class:`bpy.types.DopeSheet.use_multi_word_filter`
+
+bpy.types.Driver
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Driver.use_self`
+
+bpy.types.DriverVariable
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DriverVariable.is_name_valid`
+
+bpy.types.EditBone
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.EditBone.bbone_curveinx`
+* :class:`bpy.types.EditBone.bbone_curveiny`
+* :class:`bpy.types.EditBone.bbone_curveoutx`
+* :class:`bpy.types.EditBone.bbone_curveouty`
+* :class:`bpy.types.EditBone.bbone_rollin`
+* :class:`bpy.types.EditBone.bbone_rollout`
+* :class:`bpy.types.EditBone.bbone_scalein`
+* :class:`bpy.types.EditBone.bbone_scaleout`
+* :class:`bpy.types.EditBone.use_endroll_as_inroll`
+
+bpy.types.FCurveKeyframePoints
+------------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.FCurveKeyframePoints.insert` (frame, value, options, keyframe_type), *was (frame, value, options)*
+
+bpy.types.GPencilLayer
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPencilLayer.is_parented`
+* :class:`bpy.types.GPencilLayer.matrix_inverse`
+* :class:`bpy.types.GPencilLayer.parent`
+* :class:`bpy.types.GPencilLayer.parent_bone`
+* :class:`bpy.types.GPencilLayer.parent_type`
+* :class:`bpy.types.GPencilLayer.tint_color`
+* :class:`bpy.types.GPencilLayer.tint_factor`
+* :class:`bpy.types.GPencilLayer.unlock_color`
+
+Removed
+^^^^^^^
+
+* **color**
+* **fill_alpha**
+* **fill_color**
+* **is_fill_visible**
+* **is_stroke_visible**
+
+Renamed
+^^^^^^^
+
+* **alpha** -> :class:`bpy.types.GPencilLayer.opacity`
+* **line_width** -> :class:`bpy.types.GPencilLayer.line_change`
+
+bpy.types.GPencilSculptSettings
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPencilSculptSettings.affect_position`
+* :class:`bpy.types.GPencilSculptSettings.affect_strength`
+* :class:`bpy.types.GPencilSculptSettings.affect_thickness`
+* :class:`bpy.types.GPencilSculptSettings.selection_alpha`
+
+bpy.types.GPencilStroke
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPencilStroke.color`
+* :class:`bpy.types.GPencilStroke.colorname`
+* :class:`bpy.types.GPencilStroke.draw_cyclic`
+* :class:`bpy.types.GPencilStroke.line_width`
+* :class:`bpy.types.GPencilStroke.triangles`
+
+bpy.types.GPencilStrokePoint
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPencilStrokePoint.strength`
+
+bpy.types.GPencilStrokePoints
+-----------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.GPencilStrokePoints.add` (count, pressure, strength), *was (count)*
+
+bpy.types.GPencilStrokes
+------------------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.GPencilStrokes.new` (colorname), *was ()*
+
+bpy.types.ID
+------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ID.user_remap`
+
+bpy.types.TextCurve
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TextCurve.align_x`
+* :class:`bpy.types.TextCurve.align_y`
+
+Removed
+^^^^^^^
+
+* **align**
+
+bpy.types.GreasePencil
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GreasePencil.palettes`
+* :class:`bpy.types.GreasePencil.show_stroke_direction`
+
+bpy.types.PointLamp
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.PointLamp.constant_coefficient`
+* :class:`bpy.types.PointLamp.linear_coefficient`
+* :class:`bpy.types.PointLamp.quadratic_coefficient`
+
+bpy.types.SpotLamp
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpotLamp.constant_coefficient`
+* :class:`bpy.types.SpotLamp.linear_coefficient`
+* :class:`bpy.types.SpotLamp.quadratic_coefficient`
+
+bpy.types.Library
+-----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Library.reload`
+
+bpy.types.Mesh
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Mesh.flip_normals`
+* :class:`bpy.types.Mesh.split_faces`
+
+bpy.types.MovieClip
+-------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieClip.animation_data`
+
+bpy.types.ParticleSettings
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ParticleSettings.collision_group`
+
+bpy.types.Scene
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Scene.alembic_export`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Scene.collada_export` (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, include_uv_textures, include_material_textures, use_texture_copies, use_ngons, use_object_instantiation, use_blender_profile, sort_by_name, open_sim, export_transformation_type), *was (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, include_uv_textures, include_material_textures, use_texture_copies, use_ngons, use_object_instantiation, sort_by_name, open_sim, export_transformation_type)*
+
+bpy.types.WholeCharacter
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.WholeCharacter.doBBone`
+
+bpy.types.MeshPolygon
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MeshPolygon.flip`
+
+bpy.types.BooleanModifier
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BooleanModifier.double_threshold`
+* :class:`bpy.types.BooleanModifier.solver`
+
+bpy.types.HookModifier
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.HookModifier.matrix_inverse`
+
+bpy.types.NormalEditModifier
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.NormalEditModifier.mix_limit`
+
+bpy.types.ShrinkwrapModifier
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShrinkwrapModifier.invert_vertex_group`
+
+bpy.types.SimpleDeformModifier
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SimpleDeformModifier.invert_vertex_group`
+
+bpy.types.MovieTrackingStabilization
+------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieTrackingStabilization.active_rotation_track_index`
+* :class:`bpy.types.MovieTrackingStabilization.anchor_frame`
+* :class:`bpy.types.MovieTrackingStabilization.rotation_tracks`
+* :class:`bpy.types.MovieTrackingStabilization.show_tracks_expanded`
+* :class:`bpy.types.MovieTrackingStabilization.target_position`
+* :class:`bpy.types.MovieTrackingStabilization.target_rotation`
+* :class:`bpy.types.MovieTrackingStabilization.target_scale`
+* :class:`bpy.types.MovieTrackingStabilization.use_stabilize_scale`
+
+Removed
+^^^^^^^
+
+* **rotation_track**
+
+bpy.types.MovieTrackingTrack
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MovieTrackingTrack.weight_stab`
+
+bpy.types.CompositorNodeColorBalance
+------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CompositorNodeColorBalance.offset_basis`
+
+bpy.types.ShaderNodeTexPointDensity
+-----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ShaderNodeTexPointDensity.vertex_attribute_name`
+
+Renamed
+^^^^^^^
+
+* **color_source** -> :class:`bpy.types.ShaderNodeTexPointDensity.particle_color_source`
+* **color_source** -> :class:`bpy.types.ShaderNodeTexPointDensity.vertex_color_source`
+
+bpy.types.PointDensity
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.PointDensity.vertex_attribute_name`
+
+Renamed
+^^^^^^^
+
+* **color_source** -> :class:`bpy.types.PointDensity.particle_color_source`
+* **color_source** -> :class:`bpy.types.PointDensity.vertex_color_source`
+
+bpy.types.PoseBone
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.PoseBone.bbone_curveinx`
+* :class:`bpy.types.PoseBone.bbone_curveiny`
+* :class:`bpy.types.PoseBone.bbone_curveoutx`
+* :class:`bpy.types.PoseBone.bbone_curveouty`
+* :class:`bpy.types.PoseBone.bbone_custom_handle_end`
+* :class:`bpy.types.PoseBone.bbone_custom_handle_start`
+* :class:`bpy.types.PoseBone.bbone_rollin`
+* :class:`bpy.types.PoseBone.bbone_rollout`
+* :class:`bpy.types.PoseBone.bbone_scalein`
+* :class:`bpy.types.PoseBone.bbone_scaleout`
+* :class:`bpy.types.PoseBone.use_bbone_custom_handles`
+* :class:`bpy.types.PoseBone.use_bbone_relative_end_handle`
+* :class:`bpy.types.PoseBone.use_bbone_relative_start_handle`
+
+bpy.types.BoolProperty
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.BoolProperty.is_array`
+
+bpy.types.FloatProperty
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FloatProperty.is_array`
+
+bpy.types.IntProperty
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.IntProperty.is_array`
+
+bpy.types.CyclesMaterialSettings
+--------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesMaterialSettings.displacement_method`
+
+bpy.types.CyclesMeshSettings
+----------------------------
+
+Removed
+^^^^^^^
+
+* **dicing_rate**
+* **displacement_method**
+* **use_subdivision**
+
+bpy.types.CyclesRenderSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesRenderSettings.debug_bvh_time_steps`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_cuda_adaptive_compile`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_hair_bvh`
+* :class:`bpy.types.CyclesRenderSettings.dicing_rate`
+* :class:`bpy.types.CyclesRenderSettings.distance_cull_margin`
+* :class:`bpy.types.CyclesRenderSettings.light_sampling_threshold`
+* :class:`bpy.types.CyclesRenderSettings.max_subdivisions`
+* :class:`bpy.types.CyclesRenderSettings.preview_dicing_rate`
+* :class:`bpy.types.CyclesRenderSettings.texture_limit`
+* :class:`bpy.types.CyclesRenderSettings.texture_limit_render`
+* :class:`bpy.types.CyclesRenderSettings.use_distance_cull`
+
+bpy.types.RenderEngine
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderEngine.active_view_get`
+* :class:`bpy.types.RenderEngine.bl_use_spherical_stereo`
+* :class:`bpy.types.RenderEngine.use_spherical_stereo`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.RenderEngine.camera_model_matrix` (camera, use_spherical_stereo, r_model_matrix), *was (camera, r_model_matrix)*
+* :class:`bpy.types.RenderEngine.camera_shift_x` (camera, use_spherical_stereo), *was (camera)*
+
+bpy.types.RenderSettings
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderSettings.use_spherical_stereo`
+* :class:`bpy.types.RenderSettings.use_stamp_labels`
+* :class:`bpy.types.RenderSettings.use_stamp_memory`
+* :class:`bpy.types.RenderSettings.use_world_space_shading`
+
+bpy.types.SceneGameData
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SceneGameData.use_glsl_environment_lighting`
+
+bpy.types.SceneGameRecastData
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SceneGameRecastData.partitioning`
+
+bpy.types.TextSequence
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TextSequence.color`
+* :class:`bpy.types.TextSequence.shadow_color`
+
+bpy.types.SmokeDomainSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SmokeDomainSettings.heat_grid`
+
+bpy.types.SoftBodySettings
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SoftBodySettings.collision_group`
+
+bpy.types.SpaceNLA
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceNLA.show_local_markers`
+
+bpy.types.ThemeDopeSheet
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeDopeSheet.keyframe_scale_factor`
+
+bpy.types.ThemeFileBrowser
+--------------------------
+
+Removed
+^^^^^^^
+
+* **active_file**
+* **active_file_text**
+* **scroll_handle**
+* **scrollbar**
+* **space_list**
+
+bpy.types.ToolSettings
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ToolSettings.curve_paint_settings`
+* :class:`bpy.types.ToolSettings.gpencil_brushes`
+* :class:`bpy.types.ToolSettings.keyframe_type`
+* :class:`bpy.types.ToolSettings.use_gpencil_draw_onback`
+
+bpy.types.UILayout
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UILayout.template_cache_file`
+
+bpy.types.UserPreferences
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferences.version`
+
+bpy.types.UserPreferencesEdit
+-----------------------------
+
+Removed
+^^^^^^^
+
+* **use_grease_pencil_smooth_stroke**
+
+bpy.types.UserPreferencesInput
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesInput.use_ndof`
+
+bpy.types.UserPreferencesSystem
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesSystem.legacy_compute_device_type`
+
+Removed
+^^^^^^^
+
+* **compute_device**
+* **compute_device_type**
+
+2.78 to 2.79
+============
+
+bpy.types.DupliObject
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DupliObject.random_id`
+
+bpy.types.FFmpegSettings
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FFmpegSettings.constant_rate_factor`
+* :class:`bpy.types.FFmpegSettings.ffmpeg_preset`
+* :class:`bpy.types.FFmpegSettings.max_b_frames`
+* :class:`bpy.types.FFmpegSettings.use_max_b_frames`
+
+bpy.types.FieldSettings
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FieldSettings.use_gravity_falloff`
+
+bpy.types.GPencilLayer
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPencilLayer.use_ghosts_always`
+
+bpy.types.GPencilSculptSettings
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPencilSculptSettings.lockaxis`
+
+bpy.types.Header
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Header.is_extended`
+
+bpy.types.ID
+------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ID.make_local`
+
+bpy.types.Mesh
+--------------
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Mesh.split_faces` (free_loop_normals), *was ()*
+
+bpy.types.Scene
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Scene.frame_float`
+* :class:`bpy.types.Scene.show_subframe`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Scene.alembic_export` (filepath, frame_start, frame_end, xform_samples, geom_samples, shutter_open, shutter_close, selected_only, uvs, normals, vcolors, apply_subdiv, flatten, visible_layers_only, renderable_only, face_sets, subdiv_schema, export_hair, export_particles, compression_type, packuv, scale, triangulate, quad_method, ngon_method), *was (filepath, frame_start, frame_end, xform_samples, geom_samples, shutter_open, shutter_close, selected_only, uvs, normals, vcolors, apply_subdiv, flatten, visible_layers_only, renderable_only, face_sets, subdiv_schema, compression_type, packuv, scale)*
+* :class:`bpy.types.Scene.collada_export` (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, export_texture_type, use_texture_copies, triangulate, use_object_instantiation, use_blender_profile, sort_by_name, export_transformation_type, open_sim, limit_precision, keep_bind_info), *was (filepath, apply_modifiers, export_mesh_type, selected, include_children, include_armatures, include_shapekeys, deform_bones_only, active_uv_only, include_uv_textures, include_material_textures, use_texture_copies, use_ngons, use_object_instantiation, use_blender_profile, sort_by_name, open_sim, export_transformation_type)*
+
+bpy.types.Macro
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Macro.bl_undo_group`
+
+bpy.types.Menu
+--------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Menu.is_extended`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.Menu.path_menu` (self, searchpaths, operator), *was (self, searchpaths, operator, props_default, filter_ext)*
+
+bpy.types.GPENCIL_PIE_sculpt
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPENCIL_PIE_sculpt.is_extended`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.GPENCIL_PIE_sculpt.path_menu` (self, searchpaths, operator), *was (self, searchpaths, operator, props_default, filter_ext)*
+
+bpy.types.GPENCIL_PIE_settings_palette
+--------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPENCIL_PIE_settings_palette.is_extended`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.GPENCIL_PIE_settings_palette.path_menu` (self, searchpaths, operator), *was (self, searchpaths, operator, props_default, filter_ext)*
+
+bpy.types.GPENCIL_PIE_tool_palette
+----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPENCIL_PIE_tool_palette.is_extended`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.GPENCIL_PIE_tool_palette.path_menu` (self, searchpaths, operator), *was (self, searchpaths, operator, props_default, filter_ext)*
+
+bpy.types.GPENCIL_PIE_tools_more
+--------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPENCIL_PIE_tools_more.is_extended`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.GPENCIL_PIE_tools_more.path_menu` (self, searchpaths, operator), *was (self, searchpaths, operator, props_default, filter_ext)*
+
+bpy.types.DisplaceModifier
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.DisplaceModifier.space`
+
+bpy.types.MirrorModifier
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MirrorModifier.mirror_offset_u`
+* :class:`bpy.types.MirrorModifier.mirror_offset_v`
+
+bpy.types.ScrewModifier
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ScrewModifier.merge_threshold`
+* :class:`bpy.types.ScrewModifier.use_merge_vertices`
+
+bpy.types.MotionPath
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MotionPath.color`
+* :class:`bpy.types.MotionPath.line_thickness`
+* :class:`bpy.types.MotionPath.lines`
+* :class:`bpy.types.MotionPath.use_custom_color`
+
+bpy.types.CompositorNodeBrightContrast
+--------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CompositorNodeBrightContrast.use_premultiply`
+
+bpy.types.CompositorNodeHueSat
+------------------------------
+
+Removed
+^^^^^^^
+
+* **color_hue**
+* **color_saturation**
+* **color_value**
+
+bpy.types.CompositorNodeSwitchView
+----------------------------------
+
+Removed
+^^^^^^^
+
+* **check**
+
+bpy.types.Operator
+------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Operator.bl_undo_group`
+* :class:`bpy.types.Operator.is_repeat`
+
+bpy.types.Sculpt
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Sculpt.constant_detail_resolution`
+
+Removed
+^^^^^^^
+
+* **constant_detail**
+
+bpy.types.Panel
+---------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.Panel.is_extended`
+
+bpy.types.IMAGE_UV_sculpt
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.IMAGE_UV_sculpt.is_extended`
+
+bpy.types.IMAGE_UV_sculpt_curve
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.IMAGE_UV_sculpt_curve.is_extended`
+
+bpy.types.CyclesObjectSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesObjectSettings.is_shadow_catcher`
+
+bpy.types.CyclesRenderSettings
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CyclesRenderSettings.ao_bounces`
+* :class:`bpy.types.CyclesRenderSettings.ao_bounces_render`
+* :class:`bpy.types.CyclesRenderSettings.debug_opencl_kernel_single_program`
+* :class:`bpy.types.CyclesRenderSettings.debug_opencl_mem_limit`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_cpu_split_kernel`
+* :class:`bpy.types.CyclesRenderSettings.debug_use_cuda_split_kernel`
+
+bpy.types.PropertyGroupItem
+---------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.PropertyGroupItem.id`
+
+bpy.types.RenderEngine
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderEngine.add_pass`
+* :class:`bpy.types.RenderEngine.register_pass`
+* :class:`bpy.types.RenderEngine.update_render_passes`
+
+Function Arguments
+^^^^^^^^^^^^^^^^^^
+
+* :class:`bpy.types.RenderEngine.end_result` (result, cancel, highlight, do_merge_results), *was (result, cancel, do_merge_results)*
+
+bpy.types.CYCLES
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CYCLES.update_render_passes`
+
+bpy.types.RenderPass
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderPass.fullname`
+
+Removed
+^^^^^^^
+
+* **debug_type**
+* **type**
+
+bpy.types.RenderPasses
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RenderPasses.find_by_name`
+
+bpy.types.RenderSettings
+------------------------
+
+Removed
+^^^^^^^
+
+* **sequencer_gl_render**
+* **use_sequencer_gl_preview**
+
+bpy.types.RigidBodyConstraint
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RigidBodyConstraint.spring_damping_ang_x`
+* :class:`bpy.types.RigidBodyConstraint.spring_damping_ang_y`
+* :class:`bpy.types.RigidBodyConstraint.spring_damping_ang_z`
+* :class:`bpy.types.RigidBodyConstraint.spring_stiffness_ang_x`
+* :class:`bpy.types.RigidBodyConstraint.spring_stiffness_ang_y`
+* :class:`bpy.types.RigidBodyConstraint.spring_stiffness_ang_z`
+* :class:`bpy.types.RigidBodyConstraint.use_spring_ang_x`
+* :class:`bpy.types.RigidBodyConstraint.use_spring_ang_y`
+* :class:`bpy.types.RigidBodyConstraint.use_spring_ang_z`
+
+bpy.types.SceneRenderLayer
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SceneRenderLayer.cycles`
+* :class:`bpy.types.SceneRenderLayer.update_render_passes`
+
+bpy.types.SmokeDomainSettings
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SmokeDomainSettings.axis_slice_method`
+* :class:`bpy.types.SmokeDomainSettings.coba_field`
+* :class:`bpy.types.SmokeDomainSettings.color_ramp`
+* :class:`bpy.types.SmokeDomainSettings.display_thickness`
+* :class:`bpy.types.SmokeDomainSettings.draw_velocity`
+* :class:`bpy.types.SmokeDomainSettings.slice_axis`
+* :class:`bpy.types.SmokeDomainSettings.slice_depth`
+* :class:`bpy.types.SmokeDomainSettings.slice_method`
+* :class:`bpy.types.SmokeDomainSettings.slice_per_voxel`
+* :class:`bpy.types.SmokeDomainSettings.use_color_ramp`
+* :class:`bpy.types.SmokeDomainSettings.vector_draw_type`
+* :class:`bpy.types.SmokeDomainSettings.vector_scale`
+
+bpy.types.SpaceNodeEditor
+-------------------------
+
+Removed
+^^^^^^^
+
+* **show_highlight**
+
+bpy.types.SpaceView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceView3D.active_layer`
+
+bpy.types.SpaceUVEditor
+-----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SpaceUVEditor.other_uv_filter`
+
+bpy.types.ThemeGraphEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeGraphEditor.vertex_bevel`
+
+bpy.types.ThemeImageEditor
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeImageEditor.vertex_bevel`
+
+bpy.types.ThemeView3D
+---------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ThemeView3D.edge_bevel`
+* :class:`bpy.types.ThemeView3D.vertex_bevel`
+
+bpy.types.ToolSettings
+----------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.ToolSettings.gpencil_interpolate`
+
+bpy.types.UIList
+----------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UIList.is_extended`
+
+bpy.types.CLIP_UL_tracking_objects
+----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.CLIP_UL_tracking_objects.is_extended`
+
+bpy.types.FILEBROWSER_UL_dir
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.FILEBROWSER_UL_dir.is_extended`
+
+bpy.types.GPENCIL_UL_brush
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPENCIL_UL_brush.is_extended`
+
+bpy.types.GPENCIL_UL_layer
+--------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPENCIL_UL_layer.is_extended`
+
+bpy.types.GPENCIL_UL_palettecolor
+---------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.GPENCIL_UL_palettecolor.is_extended`
+
+bpy.types.MASK_UL_layers
+------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MASK_UL_layers.is_extended`
+
+bpy.types.MATERIAL_UL_matslots
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MATERIAL_UL_matslots.is_extended`
+
+bpy.types.MESH_UL_shape_keys
+----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MESH_UL_shape_keys.is_extended`
+
+bpy.types.MESH_UL_uvmaps_vcols
+------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MESH_UL_uvmaps_vcols.is_extended`
+
+bpy.types.MESH_UL_vgroups
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.MESH_UL_vgroups.is_extended`
+
+bpy.types.NODE_UL_interface_sockets
+-----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.NODE_UL_interface_sockets.is_extended`
+
+bpy.types.PARTICLE_UL_particle_systems
+--------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.PARTICLE_UL_particle_systems.is_extended`
+
+bpy.types.PHYSICS_UL_dynapaint_surfaces
+---------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.PHYSICS_UL_dynapaint_surfaces.is_extended`
+
+bpy.types.RENDERLAYER_UL_linesets
+---------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RENDERLAYER_UL_linesets.is_extended`
+
+bpy.types.RENDERLAYER_UL_renderlayers
+-------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RENDERLAYER_UL_renderlayers.is_extended`
+
+bpy.types.RENDERLAYER_UL_renderviews
+------------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.RENDERLAYER_UL_renderviews.is_extended`
+
+bpy.types.SCENE_UL_keying_set_paths
+-----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.SCENE_UL_keying_set_paths.is_extended`
+
+bpy.types.TEXTURE_UL_texpaintslots
+----------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TEXTURE_UL_texpaintslots.is_extended`
+
+bpy.types.TEXTURE_UL_texslots
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.TEXTURE_UL_texslots.is_extended`
+
+bpy.types.UI_UL_list
+--------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UI_UL_list.is_extended`
+
+bpy.types.UserPreferences
+-------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferences.app_template`
+
+bpy.types.UserPreferencesSystem
+-------------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesSystem.use_select_pick_depth`
+
+Removed
+^^^^^^^
+
+* **use_textured_fonts**
+* **virtual_pixel_mode**
+
+bpy.types.UserPreferencesView
+-----------------------------
+
+Added
+^^^^^
+
+* :class:`bpy.types.UserPreferencesView.ui_line_width`
+* :class:`bpy.types.UserPreferencesView.ui_scale`
+* :class:`bpy.types.UserPreferencesView.use_cursor_lock_adjust`
diff --git a/doc/python_api/rst/gpu.rst b/doc/python_api/rst/gpu.rst
index 6c38122a573..cf639357a31 100644
--- a/doc/python_api/rst/gpu.rst
+++ b/doc/python_api/rst/gpu.rst
@@ -6,6 +6,13 @@ GPU functions (gpu)
This module provides access to materials GLSL shaders.
+Submodules:
+
+.. toctree::
+ :maxdepth: 1
+
+ gpu.offscreen.rst
+
Intro
=====
@@ -24,7 +31,6 @@ and in the game engine.
Constants
=========
-
GLSL Data Type
--------------
diff --git a/doc/python_api/rst/include__bmesh.rst b/doc/python_api/rst/include__bmesh.rst
index 83e3e73cea4..bed374bf7b6 100644
--- a/doc/python_api/rst/include__bmesh.rst
+++ b/doc/python_api/rst/include__bmesh.rst
@@ -7,14 +7,17 @@
Submodules:
-* :mod:`bmesh.ops`
-* :mod:`bmesh.types`
-* :mod:`bmesh.utils`
-* :mod:`bmesh.geometry`
+.. toctree::
+ :maxdepth: 1
+ bmesh.ops.rst
+ bmesh.types.rst
+ bmesh.utils.rst
+ bmesh.geometry.rst
-Intro
------
+
+Introduction
+------------
This API gives access the blenders internal mesh editing api, featuring geometry connectivity data and
access to editing operations such as split, separate, collapse and dissolve.
diff --git a/doc/python_api/rst/info_api_reference.rst b/doc/python_api/rst/info_api_reference.rst
index 5ef5866c44a..ab690a8ee06 100644
--- a/doc/python_api/rst/info_api_reference.rst
+++ b/doc/python_api/rst/info_api_reference.rst
@@ -53,7 +53,7 @@ Here are some characteristics ID Data-Blocks share.
Simple Data Access
------------------
-Lets start with a simple case, say you wan't a python script to adjust the objects location.
+Lets start with a simple case, say you want a python script to adjust the objects location.
Start by finding this setting in the interface ``Properties Window -> Object -> Transform -> Location``
diff --git a/doc/python_api/rst/info_overview.rst b/doc/python_api/rst/info_overview.rst
index ba2e6949b81..4b8df47990c 100644
--- a/doc/python_api/rst/info_overview.rst
+++ b/doc/python_api/rst/info_overview.rst
@@ -5,23 +5,25 @@
Python API Overview
*******************
-This document is to give an understanding of how Python and Blender fit together,
-covering some of the functionality that isn't obvious from reading the API reference and example scripts.
+The purpose of this document is to explain how Python and Blender fit together,
+covering some of the functionality that may not be obvious from reading the API
+references and example scripts.
Python in Blender
=================
-Blender embeds a Python interpreter which is started with Blender and stays active.
-This interpreter runs scripts to draw the user interface and is used for some of Blender's internal tools too.
+Blender has an embedded Python interpreter which is loaded when Blender is started and stays
+active while Blender is running. This interpreter runs scripts to draw the user interface
+and is used for some of Blender’s internal tools as well.
-This is a typical Python environment so tutorials on how to write Python scripts
-will work running the scripts in Blender too.
-Blender provides the :mod:`bpy` module to the Python interpreter.
-This module can be imported in a script and gives access to Blender data, classes, and functions.
-Scripts that deal with Blender data will need to import this module.
+Blender's embedded interpreter provides a typical Python environment, so code from tutorials
+on how to write Python scripts can also be run with Blender’s interpreter. Blender provides its
+Python modules, such as :mod:`bpy` and :mod:`mathutils`, to the embedded interpreter so they can
+be imported into a script and give access to Blender's data, classes, and functions. Scripts that
+deal with Blender data will need to import the modules to work.
-Here is a simple example of moving a vertex of the object named **Cube**:
+Here is a simple example which moves a vertex attached to an object named **Cube**:
.. code-block:: python
@@ -49,15 +51,17 @@ See the :ref:`directory layout docs <blender_manual:getting-started_installing-c
Script Loading
==============
-This may seem obvious but it's important to note the difference
-between executing a script directly or importing it as a module.
+This may seem obvious, but it is important to note the difference between
+executing a script directly and importing a script as a module.
-Scripts that extend Blender - define classes that exist beyond the scripts execution,
-this makes future access to these classes (to unregister for example)
-more difficult than importing as a module where class instance is kept
-in the module and can be accessed by importing that module later on.
+Extending Blender by executing a script directly means the classes that the script
+defines remain available inside Blender after the script finishes execution.
+Using scripts this way makes future access to their classes
+(to unregister them for example) more difficult compared to importing the scripts as modules.
+When a script is imported as a module, its class instances will remain
+inside the module and can be accessed later on by importing that module again.
-For this reason it's preferable to only use directly execute scripts that don't extend Blender by registering classes.
+For this reason it is preferable to avoid directly executing scripts that extend Blender by registering classes.
Here are some ways to run scripts directly in Blender.
@@ -190,10 +194,11 @@ User interface classes are given a context in which to draw, buttons window, fil
then they are drawn when that area is displayed so they are never called by Python scripts directly.
+.. _info_overview_registration:
+
Registration
============
-
Module Registration
-------------------
@@ -396,8 +401,8 @@ This works just as well for PropertyGroup subclasses you define yourself.
Dynamic Defined-Classes (Advanced)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-In some cases the specifier for data may not be in Blender,
-renderman shader definitions for example and it may be useful to define types and remove them on the fly.
+In some cases the specifier for data may not be in Blender, renderman shader definitions
+for example, and it may be useful to define them as types and remove them on the fly.
.. code-block:: python
@@ -420,7 +425,7 @@ renderman shader definitions for example and it may be useful to define types an
This is an alternative syntax for class creation in Python, better suited to constructing classes dynamically.
-Calling these operators:
+To call the operators from the previous example:
>>> bpy.ops.object.operator_1()
Hello World OBJECT_OT_operator_1
diff --git a/doc/python_api/rst/info_tutorial_addon.rst b/doc/python_api/rst/info_tutorial_addon.rst
deleted file mode 100644
index 92fbf9b8787..00000000000
--- a/doc/python_api/rst/info_tutorial_addon.rst
+++ /dev/null
@@ -1,635 +0,0 @@
-
-Add-on Tutorial
-###############
-
-************
-Introduction
-************
-
-
-Intended Audience
-=================
-
-This tutorial is designed to help technical artists or developers learn to extend Blender.
-An understanding of the basics of Python is expected for those working through this tutorial.
-
-
-Prerequisites
--------------
-
-Before going through the tutorial you should...
-
-- Familiarity with the basics of working in Blender.
-- Know how to run a script in Blender's text editor (as documented in the quick-start)
-- Have an understanding of Python primitive types (int, boolean, string, list, tuple, dictionary, and set).
-- Be familiar with the concept of Python modules.
-- Basic understanding of classes (object orientation) in Python.
-
-
-Suggested reading before starting this tutorial.
-
-- `Dive Into Python <http://getpython3.com/diveintopython3/index.html>`_ sections (1, 2, 3, 4, and 7).
-- :ref:`Blender API Quickstart <info_quickstart>`
- to help become familiar with Blender/Python basics.
-
-
-To best troubleshoot any error message Python prints while writing scripts you run blender with from a terminal,
-see :ref:`Use The Terminal <use_the_terminal>`.
-
-
-Documentation Links
-===================
-
-While going through the tutorial you may want to look into our reference documentation.
-
-- :ref:`Blender API Overview <info_overview>`. -
- *This document is rather detailed but helpful if you want to know more on a topic.*
-- :mod:`bpy.context` api reference. -
- *Handy to have a list of available items your script may operate on.*
-- :class:`bpy.types.Operator`. -
- *The following add-ons define operators, these docs give details and more examples of operators.*
-
-
-*******
-Add-ons
-*******
-
-What is an Add-on?
-==================
-
-An add-on is simply a Python module with some additional requirements so Blender can display it in a list with useful
-information.
-
-To give an example, here is the simplest possible add-on.
-
-.. code-block:: python
-
- bl_info = {"name": "My Test Add-on", "category": "Object"}
- def register():
- print("Hello World")
- def unregister():
- print("Goodbye World")
-
-
-- ``bl_info`` is a dictionary containing add-on metadata such as the title,
- version and author to be displayed in the user preferences add-on list.
-- ``register`` is a function which only runs when enabling the add-on,
- this means the module can be loaded without activating the add-on.
-- ``unregister`` is a function to unload anything setup by ``register``, this is called when the add-on is disabled.
-
-
-Notice this add-on does not do anything related to Blender, (the :mod:`bpy` module is not imported for example).
-
-This is a contrived example of an add-on that serves to illustrate the point
-that the base requirements of an add-on are simple.
-
-An add-on will typically register operators, panels, menu items etc, but its worth noting that _any_ script can do this,
-when executed from the text editor or even the interactive console - there is nothing inherently different about an
-add-on that allows it to integrate with Blender, such functionality is just provided by the :mod:`bpy` module for any
-script to access.
-
-So an add-on is just a way to encapsulate a Python module in a way a user can easily utilize.
-
-.. note::
-
- Running this script within the text editor won't print anything,
- to see the output it must be installed through the user preferences.
- Messages will be printed when enabling and disabling.
-
-
-Your First Add-on
-=================
-
-The simplest possible add-on above is useful as an example but not much else.
-This next add-on is simple but shows how to integrate a script into Blender using an ``Operator``
-which is the typical way to define a tool accessed from menus, buttons and keyboard shortcuts.
-
-For the first example we will make a script that simply moves all objects in a scene.
-
-
-Write The Script
-----------------
-
-Add the following script to the text editor in Blender.
-
-.. code-block:: python
-
- import bpy
-
- scene = bpy.context.scene
- for obj in scene.objects:
- obj.location.x += 1.0
-
-
-Click the :ref:`Run Script button <blender_manual:editors-text-run-script>`,
-all objects in the active scene are moved by 1.0 Blender unit.
-
-
-Write the Add-on (Simple)
--------------------------
-
-This add-on takes the body of the script above, and adds them to an operator's ``execute()`` function.
-
-
-.. code-block:: python
-
- bl_info = {
- "name": "Move X Axis",
- "category": "Object",
- }
-
- import bpy
-
-
- class ObjectMoveX(bpy.types.Operator):
- """My Object Moving Script""" # blender will use this as a tooltip for menu items and buttons.
- bl_idname = "object.move_x" # unique identifier for buttons and menu items to reference.
- bl_label = "Move X by One" # display name in the interface.
- bl_options = {'REGISTER', 'UNDO'} # enable undo for the operator.
-
- def execute(self, context): # execute() is called by blender when running the operator.
-
- # The original script
- scene = context.scene
- for obj in scene.objects:
- obj.location.x += 1.0
-
- return {'FINISHED'} # this lets blender know the operator finished successfully.
-
- def register():
- bpy.utils.register_class(ObjectMoveX)
-
-
- def unregister():
- bpy.utils.unregister_class(ObjectMoveX)
-
-
- # This allows you to run the script directly from blenders text editor
- # to test the add-on without having to install it.
- if __name__ == "__main__":
- register()
-
-
-.. note::
-
- ``bl_info`` is split across multiple lines, this is just a style convention used to more easily add items.
-
-.. note::
-
- Rather than using ``bpy.context.scene``, we use the ``context.scene`` argument passed to ``execute()``.
- In most cases these will be the same however in some cases operators will be passed a custom context
- so script authors should prefer the ``context`` argument passed to operators.
-
-To test the script you can copy and paste this into Blender text editor and run it, this will execute the script
-directly and call register immediately.
-
-However running the script wont move any objects, for this you need to execute the newly registered operator.
-
-.. image:: spacebar.png
- :width: 924px
- :align: center
- :height: 574px
- :alt: Spacebar
-
-Do this by pressing :kbd:`Spacebar` to bring up the operator search dialog and type in
-"Move X by One" (the ``bl_label``), then :kbd:`Enter`.
-
-
-
-The objects should move as before.
-
-*Keep this add-on open in Blender for the next step - Installing.*
-
-
-Install The Add-on
-------------------
-
-Once you have your add-on within in Blender's text editor,
-you will want to be able to install it so it can be enabled in the user preferences to load on startup.
-
-Even though the add-on above is a test, lets go through the steps anyway so you know how to do it for later.
-
-To install the Blender text as an add-on you will first have to save it to disk, take care to obey the naming
-restrictions that apply to Python modules and end with a ``.py`` extension.
-
-Once the file is on disk, you can install it as you would for an add-on downloaded online.
-
-Open the user :menuselection:`File --> User Preferences`,
-Select the *Add-on* section, press *Install Add-on...* and select the file.
-
-Now the add-on will be listed and you can enable it by pressing the check-box,
-if you want it to be enabled on restart, press *Save as Default*.
-
-.. note::
-
- The destination of the add-on depends on your Blender configuration.
- When installing an add-on the source and destination path are printed in the console.
- You can also find add-on path locations by running this in the Python console.
-
- .. code-block:: python
-
- import addon_utils
- print(addon_utils.paths())
-
- More is written on this topic here:
- :ref:`Directory Layout <blender_manual:getting-started_installing-config-directories>`.
-
-
-Your Second Add-on
-==================
-
-For our second add-on, we will focus on object instancing - this is - to make linked copies of an object in a
-similar way to what you may have seen with the array modifier.
-
-
-Write The Script
-----------------
-
-As before, first we will start with a script, develop it, then convert into an add-on.
-
-.. code-block:: python
-
- import bpy
- from bpy import context
-
- # Get the current scene
- scene = context.scene
-
- # Get the 3D cursor
- cursor = scene.cursor_location
-
- # Get the active object (assume we have one)
- obj = scene.objects.active
-
- # Now make a copy of the object
- obj_new = obj.copy()
-
- # The object won't automatically get into a new scene
- scene.objects.link(obj_new)
-
- # Now we can place the object
- obj_new.location = cursor
-
-
-Now try copy this script into Blender and run it on the default cube.
-Make sure you click to move the 3D cursor before running as the duplicate will appear at the cursor's location.
-
-
-... go off and test ...
-
-
-After running, notice that when you go into edit-mode to change the cube - all of the copies change,
-in Blender this is known as *Linked-Duplicates*.
-
-
-Next, we're going to do this in a loop, to make an array of objects between the active object and the cursor.
-
-
-.. code-block:: python
-
- import bpy
- from bpy import context
-
- scene = context.scene
- cursor = scene.cursor_location
- obj = scene.objects.active
-
- # Use a fixed value for now, eventually make this user adjustable
- total = 10
-
- # Add 'total' objects into the scene
- for i in range(total):
- obj_new = obj.copy()
- scene.objects.link(obj_new)
-
- # Now place the object in between the cursor
- # and the active object based on 'i'
- factor = i / total
- obj_new.location = (obj.location * factor) + (cursor * (1.0 - factor))
-
-
-Try run this script with with the active object and the cursor spaced apart to see the result.
-
-With this script you'll notice we're doing some math with the object location and cursor, this works because both are
-3D :class:`mathutils.Vector` instances, a convenient class provided by the :mod:`mathutils` module and
-allows vectors to be multiplied by numbers and matrices.
-
-If you are interested in this area, read into :class:`mathutils.Vector` - there are many handy utility functions
-such as getting the angle between vectors, cross product, dot products
-as well as more advanced functions in :mod:`mathutils.geometry` such as Bézier Spline interpolation and
-ray-triangle intersection.
-
-For now we will focus on making this script an add-on, but its good to know that this 3D math module is available and
-can help you with more advanced functionality later on.
-
-
-Write the Add-on
-----------------
-
-The first step is to convert the script as-is into an add-on.
-
-
-.. code-block:: python
-
- bl_info = {
- "name": "Cursor Array",
- "category": "Object",
- }
-
- import bpy
-
-
- class ObjectCursorArray(bpy.types.Operator):
- """Object Cursor Array"""
- bl_idname = "object.cursor_array"
- bl_label = "Cursor Array"
- bl_options = {'REGISTER', 'UNDO'}
-
- def execute(self, context):
- scene = context.scene
- cursor = scene.cursor_location
- obj = scene.objects.active
-
- total = 10
-
- for i in range(total):
- obj_new = obj.copy()
- scene.objects.link(obj_new)
-
- factor = i / total
- obj_new.location = (obj.location * factor) + (cursor * (1.0 - factor))
-
- return {'FINISHED'}
-
- def register():
- bpy.utils.register_class(ObjectCursorArray)
-
-
- def unregister():
- bpy.utils.unregister_class(ObjectCursorArray)
-
-
- if __name__ == "__main__":
- register()
-
-
-Everything here has been covered in the previous steps, you may want to try run the add-on still
-and consider what could be done to make it more useful.
-
-
-... go off and test ...
-
-
-The two of the most obvious missing things are - having the total fixed at 10, and having to access the operator from
-space-bar is not very convenient.
-
-Both these additions are explained next, with the final script afterwards.
-
-
-Operator Property
-^^^^^^^^^^^^^^^^^
-
-There are a variety of property types that are used for tool settings, common property types include:
-int, float, vector, color, boolean and string.
-
-These properties are handled differently to typical Python class attributes
-because Blender needs to be display them in the interface,
-store their settings in key-maps and keep settings for re-use.
-
-While this is handled in a fairly Pythonic way, be mindful that you are in fact defining tool settings that
-are loaded into Blender and accessed by other parts of Blender, outside of Python.
-
-
-To get rid of the literal 10 for `total`, we'll us an operator property.
-Operator properties are defined via bpy.props module, this is added to the class body.
-
-.. code-block:: python
-
- # moved assignment from execute() to the body of the class...
- total = bpy.props.IntProperty(name="Steps", default=2, min=1, max=100)
-
- # and this is accessed on the class
- # instance within the execute() function as...
- self.total
-
-
-These properties from :mod:`bpy.props` are handled specially by Blender when the class is registered
-so they display as buttons in the user interface.
-There are many arguments you can pass to properties to set limits, change the default and display a tooltip.
-
-.. seealso:: :mod:`bpy.props.IntProperty`
-
-This document doesn't go into details about using other property types,
-however the link above includes examples of more advanced property usage.
-
-
-Menu Item
-^^^^^^^^^
-
-Add-ons can add to the user interface of existing panels, headers and menus defined in Python.
-
-For this example we'll add to an existing menu.
-
-.. image:: menu_id.png
- :width: 334px
- :align: center
- :height: 128px
- :alt: Menu Identifier
-
-To find the identifier of a menu you can hover your mouse over the menu item and the identifier is displayed.
-
-The method used for adding a menu item is to append a draw function into an existing class.
-
-
-.. code-block:: python
-
- def menu_func(self, context):
- self.layout.operator(ObjectCursorArray.bl_idname)
-
- def register():
- bpy.types.VIEW3D_MT_object.append(menu_func)
-
-
-For docs on extending menus see: :doc:`bpy.types.Menu`.
-
-
-Keymap
-^^^^^^
-
-In Blender, add-ons have their own keymaps so as not to interfere with Blenders built in key-maps.
-
-In the example below, a new object-mode :class:`bpy.types.KeyMap` is added,
-then a :class:`bpy.types.KeyMapItem` is added to the key-map which references our newly added operator,
-using :kbd:`Ctrl-Shift-Space` as the key shortcut to activate it.
-
-
-.. code-block:: python
-
- # store keymaps here to access after registration
- addon_keymaps = []
-
- def register():
-
- # handle the keymap
- wm = bpy.context.window_manager
- km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', space_type='EMPTY')
-
- kmi = km.keymap_items.new(ObjectCursorArray.bl_idname, 'SPACE', 'PRESS', ctrl=True, shift=True)
- kmi.properties.total = 4
-
- addon_keymaps.append((km, kmi))
-
-
- def unregister():
-
- # handle the keymap
- for km, kmi in addon_keymaps:
- km.keymap_items.remove(kmi)
- addon_keymaps.clear()
-
-
-Notice how the key-map item can have a different ``total`` setting then the default set by the operator,
-this allows you to have multiple keys accessing the same operator with different settings.
-
-
-.. note::
-
- While :kbd:`Ctrl-Shift-Space` isn't a default Blender key shortcut, its hard to make sure add-ons won't
- overwrite each others keymaps, At least take care when assigning keys that they don't
- conflict with important functionality within Blender.
-
-For API documentation on the functions listed above, see:
-:class:`bpy.types.KeyMaps.new`,
-:class:`bpy.types.KeyMap`,
-:class:`bpy.types.KeyMapItems.new`,
-:class:`bpy.types.KeyMapItem`.
-
-
-Bringing it all together
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: python
-
- bl_info = {
- "name": "Cursor Array",
- "category": "Object",
- }
-
- import bpy
-
-
- class ObjectCursorArray(bpy.types.Operator):
- """Object Cursor Array"""
- bl_idname = "object.cursor_array"
- bl_label = "Cursor Array"
- bl_options = {'REGISTER', 'UNDO'}
-
- total = bpy.props.IntProperty(name="Steps", default=2, min=1, max=100)
-
- def execute(self, context):
- scene = context.scene
- cursor = scene.cursor_location
- obj = scene.objects.active
-
- for i in range(self.total):
- obj_new = obj.copy()
- scene.objects.link(obj_new)
-
- factor = i / self.total
- obj_new.location = (obj.location * factor) + (cursor * (1.0 - factor))
-
- return {'FINISHED'}
-
-
- def menu_func(self, context):
- self.layout.operator(ObjectCursorArray.bl_idname)
-
- # store keymaps here to access after registration
- addon_keymaps = []
-
-
- def register():
- bpy.utils.register_class(ObjectCursorArray)
- bpy.types.VIEW3D_MT_object.append(menu_func)
-
- # handle the keymap
- wm = bpy.context.window_manager
- # Note that in background mode (no GUI available), keyconfigs are not available either, so we have to check this
- # to avoid nasty errors in background case.
- kc = wm.keyconfigs.addon
- if kc:
- km = wm.keyconfigs.addon.keymaps.new(name='Object Mode', space_type='EMPTY')
- kmi = km.keymap_items.new(ObjectCursorArray.bl_idname, 'SPACE', 'PRESS', ctrl=True, shift=True)
- kmi.properties.total = 4
- addon_keymaps.append((km, kmi))
-
- def unregister():
- # Note: when unregistering, it's usually good practice to do it in reverse order you registered.
- # Can avoid strange issues like keymap still referring to operators already unregistered...
- # handle the keymap
- for km, kmi in addon_keymaps:
- km.keymap_items.remove(kmi)
- addon_keymaps.clear()
-
- bpy.utils.unregister_class(ObjectCursorArray)
- bpy.types.VIEW3D_MT_object.remove(menu_func)
-
-
- if __name__ == "__main__":
- register()
-
-.. image:: in_menu.png
- :width: 591px
- :align: center
- :height: 649px
- :alt: In the menu
-
-Run the script (or save it and add it through the Preferences like before) and it will appear in the menu.
-
-.. image:: op_prop.png
- :width: 669px
- :align: center
- :height: 644px
- :alt: Operator Property
-
-After selecting it from the menu, you can choose how many instance of the cube you want created.
-
-
-.. note::
-
- Directly executing the script multiple times will add the menu each time too.
- While not useful behavior, theres nothing to worry about since add-ons won't register them selves multiple
- times when enabled through the user preferences.
-
-
-Conclusions
-===========
-
-Add-ons can encapsulate certain functionality neatly for writing tools to improve your work-flow or for writing utilities
-for others to use.
-
-While there are limits to what Python can do within Blender, there is certainly a lot that can be achieved without
-having to dive into Blender's C/C++ code.
-
-The example given in the tutorial is limited, but shows the Blender API used for common tasks that you can expand on
-to write your own tools.
-
-
-Further Reading
----------------
-
-Blender comes commented templates which are accessible from the text editor header, if you have specific areas
-you want to see example code for, this is a good place to start.
-
-
-Here are some sites you might like to check on after completing this tutorial.
-
-- :ref:`Blender/Python API Overview <info_overview>` -
- *For more background details on Blender/Python integration.*
-- `How to Think Like a Computer Scientist <http://interactivepython.org/courselib/static/thinkcspy/index.html>`_ -
- *Great info for those who are still learning Python.*
-- `Blender Development (Wiki) <https://wiki.blender.org/index.php/Dev:Contents>`_ -
- *Blender Development, general information and helpful links.*
-- `Blender Artists (Coding Section) <https://blenderartists.org/forum/forumdisplay.php?47-Coding>`_ -
- *forum where people ask Python development questions*
-
diff --git a/doc/python_api/rst_from_bmesh_opdefines.py b/doc/python_api/rst_from_bmesh_opdefines.py
index cdbed88cc88..d3e4b2a0cfd 100644
--- a/doc/python_api/rst_from_bmesh_opdefines.py
+++ b/doc/python_api/rst_from_bmesh_opdefines.py
@@ -22,7 +22,7 @@
# 'bmesh_opdefines.c' in order to avoid having to add a lot of introspection
# data access into the api.
#
-# The script is stupid becase it makes assumptions about formatting...
+# The script is stupid because it makes assumptions about formatting...
# that each arg has its own line, that comments above or directly after will be __doc__ etc...
#
# We may want to replace this script with something else one day but for now its good enough.
diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py
index ec3131ca19e..50b07cabff4 100644
--- a/doc/python_api/sphinx_doc_gen.py
+++ b/doc/python_api/sphinx_doc_gen.py
@@ -341,6 +341,8 @@ EXTRA_SOURCE_FILES = (
"../examples/bge.texture.py",
"../examples/bmesh.ops.1.py",
"../examples/bpy.app.translations.py",
+ "../static/favicon.ico",
+ "../static/blender_logo.svg",
)
@@ -362,8 +364,6 @@ INFO_DOCS = (
"Blender/Python Quickstart: new to Blender/scripting and want to get your feet wet?"),
("info_overview.rst",
"Blender/Python API Overview: a more complete explanation of Python integration"),
- ("info_tutorial_addon.rst",
- "Blender/Python Add-on Tutorial: a step by step guide on how to write an add-on from scratch"),
("info_api_reference.rst",
"Blender/Python API Reference Usage: examples of how to use the API reference docs"),
("info_best_practice.rst",
@@ -417,19 +417,28 @@ MODULE_GROUPING = {
# -------------------------------BLENDER----------------------------------------
blender_version_strings = [str(v) for v in bpy.app.version]
+is_release = bpy.app.version_cycle in {"rc", "release"}
# converting bytes to strings, due to T30154
BLENDER_REVISION = str(bpy.app.build_hash, 'utf_8')
BLENDER_DATE = str(bpy.app.build_date, 'utf_8')
-BLENDER_VERSION_DOTS = ".".join(blender_version_strings) # '2.62.1'
+if is_release:
+ # '2.62a'
+ BLENDER_VERSION_DOTS = ".".join(blender_version_strings[:2]) + bpy.app.version_char
+else:
+ # '2.62.1'
+ BLENDER_VERSION_DOTS = ".".join(blender_version_strings)
if BLENDER_REVISION != "Unknown":
- BLENDER_VERSION_DOTS += " " + BLENDER_REVISION # '2.62.1 SHA1'
+ # '2.62a SHA1' (release) or '2.62.1 SHA1' (non-release)
+ BLENDER_VERSION_DOTS += " " + BLENDER_REVISION
-BLENDER_VERSION_PATH = "_".join(blender_version_strings) # '2_62_1'
-if bpy.app.version_cycle == "release":
- BLENDER_VERSION_PATH = "%s%s_release" % ("_".join(blender_version_strings[:2]),
- bpy.app.version_char) # '2_62_release'
+if is_release:
+ # '2_62a_release'
+ BLENDER_VERSION_PATH = "%s%s_release" % ("_".join(blender_version_strings[:2]), bpy.app.version_char)
+else:
+ # '2_62_1'
+ BLENDER_VERSION_PATH = "_".join(blender_version_strings)
# --------------------------DOWNLOADABLE FILES----------------------------------
@@ -1010,9 +1019,9 @@ def pymodule2sphinx(basepath, module_name, module, title):
context_type_map = {
"active_base": ("ObjectBase", False),
"active_bone": ("EditBone", False),
+ "active_gpencil_brush": ("GPencilSculptBrush", False),
"active_gpencil_frame": ("GreasePencilLayer", True),
"active_gpencil_layer": ("GPencilLayer", True),
- "active_gpencil_brush": ("GPencilSculptBrush", False),
"active_gpencil_palette": ("GPencilPalette", True),
"active_gpencil_palettecolor": ("GPencilPaletteColor", True),
"active_node": ("Node", False),
@@ -1063,6 +1072,7 @@ context_type_map = {
"selected_bones": ("EditBone", True),
"selected_editable_bases": ("ObjectBase", True),
"selected_editable_bones": ("EditBone", True),
+ "selected_editable_fcurves": ("FCurce", True),
"selected_editable_objects": ("Object", True),
"selected_editable_sequences": ("Sequence", True),
"selected_nodes": ("Node", True),
@@ -1613,10 +1623,8 @@ def pyrna2sphinx(basepath):
else:
url_base = API_BASEURL
- fw(" :file: `%s <%s/%s>`_:%d\n\n" % (location[0],
- url_base,
- location[0],
- location[1]))
+ fw(" :file: `%s\\:%d <%s/%s$%d>`_\n\n" %
+ (location[0], location[1], url_base, location[0], location[1]))
file.close()
@@ -1641,19 +1649,24 @@ def write_sphinx_conf_py(basepath):
fw("version = '%s - API'\n" % BLENDER_VERSION_DOTS)
fw("release = '%s - API'\n" % BLENDER_VERSION_DOTS)
+ # Quiet file not in table-of-contents warnings.
+ fw("exclude_patterns = [\n")
+ fw(" 'include__bmesh.rst',\n")
+ fw("]\n\n")
+
if ARGS.sphinx_theme != 'default':
fw("html_theme = '%s'\n" % ARGS.sphinx_theme)
if ARGS.sphinx_theme == "blender-org":
fw("html_theme_path = ['../']\n")
- # copied with the theme, exclude else we get an error [T28873]
- fw("html_favicon = 'favicon.ico'\n") # in <theme>/static/
# not helpful since the source is generated, adds to upload size.
fw("html_copy_source = False\n")
fw("html_show_sphinx = False\n")
fw("html_split_index = True\n")
- fw("\n")
+ fw("html_extra_path = ['__/static/favicon.ico', '__/static/blender_logo.svg']\n")
+ fw("html_favicon = '__/static/favicon.ico'\n")
+ fw("html_logo = '__/static/blender_logo.svg'\n\n")
# needed for latex, pdf gen
fw("latex_elements = {\n")
@@ -1661,6 +1674,24 @@ def write_sphinx_conf_py(basepath):
fw("}\n\n")
fw("latex_documents = [ ('contents', 'contents.tex', 'Blender Index', 'Blender Foundation', 'manual'), ]\n")
+
+ # Workaround for useless links leading to compile errors
+ # See https://github.com/sphinx-doc/sphinx/issues/3866
+ fw(r"""
+from sphinx.domains.python import PythonDomain
+
+class PatchedPythonDomain(PythonDomain):
+ def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode):
+ if 'refspecific' in node:
+ del node['refspecific']
+ return super(PatchedPythonDomain, self).resolve_xref(
+ env, fromdocname, builder, typ, target, node, contnode)
+
+def setup(sphinx):
+ sphinx.override_domain(PatchedPythonDomain)
+""")
+ # end workaround
+
file.close()
@@ -1715,8 +1746,6 @@ def write_rst_contents(basepath):
"bpy.utils.previews",
"bpy.path",
"bpy.app",
- "bpy.app.handlers",
- "bpy.app.translations",
# C modules
"bpy.props",
@@ -1731,19 +1760,9 @@ def write_rst_contents(basepath):
fw(" :maxdepth: 1\n\n")
standalone_modules = (
- # mathutils
- "mathutils",
- "mathutils.geometry",
- "mathutils.bvhtree", "mathutils.kdtree",
- "mathutils.interpolate",
- "mathutils.noise",
- # misc
- "freestyle", "bgl", "blf",
- "gpu", "gpu.offscreen",
- "aud", "bpy_extras",
- "idprop.types",
- # bmesh, submodules are in own page
- "bmesh",
+ # submodules are added in parent page
+ "mathutils", "freestyle", "bgl", "blf", "gpu",
+ "aud", "bpy_extras", "idprop.types", "bmesh",
)
for mod in standalone_modules:
diff --git a/doc/python_api/sphinx_doc_update.py b/doc/python_api/sphinx_doc_update.py
index 3d48c1145e1..561e58dec66 100755
--- a/doc/python_api/sphinx_doc_update.py
+++ b/doc/python_api/sphinx_doc_update.py
@@ -96,6 +96,11 @@ def main():
rsync_base = "rsync://%s@%s:%s" % (args.user, args.rsync_server, args.rsync_root)
+ blenver = blenver_zip = ""
+ api_name = ""
+ branch = ""
+ is_release = False
+
# I) Update local mirror using rsync.
rsync_mirror_cmd = ("rsync", "--delete-after", "-avzz", rsync_base, args.mirror_dir)
subprocess.run(rsync_mirror_cmd, env=dict(os.environ, RSYNC_PASSWORD=args.password))
@@ -108,19 +113,24 @@ def main():
subprocess.run(doc_gen_cmd)
# III) Get Blender version info.
- blenver = blenver_zip = ""
getver_file = os.path.join(tmp_dir, "blendver.txt")
getver_script = (""
"import sys, bpy\n"
"with open(sys.argv[-1], 'w') as f:\n"
- " f.write('%d_%d%s_release\\n' % (bpy.app.version[0], bpy.app.version[1], bpy.app.version_char)\n"
- " if bpy.app.version_cycle in {'rc', 'release'} else '%d_%d_%d\\n' % bpy.app.version)\n"
- " f.write('%d_%d_%d' % bpy.app.version)\n")
+ " is_release = bpy.app.version_cycle in {'rc', 'release'}\n"
+ " branch = bpy.app.build_branch.split()[0].decode()\n"
+ " f.write('%d\\n' % is_release)\n"
+ " f.write('%s\\n' % branch)\n"
+ " f.write('%d.%d%s\\n' % (bpy.app.version[0], bpy.app.version[1], bpy.app.version_char)\n"
+ " if is_release else '%s\\n' % branch)\n"
+ " f.write('%d_%d%s_release' % (bpy.app.version[0], bpy.app.version[1], bpy.app.version_char)\n"
+ " if is_release else '%d_%d_%d' % bpy.app.version)\n")
get_ver_cmd = (args.blender, "--background", "-noaudio", "--factory-startup", "--python-exit-code", "1",
"--python-expr", getver_script, "--", getver_file)
subprocess.run(get_ver_cmd)
with open(getver_file) as f:
- blenver, blenver_zip = f.read().split("\n")
+ is_release, branch, blenver, blenver_zip = f.read().split("\n")
+ is_release = bool(int(is_release))
os.remove(getver_file)
# IV) Build doc.
@@ -132,7 +142,7 @@ def main():
os.chdir(curr_dir)
# V) Cleanup existing matching dir in server mirror (if any), and copy new doc.
- api_name = "blender_python_api_%s" % blenver
+ api_name = blenver
api_dir = os.path.join(args.mirror_dir, api_name)
if os.path.exists(api_dir):
shutil.rmtree(api_dir)
@@ -150,19 +160,15 @@ def main():
os.rename(zip_path, os.path.join(api_dir, "%s.zip" % zip_name))
# VII) Create symlinks and html redirects.
- #~ os.symlink(os.path.join(DEFAULT_SYMLINK_ROOT, api_name, "contents.html"), os.path.join(api_dir, "index.html"))
os.symlink("./contents.html", os.path.join(api_dir, "index.html"))
- if blenver.endswith("release"):
- symlink = os.path.join(args.mirror_dir, "blender_python_api_current")
+ if is_release:
+ symlink = os.path.join(args.mirror_dir, "current")
os.remove(symlink)
os.symlink("./%s" % api_name, symlink)
with open(os.path.join(args.mirror_dir, "250PythonDoc/index.html"), 'w') as f:
f.write("<html><head><title>Redirecting...</title><meta http-equiv=\"REFRESH\""
"content=\"0;url=../%s/\"></head><body>Redirecting...</body></html>" % api_name)
- else:
- symlink = os.path.join(args.mirror_dir, "blender_python_api_master")
- os.remove(symlink)
- os.symlink("./%s" % api_name, symlink)
+ elif branch == "master":
with open(os.path.join(args.mirror_dir, "blender_python_api/index.html"), 'w') as f:
f.write("<html><head><title>Redirecting...</title><meta http-equiv=\"REFRESH\""
"content=\"0;url=../%s/\"></head><body>Redirecting...</body></html>" % api_name)
diff --git a/doc/python_api/static/blender_logo.svg b/doc/python_api/static/blender_logo.svg
new file mode 100644
index 00000000000..bbf446c9bec
--- /dev/null
+++ b/doc/python_api/static/blender_logo.svg
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 55.032989 15.935012"
+ height="60.226818"
+ width="207.9987">
+ <defs
+ id="defs2">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3020">
+ <path
+ style="stroke-width:1.06666672"
+ d="M 0,0 H 211.2 V 61.866667 H 0 Z"
+ id="path3022" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3020-8">
+ <path
+ style="stroke-width:1.06666672"
+ d="M 0,0 H 211.2 V 61.866667 H 0 Z"
+ id="path3022-1" />
+ </clipPath>
+ </defs>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Blender Logo</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:source>https://www.blender.org/about/logo/</dc:source>
+ <cc:license
+ rdf:resource="(c) Blender Foundation" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(42.023693,-77.734934)"
+ id="layer1">
+ <g
+ transform="matrix(0.26259939,0,0,-0.26259939,-42.237694,93.888967)"
+ id="g3012"
+ style="stroke-width:7.2904439">
+ <g
+ id="g3014"
+ style="stroke-width:7.2904439" />
+ <g
+ id="g3016"
+ style="stroke-width:7.2904439">
+ <g
+ clip-path="url(#clipPath3020-8)"
+ id="g3018"
+ style="stroke-width:7.2904439">
+ <path
+ id="path3024"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 192.54827,44.510933 c 0,0 -125.158403,0 -128.688003,0 -0.07893,0.06187 -0.1504,0.1344 -0.2272,0.193067 -0.01813,0.0192 -18.9312,14.548267 -19.5008,14.986667 -0.032,0.0256 -0.06507,0.04907 -0.06507,0.04907 -3.029333,2.321067 -7.531733,2.369067 -10.721067,0.133334 -1.9968,-1.396267 -3.194666,-3.508267 -3.285333,-5.792 -0.0021,-0.09173 -0.0064,-0.1824 -0.0064,-0.2752 0,-1.185067 0.314667,-2.3296 0.8832,-3.357867 -5.857067,-0.0053 -11.746133,-0.0128 -11.746133,-0.0128 -4.3936,-0.0021 -8.3648,-2.965333 -9.2725337,-6.8928 C 9.7898667,42.9792 9.7248,42.411733 9.7248,41.8496 c 0,-1.643733 0.546133,-3.236267 1.5808,-4.542933 1.162667,-1.463467 2.842667,-2.448 4.7584,-2.832 C 10.530133,30.2272 5.0016,25.984 4.9973333,25.979733 4.9578667,25.949867 4.9248,25.924267 4.8970667,25.905067 c -2.2176,-1.703467 -3.68,-4.1728 -4.0106667,-6.770134 -0.0490667,-0.381866 -0.0714667,-0.7584 -0.0714667,-1.133866 0,-1.870934 0.5962667,-3.650134 1.7301334,-5.102934 1.3781333,-1.764266 3.4144,-2.884266 5.7322666,-3.147733 2.6549337,-0.3072 5.4495997,0.542933 7.6607997,2.330667 0.01493,0.01173 2.753067,2.256 5.639467,4.6176 1.060267,-2.555734 2.545067,-4.926934 4.465067,-7.0453337 2.4704,-2.7306666 5.473066,-4.8864 8.919466,-6.4128 C 38.5856,1.6352 42.466133,0.82453333 46.501333,0.83413333 50.5376,0.8416 54.417067,1.6629333 58.0352,3.2768 c 3.453867,1.5466667 6.449067,3.7109333 8.910933,6.4352 0.360534,0.4032 0.693334,0.8288 1.0272,1.2544 4.885334,0 124.574937,0 124.574937,0 9.84,0 17.8368,7.5232 17.8368,16.7712 0,9.248 -7.9968,16.773333 -17.8368,16.773333" />
+ <path
+ id="path3026"
+ style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 38.538667,28.497067 c 0.113066,2.016 1.101866,3.793066 2.590933,5.0528 1.4624,1.237333 3.428267,1.9936 5.575467,1.9936 2.144,0 4.110933,-0.756267 5.572266,-1.9936 1.490134,-1.259734 2.4768,-3.0368 2.590934,-5.050667 0.113066,-2.0736 -0.718934,-3.997867 -2.181334,-5.425067 C 51.1968,21.6224 49.0784,20.7104 46.705067,20.7104 c -2.3744,0 -4.497067,0.912 -5.9872,2.363733 -1.461334,1.4272 -2.292267,3.351467 -2.1792,5.422934" />
+ <path
+ id="path3028"
+ style="fill:#f5792a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 25.536,24.421333 c 0.01387,-0.7904 0.2656,-2.3232 0.6432,-3.521066 C 26.9728,18.3648 28.318933,16.0192 30.193067,13.950933 32.1152,11.8272 34.482133,10.119467 37.216,8.9088 c 2.872533,-1.2736 5.986133,-1.9210667 9.220267,-1.9157333 3.229866,0.00427 6.3424,0.6656 9.216,1.9477333 2.733866,1.2224 5.098666,2.9376 7.018666,5.063467 1.870934,2.074666 3.216,4.424533 4.010667,6.96 0.401067,1.282133 0.6528,2.581333 0.754133,3.886933 0.100267,1.285333 0.0576,2.571733 -0.1248,3.858133 -0.356266,2.507734 -1.223466,4.858667 -2.557866,7.002667 -1.2224,1.970133 -2.7968,3.696 -4.6688,5.147733 l 0.0053,0.0021 -18.8928,14.506666 c -0.016,0.0128 -0.02987,0.02667 -0.048,0.03733 -1.240533,0.952533 -3.3248,0.948266 -4.686933,-0.0053 -1.3792,-0.9632 -1.536,-2.557866 -0.3104,-3.5648 l -0.0043,-0.0043 7.8784,-6.407467 -24.016,-0.02667 c -0.01173,0 -0.0224,0 -0.032,0 -1.985067,-0.0011 -3.893333,-1.303466 -4.269867,-2.9504 -0.389333,-1.6768 0.958934,-3.067733 3.022934,-3.074133 l -0.0021,-0.0075 L 30.900267,39.3888 9.1786667,22.715733 c -0.026667,-0.02133 -0.0576,-0.0416 -0.0832,-0.06293 -2.0490667,-1.568 -2.7104,-4.178133 -1.4197334,-5.828267 1.3088,-1.68 4.0949337,-1.6832 6.1653337,-0.0096 L 25.696,26.516267 c 0,0 -0.173867,-1.3088 -0.16,-2.094934 z M 56,20.034133 c -2.443733,-2.488533 -5.8624,-3.899733 -9.563733,-3.9072 -3.7056,-0.0064 -7.124267,1.393067 -9.568,3.877334 -1.1936,1.210666 -2.0704,2.602666 -2.6112,4.087466 -0.529067,1.457067 -0.736,3.0048 -0.599467,4.5664 0.130133,1.527467 0.583467,2.9824 1.309867,4.3008 0.712533,1.293867 1.6928,2.465067 2.9056,3.454934 2.373333,1.934933 5.396266,2.981333 8.558933,2.9856 3.1648,0.0053 6.1856,-1.0336 8.561067,-2.961067 1.2096,-0.9856 2.190933,-2.151467 2.903466,-3.445333 0.728534,-1.316267 1.179734,-2.765867 1.314134,-4.2976 C 59.344,27.136 59.138133,25.5904 58.609067,24.1312 58.0672,22.6432 57.1936,21.2512 56,20.034133" />
+ <path
+ id="path3030"
+ style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 167.96587,28.529067 c 0.1824,2.0352 1.75466,3.325866 4.15786,3.325866 2.4064,0 3.97974,-1.290666 4.16214,-3.325866 z M 176.0384,23.504 c -0.61547,-1.508267 -2.06507,-2.401067 -4.03627,-2.401067 -2.46613,0 -4.12693,1.540267 -4.1952,3.9744 h 14.18347 c 0,0.251734 0,0.462934 0,0.715734 0,6.094933 -3.57653,9.518933 -9.98827,9.518933 -6.22506,0 -9.98826,-3.457067 -9.98826,-8.878933 0,-5.454934 3.82293,-8.9056 9.98826,-8.9056 3.70134,0 6.5696,1.2672 8.33814,3.4976 L 176.0384,23.504" />
+ <path
+ id="path3032"
+ style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 105.0336,28.519467 c 0.18667,2.036266 1.76,3.326933 4.16533,3.326933 2.40214,0 3.97547,-1.290667 4.15894,-3.326933 z m 8.07787,-5.025067 c -0.61547,-1.512533 -2.06614,-2.404267 -4.03947,-2.404267 -2.464,0 -4.12907,1.544534 -4.19413,3.9776 h 14.18026 c 0,0.2496 0,0.4608 0,0.712534 0,6.098133 -3.57546,9.524266 -9.98613,9.524266 -6.22933,0 -9.986133,-3.458133 -9.986133,-8.88 0,-5.456 3.821863,-8.906666 9.986133,-8.906666 3.6992,0 6.5696,1.262933 8.34133,3.495466 l -4.30186,2.481067" />
+ <path
+ id="path3034"
+ style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 92.701867,38.997333 h 5.114666 v -20.9248 h -5.114666 z" />
+ <path
+ id="path3036"
+ style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 120.33067,33.438933 h 5.14453 v -1.245866 c 1.8208,1.9424 4.00747,2.9248 6.47253,2.9248 2.84054,0 4.992,-0.9824 6.1024,-2.653867 0.92587,-1.381333 0.98774,-3.0496 0.98774,-5.239467 v -9.152 h -5.15094 v 8.040534 c 0,3.336533 -0.67093,4.877866 -3.6,4.877866 -2.96106,0 -4.81173,-1.764266 -4.81173,-4.724266 v -8.194134 h -5.14453 v 15.3664" />
+ <path
+ id="path3038"
+ style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 155.60107,26.173867 c 0,-2.864 -1.9136,-4.741334 -4.8736,-4.741334 -2.96427,0 -4.87787,1.813334 -4.87787,4.709334 0,2.9376 1.88907,4.750933 4.87787,4.750933 2.96,0 4.8736,-1.8464 4.8736,-4.718933 z m 0,6.568533 c -1.30027,1.393067 -3.1808,2.157867 -5.79734,2.157867 -5.64266,0 -9.49546,-3.479467 -9.49546,-8.6944 0,-5.112534 3.82613,-8.688 9.40266,-8.688 2.5568,0 4.4352,0.645333 5.89014,2.096 v -1.541334 h 5.14666 v 22.2528 l -5.14666,-1.328 V 32.7424" />
+ <path
+ id="path3040"
+ style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 81.010133,30.8928 c 2.990934,0 4.871467,-1.813333 4.871467,-4.750933 0,-2.896 -1.9104,-4.709334 -4.871467,-4.709334 -2.958933,0 -4.869333,1.877334 -4.869333,4.741334 0,2.872533 1.9104,4.718933 4.869333,4.718933 z m -4.869333,8.104533 -5.1488,1.328 v -22.2528 h 5.1488 v 1.541334 c 1.448533,-1.450667 3.329067,-2.096 5.886933,-2.096 5.579734,0 9.4016,3.575466 9.4016,8.688 0,5.214933 -3.853866,8.6944 -9.493333,8.6944 -2.621867,0 -4.5024,-0.7648 -5.7952,-2.157867 v 6.254933" />
+ <path
+ id="path3042"
+ style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 183.2608,18.072533 v 15.3664 h 5.14667 v -0.9504 c 1.54026,1.857067 3.1712,2.7808 5.0272,2.7808 0.368,0 0.82986,-0.05973 1.44533,-0.1216 V 30.768 c -0.496,0.064 -1.04747,0.064 -1.6352,0.064 -2.992,0 -4.83733,-1.972267 -4.83733,-5.329067 v -7.4304 h -5.14667" />
+ <path
+ id="path3044"
+ style="fill:#0d528a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77647352"
+ d="m 201.55307,35.252267 h -0.39467 l 0.0139,1.409066 0.0203,0.466134 -0.1056,-0.384 -0.46826,-1.4912 h -0.36054 l -0.45866,1.4912 -0.1152,0.376533 0.0277,-0.458667 0.0139,-1.409066 h -0.38614 v 2.282666 h 0.54187 l 0.57067,-1.8016 0.5568,1.8016 h 0.544 z m -3.12747,0 h -0.39787 V 37.1968 h -0.7328 v 0.338133 h 1.85067 V 37.1968 h -0.72 v -1.944533" />
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/doc/python_api/blender-org/static/favicon.ico b/doc/python_api/static/favicon.ico
index f125d24dcb6..f125d24dcb6 100644
--- a/doc/python_api/blender-org/static/favicon.ico
+++ b/doc/python_api/static/favicon.ico
Binary files differ