You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* update for bpy>=5.1
* cleanup PCA logic
* update tests
* cleanup and improve socket accessor methods
* more cleanup of VectorSocket accessor
* more socket helpers
* cleanup interface SocketValue return
* type returns for math operations
* typing for >> operator
* cleanup more types
* cleanup of default value and name normalisation
* cleanup tests
* Expose Frame node and context for frames
* ruff format
* more tests
* test coverage
* test coverage
* test coverage
* test coverage
* test coverage
* update changelog
Copy file name to clipboardExpand all lines: docs/changelog.qmd
+10Lines changed: 10 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,17 @@ mat = g.InstanceTransform().o.transform
16
16
17
17
vec = g.CombineXYZ(*mat[:3])
18
18
```
19
+
-**Socket iteration and indexing** — `VectorSocket`, `ColorSocket`, and `MatrixSocket` now support `__getitem__`, `__iter__`, and `__len__`. Output sockets decompose via `SeparateXYZ`/`SeparateColor`/`SeparateMatrix` (node reuse on repeated access); input sockets auto-wire a `CombineXYZ`/`CombineColor`/`CombineMatrix` and return the component input. Enables patterns like `for axis in vec_socket` and `value >> node.i.position[1]`.
20
+
-**`RotationSocket`/`MatrixSocket` helpers** — Added `.invert` and `.transpose` properties on `MatrixSocket`, `.invert` on `RotationSocket`, following the same node-reuse pattern as `.x`/`.y`/`.z`.
21
+
-**`SocketAccessor` overloads** — `__getitem__` and `_get` are overloaded so slices return `list[Socket]` and str/int keys return `Socket`, eliminating the `Socket | list[Socket]` union that was blocking `enumerate` and unpacking.
22
+
-**Blender 5.1 compatibility** — Generator updated for Blender 5.1: `FontSocket` type, `Frame` node moved to `manually_defined`, `SVD` class name normalisation, and classmethod param deduplication fix (`min_x`/`min_y`/`min_z` no longer collapsed to `min`).
23
+
24
+
### Bug Fixes
25
+
-**Generic factory nodes** — `AccumulateField`, `EvaluateAtIndex`, `FieldAverage`, `FieldMinAndMax`, `EvaluateOnDomain`, `FieldVariance`, and `Compare` are now `Generic[_T]`. Their `_Inputs`/`_Outputs` inner classes carry the type parameter so `.point.vector(...)` returns `FieldAverage[VectorSocket]` and `.o.mean` resolves to `VectorSocket`.
26
+
-**Precise operator return types** — Arithmetic operators on `FloatSocket` → `Math`, `VectorSocket` → `VectorMath`, `IntegerSocket` → `IntegerMath`. Comparison operators (`<`, `>`, `<=`, `>=`, `==`, `!=`) → `Compare`. The `>>` operator is now typed via `TypeVar` so the right-hand operand's exact type is preserved through chains.
19
27
- Fix doc building and will only deploy on tagged releases([#49](https://github.com/BradyAJohnston/nodebpy/pull/49))
28
+
-**Domain factory pattern** — All `_domain_factory` / local-class patterns replaced with proper `_DomainFactory` inner classes (including `CaptureAttribute`) so the type checker can see their return types.
29
+
-**`SocketAccessor` identifier lookup fix** — Added a normalised-identifier pass (`normalize_name(id)`) so attribute access like `.i.value_001` correctly resolves Blender identifiers such as `Value_001` that cannot be round-tripped through `denormalize_name`.
0 commit comments