tensor-network-visualization 1.6.3__tar.gz → 2.0.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.
Files changed (167) hide show
  1. {tensor_network_visualization-1.6.3/src/tensor_network_visualization.egg-info → tensor_network_visualization-2.0.0}/PKG-INFO +55 -2
  2. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/README.md +49 -0
  3. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/pyproject.toml +18 -14
  4. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0/src/tensor_network_visualization.egg-info}/PKG-INFO +55 -2
  5. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_visualization.egg-info/SOURCES.txt +1 -0
  6. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_visualization.egg-info/requires.txt +1 -1
  7. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/fonts_and_scale.py +100 -12
  8. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/graph_pipeline.py +2 -1
  9. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/direction_common.py +10 -2
  10. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/force_directed.py +247 -247
  11. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/free_directions_2d.py +38 -23
  12. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/free_directions_3d.py +13 -7
  13. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/generic_coarsening.py +65 -2
  14. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/positions.py +97 -31
  15. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout_structure.py +153 -10
  16. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_interaction/bridge.py +13 -0
  17. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_interaction/controller.py +75 -0
  18. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_interactive_scene.py +1 -1
  19. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_matplotlib_state.py +4 -0
  20. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/einsum_module/contraction_cost.py +2 -2
  21. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/viewer.py +28 -5
  22. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_bench_user_workflows.py +246 -246
  23. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_contraction_cost.py +3 -3
  24. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_contraction_viewer.py +4 -4
  25. tensor_network_visualization-2.0.0/tests/test_documentation_gallery.py +107 -0
  26. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_einsum_backend.py +6 -4
  27. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_layout_core.py +210 -10
  28. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_packaging_metadata.py +7 -1
  29. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_plotting.py +233 -2
  30. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/LICENSE +0 -0
  31. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/setup.cfg +0 -0
  32. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_visualization.egg-info/dependency_links.txt +0 -0
  33. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_visualization.egg-info/top_level.txt +0 -0
  34. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/__init__.py +0 -0
  35. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_auto_display.py +0 -0
  36. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_contraction_viewer_style.py +0 -0
  37. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_contraction_viewer_ui.py +0 -0
  38. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/__init__.py +0 -0
  39. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/_draw_common.py +0 -0
  40. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/_label_format.py +0 -0
  41. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/_nodes_edges_common.py +0 -0
  42. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/axis_directions.py +0 -0
  43. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/contractions.py +0 -0
  44. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/curves.py +0 -0
  45. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/__init__.py +0 -0
  46. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/constants.py +0 -0
  47. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/contraction_edges.py +0 -0
  48. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/contraction_scheme.py +0 -0
  49. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/dangling_self_edges.py +0 -0
  50. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/disk_metrics.py +0 -0
  51. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/edge_labels.py +0 -0
  52. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/edge_orchestration.py +0 -0
  53. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/edges.py +0 -0
  54. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/hover.py +0 -0
  55. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/label_descriptors.py +0 -0
  56. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/labels_misc.py +0 -0
  57. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/pick_distance.py +0 -0
  58. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/plotter.py +0 -0
  59. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/plotter_2d.py +0 -0
  60. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/plotter_3d.py +0 -0
  61. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/plotter_common.py +0 -0
  62. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/render_prep.py +0 -0
  63. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/scene_state.py +0 -0
  64. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/tensors.py +0 -0
  65. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/vectors.py +0 -0
  66. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/draw/viewport_geometry.py +0 -0
  67. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/focus.py +0 -0
  68. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/graph.py +0 -0
  69. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/graph_cache.py +0 -0
  70. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/graph_utils.py +0 -0
  71. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/__init__.py +0 -0
  72. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/body.py +0 -0
  73. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/geometry.py +0 -0
  74. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/parameters.py +0 -0
  75. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout/types.py +0 -0
  76. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout_structure_coordinates.py +0 -0
  77. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/layout_structure_sparse_grid.py +0 -0
  78. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_core/renderer.py +0 -0
  79. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_engine_specs.py +0 -0
  80. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_import_state.py +0 -0
  81. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_input_inspection.py +0 -0
  82. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_interaction/__init__.py +0 -0
  83. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_interaction/controls.py +0 -0
  84. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_interaction/scheme.py +0 -0
  85. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_interaction/state.py +0 -0
  86. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_interaction/tensor_inspector.py +0 -0
  87. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_interaction/views.py +0 -0
  88. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_logging.py +0 -0
  89. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_registry.py +0 -0
  90. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_tensor_comparison_support.py +0 -0
  91. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_tensor_elements_controller.py +0 -0
  92. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_tensor_elements_data.py +0 -0
  93. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_tensor_elements_inputs.py +0 -0
  94. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_tensor_elements_models.py +0 -0
  95. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_tensor_elements_payloads.py +0 -0
  96. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_tensor_elements_rendering.py +0 -0
  97. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_tensor_elements_support.py +0 -0
  98. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_typing.py +0 -0
  99. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_ui_utils.py +0 -0
  100. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/_widgets.py +0 -0
  101. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/config.py +0 -0
  102. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/contraction_viewer.py +0 -0
  103. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/einsum_module/__init__.py +0 -0
  104. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/einsum_module/_backend.py +0 -0
  105. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/einsum_module/_equation.py +0 -0
  106. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/einsum_module/_trace_state.py +0 -0
  107. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/einsum_module/_trace_types.py +0 -0
  108. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/einsum_module/graph.py +0 -0
  109. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/einsum_module/renderer.py +0 -0
  110. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/einsum_module/trace.py +0 -0
  111. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/exceptions.py +0 -0
  112. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/interactive_viewer.py +0 -0
  113. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/py.typed +0 -0
  114. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/quimb/__init__.py +0 -0
  115. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/quimb/graph.py +0 -0
  116. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/quimb/renderer.py +0 -0
  117. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/snapshot.py +0 -0
  118. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tenpy/__init__.py +0 -0
  119. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tenpy/explicit.py +0 -0
  120. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tenpy/graph.py +0 -0
  121. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tenpy/renderer.py +0 -0
  122. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensor_comparison.py +0 -0
  123. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensor_comparison_config.py +0 -0
  124. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensor_elements.py +0 -0
  125. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensor_elements_config.py +0 -0
  126. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensorkrowch/__init__.py +0 -0
  127. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensorkrowch/_history.py +0 -0
  128. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensorkrowch/graph.py +0 -0
  129. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensorkrowch/renderer.py +0 -0
  130. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensornetwork/__init__.py +0 -0
  131. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensornetwork/graph.py +0 -0
  132. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/src/tensor_network_viz/tensornetwork/renderer.py +0 -0
  133. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_ci_workflow.py +0 -0
  134. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_contraction_groups_once.py +0 -0
  135. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_contraction_scheme.py +0 -0
  136. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_contraction_scheme_api.py +0 -0
  137. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_demo_cli_scheme.py +0 -0
  138. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_draw_performance.py +0 -0
  139. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_edge_index_label_2d.py +0 -0
  140. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_edge_index_label_3d.py +0 -0
  141. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_einsum_autotrace.py +0 -0
  142. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_engine_detection.py +0 -0
  143. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_engineering_baseline.py +0 -0
  144. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_examples.py +0 -0
  145. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_examples_structure.py +0 -0
  146. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_graph_cache.py +0 -0
  147. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_integration_einsum.py +0 -0
  148. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_integration_tensorkrowch.py +0 -0
  149. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_integration_tensornetwork.py +0 -0
  150. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_interaction_controls.py +0 -0
  151. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_interaction_state.py +0 -0
  152. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_label_draw_metrics_perf.py +0 -0
  153. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_label_format.py +0 -0
  154. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_lazy_imports.py +0 -0
  155. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_logging_and_exceptions.py +0 -0
  156. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_matplotlib_state.py +0 -0
  157. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_node_degrees_perf.py +0 -0
  158. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_public_api.py +0 -0
  159. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_quimb_backend.py +0 -0
  160. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_render_performance_controls.py +0 -0
  161. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_show_tensor_network_throughput.py +0 -0
  162. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_snapshot_api.py +0 -0
  163. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_tenpy_backend.py +0 -0
  164. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_tensor_comparison.py +0 -0
  165. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_tensor_elements.py +0 -0
  166. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_tensor_elements_perf.py +0 -0
  167. {tensor_network_visualization-1.6.3 → tensor_network_visualization-2.0.0}/tests/test_verify_script.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tensor-network-visualization
3
- Version: 1.6.3
3
+ Version: 2.0.0
4
4
  Summary: Minimal Matplotlib visualizations for TensorKrowch, TensorNetwork, Quimb, TeNPy, and traced PyTorch/NumPy einsum tensor networks.
5
5
  Author: Alejandro Mata Ali
6
6
  License-Expression: MIT
@@ -10,18 +10,22 @@ Project-URL: Changelog, https://github.com/DOKOS-TAYOS/Tensor-Network-Visualizat
10
10
  Project-URL: Repository, https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization
11
11
  Project-URL: Issues, https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization/issues
12
12
  Keywords: tensor-network,visualization,pytorch,numpy,tensorkrowch,tensornetwork,quimb,tenpy,einsum,quantum-inspired,matplotlib
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Operating System :: OS Independent
13
16
  Classifier: Programming Language :: Python :: 3
14
17
  Classifier: Programming Language :: Python :: 3 :: Only
15
18
  Classifier: Programming Language :: Python :: 3.11
16
19
  Classifier: Programming Language :: Python :: 3.12
17
20
  Classifier: Programming Language :: Python :: 3.13
18
21
  Classifier: Topic :: Scientific/Engineering :: Visualization
22
+ Classifier: Typing :: Typed
19
23
  Requires-Python: >=3.11
20
24
  Description-Content-Type: text/markdown
21
25
  License-File: LICENSE
22
26
  Requires-Dist: matplotlib>=3.7
23
27
  Requires-Dist: networkx>=3.0
24
- Requires-Dist: numpy
28
+ Requires-Dist: numpy>=2.0
25
29
  Provides-Extra: dev
26
30
  Requires-Dist: build; extra == "dev"
27
31
  Requires-Dist: pytest; extra == "dev"
@@ -49,6 +53,14 @@ Provides-Extra: einsum
49
53
  Requires-Dist: torch; extra == "einsum"
50
54
  Dynamic: license-file
51
55
 
56
+ <p align="center">
57
+ <img
58
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/tensor_network_visualization_logo.png"
59
+ alt="Tensor-Network-Visualization logo"
60
+ width="420"
61
+ >
62
+ </p>
63
+
52
64
  # Tensor-Network-Visualization
53
65
 
54
66
  [![CI](https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization/actions/workflows/ci.yml/badge.svg)](https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization/actions/workflows/ci.yml)
@@ -59,6 +71,47 @@ Dynamic: license-file
59
71
  Minimal Matplotlib visualizations for TensorKrowch, TensorNetwork, Quimb, TeNPy, and traced
60
72
  PyTorch/NumPy `einsum` tensor networks.
61
73
 
74
+ ## Gallery
75
+
76
+ These are exports generated with the library and the repository demos. The clean renders use
77
+ transparent PNGs; the controls example keeps its background so the menu stays readable.
78
+
79
+ <p align="center">
80
+ <img
81
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/cubic_peps_3d.png"
82
+ alt="Cubic PEPS 3D tensor network visualization"
83
+ width="230"
84
+ >
85
+ <img
86
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/mera_2d.png"
87
+ alt="MERA 2D tensor network visualization with labels"
88
+ width="230"
89
+ >
90
+ <img
91
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/tubular_grid_3d.png"
92
+ alt="Tubular 3D tensor network visualization"
93
+ width="230"
94
+ >
95
+ </p>
96
+
97
+ <p align="center">
98
+ <img
99
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/network_controls.png"
100
+ alt="MPS with controls, tensor labels, and index labels"
101
+ width="230"
102
+ >
103
+ <img
104
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/tensor_elements_phase.png"
105
+ alt="Tensor elements phase visualization"
106
+ width="230"
107
+ >
108
+ <img
109
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/tensor_elements_controls.png"
110
+ alt="Tensor elements view with the full control menus"
111
+ width="230"
112
+ >
113
+ </p>
114
+
62
115
  ## Why This Exists
63
116
 
64
117
  Tensor-network libraries expose different Python objects. This package gives them a small shared
@@ -1,3 +1,11 @@
1
+ <p align="center">
2
+ <img
3
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/tensor_network_visualization_logo.png"
4
+ alt="Tensor-Network-Visualization logo"
5
+ width="420"
6
+ >
7
+ </p>
8
+
1
9
  # Tensor-Network-Visualization
2
10
 
3
11
  [![CI](https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization/actions/workflows/ci.yml/badge.svg)](https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization/actions/workflows/ci.yml)
@@ -8,6 +16,47 @@
8
16
  Minimal Matplotlib visualizations for TensorKrowch, TensorNetwork, Quimb, TeNPy, and traced
9
17
  PyTorch/NumPy `einsum` tensor networks.
10
18
 
19
+ ## Gallery
20
+
21
+ These are exports generated with the library and the repository demos. The clean renders use
22
+ transparent PNGs; the controls example keeps its background so the menu stays readable.
23
+
24
+ <p align="center">
25
+ <img
26
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/cubic_peps_3d.png"
27
+ alt="Cubic PEPS 3D tensor network visualization"
28
+ width="230"
29
+ >
30
+ <img
31
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/mera_2d.png"
32
+ alt="MERA 2D tensor network visualization with labels"
33
+ width="230"
34
+ >
35
+ <img
36
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/tubular_grid_3d.png"
37
+ alt="Tubular 3D tensor network visualization"
38
+ width="230"
39
+ >
40
+ </p>
41
+
42
+ <p align="center">
43
+ <img
44
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/network_controls.png"
45
+ alt="MPS with controls, tensor labels, and index labels"
46
+ width="230"
47
+ >
48
+ <img
49
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/tensor_elements_phase.png"
50
+ alt="Tensor elements phase visualization"
51
+ width="230"
52
+ >
53
+ <img
54
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/tensor_elements_controls.png"
55
+ alt="Tensor elements view with the full control menus"
56
+ width="230"
57
+ >
58
+ </p>
59
+
11
60
  ## Why This Exists
12
61
 
13
62
  Tensor-network libraries expose different Python objects. This package gives them a small shared
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tensor-network-visualization"
7
- version = "1.6.3"
7
+ version = "2.0.0"
8
8
  description = "Minimal Matplotlib visualizations for TensorKrowch, TensorNetwork, Quimb, TeNPy, and traced PyTorch/NumPy einsum tensor networks."
9
9
  authors = [{ name = "Alejandro Mata Ali" }]
10
10
  readme = "README.md"
@@ -12,19 +12,23 @@ license = "MIT"
12
12
  license-files = ["LICENSE"]
13
13
  requires-python = ">=3.11"
14
14
  keywords = ["tensor-network", "visualization", "pytorch", "numpy", "tensorkrowch", "tensornetwork", "quimb", "tenpy", "einsum", "quantum-inspired", "matplotlib"]
15
- dependencies = [
16
- "matplotlib>=3.7",
17
- "networkx>=3.0",
18
- "numpy",
19
- ]
20
- classifiers = [
21
- "Programming Language :: Python :: 3",
22
- "Programming Language :: Python :: 3 :: Only",
23
- "Programming Language :: Python :: 3.11",
24
- "Programming Language :: Python :: 3.12",
25
- "Programming Language :: Python :: 3.13",
26
- "Topic :: Scientific/Engineering :: Visualization",
27
- ]
15
+ dependencies = [
16
+ "matplotlib>=3.7",
17
+ "networkx>=3.0",
18
+ "numpy>=2.0",
19
+ ]
20
+ classifiers = [
21
+ "Development Status :: 5 - Production/Stable",
22
+ "Intended Audience :: Science/Research",
23
+ "Operating System :: OS Independent",
24
+ "Programming Language :: Python :: 3",
25
+ "Programming Language :: Python :: 3 :: Only",
26
+ "Programming Language :: Python :: 3.11",
27
+ "Programming Language :: Python :: 3.12",
28
+ "Programming Language :: Python :: 3.13",
29
+ "Topic :: Scientific/Engineering :: Visualization",
30
+ "Typing :: Typed",
31
+ ]
28
32
 
29
33
  [project.urls]
30
34
  Homepage = "https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tensor-network-visualization
3
- Version: 1.6.3
3
+ Version: 2.0.0
4
4
  Summary: Minimal Matplotlib visualizations for TensorKrowch, TensorNetwork, Quimb, TeNPy, and traced PyTorch/NumPy einsum tensor networks.
5
5
  Author: Alejandro Mata Ali
6
6
  License-Expression: MIT
@@ -10,18 +10,22 @@ Project-URL: Changelog, https://github.com/DOKOS-TAYOS/Tensor-Network-Visualizat
10
10
  Project-URL: Repository, https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization
11
11
  Project-URL: Issues, https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization/issues
12
12
  Keywords: tensor-network,visualization,pytorch,numpy,tensorkrowch,tensornetwork,quimb,tenpy,einsum,quantum-inspired,matplotlib
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Operating System :: OS Independent
13
16
  Classifier: Programming Language :: Python :: 3
14
17
  Classifier: Programming Language :: Python :: 3 :: Only
15
18
  Classifier: Programming Language :: Python :: 3.11
16
19
  Classifier: Programming Language :: Python :: 3.12
17
20
  Classifier: Programming Language :: Python :: 3.13
18
21
  Classifier: Topic :: Scientific/Engineering :: Visualization
22
+ Classifier: Typing :: Typed
19
23
  Requires-Python: >=3.11
20
24
  Description-Content-Type: text/markdown
21
25
  License-File: LICENSE
22
26
  Requires-Dist: matplotlib>=3.7
23
27
  Requires-Dist: networkx>=3.0
24
- Requires-Dist: numpy
28
+ Requires-Dist: numpy>=2.0
25
29
  Provides-Extra: dev
26
30
  Requires-Dist: build; extra == "dev"
27
31
  Requires-Dist: pytest; extra == "dev"
@@ -49,6 +53,14 @@ Provides-Extra: einsum
49
53
  Requires-Dist: torch; extra == "einsum"
50
54
  Dynamic: license-file
51
55
 
56
+ <p align="center">
57
+ <img
58
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/tensor_network_visualization_logo.png"
59
+ alt="Tensor-Network-Visualization logo"
60
+ width="420"
61
+ >
62
+ </p>
63
+
52
64
  # Tensor-Network-Visualization
53
65
 
54
66
  [![CI](https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization/actions/workflows/ci.yml/badge.svg)](https://github.com/DOKOS-TAYOS/Tensor-Network-Visualization/actions/workflows/ci.yml)
@@ -59,6 +71,47 @@ Dynamic: license-file
59
71
  Minimal Matplotlib visualizations for TensorKrowch, TensorNetwork, Quimb, TeNPy, and traced
60
72
  PyTorch/NumPy `einsum` tensor networks.
61
73
 
74
+ ## Gallery
75
+
76
+ These are exports generated with the library and the repository demos. The clean renders use
77
+ transparent PNGs; the controls example keeps its background so the menu stays readable.
78
+
79
+ <p align="center">
80
+ <img
81
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/cubic_peps_3d.png"
82
+ alt="Cubic PEPS 3D tensor network visualization"
83
+ width="230"
84
+ >
85
+ <img
86
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/mera_2d.png"
87
+ alt="MERA 2D tensor network visualization with labels"
88
+ width="230"
89
+ >
90
+ <img
91
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/tubular_grid_3d.png"
92
+ alt="Tubular 3D tensor network visualization"
93
+ width="230"
94
+ >
95
+ </p>
96
+
97
+ <p align="center">
98
+ <img
99
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/network_controls.png"
100
+ alt="MPS with controls, tensor labels, and index labels"
101
+ width="230"
102
+ >
103
+ <img
104
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/tensor_elements_phase.png"
105
+ alt="Tensor elements phase visualization"
106
+ width="230"
107
+ >
108
+ <img
109
+ src="https://raw.githubusercontent.com/DOKOS-TAYOS/Tensor-Network-Visualization/main/images/gallery/tensor_elements_controls.png"
110
+ alt="Tensor elements view with the full control menus"
111
+ width="230"
112
+ >
113
+ </p>
114
+
62
115
  ## Why This Exists
63
116
 
64
117
  Tensor-network libraries expose different Python objects. This package gives them a small shared
@@ -128,6 +128,7 @@ tests/test_contraction_scheme.py
128
128
  tests/test_contraction_scheme_api.py
129
129
  tests/test_contraction_viewer.py
130
130
  tests/test_demo_cli_scheme.py
131
+ tests/test_documentation_gallery.py
131
132
  tests/test_draw_performance.py
132
133
  tests/test_edge_index_label_2d.py
133
134
  tests/test_edge_index_label_3d.py
@@ -1,6 +1,6 @@
1
1
  matplotlib>=3.7
2
2
  networkx>=3.0
3
- numpy
3
+ numpy>=2.0
4
4
 
5
5
  [dev]
6
6
  build
@@ -3,11 +3,13 @@ from __future__ import annotations
3
3
  import functools
4
4
  import math
5
5
  from dataclasses import dataclass
6
+ from typing import Any, cast
6
7
 
7
8
  import numpy as np
8
9
  from matplotlib.axes import Axes
9
10
  from matplotlib.figure import Figure
10
11
  from matplotlib.font_manager import FontProperties
12
+ from matplotlib.text import Text
11
13
  from matplotlib.textpath import TextPath
12
14
 
13
15
  from ..._matplotlib_state import (
@@ -174,33 +176,118 @@ def _draw_scale_params(
174
176
  _ZOOM_FONT_CLAMP: tuple[float, float] = (0.28, 5.5)
175
177
 
176
178
 
179
+ def _current_2d_span(ax: Axes) -> float:
180
+ x0, x1 = ax.get_xlim()
181
+ y0, y1 = ax.get_ylim()
182
+ return max(float(x1 - x0), float(y1 - y0), 1e-9)
183
+
184
+
185
+ def _zoom_font_factor(*, ref_span: float, current_span: float) -> float:
186
+ lo, hi = _ZOOM_FONT_CLAMP
187
+ factor = float(ref_span) / max(float(current_span), 1e-9)
188
+ return float(np.clip(factor, lo, hi))
189
+
190
+
191
+ def _text_font_sizes(ax: Axes) -> dict[Text, float]:
192
+ return {text: float(text.get_fontsize()) for text in ax.texts if isinstance(text, Text)}
193
+
194
+
195
+ def _pruned_zoom_font_sizes(
196
+ sizes: dict[Any, float],
197
+ *,
198
+ current_texts: tuple[Text, ...],
199
+ ) -> dict[Text, float]:
200
+ current_ids = {id(text) for text in current_texts}
201
+ return {
202
+ text: float(base_fontsize)
203
+ for text, base_fontsize in sizes.items()
204
+ if isinstance(text, Text) and id(text) in current_ids and text.figure is not None
205
+ }
206
+
207
+
208
+ def _resolve_zoom_font_state(
209
+ ax: Axes,
210
+ *,
211
+ preserve_ref_span: bool,
212
+ ) -> tuple[float, dict[Text, float]]:
213
+ current_span = _current_2d_span(ax)
214
+ current_texts = tuple(text for text in ax.texts if isinstance(text, Text))
215
+ current_sizes = _text_font_sizes(ax)
216
+ if not preserve_ref_span:
217
+ return current_span, current_sizes
218
+
219
+ existing_state = get_zoom_font_state(ax)
220
+ if existing_state is None:
221
+ return current_span, current_sizes
222
+
223
+ ref_span = float(existing_state["ref_span"])
224
+ existing_sizes = _pruned_zoom_font_sizes(
225
+ cast(dict[Any, float], existing_state["sizes"]),
226
+ current_texts=current_texts,
227
+ )
228
+ resolved_sizes: dict[Text, float] = {}
229
+ for text in current_texts:
230
+ base_fontsize = existing_sizes.get(text)
231
+ if base_fontsize is None:
232
+ base_fontsize = float(current_sizes[text])
233
+ resolved_sizes[text] = float(base_fontsize)
234
+ return ref_span, resolved_sizes
235
+
236
+
237
+ def _zoom_callback_registered(ax: Axes, signal_name: str, cid: object) -> bool:
238
+ callbacks = getattr(ax.callbacks, "callbacks", None)
239
+ if not isinstance(callbacks, dict):
240
+ return False
241
+ signal_callbacks = callbacks.get(signal_name)
242
+ return isinstance(signal_callbacks, dict) and cid in signal_callbacks
243
+
244
+
245
+ def _zoom_callbacks_connected(ax: Axes, cids: list[Any]) -> bool:
246
+ if len(cids) != 2:
247
+ return False
248
+ return _zoom_callback_registered(ax, "xlim_changed", cids[0]) and _zoom_callback_registered(
249
+ ax,
250
+ "ylim_changed",
251
+ cids[1],
252
+ )
253
+
254
+
255
+ def _disconnect_zoom_callbacks(ax: Axes, cids: list[Any]) -> None:
256
+ for cid in cids:
257
+ try:
258
+ ax.callbacks.disconnect(cid)
259
+ except (AttributeError, KeyError, TypeError, ValueError):
260
+ continue
261
+
262
+
177
263
  def _on_2d_limits_changed(ax: Axes) -> None:
178
264
  state = get_zoom_font_state(ax)
179
265
  if state is None:
180
266
  return
181
- x0, x1 = ax.get_xlim()
182
- y0, y1 = ax.get_ylim()
183
- span = max(float(x1 - x0), float(y1 - y0), 1e-9)
184
- factor = float(state["ref_span"] / span)
185
- lo, hi = _ZOOM_FONT_CLAMP
186
- factor = float(np.clip(factor, lo, hi))
267
+ factor = _zoom_font_factor(
268
+ ref_span=float(state["ref_span"]),
269
+ current_span=_current_2d_span(ax),
270
+ )
187
271
  for text, base_fs in state["sizes"].items():
188
272
  if text.figure is None:
189
273
  continue
190
274
  text.set_fontsize(max(3.0, base_fs * factor))
191
275
 
192
276
 
193
- def _register_2d_zoom_font_scaling(ax: Axes) -> None:
194
- x0, x1 = ax.get_xlim()
195
- y0, y1 = ax.get_ylim()
196
- ref_span = max(float(x1 - x0), float(y1 - y0), 1e-9)
197
- sizes = {t: float(t.get_fontsize()) for t in ax.texts}
277
+ def _register_2d_zoom_font_scaling(
278
+ ax: Axes,
279
+ *,
280
+ preserve_ref_span: bool = False,
281
+ ) -> None:
282
+ ref_span, sizes = _resolve_zoom_font_state(ax, preserve_ref_span=preserve_ref_span)
198
283
  set_zoom_font_state(ax, ref_span=ref_span, sizes=sizes)
199
284
 
200
285
  old_cids = get_zoom_cids(ax)
201
- if old_cids:
286
+ if _zoom_callbacks_connected(ax, old_cids):
202
287
  _on_2d_limits_changed(ax)
203
288
  return
289
+ if old_cids:
290
+ _disconnect_zoom_callbacks(ax, old_cids)
204
291
 
205
292
  def _cb(_: object) -> None:
206
293
  _on_2d_limits_changed(ax)
@@ -208,6 +295,7 @@ def _register_2d_zoom_font_scaling(ax: Axes) -> None:
208
295
  cx = ax.callbacks.connect("xlim_changed", _cb)
209
296
  cy = ax.callbacks.connect("ylim_changed", _cb)
210
297
  set_zoom_cids(ax, [cx, cy])
298
+ _on_2d_limits_changed(ax)
211
299
 
212
300
 
213
301
  __all__ = [
@@ -236,7 +236,7 @@ def _draw_graph(
236
236
  include_viewer=False,
237
237
  )
238
238
  if build_scene_state:
239
- from ..._matplotlib_state import set_contraction_controls, set_scene
239
+ from ..._matplotlib_state import set_contraction_controls, set_home_view, set_scene
240
240
  from .render_prep import _build_interactive_scene_state
241
241
 
242
242
  scene = _build_interactive_scene_state(
@@ -250,6 +250,7 @@ def _draw_graph(
250
250
  )
251
251
  scene.contraction_controls = controls
252
252
  set_scene(ax, scene)
253
+ set_home_view(ax, ax._get_view())
253
254
  if controls is not None:
254
255
  set_contraction_controls(ax, controls)
255
256
  controls.bind_scene(scene)
@@ -210,7 +210,11 @@ def _component_centroid(
210
210
  *,
211
211
  dimensions: int,
212
212
  ) -> np.ndarray:
213
- source_ids = component.anchor_node_ids or component.visible_node_ids or component.node_ids
213
+ source_ids = (
214
+ component.anchor_node_ids
215
+ or component.geometry_visible_node_ids
216
+ or component.geometry_node_ids
217
+ )
214
218
  anchor_ids = tuple(node_id for node_id in source_ids if node_id in positions)
215
219
  if not anchor_ids:
216
220
  anchor_ids = tuple(sorted(positions))
@@ -227,7 +231,11 @@ def _component_main_axis_2d_like(
227
231
  component: _LayoutComponent,
228
232
  positions: NodePositions,
229
233
  ) -> np.ndarray:
230
- source_ids = component.anchor_node_ids or component.visible_node_ids or component.node_ids
234
+ source_ids = (
235
+ component.anchor_node_ids
236
+ or component.geometry_visible_node_ids
237
+ or component.geometry_node_ids
238
+ )
231
239
  anchor_ids = tuple(node_id for node_id in source_ids if node_id in positions)
232
240
  if not anchor_ids:
233
241
  anchor_ids = tuple(sorted(positions))