nodebpy 520.30.0__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.0 → nodebpy-520.30.2}/PKG-INFO +1 -1
  2. {nodebpy-520.30.0 → nodebpy-520.30.2}/pyproject.toml +1 -1
  3. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/export/codegen.py +14 -4
  4. nodebpy-520.30.2/src/nodebpy/py.typed +0 -0
  5. {nodebpy-520.30.0 → nodebpy-520.30.2}/README.md +0 -0
  6. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/__init__.py +0 -0
  7. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/assets/__init__.py +0 -0
  8. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/assets/__main__.py +0 -0
  9. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/assets/_codegen.py +0 -0
  10. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/assets/_library.py +0 -0
  11. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/assets/_pipeline.py +0 -0
  12. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/__init__.py +0 -0
  13. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/_registry.py +0 -0
  14. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/_socket_order.py +0 -0
  15. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/_utils.py +0 -0
  16. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/accessor.py +0 -0
  17. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/asset.py +0 -0
  18. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/items.py +0 -0
  19. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/layout.py +0 -0
  20. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/mixins.py +0 -0
  21. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/node.py +0 -0
  22. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/socket.py +0 -0
  23. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/builder/tree.py +0 -0
  24. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/export/__init__.py +0 -0
  25. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/export/_floats.py +0 -0
  26. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/export/diagram.py +0 -0
  27. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/export/parity.py +0 -0
  28. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/export/plot.py +0 -0
  29. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/export/web_render.py +0 -0
  30. /nodebpy-520.30.0/src/nodebpy/py.typed → /nodebpy-520.30.2/src/nodebpy/lib/__init__.py +0 -0
  31. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/VENDORED.md +0 -0
  32. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/__init__.py +0 -0
  33. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/__init__.py +0 -0
  34. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/balancing.py +0 -0
  35. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/graph.py +0 -0
  36. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/ordering.py +0 -0
  37. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/ranking.py +0 -0
  38. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/realize.py +0 -0
  39. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/stacking.py +0 -0
  40. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/structs.py +0 -0
  41. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/sugiyama.py +0 -0
  42. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/x_coords.py +0 -0
  43. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/arrange/y_coords.py +0 -0
  44. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/config.py +0 -0
  45. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/lib/nodearrange/utils.py +0 -0
  46. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/live.py +0 -0
  47. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/__init__.py +0 -0
  48. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/_mixins.py +0 -0
  49. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/__init__.py +0 -0
  50. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/assets.py +0 -0
  51. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/color.py +0 -0
  52. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/converter.py +0 -0
  53. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/distort.py +0 -0
  54. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/filter.py +0 -0
  55. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/group.py +0 -0
  56. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/input.py +0 -0
  57. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/interface.py +0 -0
  58. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/manual.py +0 -0
  59. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/matte.py +0 -0
  60. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/output.py +0 -0
  61. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/compositor/vector.py +0 -0
  62. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/__init__.py +0 -0
  63. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/assets.py +0 -0
  64. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/attribute.py +0 -0
  65. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/color.py +0 -0
  66. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/converter.py +0 -0
  67. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/geometry.py +0 -0
  68. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/grid.py +0 -0
  69. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/group.py +0 -0
  70. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/groups.py +0 -0
  71. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/input.py +0 -0
  72. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/interface.py +0 -0
  73. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/manual.py +0 -0
  74. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/output.py +0 -0
  75. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/texture.py +0 -0
  76. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/utilities.py +0 -0
  77. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/vector.py +0 -0
  78. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/geometry/zone.py +0 -0
  79. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/__init__.py +0 -0
  80. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/assets.py +0 -0
  81. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/color.py +0 -0
  82. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/converter.py +0 -0
  83. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/grid.py +0 -0
  84. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/group.py +0 -0
  85. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/input.py +0 -0
  86. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/manual.py +0 -0
  87. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/output.py +0 -0
  88. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/script.py +0 -0
  89. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/shader.py +0 -0
  90. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/texture.py +0 -0
  91. {nodebpy-520.30.0 → nodebpy-520.30.2}/src/nodebpy/nodes/shader/vector.py +0 -0
  92. {nodebpy-520.30.0 → 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.0
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.0"
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]] | 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,17 +1829,26 @@ 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
- if faithful and (best is None or len(factory.props) > len(best[0].props)):
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
+ )
1841
+ if faithful and (best is None or rank > best[2]):
1832
1842
  ordered = {
1833
1843
  param: call_kwargs[param]
1834
1844
  for param in factory.param_defaults
1835
1845
  if param in call_kwargs
1836
1846
  }
1837
- best = (factory, ordered)
1847
+ best = (factory, ordered, rank)
1838
1848
 
1839
1849
  if best is None:
1840
1850
  return None
1841
- factory, call_kwargs = best
1851
+ factory, call_kwargs, _ = best
1842
1852
  # Leading consecutive parameters render positionally (g.Math.sine(x)),
1843
1853
  # matching how factory shortcuts are written by hand.
1844
1854
  args: list[Expr] = []
File without changes
File without changes