[Bf-extensions-cvs] [1d9745fe] master: Rigify: remove instances of mutable default function arguments.
Alexander Gavrilov
noreply at git.blender.org
Tue Nov 22 13:42:15 CET 2022
Commit: 1d9745fe1dd041b34e21cb363ce94c878cc17708
Author: Alexander Gavrilov
Date: Mon Nov 21 16:44:24 2022 +0200
Branches: master
https://developer.blender.org/rBA1d9745fe1dd041b34e21cb363ce94c878cc17708
Rigify: remove instances of mutable default function arguments.
Use None, or empty tuples if iterable/sequence is sufficient.
===================================================================
M rigify/feature_set_list.py
M rigify/generate.py
M rigify/metarig_menu.py
M rigify/operators/upgrade_face.py
M rigify/rig_lists.py
M rigify/rigs/limbs/limb_rigs.py
M rigify/rigs/limbs/super_finger.py
M rigify/rigs/skin/skin_parents.py
M rigify/utils/animation.py
M rigify/utils/mechanism.py
M rigify/utils/rig.py
===================================================================
diff --git a/rigify/feature_set_list.py b/rigify/feature_set_list.py
index dfba34bb..f901bb4c 100644
--- a/rigify/feature_set_list.py
+++ b/rigify/feature_set_list.py
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
-from typing import TYPE_CHECKING, List, Sequence
+from typing import TYPE_CHECKING, List, Sequence, Optional
import bpy
from bpy.props import StringProperty
@@ -95,8 +95,8 @@ def get_info_dict(feature_set: str):
return {}
-# noinspection PyDefaultArgument
-def call_function_safe(module_name: str, func_name: str, args=[], kwargs={}):
+def call_function_safe(module_name: str, func_name: str,
+ args: Optional[list] = None, kwargs: Optional[dict] = None):
module = get_module_safe(module_name)
if module:
@@ -105,7 +105,7 @@ def call_function_safe(module_name: str, func_name: str, args=[], kwargs={}):
if callable(func):
# noinspection PyBroadException
try:
- return func(*args, **kwargs)
+ return func(*(args or []), **(kwargs or {}))
except Exception:
print(f"Rigify Error: Could not call function '{func_name}' of feature set "
f"'{module_name}': exception occurred.\n")
diff --git a/rigify/generate.py b/rigify/generate.py
index 515f1a18..adbfec10 100644
--- a/rigify/generate.py
+++ b/rigify/generate.py
@@ -4,6 +4,8 @@ import bpy
import re
import time
+from typing import Optional
+
from .utils.errors import MetarigError
from .utils.bones import new_bone
from .utils.layers import ORG_LAYER, MCH_LAYER, DEF_LAYER, ROOT_LAYER
@@ -668,12 +670,12 @@ def create_selection_sets(obj: ArmatureObject, metarig: ArmatureObject):
create_selection_set_for_rig_layer(obj, layer.name, i)
-# noinspection PyDefaultArgument
-def create_bone_groups(obj, metarig, priorities={}):
+def create_bone_groups(obj, metarig, priorities: Optional[dict[str, dict[int, float]]] = None):
bpy.ops.object.mode_set(mode='OBJECT')
pb = obj.pose.bones
layers = metarig.data.rigify_layers
groups = metarig.data.rigify_colors
+ priorities = priorities or {}
dummy = {}
# Create BGs
diff --git a/rigify/metarig_menu.py b/rigify/metarig_menu.py
index 3f3e7653..c40119fe 100644
--- a/rigify/metarig_menu.py
+++ b/rigify/metarig_menu.py
@@ -6,6 +6,7 @@ import traceback
from string import capwords
from collections import defaultdict
from types import ModuleType
+from typing import Iterable
import bpy
@@ -27,10 +28,9 @@ class ArmatureSubMenu(bpy.types.Menu):
layout.operator(op, icon='OUTLINER_OB_ARMATURE', text=text)
-# noinspection PyDefaultArgument
def get_metarigs(metarig_table: dict[str, ModuleType | dict],
base_dir: str, base_path: list[str], *,
- path: list[str] = [], nested=False):
+ path: Iterable[str] = (), nested=False):
""" Searches for metarig modules, and returns a list of the
imported modules.
"""
@@ -124,8 +124,10 @@ armature_submenus = []
menu_funcs = []
-# noinspection PyDefaultArgument
-def create_metarig_ops(dic=metarigs):
+def create_metarig_ops(dic: dict | None = None):
+ if dic is None:
+ dic = metarigs
+
"""Create metarig add Operators"""
for metarig_category in dic:
if metarig_category == "external":
@@ -153,8 +155,10 @@ def create_menu_funcs():
menu_funcs += [make_metarig_menu_func(mop.bl_idname, text)]
-# noinspection PyDefaultArgument,BlIdLowercase
-def create_armature_submenus(dic=metarigs):
+# noinspection BlIdLowercase
+def create_armature_submenus(dic: dict | None = None):
+ if dic is None:
+ dic = metarigs
global menu_funcs
metarig_categories = list(dic.keys())
metarig_categories.sort()
diff --git a/rigify/operators/upgrade_face.py b/rigify/operators/upgrade_face.py
index 8a99fd2a..30996d53 100644
--- a/rigify/operators/upgrade_face.py
+++ b/rigify/operators/upgrade_face.py
@@ -305,13 +305,12 @@ connect_ends_map = {
}
-# noinspection PyDefaultArgument
def set_rig(
obj, name_map, bone, rig=None,
connect_ends=None, priority=0, middle=0, sharpen=None,
falloff=None, spherical=None, falloff_length=False, scale=False,
glue_copy=None, glue_reparent=False,
- params={}, **_kwargs
+ params=None, **_kwargs
):
bone = name_map.get(bone, bone)
if rig is not None:
@@ -354,8 +353,9 @@ def set_rig(
pbone.rigify_parameters.skin_glue_add_constraint = 'COPY_LOCATION_OWNER'
pbone.rigify_parameters.skin_glue_add_constraint_influence = glue_copy
- for k, v in params.items():
- setattr(pbone.rigify_parameters, k, v)
+ if params:
+ for k, v in params.items():
+ setattr(pbone.rigify_parameters, k, v)
def update_face_rig(obj):
diff --git a/rigify/rig_lists.py b/rigify/rig_lists.py
index 7ed25658..70f9db1b 100644
--- a/rigify/rig_lists.py
+++ b/rigify/rig_lists.py
@@ -4,16 +4,16 @@ import os
import traceback
import importlib
import typing
-from typing import Optional
+
+from typing import Optional, Iterable
from .utils.rig import RIG_DIR
from . import feature_set_list
-# noinspection PyDefaultArgument
def get_rigs(base_dir: str, base_path: list[str], *,
- path: list[str] = [],
+ path: Iterable[str] = (),
feature_set=feature_set_list.DEFAULT_NAME):
""" Recursively searches for rig types, and returns a list.
diff --git a/rigify/rigs/limbs/limb_rigs.py b/rigify/rigs/limbs/limb_rigs.py
index 23a0eda7..0f78c739 100644
--- a/rigify/rigs/limbs/limb_rigs.py
+++ b/rigify/rigs/limbs/limb_rigs.py
@@ -3,7 +3,7 @@
import bpy
import json
-from typing import Optional, NamedTuple
+from typing import Optional, NamedTuple, Sequence
from bpy.types import PoseBone, EditBone
from ...utils.animation import add_generic_snap_fk_to_ik, add_fk_ik_snap_buttons
@@ -1152,12 +1152,11 @@ class POSE_OT_rigify_limb_ik2fk_bake(RigifyLimbIk2FkBase, RigifyBakeKeyframesMix
''']
-# noinspection PyDefaultArgument
def add_limb_snap_ik_to_fk(panel: 'PanelLayout', *,
master: Optional[str] = None,
- fk_bones: list[str] = [],
- ik_bones: list[str] = [], tail_bones: list[str] = [],
- ik_ctrl_bones: list[str] = [], ik_extra_ctrls: list[str] = [],
+ fk_bones: Sequence[str] = (),
+ ik_bones: Sequence[str] = (), tail_bones: Sequence[str] = (),
+ ik_ctrl_bones: Sequence[str] = (), ik_extra_ctrls: Sequence[str] = (),
rig_name=''):
panel.use_bake_settings()
panel.script.add_utilities(SCRIPT_UTILITIES_OP_SNAP_IK_FK)
@@ -1177,7 +1176,7 @@ def add_limb_snap_ik_to_fk(panel: 'PanelLayout', *,
add_fk_ik_snap_buttons(
panel, 'pose.rigify_limb_ik2fk_{rig_id}', 'pose.rigify_limb_ik2fk_bake_{rig_id}',
label='IK->FK', rig_name=rig_name, properties=op_props,
- clear_bones=ik_ctrl_bones + tail_bones + ik_extra_ctrls,
+ clear_bones=[*ik_ctrl_bones, *tail_bones, *ik_extra_ctrls],
)
@@ -1261,11 +1260,10 @@ class POSE_OT_rigify_limb_toggle_pole_bake(RigifyLimbTogglePoleBase, RigifyBakeK
''']
-# noinspection PyDefaultArgument
def add_limb_toggle_pole(panel: 'PanelLayout', *,
master: Optional[str] = None,
- ik_bones: list[str] = [], ik_ctrl_bones: list[str] = [],
- ik_extra_ctrls: list[str] = []):
+ ik_bones: Sequence[str] = (), ik_ctrl_bones: Sequence[str] = (),
+ ik_extra_ctrls: Sequence[str] = ()):
panel.use_bake_settings()
panel.script.add_utilities(SCRIPT_UTILITIES_OP_TOGGLE_POLE)
panel.script.register_classes(SCRIPT_REGISTER_OP_TOGGLE_POLE)
diff --git a/rigify/rigs/limbs/super_finger.py b/rigify/rigs/limbs/super_finger.py
index 4c67203e..52e60f2d 100644
--- a/rigify/rigs/limbs/super_finger.py
+++ b/rigify/rigs/limbs/super_finger.py
@@ -3,7 +3,7 @@
import bpy
import json
-from typing import Optional
+from typing import Optional, Sequence
from itertools import count
from ...rig_ui_template import PanelLayout
@@ -589,10 +589,9 @@ class POSE_OT_rigify_finger_fk2ik_bake(RigifyFingerFk2IkBase, RigifyBakeKeyframe
''']
-# noinspection PyDefaultArgument
def add_finger_snap_fk_to_ik(
panel: 'PanelLayout', *, master: Optional[str] = None,
- fk_bones: list[str] = [], ik_bones: list[str] = [],
+ fk_bones: Sequence[str] = (), ik_bones: Sequence[str] = (),
ik_control: Optional[str] = None,
ik_constraint_bone: Optional[str] = None,
axis='+X', rig_name='', compact: Optional[bool] = None):
diff --git a/rigify/rigs/skin/skin_parents.py b/rigify/rigs/skin/skin_parents.py
index c075ca9f..d60ed1a1 100644
--- a/rigify/rigs/skin/skin_parents.py
+++ b/rigify/rigs/skin/skin_parents.py
@@ -328,10 +328,9 @@ class ControlBoneParentOffset(ControlBoneParentLayer):
self.limit_distance = other.limit_distance + self.limit_distance
- # noinspection PyDefaultArgument
def add_copy_local_location(self, target: Lazy[str], *, influence: Lazy[float] = 1,
influence_expr: Optional[str] = None,
- influence_vars: dict[str, Any] = {}):
+ influence_vars: Optional[dict[str, Any]] = None):
"""
Add a Copy Location (Local, Owner Orientation) offset.
The influence may be specified as a (lazy) constant, or a driver expression
@@ -342,7 +341,7 @@ class ControlBoneParentOffset(ControlBoneParentLayer):
if influence_expr:
self.copy_local[target].drivers.append(
- self.DriverEntry(influence_expr, influence_vars))
+ self.DriverEntry(influence_expr, influence_vars or {}))
elif callable(influence):
self.copy_local[target].lazy_entries.append(influence)
else:
diff --git a/rigify/utils/animation.py b/rigify/utils/animation.py
index 660e340e
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list