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