[Bf-blender-cvs] [09aa799e533] blender2.8: PyAPI: Use annotations for RNA definitions

Campbell Barton noreply at git.blender.org
Wed Jul 11 22:18:48 CEST 2018


Commit: 09aa799e5331a9da666f8a6325b038a866b1f35d
Author: Campbell Barton
Date:   Wed Jul 11 22:18:09 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB09aa799e5331a9da666f8a6325b038a866b1f35d

PyAPI: Use annotations for RNA definitions

- Logical use of fields since they define type information.
- Avoids using ordered-dict metaclass.

Properties using regular assignments will print a warning and load,
however the order is undefined.

===================================================================

M	intern/cycles/blender/addon/properties.py
M	release/scripts/modules/bpy_extras/io_utils.py
M	release/scripts/modules/bpy_extras/keyconfig_utils.py
M	release/scripts/modules/bpy_extras/object_utils.py
M	release/scripts/modules/bpy_types.py
M	release/scripts/startup/bl_operators/add_mesh_torus.py
M	release/scripts/startup/bl_operators/anim.py
M	release/scripts/startup/bl_operators/clip.py
M	release/scripts/startup/bl_operators/console.py
M	release/scripts/startup/bl_operators/file.py
M	release/scripts/startup/bl_operators/freestyle.py
M	release/scripts/startup/bl_operators/image.py
M	release/scripts/startup/bl_operators/mesh.py
M	release/scripts/startup/bl_operators/node.py
M	release/scripts/startup/bl_operators/object.py
M	release/scripts/startup/bl_operators/object_align.py
M	release/scripts/startup/bl_operators/object_quick_effects.py
M	release/scripts/startup/bl_operators/object_randomize_transform.py
M	release/scripts/startup/bl_operators/presets.py
M	release/scripts/startup/bl_operators/rigidbody.py
M	release/scripts/startup/bl_operators/sequencer.py
M	release/scripts/startup/bl_operators/uvcalc_follow_active.py
M	release/scripts/startup/bl_operators/uvcalc_lightmap.py
M	release/scripts/startup/bl_operators/uvcalc_smart_project.py
M	release/scripts/startup/bl_operators/vertexpaint_dirt.py
M	release/scripts/startup/bl_operators/view3d.py
M	release/scripts/startup/bl_operators/wm.py
M	release/scripts/templates_py/addon_add_object.py
M	release/scripts/templates_py/custom_nodes.py
M	release/scripts/templates_py/manipulator_operator.py
M	release/scripts/templates_py/operator_file_export.py
M	release/scripts/templates_py/operator_file_import.py
M	release/scripts/templates_py/operator_mesh_add.py
M	release/scripts/templates_py/operator_modal.py
M	release/scripts/templates_py/operator_modal_view3d.py
M	release/scripts/templates_py/ui_list.py
M	source/blender/python/intern/bpy_intern_string.c
M	source/blender/python/intern/bpy_intern_string.h
M	source/blender/python/intern/bpy_rna.c

===================================================================

diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index 85947b4bd28..51e887d08ca 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -17,12 +17,14 @@
 # <pep8 compliant>
 
 import bpy
-from bpy.props import (BoolProperty,
-                       EnumProperty,
-                       FloatProperty,
-                       IntProperty,
-                       PointerProperty,
-                       StringProperty)
+from bpy.props import (
+    BoolProperty,
+    EnumProperty,
+    FloatProperty,
+    IntProperty,
+    PointerProperty,
+    StringProperty,
+)
 
 # enums
 
@@ -1198,12 +1200,14 @@ class CyclesCurveRenderSettings(bpy.types.PropertyGroup):
     def unregister(cls):
         del bpy.types.Scene.cycles_curves
 
+
 def update_render_passes(self, context):
     scene = context.scene
     rd = scene.render
     view_layer = context.view_layer
     view_layer.update_render_passes()
 
+
 class CyclesRenderLayerSettings(bpy.types.PropertyGroup):
     @classmethod
     def register(cls):
@@ -1358,13 +1362,13 @@ class CyclesPreferences(bpy.types.AddonPreferences):
             list.append(('OPENCL', "OpenCL", "Use OpenCL for GPU acceleration", 2))
         return list
 
-    compute_device_type = EnumProperty(
-            name="Compute Device Type",
-            description="Device to use for computation (rendering with Cycles)",
-            items=get_device_types,
-            )
+    compute_device_type: EnumProperty(
+        name="Compute Device Type",
+        description="Device to use for computation (rendering with Cycles)",
+        items=get_device_types,
+    )
 
-    devices = bpy.props.CollectionProperty(type=CyclesDeviceSettings)
+    devices: bpy.props.CollectionProperty(type=CyclesDeviceSettings)
 
     def find_existing_device_entry(self, device):
         for device_entry in self.devices:
diff --git a/release/scripts/modules/bpy_extras/io_utils.py b/release/scripts/modules/bpy_extras/io_utils.py
index e2c2e4c9b93..a0c1c3e5c84 100644
--- a/release/scripts/modules/bpy_extras/io_utils.py
+++ b/release/scripts/modules/bpy_extras/io_utils.py
@@ -52,25 +52,19 @@ def _check_axis_conversion(op):
 
 
 class ExportHelper:
-    filepath = StringProperty(
+    filepath: StringProperty(
         name="File Path",
         description="Filepath used for exporting the file",
         maxlen=1024,
         subtype='FILE_PATH',
     )
-    check_existing = BoolProperty(
+    check_existing: BoolProperty(
         name="Check Existing",
         description="Check and warn on overwriting existing files",
         default=True,
         options={'HIDDEN'},
     )
 
-    # needed for mix-ins
-    order = [
-        "filepath",
-        "check_existing",
-    ]
-
     # subclasses can override with decorator
     # True == use ext, False == no ext, None == do nothing.
     check_extension = True
@@ -112,18 +106,13 @@ class ExportHelper:
 
 
 class ImportHelper:
-    filepath = StringProperty(
+    filepath: StringProperty(
         name="File Path",
         description="Filepath used for importing the file",
         maxlen=1024,
         subtype='FILE_PATH',
     )
 
-    # needed for mix-ins
-    order = [
-        "filepath",
-    ]
-
     def invoke(self, context, event):
         context.window_manager.fileselect_add(self)
         return {'RUNNING_MODAL'}
@@ -173,11 +162,6 @@ def orientation_helper_factory(name, axis_forward='Y', axis_up='Z'):
         update=_update_axis_up,
     )
 
-    members["order"] = [
-        "axis_forward",
-        "axis_up",
-    ]
-
     return type(name, (object,), members)
 
 
diff --git a/release/scripts/modules/bpy_extras/keyconfig_utils.py b/release/scripts/modules/bpy_extras/keyconfig_utils.py
index a078da2ff2f..7e5e1fb855c 100644
--- a/release/scripts/modules/bpy_extras/keyconfig_utils.py
+++ b/release/scripts/modules/bpy_extras/keyconfig_utils.py
@@ -406,6 +406,7 @@ def keyconfig_test(kc):
             result = True
     return result
 
+
 # Note, we may eventually replace existing logic with this
 # so key configs are always data.
 from .keyconfig_utils_experimental import (
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index fcecb4cdd61..7719e2f6e30 100644
--- a/release/scripts/modules/bpy_extras/object_utils.py
+++ b/release/scripts/modules/bpy_extras/object_utils.py
@@ -194,16 +194,16 @@ class AddObjectHelper:
         if not self.view_align:
             self.rotation.zero()
 
-    view_align = BoolProperty(
+    view_align: BoolProperty(
         name="Align to View",
         default=False,
         update=view_align_update_callback,
     )
-    location = FloatVectorProperty(
+    location: FloatVectorProperty(
         name="Location",
         subtype='TRANSLATION',
     )
-    rotation = FloatVectorProperty(
+    rotation: FloatVectorProperty(
         name="Rotation",
         subtype='EULER',
     )
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py
index c4bf8422d3f..b317ae18955 100644
--- a/release/scripts/modules/bpy_types.py
+++ b/release/scripts/modules/bpy_types.py
@@ -568,39 +568,13 @@ class RNAMeta(type):
         return "bl_rna" in cls.__dict__
 
 
-class OrderedDictMini(dict):
-
-    def __init__(self, *args):
-        self.order = []
-        dict.__init__(self, args)
-
-    def __setitem__(self, key, val):
-        dict.__setitem__(self, key, val)
-        if key not in self.order:
-            self.order.append(key)
-
-    def __delitem__(self, key):
-        dict.__delitem__(self, key)
-        self.order.remove(key)
-
-
 class RNAMetaPropGroup(StructMetaPropGroup, RNAMeta):
     pass
 
 
-class OrderedMeta(RNAMeta):
-
-    def __init__(cls, name, bases, attributes):
-        if attributes.__class__ is OrderedDictMini:
-            cls.order = attributes.order
-
-    def __prepare__(name, bases, **kwargs):
-        return OrderedDictMini()  # collections.OrderedDict()
-
-
 # Same as 'Operator'
 # only without 'as_keywords'
-class Manipulator(StructRNA, metaclass=OrderedMeta):
+class Manipulator(StructRNA):
     __slots__ = ()
 
     def __getattribute__(self, attr):
@@ -700,7 +674,7 @@ class Manipulator(StructRNA, metaclass=OrderedMeta):
 
 # Only defined so operators members can be used by accessing self.order
 # with doc generation 'self.properties.bl_rna.properties' can fail
-class Operator(StructRNA, metaclass=OrderedMeta):
+class Operator(StructRNA):
     __slots__ = ()
 
     def __getattribute__(self, attr):
@@ -732,7 +706,7 @@ class Operator(StructRNA, metaclass=OrderedMeta):
                 if attr not in ignore}
 
 
-class Macro(StructRNA, metaclass=OrderedMeta):
+class Macro(StructRNA):
     # bpy_types is imported before ops is defined
     # so we have to do a local import on each run
     __slots__ = ()
diff --git a/release/scripts/startup/bl_operators/add_mesh_torus.py b/release/scripts/startup/bl_operators/add_mesh_torus.py
index cc7f69ca7ca..4460af173ff 100644
--- a/release/scripts/startup/bl_operators/add_mesh_torus.py
+++ b/release/scripts/startup/bl_operators/add_mesh_torus.py
@@ -134,19 +134,19 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
             self.abso_major_rad = self.major_radius + self.minor_radius
             self.abso_minor_rad = self.major_radius - self.minor_radius
 
-    major_segments = IntProperty(
+    major_segments: IntProperty(
         name="Major Segments",
         description="Number of segments for the main ring of the torus",
         min=3, max=256,
         default=48,
     )
-    minor_segments = IntProperty(
+    minor_segments: IntProperty(
         name="Minor Segments",
         description="Number of segments for the minor ring of the torus",
         min=3, max=256,
         default=12,
     )
-    mode = bpy.props.EnumProperty(
+    mode: bpy.props.EnumProperty(
         name="Torus Dimensions",
         items=(("MAJOR_MINOR", "Major/Minor",
                 "Use the major/minor radii for torus dimensions"),
@@ -154,7 +154,7 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
                 "Use the exterior/interior radii for torus dimensions")),
         update=mode_update_callback,
     )
-    major_radius = FloatProperty(
+    major_radius: FloatProperty(
         name="Major Radius",
         description=("Radius from the origin to the "
                      "center of the cross sections"),
@@ -163,7 +163,7 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
         subtype='DISTANCE',
         unit='LENGTH',
     )
-    minor_radius = FloatProperty(
+    minor_radius: FloatProperty(
         name="Minor Radius",
         description="Radius of the torus' cross section",
         min=0.01, max=100.0,
@@ -171,7 +171,7 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
         subtype='DISTANCE',
         unit='LENGTH',
     )
-    abso_major_rad = FloatProperty(
+    abso_major_rad: FloatProperty(
         name="Exterior Radius",
         description="Total Exterior Radius of the torus",
         min=0.01, max=100.0,
@@ -179,7 +179,7 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
         subtype='DISTANCE',
         unit='LENGTH',
     )
-    abso_minor_rad = FloatProperty(
+    abso_minor_rad: FloatProperty(
         name="Interior Radius",
         description="Total Interior Radius of the torus",
         min=0.01, max=100.0,
@@ -187,7 +187,7 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
         subtype='DISTANCE',
         unit='LENGTH',
     )
-    generate_uvs = BoolProperty(
+    generate_uvs: BoolProperty(
         name="Generate UVs",
         description="Generate a default UV map",
         default=False,
diff --git a/release/scripts/startup/bl_operators/anim.py b/release/scripts/startup/bl_operators/anim.py
index d898239d7a9..31325cf0b50 100644
--- a/release/scripts/startup/bl_operators/anim.py
+++ b/release/scripts/startup/bl_operators/anim.py
@@ -40,20 +40,20 @@ class ANIM_OT_keying_set_export(Operator):
     bl_idname = "anim.keying_set_export"
     bl_label = "Export Keying Set..."
 
-    filepath = StringProperty(
+  

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list