iplotx 0.6.2__tar.gz → 0.6.3__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 (202) hide show
  1. {iplotx-0.6.2 → iplotx-0.6.3}/.github/workflows/test.yml +2 -0
  2. {iplotx-0.6.2 → iplotx-0.6.3}/PKG-INFO +1 -1
  3. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/utils/geometry.py +9 -8
  4. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/version.py +1 -1
  5. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_geometry.py +36 -2
  6. {iplotx-0.6.2 → iplotx-0.6.3}/.github/workflows/publish.yml +0 -0
  7. {iplotx-0.6.2 → iplotx-0.6.3}/.gitignore +0 -0
  8. {iplotx-0.6.2 → iplotx-0.6.3}/.pre-commit-config.yaml +0 -0
  9. {iplotx-0.6.2 → iplotx-0.6.3}/.readthedocs.yaml +0 -0
  10. {iplotx-0.6.2 → iplotx-0.6.3}/LICENSE +0 -0
  11. {iplotx-0.6.2 → iplotx-0.6.3}/MANIFEST.in +0 -0
  12. {iplotx-0.6.2 → iplotx-0.6.3}/README.md +0 -0
  13. {iplotx-0.6.2 → iplotx-0.6.3}/assets/pylint.svg +0 -0
  14. {iplotx-0.6.2 → iplotx-0.6.3}/docs/Makefile +0 -0
  15. {iplotx-0.6.2 → iplotx-0.6.3}/docs/make.bat +0 -0
  16. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/_static/banner.png +0 -0
  17. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/_static/graph_basic.png +0 -0
  18. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/_templates/layout.html +0 -0
  19. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/api/artists.md +0 -0
  20. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/api/complete_style_specification.md +0 -0
  21. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/api/plotting.md +0 -0
  22. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/api/providers.md +0 -0
  23. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/api/style.md +0 -0
  24. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/api.md +0 -0
  25. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/conf.py +0 -0
  26. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/images/sphx_glr_plot_basic_001.png +0 -0
  27. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/images/thumb/sphx_glr_plot_basic_thumb.png +0 -0
  28. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/index.md +0 -0
  29. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/providers.md +0 -0
  30. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/sg_execution_times.rst +0 -0
  31. {iplotx-0.6.2 → iplotx-0.6.3}/docs/source/style.md +0 -0
  32. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/GALLERY_HEADER.rst +0 -0
  33. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/data/chess_masters_WCC.pgn.bz2 +0 -0
  34. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/data/knuth_miles.txt.gz +0 -0
  35. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_animation.py +0 -0
  36. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_arrowlawn.py +0 -0
  37. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_arrows.py +0 -0
  38. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_basic.py +0 -0
  39. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_big_curves.py +0 -0
  40. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_chess_masters.py +0 -0
  41. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_cliques.py +0 -0
  42. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_cluster_layout.py +0 -0
  43. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_company_structure.py +0 -0
  44. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_complex.py +0 -0
  45. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_dag.py +0 -0
  46. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_directed.py +0 -0
  47. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_edgepadding.py +0 -0
  48. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_edit_artists.py +0 -0
  49. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_elements.py +0 -0
  50. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_feedbacks.py +0 -0
  51. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_four_grids.py +0 -0
  52. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_grouping.py +0 -0
  53. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_halfarrows.py +0 -0
  54. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_house.py +0 -0
  55. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_knuth_miles.py +0 -0
  56. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_labels_and_colors.py +0 -0
  57. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_loops.py +0 -0
  58. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_max_bipartite_matching.py +0 -0
  59. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_minimum_spanning_trees.py +0 -0
  60. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_mouse_hover.py +0 -0
  61. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_multipartite_layout.py +0 -0
  62. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_multistyle.py +0 -0
  63. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_parallel_igraph_networkx.py +0 -0
  64. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_ports.py +0 -0
  65. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_redblack.py +0 -0
  66. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_shortest_path.py +0 -0
  67. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_simple_networkx.py +0 -0
  68. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_simple_path.py +0 -0
  69. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_simplenetworkdataprovider.py +0 -0
  70. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_style.py +0 -0
  71. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_tension.py +0 -0
  72. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_traveling_salesman.py +0 -0
  73. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_vertexmarkers.py +0 -0
  74. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_voronoi.py +0 -0
  75. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_waypoints.py +0 -0
  76. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/plot_with_colorbar.py +0 -0
  77. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/GALLERY_HEADER.rst +0 -0
  78. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/data/tree-with-support.json +0 -0
  79. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_angular_waypoints.py +0 -0
  80. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_biopython_tree.py +0 -0
  81. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_cladeedges.py +0 -0
  82. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_cogent3_layouts.py +0 -0
  83. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_cogent3_tree.py +0 -0
  84. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_elements_tree.py +0 -0
  85. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_ete4.py +0 -0
  86. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_leafedges.py +0 -0
  87. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_leafedges_and_cascades.py +0 -0
  88. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_simpletreedataprovider.py +0 -0
  89. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_skbio_tree.py +0 -0
  90. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_split_edges.py +0 -0
  91. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_style_tree.py +0 -0
  92. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_support.py +0 -0
  93. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_tree_node_background.py +0 -0
  94. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_tree_style_clades.py +0 -0
  95. {iplotx-0.6.2 → iplotx-0.6.3}/gallery/tree/plot_trees_of_trees.py +0 -0
  96. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/__init__.py +0 -0
  97. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/artists.py +0 -0
  98. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/cascades.py +0 -0
  99. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/edge/__init__.py +0 -0
  100. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/edge/arrow.py +0 -0
  101. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/edge/geometry.py +0 -0
  102. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/edge/leaf.py +0 -0
  103. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/edge/ports.py +0 -0
  104. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/groups.py +0 -0
  105. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/__init__.py +0 -0
  106. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/heuristics.py +0 -0
  107. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/providers/network/igraph.py +0 -0
  108. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/providers/network/networkx.py +0 -0
  109. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/providers/network/simple.py +0 -0
  110. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/providers/tree/biopython.py +0 -0
  111. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/providers/tree/cogent3.py +0 -0
  112. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/providers/tree/ete4.py +0 -0
  113. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/providers/tree/simple.py +0 -0
  114. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/providers/tree/skbio.py +0 -0
  115. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/ingest/typing.py +0 -0
  116. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/label.py +0 -0
  117. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/layout.py +0 -0
  118. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/network.py +0 -0
  119. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/plotting.py +0 -0
  120. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/style/__init__.py +0 -0
  121. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/style/leaf_info.py +0 -0
  122. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/style/library.py +0 -0
  123. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/tree.py +0 -0
  124. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/typing.py +0 -0
  125. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/utils/internal.py +0 -0
  126. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/utils/matplotlib.py +0 -0
  127. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/utils/style.py +0 -0
  128. {iplotx-0.6.2 → iplotx-0.6.3}/iplotx/vertex.py +0 -0
  129. {iplotx-0.6.2 → iplotx-0.6.3}/pyproject.toml +0 -0
  130. {iplotx-0.6.2 → iplotx-0.6.3}/scripts/copy_github_release_into_version.sh +0 -0
  131. {iplotx-0.6.2 → iplotx-0.6.3}/scripts/make_banner.py +0 -0
  132. {iplotx-0.6.2 → iplotx-0.6.3}/scripts/update_pylint_badge.sh +0 -0
  133. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_biopython/cascades.png +0 -0
  134. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_biopython/directed_child.png +0 -0
  135. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_biopython/leaf_labels.png +0 -0
  136. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_biopython/leaf_labels_hmargin.png +0 -0
  137. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_biopython/leafedges.png +0 -0
  138. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_biopython/show_support.png +0 -0
  139. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_biopython/tree_basic.png +0 -0
  140. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_biopython/tree_radial.png +0 -0
  141. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_cogent3/leaf_labels.png +0 -0
  142. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_cogent3/leaf_labels_hmargin.png +0 -0
  143. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_cogent3/tree_basic.png +0 -0
  144. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_cogent3/tree_radial.png +0 -0
  145. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_ete4/leaf_labels.png +0 -0
  146. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_ete4/leaf_labels_hmargin.png +0 -0
  147. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_ete4/split_edges.png +0 -0
  148. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_ete4/tree_basic.png +0 -0
  149. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_ete4/tree_radial.png +0 -0
  150. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/clustering_directed.png +0 -0
  151. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/clustering_directed_large.png +0 -0
  152. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_basic.png +0 -0
  153. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_directed.png +0 -0
  154. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_directed_curved_loops.png +0 -0
  155. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_edit_children.png +0 -0
  156. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_labels.png +0 -0
  157. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_layout_attribute.png +0 -0
  158. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_null.png +0 -0
  159. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_squares_directed.png +0 -0
  160. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_vertexsize.png +0 -0
  161. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_with_curved_edges.png +0 -0
  162. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/igraph_layout_object.png +0 -0
  163. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_igraph/multigraph_with_curved_edges_undirected.png +0 -0
  164. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/cluster-layout.png +0 -0
  165. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/complex.png +0 -0
  166. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/complex_rotatelabels.png +0 -0
  167. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/directed_graph.png +0 -0
  168. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/directed_graph_with_colorbar.png +0 -0
  169. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/empty_graph.png +0 -0
  170. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/flat_style.png +0 -0
  171. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/house_with_colors.png +0 -0
  172. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/labels_and_colors.png +0 -0
  173. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/shortest_path.png +0 -0
  174. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_networkx/simple_graph.png +0 -0
  175. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_simple_network_provider/graph_basic.png +0 -0
  176. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_simple_network_provider/graph_directed.png +0 -0
  177. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_simple_network_provider/graph_labels.png +0 -0
  178. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_skbio/leaf_labels.png +0 -0
  179. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_skbio/leaf_labels_hmargin.png +0 -0
  180. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_skbio/tree_basic.png +0 -0
  181. {iplotx-0.6.2 → iplotx-0.6.3}/tests/baseline_images/test_skbio/tree_radial.png +0 -0
  182. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_arrows.py +0 -0
  183. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_biopython.py +0 -0
  184. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_cascades.py +0 -0
  185. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_cogent3.py +0 -0
  186. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_edge.py +0 -0
  187. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_edge_geometry.py +0 -0
  188. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_ete4.py +0 -0
  189. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_heuristics.py +0 -0
  190. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_igraph.py +0 -0
  191. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_ingest_protocols.py +0 -0
  192. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_matplotlib_utils.py +0 -0
  193. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_network_hotload.py +0 -0
  194. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_networkx.py +0 -0
  195. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_ports.py +0 -0
  196. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_simple_network_provider.py +0 -0
  197. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_simple_tree_provider.py +0 -0
  198. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_skbio.py +0 -0
  199. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_style.py +0 -0
  200. {iplotx-0.6.2 → iplotx-0.6.3}/tests/test_vertex.py +0 -0
  201. {iplotx-0.6.2 → iplotx-0.6.3}/tests/utils.py +0 -0
  202. {iplotx-0.6.2 → iplotx-0.6.3}/uv.lock +0 -0
@@ -39,6 +39,8 @@ jobs:
39
39
 
40
40
  - name: Coveralls
41
41
  uses: coverallsapp/github-action@v2
42
+ with:
43
+ fail-on-error: false
42
44
 
43
45
  - name: Run flake8
44
46
  run: uv run flake8 iplotx --count --exit-zero --max-complexity=20 --max-line-length=127 --statistics
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iplotx
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: Plot networkx from igraph and networkx.
5
5
  Project-URL: Homepage, https://github.com/fabilab/iplotx
6
6
  Project-URL: Documentation, https://readthedocs.org/iplotx
@@ -42,14 +42,15 @@ def convex_hull(points):
42
42
  pass
43
43
 
44
44
  # Otherwise, try scipy
45
- try:
46
- from scipy.spatial import ConvexHull
47
-
48
- # NOTE: scipy guarantees counterclockwise ordering in 2D
49
- # https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html
50
- hull_idx = ConvexHull(points).vertices[::-1]
51
- except ImportError:
52
- pass
45
+ if hull_idx is None:
46
+ try:
47
+ from scipy.spatial import ConvexHull
48
+
49
+ # NOTE: scipy guarantees counterclockwise ordering in 2D
50
+ # https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html
51
+ hull_idx = ConvexHull(points).vertices[::-1]
52
+ except ImportError:
53
+ pass
53
54
 
54
55
  # Last resort: our own Graham scan
55
56
  if hull_idx is None:
@@ -2,4 +2,4 @@
2
2
  iplotx version information module.
3
3
  """
4
4
 
5
- __version__ = "0.6.2"
5
+ __version__ = "0.6.3"
@@ -28,6 +28,40 @@ def four_points():
28
28
  )
29
29
 
30
30
 
31
+ # 13: two tests fail with AssertionError
32
+ def assert_array_equal_upon_cycling(points1, points2):
33
+ """Determine array equality but allow order to be different by cycling.
34
+
35
+ Parameters:
36
+ points1: First array of points.
37
+ points2: Second array of points.
38
+ Returns:
39
+ True if the arrays are equal upon cycling, False otherwise.
40
+ """
41
+ if len(points1) != len(points2):
42
+ return False
43
+
44
+ points1 = np.asarray(points1)
45
+ points2 = np.asarray(points2).astype(points1.dtype)
46
+
47
+ if (points1.ndim != 1) or (points2.ndim != 1):
48
+ raise ValueError("Only 1D arrays are supported.")
49
+
50
+ if (points1 == points2).all():
51
+ return True
52
+
53
+ # Cycle
54
+ points2 = np.concatenate([points2, points2])
55
+ i0 = np.flatnonzero((points2 == points1[0]))
56
+ if len(i0) != 2:
57
+ return False
58
+ i0 = i0[0]
59
+ points2 = points2[i0 : i0 + len(points1)]
60
+
61
+ # Check again
62
+ return bool((points1 == points2).all())
63
+
64
+
31
65
  def test_squared_bezier(three_points):
32
66
  ev = partial(geometry._evaluate_squared_bezier, three_points)
33
67
  np.testing.assert_array_almost_equal(ev(0), three_points[0])
@@ -65,12 +99,12 @@ def test_hull_two(three_points):
65
99
 
66
100
  def test_hull_three(three_points):
67
101
  hull = geometry.convex_hull(three_points)
68
- np.testing.assert_array_equal(hull, [2, 1, 0])
102
+ assert_array_equal_upon_cycling(hull, [2, 1, 0])
69
103
 
70
104
 
71
105
  def test_hull_four(four_points):
72
106
  hull = geometry.convex_hull(four_points)
73
- np.testing.assert_array_equal(hull, [3, 2, 1, 0])
107
+ assert_array_equal_upon_cycling(hull, [3, 2, 1, 0])
74
108
 
75
109
 
76
110
  def test_hull_internal_three(three_points):
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