nodebpy 520.32.1__tar.gz → 520.33.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nodebpy-520.32.1 → nodebpy-520.33.0}/PKG-INFO +1 -1
- {nodebpy-520.32.1 → nodebpy-520.33.0}/pyproject.toml +1 -1
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/socket.py +14 -6
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/export/codegen.py +12 -3
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/groups.py +1 -1
- {nodebpy-520.32.1 → nodebpy-520.33.0}/README.md +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/__init__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/__main__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/assets/__init__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/assets/__main__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/assets/_codegen.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/assets/_library.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/assets/_pipeline.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/assets/_textconv.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/__init__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/_registry.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/_socket_order.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/_utils.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/accessor.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/asset.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/items.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/mixins.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/node.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/builder/tree.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/export/__init__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/export/_floats.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/export/diagram.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/export/parity.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/export/plot.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/export/web_render.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/DESIGN.md +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/__init__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/api.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/apply.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/balancing.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/build.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/common.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/config.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/digraph.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/dna.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/edits.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/extract.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/long_links.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/model.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/node_size.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/ordering.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/packing.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/pipeline.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/placement.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/priority.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/ranking.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/realize.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/reroutes.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/routing.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/snapping.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/spacing.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/stacking.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/sugiyama.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/layout/zones.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/live.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/__init__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/_mixins.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/__init__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/assets.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/color.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/converter.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/distort.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/filter.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/group.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/input.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/interface.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/manual.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/matte.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/output.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/compositor/vector.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/__init__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/assets.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/attribute.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/color.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/converter.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/geometry.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/grid.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/group.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/input.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/interface.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/manual.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/output.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/texture.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/utilities.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/vector.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/geometry/zone.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/__init__.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/assets.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/color.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/converter.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/grid.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/group.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/input.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/manual.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/output.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/script.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/shader.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/texture.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/nodes/shader/vector.py +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/py.typed +0 -0
- {nodebpy-520.32.1 → nodebpy-520.33.0}/src/nodebpy/types.py +0 -0
|
@@ -1553,12 +1553,12 @@ class _FloatMixin[IntegerResult: (IntegerSocket, IntegerSocketGrid, IntegerSocke
|
|
|
1553
1553
|
|
|
1554
1554
|
return Clamp.min_max(self.socket, min, max).o.result # ty: ignore[invalid-return-type]
|
|
1555
1555
|
|
|
1556
|
-
def min(self, value: InputFloat
|
|
1556
|
+
def min(self, value: InputFloat) -> Self:
|
|
1557
1557
|
"""Create Math with operation 'Minimum'. The minimum from self and value"""
|
|
1558
1558
|
self._assert_output("min")
|
|
1559
1559
|
return self._math.minimum(self.socket, value).o.value # ty: ignore[invalid-return-type]
|
|
1560
1560
|
|
|
1561
|
-
def max(self, value: InputFloat
|
|
1561
|
+
def max(self, value: InputFloat) -> Self:
|
|
1562
1562
|
"""Create Math with operation 'Maximum'. The maximum from self and value"""
|
|
1563
1563
|
self._assert_output("max")
|
|
1564
1564
|
return self._math.maximum(self.socket, value).o.value # ty: ignore[invalid-return-type]
|
|
@@ -1727,11 +1727,19 @@ class _IntegerMixin[FloatResult: (FloatSocket, FloatSocketGrid, FloatSocketList)
|
|
|
1727
1727
|
return IntegerMath
|
|
1728
1728
|
|
|
1729
1729
|
def clamp(self, min: InputInteger = 0, max: InputInteger = 1) -> Self:
|
|
1730
|
-
"""Clamp the value to *[min, max]*."""
|
|
1730
|
+
"""Clamp the value to *[min, max]*. There isn't a built-in node for this, so it uses .max().min()"""
|
|
1731
1731
|
self._assert_output("clamp")
|
|
1732
|
-
return self.
|
|
1733
|
-
|
|
1734
|
-
|
|
1732
|
+
return self.max(min).min(max)
|
|
1733
|
+
|
|
1734
|
+
def min(self, value: InputInteger) -> Self:
|
|
1735
|
+
"""Create IntegerMath with operation 'Minimum'. The minimum from self and value"""
|
|
1736
|
+
self._assert_output("min")
|
|
1737
|
+
return self._imath.minimum(self.socket, value).o.value # ty: ignore[invalid-return-type]
|
|
1738
|
+
|
|
1739
|
+
def max(self, value: InputInteger) -> Self:
|
|
1740
|
+
"""Create IntegerMath with operation 'Maximum'. The maximum from self and value"""
|
|
1741
|
+
self._assert_output("max")
|
|
1742
|
+
return self._imath.maximum(self.socket, value).o.value # ty: ignore[invalid-return-type]
|
|
1735
1743
|
|
|
1736
1744
|
def modulo(self, divisor: InputInteger) -> Self:
|
|
1737
1745
|
"""Remainder after dividing by *divisor* (always non-negative)."""
|
|
@@ -2316,14 +2316,16 @@ _SOCKET_METHODS: dict[str, list[SocketMethodSpec]] = {
|
|
|
2316
2316
|
("RADIANS", "to_radians"),
|
|
2317
2317
|
("DEGREES", "to_degrees"),
|
|
2318
2318
|
("SIGN", "sign"),
|
|
2319
|
-
("MINIMUM", "min", "value_001"),
|
|
2320
|
-
("MAXIMUM", "max", "value_001"),
|
|
2321
2319
|
("MULTIPLY_ADD", "mul_add", "multiplier", "addend"),
|
|
2322
2320
|
("PINGPONG", "ping_pong", "value"),
|
|
2323
2321
|
("LOGARITHM", "log", "base"),
|
|
2324
2322
|
("ARCTAN2", "atan2", "value"),
|
|
2325
2323
|
]
|
|
2326
2324
|
]
|
|
2325
|
+
+ [
|
|
2326
|
+
_math_unary_spec(op, method, "value", always_args=1)
|
|
2327
|
+
for op, method in (("MINIMUM", "min"), ("MAXIMUM", "max"))
|
|
2328
|
+
]
|
|
2327
2329
|
# No float modulo lift: the float mixin's modulo() builds FLOORED_MODULO,
|
|
2328
2330
|
# which the % operator lift already covers, and plain MODULO has no
|
|
2329
2331
|
# faithful method equivalent so it stays a factory call.
|
|
@@ -2348,7 +2350,14 @@ _SOCKET_METHODS: dict[str, list[SocketMethodSpec]] = {
|
|
|
2348
2350
|
("MULTIPLY_ADD", "mul_add", "multiplier", "addend"),
|
|
2349
2351
|
)
|
|
2350
2352
|
]
|
|
2351
|
-
+ [
|
|
2353
|
+
+ [
|
|
2354
|
+
_int_math_unary_spec(op, method, *args, always_args=1)
|
|
2355
|
+
for op, method, *args in (
|
|
2356
|
+
("MODULO", "modulo", "divisor"),
|
|
2357
|
+
("MINIMUM", "min", "value"),
|
|
2358
|
+
("MAXIMUM", "max", "value"),
|
|
2359
|
+
)
|
|
2360
|
+
],
|
|
2352
2361
|
"GeometryNodeListLength": [
|
|
2353
2362
|
_list_spec("list_length", "Length", type_prop="data_type"),
|
|
2354
2363
|
],
|
|
@@ -70,7 +70,7 @@ class SliceToIndices(CustomGeometryGroup):
|
|
|
70
70
|
|
|
71
71
|
range = stop - start
|
|
72
72
|
length = IntegerMath.divide_ceiling(range, step).o.value.abs()
|
|
73
|
-
indices = FieldToList(length).integer((start + step) * Index())
|
|
73
|
+
indices = FieldToList(length).items.integer((start + step) * Index())
|
|
74
74
|
|
|
75
75
|
indices >> tree.outputs.integer("Indices", structure_type="LIST")
|
|
76
76
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|