Cleanup: update use of typing in for Python scripts

This commit is contained in:
Campbell Barton
2024-10-23 12:48:09 +11:00
parent 39b9863cca
commit a0453ab87a
40 changed files with 287 additions and 367 deletions

View File

@@ -16,7 +16,6 @@ import pathlib
import subprocess
import sys
import unittest
from typing import Tuple
from modules.test_utils import (
with_tempdir,
@@ -44,7 +43,7 @@ class AbstractAlembicTest(AbstractBlenderRunnerTest):
# 'abcls' array notation, like "name[16]"
cls.abcls_array = re.compile(r'^(?P<name>[^\[]+)(\[(?P<arraysize>\d+)\])?$')
def abcls(self, *arguments) -> Tuple[int, str]:
def abcls(self, *arguments) -> tuple[int, str]:
"""Uses abcls and return its output.
:return: tuple (process exit status code, stdout)
@@ -403,7 +402,7 @@ class UVMapExportTest(AbstractAlembicTest):
basename = 'T77021-multiple-uvmaps-animated-mesh'
abc = tempdir / f'{basename}.abc'
script = f"import bpy; bpy.ops.wm.alembic_export(filepath='{abc.as_posix()}', start=1, end=1, " \
f"visible_objects_only=True, flatten=False)"
f"visible_objects_only=True, flatten=False)"
self.run_blender(f'{basename}.blend', script)
self.maxDiff = 1000

View File

@@ -10,7 +10,6 @@ import pathlib
import sys
import unittest
from math import degrees, radians
from typing import List
import bpy
@@ -148,7 +147,7 @@ class EulerFilterTest(AbstractAnimationTest, unittest.TestCase):
bpy.context.view_layer.objects.active = ob
@staticmethod
def active_object_rotation_channels() -> List[bpy.types.FCurve]:
def active_object_rotation_channels() -> list[bpy.types.FCurve]:
ob = bpy.context.view_layer.objects.active
action = ob.animation_data.action
return [action.fcurves.find('rotation_euler', index=idx) for idx in range(3)]

View File

@@ -30,15 +30,13 @@ NOTE:
import types
from typing import (
Any,
Dict,
Generator,
List,
Optional,
)
from collections.abc import (
Iterator,
Sequence,
Tuple,
)
KeyConfigData = List[Tuple[str, Tuple[Any], Dict[str, Any]]]
KeyConfigData = list[tuple[str, tuple[Any], dict[str, Any]]]
import contextlib
@@ -76,7 +74,7 @@ ALLOW_DUPLICATES = {
def temp_fn_argument_extractor(
mod: types.ModuleType,
mod_attr: str,
) -> Generator[List[Tuple[Tuple[Tuple[Any], ...], Dict[str, Dict[str, Any]]]], None, None]:
) -> Iterator[list[tuple[tuple[tuple[Any], ...], dict[str, dict[str, Any]]]]]:
"""
Temporarily intercept a function, so its arguments can be extracted.
The context manager gives us a list where each item is a tuple of
@@ -85,7 +83,7 @@ def temp_fn_argument_extractor(
args_collected = []
real_fn = getattr(mod, mod_attr)
def wrap_fn(*args: Tuple[Any], **kw: Dict[str, Any]) -> Any:
def wrap_fn(*args: tuple[Any], **kw: dict[str, Any]) -> Any:
args_collected.append((args, kw))
return real_fn(*args, **kw)
setattr(mod, mod_attr, wrap_fn)
@@ -100,7 +98,7 @@ def round_float_32(f: float) -> float:
return unpack("f", pack("f", f))[0] # type: ignore
def report_humanly_readable_difference(a: Any, b: Any) -> Optional[str]:
def report_humanly_readable_difference(a: Any, b: Any) -> str | None:
"""
Compare strings, return None when they match,
otherwise a humanly readable difference message.
@@ -117,7 +115,7 @@ def report_humanly_readable_difference(a: Any, b: Any) -> Optional[str]:
# -----------------------------------------------------------------------------
# Keymap Utilities.
def keyconfig_preset_scan() -> List[str]:
def keyconfig_preset_scan() -> list[str]:
"""
Return all bundled presets (keymaps), not user presets.
"""
@@ -185,7 +183,7 @@ def keymap_data_clean(keyconfig_data: KeyConfigData, *, relaxed: bool) -> None:
items[i] = item_op, item_event, None
def keyconfig_config_as_filename_component(values: Sequence[Tuple[str, Any]]) -> str:
def keyconfig_config_as_filename_component(values: Sequence[tuple[str, Any]]) -> str:
"""
Takes a configuration, eg:
@@ -211,7 +209,7 @@ def keyconfig_activate_and_extract_data(
filepath: str,
*,
relaxed: bool,
config: Sequence[Tuple[str, Any]],
config: Sequence[tuple[str, Any]],
) -> KeyConfigData:
"""
Activate the key-map by filepath,
@@ -247,7 +245,7 @@ def keyconfig_report_duplicates(keyconfig_data: KeyConfigData) -> str:
error_text = []
for km_idname, km_args, km_items_data in keyconfig_data:
items = tuple(km_items_data["items"])
unique: Dict[str, List[int]] = {}
unique: dict[str, list[int]] = {}
for i, (item_op, item_event, item_prop) in enumerate(items):
# Ensure stable order as `repr` will use order of definition.
item_event = {key: item_event[key] for key in sorted(item_event.keys())}