Fix mypy compatibility and add 5.0 conformance tests
- Qualify bare "object" as builtins.object in bpy.types to avoid shadowing by Context.object and similar properties - Use _Sequence alias import to fix mypy "collections.abc.Sequence not defined" - Filter out variables that clash with submodule re-exports (e.g. bpy.app) - Add 5.0 conformance tests from Blender 5.0 mathutils documentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import mathutils
|
||||
|
||||
# Zero length vector.
|
||||
vec = mathutils.Vector((0.0, 0.0, 1.0))
|
||||
|
||||
# Unit length vector.
|
||||
vec_a = vec.normalized()
|
||||
|
||||
vec_b = mathutils.Vector((0.0, 1.0, 2.0))
|
||||
|
||||
vec2d = mathutils.Vector((1.0, 2.0))
|
||||
vec3d = mathutils.Vector((1.0, 0.0, 0.0))
|
||||
vec4d = vec_a.to_4d()
|
||||
|
||||
# Other `mathutils` types.
|
||||
quat = mathutils.Quaternion()
|
||||
matrix = mathutils.Matrix()
|
||||
|
||||
# Comparison operators can be done on Vector classes:
|
||||
|
||||
# (In)equality operators == and != test component values, e.g. 1,2,3 != 3,2,1
|
||||
vec_a == vec_b
|
||||
vec_a != vec_b
|
||||
|
||||
# Ordering operators >, >=, > and <= test vector length.
|
||||
vec_a > vec_b
|
||||
vec_a >= vec_b
|
||||
vec_a < vec_b
|
||||
vec_a <= vec_b
|
||||
|
||||
|
||||
# Math can be performed on Vector classes.
|
||||
vec_a + vec_b
|
||||
vec_a - vec_b
|
||||
vec_a @ vec_b
|
||||
vec_a * 10.0
|
||||
matrix @ vec_a
|
||||
quat @ vec_a
|
||||
-vec_a
|
||||
|
||||
|
||||
# You can access a vector object like a sequence.
|
||||
x = vec_a[0]
|
||||
len(vec)
|
||||
vec_a[:] = vec_b
|
||||
vec_a[:] = 1.0, 2.0, 3.0
|
||||
vec2d[:] = vec3d[:2]
|
||||
|
||||
|
||||
# Vectors support 'swizzle' operations.
|
||||
# See https://en.wikipedia.org/wiki/Swizzling_(computer_graphics)
|
||||
vec.xyz = vec.zyx
|
||||
vec.xy = vec4d.zw
|
||||
vec.xyz = vec4d.wzz
|
||||
vec4d.wxyz = vec.yxyx
|
||||
|
||||
# Direct buffer access is supported at runtime via C buffer protocol
|
||||
# but not expressible in type stubs (requires Python 3.12+ __buffer__).
|
||||
Reference in New Issue
Block a user