nodebpy 520.30.1__tar.gz → 520.30.2__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.
Files changed (92) hide show
  1. {nodebpy-520.30.1 → nodebpy-520.30.2}/PKG-INFO +1 -1
  2. {nodebpy-520.30.1 → nodebpy-520.30.2}/pyproject.toml +1 -1
  3. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/export/codegen.py +11 -5
  4. {nodebpy-520.30.1 → nodebpy-520.30.2}/README.md +0 -0
  5. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/__init__.py +0 -0
  6. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/assets/__init__.py +0 -0
  7. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/assets/__main__.py +0 -0
  8. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/assets/_codegen.py +0 -0
  9. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/assets/_library.py +0 -0
  10. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/assets/_pipeline.py +0 -0
  11. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/__init__.py +0 -0
  12. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/_registry.py +0 -0
  13. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/_socket_order.py +0 -0
  14. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/_utils.py +0 -0
  15. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/accessor.py +0 -0
  16. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/asset.py +0 -0
  17. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/items.py +0 -0
  18. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/layout.py +0 -0
  19. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/mixins.py +0 -0
  20. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/node.py +0 -0
  21. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/socket.py +0 -0
  22. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/builder/tree.py +0 -0
  23. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/export/__init__.py +0 -0
  24. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/export/_floats.py +0 -0
  25. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/export/diagram.py +0 -0
  26. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/export/parity.py +0 -0
  27. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/export/plot.py +0 -0
  28. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/export/web_render.py +0 -0
  29. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/__init__.py +0 -0
  30. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/VENDORED.md +0 -0
  31. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/__init__.py +0 -0
  32. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/__init__.py +0 -0
  33. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/balancing.py +0 -0
  34. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/graph.py +0 -0
  35. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/ordering.py +0 -0
  36. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/ranking.py +0 -0
  37. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/realize.py +0 -0
  38. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/stacking.py +0 -0
  39. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/structs.py +0 -0
  40. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/sugiyama.py +0 -0
  41. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/x_coords.py +0 -0
  42. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/y_coords.py +0 -0
  43. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/config.py +0 -0
  44. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/utils.py +0 -0
  45. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/live.py +0 -0
  46. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/__init__.py +0 -0
  47. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/_mixins.py +0 -0
  48. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/__init__.py +0 -0
  49. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/assets.py +0 -0
  50. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/color.py +0 -0
  51. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/converter.py +0 -0
  52. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/distort.py +0 -0
  53. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/filter.py +0 -0
  54. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/group.py +0 -0
  55. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/input.py +0 -0
  56. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/interface.py +0 -0
  57. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/manual.py +0 -0
  58. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/matte.py +0 -0
  59. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/output.py +0 -0
  60. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/vector.py +0 -0
  61. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/__init__.py +0 -0
  62. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/assets.py +0 -0
  63. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/attribute.py +0 -0
  64. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/color.py +0 -0
  65. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/converter.py +0 -0
  66. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/geometry.py +0 -0
  67. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/grid.py +0 -0
  68. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/group.py +0 -0
  69. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/groups.py +0 -0
  70. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/input.py +0 -0
  71. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/interface.py +0 -0
  72. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/manual.py +0 -0
  73. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/output.py +0 -0
  74. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/texture.py +0 -0
  75. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/utilities.py +0 -0
  76. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/vector.py +0 -0
  77. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/zone.py +0 -0
  78. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/__init__.py +0 -0
  79. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/assets.py +0 -0
  80. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/color.py +0 -0
  81. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/converter.py +0 -0
  82. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/grid.py +0 -0
  83. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/group.py +0 -0
  84. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/input.py +0 -0
  85. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/manual.py +0 -0
  86. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/output.py +0 -0
  87. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/script.py +0 -0
  88. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/shader.py +0 -0
  89. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/texture.py +0 -0
  90. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/vector.py +0 -0
  91. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/py.typed +0 -0
  92. {nodebpy-520.30.1 → nodebpy-520.30.2}/src/nodebpy/types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: nodebpy
3
- Version: 520.30.1
3
+ Version: 520.30.2
4
4
  Summary: Build nodes trees in Blender more elegantly with code
5
5
  Author: Brady Johnston
6
6
  Author-email: Brady Johnston <brady.johnston@me.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nodebpy"
3
- version = "520.30.1"
3
+ version = "520.30.2"
4
4
  description = "Build nodes trees in Blender more elegantly with code"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -1757,6 +1757,7 @@ def _factory_state_matches(node, props: dict[str, Any]) -> bool:
1757
1757
  # baking behavioural props (``operation``, ``mode``, …) keep requiring a
1758
1758
  # non-default state, as before.
1759
1759
  _TYPE_FACTORY_PROPS = frozenset({"data_type", "domain", "input_type", "socket_type"})
1760
+ _DATA_TYPE_PROPS = frozenset({"data_type", "input_type", "socket_type"})
1760
1761
 
1761
1762
 
1762
1763
  def _factory_call(
@@ -1775,7 +1776,7 @@ def _factory_call(
1775
1776
  from the node's value get explicit literal kwargs.
1776
1777
  """
1777
1778
  skip_key = _normalize(skip_input_id) if skip_input_id else None
1778
- best: tuple[_Factory, dict[str, Expr], tuple[int, int]] | None = None
1779
+ best: tuple[_Factory, dict[str, Expr], tuple[bool, int, int]] | None = None
1779
1780
 
1780
1781
  for factory in _class_factories(cls):
1781
1782
  if not _factory_state_matches(node, factory.props):
@@ -1828,10 +1829,15 @@ def _factory_call(
1828
1829
  continue
1829
1830
  if not _eq(socket.default_value, default):
1830
1831
  call_kwargs[param] = Lit(socket.default_value)
1831
- # Prefer the factory baking the most constants; on a tie, the one
1832
- # passing fewest properties through (``DeleteGeometry.edge()`` over
1833
- # ``DeleteGeometry.all(domain="EDGE")``).
1834
- rank = (len(factory.props), -len(passed))
1832
+ # Prefer a factory baking the data type (``GetBundleItem.float(...,
1833
+ # structure_type="SINGLE")`` over ``GetBundleItem.single(...)``),
1834
+ # then the most constants baked, then the fewest properties passed
1835
+ # through (``DeleteGeometry.edge()`` over ``.all(domain="EDGE")``).
1836
+ rank = (
1837
+ bool(_DATA_TYPE_PROPS & set(factory.props)),
1838
+ len(factory.props),
1839
+ -len(passed),
1840
+ )
1835
1841
  if faithful and (best is None or rank > best[2]):
1836
1842
  ordered = {
1837
1843
  param: call_kwargs[param]
File without changes