passagemath-graphs 10.5.43__tar.gz → 10.6.1rc2__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 (226) hide show
  1. {passagemath_graphs-10.5.43/passagemath_graphs.egg-info → passagemath_graphs-10.6.1rc2}/PKG-INFO +5 -6
  2. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/README.rst +1 -1
  3. passagemath_graphs-10.6.1rc2/VERSION.txt +1 -0
  4. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2/passagemath_graphs.egg-info}/PKG-INFO +5 -6
  5. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/passagemath_graphs.egg-info/SOURCES.txt +2 -0
  6. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/passagemath_graphs.egg-info/requires.txt +2 -2
  7. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/pyproject.toml +6 -7
  8. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/abstract_tree.py +188 -17
  9. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/cluster_algebra_quiver/interact.py +1 -2
  10. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/cluster_algebra_quiver/mutation_type.py +518 -519
  11. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/cluster_algebra_quiver/quiver.py +233 -205
  12. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/covering_design.py +2 -6
  13. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/database.py +11 -10
  14. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/designs_pyx.pyx +2 -2
  15. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/evenly_distributed_sets.pyx +4 -4
  16. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/latin_squares.py +53 -20
  17. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/orthogonal_arrays.py +2 -1
  18. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/orthogonal_arrays_find_recursive.pyx +22 -21
  19. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/resolvable_bibd.py +191 -157
  20. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/subhypergraph_search.pyx +4 -4
  21. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/twographs.py +2 -2
  22. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/finite_state_machine.py +6 -6
  23. passagemath_graphs-10.6.1rc2/sage/combinat/posets/bubble_shuffle.py +247 -0
  24. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/d_complete.py +3 -3
  25. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/elements.py +3 -3
  26. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/hasse_cython.pyx +1 -1
  27. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/hasse_diagram.py +16 -22
  28. passagemath_graphs-10.6.1rc2/sage/combinat/posets/hochschild_lattice.py +158 -0
  29. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/incidence_algebras.py +14 -16
  30. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/lattices.py +51 -53
  31. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/linear_extensions.py +10 -12
  32. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/meson.build +2 -0
  33. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/moebius_algebra.py +4 -4
  34. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/poset_examples.py +70 -23
  35. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/posets.py +294 -103
  36. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/databases/knotinfo_db.py +2 -1
  37. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/asteroidal_triples.pyx +24 -3
  38. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/boost_graph.pxd +3 -3
  39. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/boost_interface.cpp +4 -3
  40. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/c_graph.pyx +1 -1
  41. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/dense_graph.pxd +5 -3
  42. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/dense_graph.pyx +44 -0
  43. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/static_sparse_backend.pyx +8 -5
  44. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/static_sparse_graph.pyx +86 -15
  45. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/bipartite_graph.py +59 -36
  46. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/centrality.pyx +82 -9
  47. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/cographs.py +1 -1
  48. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/comparability.pyx +64 -26
  49. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/convexity_properties.pyx +52 -9
  50. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/digraph.py +439 -95
  51. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/digraph_generators.py +174 -102
  52. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/dot2tex_utils.py +1 -1
  53. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/basic.py +1 -1
  54. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/distance_regular.pyx +1 -1
  55. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/families.py +37 -27
  56. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/random.py +2 -2
  57. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/smallgraphs.py +3 -3
  58. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generic_graph.py +558 -86
  59. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generic_graph_pyx.pyx +58 -11
  60. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/genus.pyx +3 -4
  61. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph.py +291 -8
  62. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_database.py +67 -12
  63. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/clique_separators.pyx +24 -3
  64. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/fast_digraph.pyx +1 -1
  65. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/graph_products.pyx +67 -21
  66. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/meson.build +7 -3
  67. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/slice_decomposition.pyx +34 -8
  68. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_generators.py +45 -32
  69. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_generators_pyx.pyx +15 -15
  70. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_latex.py +1 -1
  71. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_list.py +52 -9
  72. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_plot.py +7 -0
  73. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/hyperbolicity.pyx +2 -0
  74. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/isoperimetric_inequalities.pyx +42 -6
  75. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/line_graph.pyx +153 -37
  76. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/matching_covered_graph.py +84 -60
  77. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/meson.build +6 -2
  78. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/orientations.py +3 -18
  79. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/path_enumeration.pyx +2 -2
  80. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/strongly_regular_db.pyx +15 -15
  81. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/traversals.pyx +13 -12
  82. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/tutte_polynomial.py +1 -1
  83. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/weakly_chordal.pyx +50 -8
  84. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/knots/free_knotinfo_monoid.py +3 -3
  85. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/knots/knotinfo.py +102 -82
  86. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/knots/link.py +72 -39
  87. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/cubical_complex.py +4 -5
  88. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/delta_complex.py +4 -4
  89. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/simplicial_complex.py +0 -1
  90. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/simplicial_complex_catalog.py +6 -0
  91. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/simplicial_complex_examples.py +4 -16
  92. passagemath_graphs-10.5.43/VERSION.txt +0 -1
  93. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/MANIFEST.in +0 -0
  94. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/passagemath_graphs.egg-info/dependency_links.txt +0 -0
  95. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/passagemath_graphs.egg-info/top_level.txt +0 -0
  96. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/all__sagemath_graphs.py +0 -0
  97. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/all__sagemath_graphs.py +0 -0
  98. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/binary_tree.py +0 -0
  99. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/cluster_algebra_quiver/all.py +0 -0
  100. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/cluster_algebra_quiver/cluster_seed.py +0 -0
  101. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/cluster_algebra_quiver/mutation_class.py +0 -0
  102. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/cluster_algebra_quiver/quiver_mutation_type.py +0 -0
  103. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/MOLS_handbook_data.py +0 -0
  104. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/all.py +0 -0
  105. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/bibd.py +0 -0
  106. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/block_design.py +0 -0
  107. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/covering_array.py +0 -0
  108. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/design_catalog.py +0 -0
  109. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/designs_pyx.pxd +0 -0
  110. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/difference_family.py +0 -0
  111. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/difference_matrices.py +0 -0
  112. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/ext_rep.py +0 -0
  113. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/gen_quadrangles_with_spread.pyx +0 -0
  114. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/group_divisible_designs.py +0 -0
  115. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/incidence_structures.py +0 -0
  116. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/meson.build +0 -0
  117. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/orthogonal_arrays_build_recursive.py +0 -0
  118. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/designs/steiner_quadruple_systems.py +0 -0
  119. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/finite_state_machine_generators.py +0 -0
  120. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/graph_path.py +0 -0
  121. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/interval_posets.py +0 -0
  122. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/nu_tamari_lattice.py +0 -0
  123. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/ordered_tree.py +0 -0
  124. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/all.py +0 -0
  125. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/cartesian_product.py +0 -0
  126. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/forest.py +0 -0
  127. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/linear_extension_iterator.pyx +0 -0
  128. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/posets/mobile.py +0 -0
  129. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/rooted_tree.py +0 -0
  130. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/shard_order.py +0 -0
  131. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/tamari_lattices.py +0 -0
  132. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/combinat/yang_baxter_graph.py +0 -0
  133. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/databases/all__sagemath_graphs.py +0 -0
  134. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/ext_data/all__sagemath_graphs.py +0 -0
  135. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/ext_data/graphs/graph_plot_js.html +0 -0
  136. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/ext_data/kenzo/CP2.txt +0 -0
  137. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/ext_data/kenzo/CP3.txt +0 -0
  138. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/ext_data/kenzo/CP4.txt +0 -0
  139. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/ext_data/kenzo/README.txt +0 -0
  140. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/ext_data/kenzo/S4.txt +0 -0
  141. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/all.py +0 -0
  142. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/all.py +0 -0
  143. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/boost_graph.pyx +0 -0
  144. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/c_graph.pxd +0 -0
  145. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/graph_backends.pxd +0 -0
  146. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/graph_backends.pyx +0 -0
  147. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/meson.build +0 -0
  148. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/overview.py +0 -0
  149. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/sparse_graph.pxd +0 -0
  150. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/sparse_graph.pyx +0 -0
  151. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/static_dense_graph.pxd +0 -0
  152. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/static_dense_graph.pyx +0 -0
  153. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/static_sparse_backend.pxd +0 -0
  154. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/base/static_sparse_graph.pxd +0 -0
  155. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/connectivity.pxd +0 -0
  156. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/connectivity.pyx +0 -0
  157. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/convexity_properties.pxd +0 -0
  158. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/distances_all_pairs.pxd +0 -0
  159. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/distances_all_pairs.pyx +0 -0
  160. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/domination.py +0 -0
  161. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/edge_connectivity.pyx +0 -0
  162. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/all.py +0 -0
  163. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/chessboard.py +0 -0
  164. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/classical_geometries.py +0 -0
  165. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/degree_sequence.py +0 -0
  166. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/intersection.py +0 -0
  167. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/meson.build +0 -0
  168. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/platonic_solids.py +0 -0
  169. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generators/world_map.py +0 -0
  170. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/generic_graph_pyx.pxd +0 -0
  171. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_coloring.pyx +0 -0
  172. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/all.py +0 -0
  173. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/bandwidth.pyx +0 -0
  174. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/cutwidth.pyx +0 -0
  175. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/fast_digraph.pxd +0 -0
  176. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/modular_decomposition.hpp +0 -0
  177. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/modular_decomposition.pxd +0 -0
  178. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/modular_decomposition.pyx +0 -0
  179. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/slice_decomposition.pxd +0 -0
  180. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/tree_decomposition.pxd +0 -0
  181. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/tree_decomposition.pyx +0 -0
  182. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/vertex_separation.pxd +0 -0
  183. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_decompositions/vertex_separation.pyx +0 -0
  184. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_editor.py +0 -0
  185. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_input.py +0 -0
  186. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/graph_plot_js.py +0 -0
  187. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/hypergraph_generators.py +0 -0
  188. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/independent_sets.pxd +0 -0
  189. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/independent_sets.pyx +0 -0
  190. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/isgci.py +0 -0
  191. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/lovasz_theta.py +0 -0
  192. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/matching.py +0 -0
  193. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/partial_cube.py +0 -0
  194. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/pq_trees.py +0 -0
  195. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/print_graphs.py +0 -0
  196. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/schnyder.py +0 -0
  197. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/spanning_tree.pyx +0 -0
  198. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/traversals.pxd +0 -0
  199. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/trees.pxd +0 -0
  200. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/trees.pyx +0 -0
  201. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/graphs/views.pyx +0 -0
  202. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/groups/all__sagemath_graphs.py +0 -0
  203. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/groups/perm_gps/all__sagemath_graphs.py +0 -0
  204. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/groups/perm_gps/partn_ref/all__sagemath_graphs.py +0 -0
  205. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/groups/perm_gps/partn_ref/refinement_graphs.pxd +0 -0
  206. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/groups/perm_gps/partn_ref/refinement_graphs.pyx +0 -0
  207. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/knots/all.py +0 -0
  208. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/knots/gauss_code.py +0 -0
  209. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/knots/knot.py +0 -0
  210. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/knots/knot_table.py +0 -0
  211. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/sandpiles/all.py +0 -0
  212. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/sandpiles/examples.py +0 -0
  213. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/sandpiles/sandpile.py +0 -0
  214. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/all.py +0 -0
  215. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/cell_complex.py +0 -0
  216. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/filtered_simplicial_complex.py +0 -0
  217. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/moment_angle_complex.py +0 -0
  218. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/simplicial_complex_homset.py +0 -0
  219. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/simplicial_complex_morphism.py +0 -0
  220. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/simplicial_set.py +0 -0
  221. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/simplicial_set_catalog.py +0 -0
  222. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/simplicial_set_constructions.py +0 -0
  223. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/simplicial_set_examples.py +0 -0
  224. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/sage/topology/simplicial_set_morphism.py +0 -0
  225. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/setup.cfg +0 -0
  226. {passagemath_graphs-10.5.43 → passagemath_graphs-10.6.1rc2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: passagemath-graphs
3
- Version: 10.5.43
3
+ Version: 10.6.1rc2
4
4
  Summary: passagemath: Graphs, posets, hypergraphs, designs, abstract complexes, combinatorial polyhedra, abelian sandpiles, quivers
5
5
  Author-email: The Sage Developers <sage-support@googlegroups.com>
6
6
  Maintainer: Matthias Köppe, passagemath contributors
@@ -19,20 +19,19 @@ Classifier: Intended Audience :: Science/Research
19
19
  Classifier: Operating System :: POSIX
20
20
  Classifier: Operating System :: MacOS :: MacOS X
21
21
  Classifier: Programming Language :: Python :: 3 :: Only
22
- Classifier: Programming Language :: Python :: 3.9
23
22
  Classifier: Programming Language :: Python :: 3.10
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
27
26
  Classifier: Programming Language :: Python :: Implementation :: CPython
28
27
  Classifier: Topic :: Scientific/Engineering :: Mathematics
29
- Requires-Python: <3.14,>=3.9
28
+ Requires-Python: <3.14,>=3.10
30
29
  Description-Content-Type: text/x-rst
31
30
  Requires-Dist: gmpy2~=2.1.b999
32
31
  Requires-Dist: cysignals!=1.12.0,>=1.11.2
33
32
  Requires-Dist: memory_allocator
34
- Requires-Dist: passagemath-categories~=10.5.43.0
35
- Requires-Dist: passagemath-environment~=10.5.43.0
33
+ Requires-Dist: passagemath-categories==10.6.1rc2
34
+ Requires-Dist: passagemath-environment==10.6.1rc2
36
35
  Provides-Extra: test
37
36
  Requires-Dist: passagemath-repl; extra == "test"
38
37
  Provides-Extra: benzene
@@ -133,7 +132,7 @@ passagemath attempts to support all major Linux distributions and recent version
133
132
  macOS. Use on Windows currently requires the use of Windows Subsystem for Linux or
134
133
  virtualization.
135
134
 
136
- Complete sets of binary wheels are provided on PyPI for Python versions 3.9.x-3.12.x.
135
+ Complete sets of binary wheels are provided on PyPI for Python versions 3.10.x-3.13.x.
137
136
  Python 3.13.x is also supported, but some third-party packages are still missing wheels,
138
137
  so compilation from source is triggered for those.
139
138
 
@@ -39,7 +39,7 @@ passagemath attempts to support all major Linux distributions and recent version
39
39
  macOS. Use on Windows currently requires the use of Windows Subsystem for Linux or
40
40
  virtualization.
41
41
 
42
- Complete sets of binary wheels are provided on PyPI for Python versions 3.9.x-3.12.x.
42
+ Complete sets of binary wheels are provided on PyPI for Python versions 3.10.x-3.13.x.
43
43
  Python 3.13.x is also supported, but some third-party packages are still missing wheels,
44
44
  so compilation from source is triggered for those.
45
45
 
@@ -0,0 +1 @@
1
+ 10.6.1.rc2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: passagemath-graphs
3
- Version: 10.5.43
3
+ Version: 10.6.1rc2
4
4
  Summary: passagemath: Graphs, posets, hypergraphs, designs, abstract complexes, combinatorial polyhedra, abelian sandpiles, quivers
5
5
  Author-email: The Sage Developers <sage-support@googlegroups.com>
6
6
  Maintainer: Matthias Köppe, passagemath contributors
@@ -19,20 +19,19 @@ Classifier: Intended Audience :: Science/Research
19
19
  Classifier: Operating System :: POSIX
20
20
  Classifier: Operating System :: MacOS :: MacOS X
21
21
  Classifier: Programming Language :: Python :: 3 :: Only
22
- Classifier: Programming Language :: Python :: 3.9
23
22
  Classifier: Programming Language :: Python :: 3.10
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
27
26
  Classifier: Programming Language :: Python :: Implementation :: CPython
28
27
  Classifier: Topic :: Scientific/Engineering :: Mathematics
29
- Requires-Python: <3.14,>=3.9
28
+ Requires-Python: <3.14,>=3.10
30
29
  Description-Content-Type: text/x-rst
31
30
  Requires-Dist: gmpy2~=2.1.b999
32
31
  Requires-Dist: cysignals!=1.12.0,>=1.11.2
33
32
  Requires-Dist: memory_allocator
34
- Requires-Dist: passagemath-categories~=10.5.43.0
35
- Requires-Dist: passagemath-environment~=10.5.43.0
33
+ Requires-Dist: passagemath-categories==10.6.1rc2
34
+ Requires-Dist: passagemath-environment==10.6.1rc2
36
35
  Provides-Extra: test
37
36
  Requires-Dist: passagemath-repl; extra == "test"
38
37
  Provides-Extra: benzene
@@ -133,7 +132,7 @@ passagemath attempts to support all major Linux distributions and recent version
133
132
  macOS. Use on Windows currently requires the use of Windows Subsystem for Linux or
134
133
  virtualization.
135
134
 
136
- Complete sets of binary wheels are provided on PyPI for Python versions 3.9.x-3.12.x.
135
+ Complete sets of binary wheels are provided on PyPI for Python versions 3.10.x-3.13.x.
137
136
  Python 3.13.x is also supported, but some third-party packages are still missing wheels,
138
137
  so compilation from source is triggered for those.
139
138
 
@@ -56,12 +56,14 @@ sage/combinat/designs/steiner_quadruple_systems.py
56
56
  sage/combinat/designs/subhypergraph_search.pyx
57
57
  sage/combinat/designs/twographs.py
58
58
  sage/combinat/posets/all.py
59
+ sage/combinat/posets/bubble_shuffle.py
59
60
  sage/combinat/posets/cartesian_product.py
60
61
  sage/combinat/posets/d_complete.py
61
62
  sage/combinat/posets/elements.py
62
63
  sage/combinat/posets/forest.py
63
64
  sage/combinat/posets/hasse_cython.pyx
64
65
  sage/combinat/posets/hasse_diagram.py
66
+ sage/combinat/posets/hochschild_lattice.py
65
67
  sage/combinat/posets/incidence_algebras.py
66
68
  sage/combinat/posets/lattices.py
67
69
  sage/combinat/posets/linear_extension_iterator.pyx
@@ -1,8 +1,8 @@
1
1
  gmpy2~=2.1.b999
2
2
  cysignals!=1.12.0,>=1.11.2
3
3
  memory_allocator
4
- passagemath-categories~=10.5.43.0
5
- passagemath-environment~=10.5.43.0
4
+ passagemath-categories==10.6.1rc2
5
+ passagemath-environment==10.6.1rc2
6
6
 
7
7
  [benzene]
8
8
  passagemath-benzene
@@ -3,10 +3,10 @@
3
3
  # Minimum requirements for the build system to execute.
4
4
  requires = [
5
5
  'setuptools >= 77.0.0',
6
- 'passagemath-setup ~= 10.5.43.0',
6
+ 'passagemath-setup == 10.6.1rc2',
7
7
  'pkgconfig',
8
- 'passagemath-environment ~= 10.5.43.0',
9
- 'passagemath-categories ~= 10.5.43.0',
8
+ 'passagemath-environment == 10.6.1rc2',
9
+ 'passagemath-categories == 10.6.1rc2',
10
10
  'cython >=3.0, != 3.0.3, <4.0', 'cython >=3.0.8,<3.1.0',
11
11
  'gmpy2 ~=2.1.b999',
12
12
  'cysignals >=1.11.2, != 1.12.0',
@@ -21,8 +21,8 @@ dependencies = [
21
21
  'gmpy2 ~=2.1.b999',
22
22
  'cysignals >=1.11.2, != 1.12.0',
23
23
  'memory_allocator',
24
- 'passagemath-categories ~= 10.5.43.0',
25
- 'passagemath-environment ~= 10.5.43.0',
24
+ 'passagemath-categories == 10.6.1rc2',
25
+ 'passagemath-environment == 10.6.1rc2',
26
26
  ]
27
27
  dynamic = ["version"]
28
28
  license = "GPL-2.0-or-later"
@@ -38,7 +38,6 @@ classifiers = [
38
38
  "Operating System :: POSIX",
39
39
  "Operating System :: MacOS :: MacOS X",
40
40
  "Programming Language :: Python :: 3 :: Only",
41
- "Programming Language :: Python :: 3.9",
42
41
  "Programming Language :: Python :: 3.10",
43
42
  "Programming Language :: Python :: 3.11",
44
43
  "Programming Language :: Python :: 3.12",
@@ -46,7 +45,7 @@ classifiers = [
46
45
  "Programming Language :: Python :: Implementation :: CPython",
47
46
  "Topic :: Scientific/Engineering :: Mathematics",
48
47
  ]
49
- requires-python = ">=3.9, <3.14"
48
+ requires-python = ">=3.10, <3.14"
50
49
 
51
50
  [project.urls]
52
51
  "release notes" = "https://github.com/passagemath/passagemath/releases"
@@ -277,8 +277,7 @@ class AbstractTree:
277
277
  while stack:
278
278
  node = stack.pop()
279
279
  action(node)
280
- for i in range(len(node)):
281
- subtree = node[-i - 1]
280
+ for subtree in reversed(node):
282
281
  if not subtree.is_empty():
283
282
  stack.append(subtree)
284
283
 
@@ -640,8 +639,7 @@ class AbstractTree:
640
639
  # subtrees, and should not be exploded again, but instead
641
640
  # should be manipulated and removed from the stack.
642
641
  stack.append(None)
643
- for i in range(len(node)):
644
- subtree = node[-i - 1]
642
+ for subtree in reversed(node):
645
643
  if not subtree.is_empty():
646
644
  stack.append(subtree)
647
645
  else:
@@ -649,6 +647,114 @@ class AbstractTree:
649
647
  node = stack.pop()
650
648
  action(node)
651
649
 
650
+ def contour_traversal(self, first_action=None, middle_action=None, final_action=None, leaf_action=None):
651
+ r"""
652
+ Run the counterclockwise contour traversal algorithm (iterative
653
+ implementation) and subject every node encountered
654
+ to some procedure ``first_action``, ``middle_action`` or ``final_action`` each time it reaches it.
655
+
656
+ ALGORITHM:
657
+
658
+ - if the root is a leaf, apply `leaf_action`
659
+ - else
660
+ - apply `first_action` to the root
661
+ - iteratively apply `middle_action` to the root and traverse each subtree
662
+ from the leftmost one to the rightmost one
663
+ - apply `final_action` to the root
664
+
665
+ INPUT:
666
+
667
+ - ``first_action`` -- (optional) a function which takes a node as
668
+ input, and does something the first time it is reached during exploration
669
+
670
+ - ``middle_action`` -- (optional) a function which takes a node as
671
+ input, and does something each time it explore one of its children
672
+
673
+ - ``final_action`` -- (optional) a function which takes a node as
674
+ input, and does something the last time it is reached during exploration
675
+
676
+ - ``leaf_action`` -- (optional) a function which takes a leaf as
677
+ input, and does something when it is reached during exploration.
678
+
679
+ OUTPUT:
680
+
681
+ ``None``. (This is *not* an iterator.)
682
+
683
+ TESTS::
684
+
685
+ sage: l = []
686
+ sage: t = OrderedTree([[],[[],[],]]).canonical_labelling()
687
+ sage: t
688
+ 1[2[], 3[4[], 5[]]]
689
+ sage: t.contour_traversal(lambda node: (l.append(node.label()),l.append('a')),
690
+ ....: lambda node: (l.append(node.label()),l.append('b')),
691
+ ....: lambda node: (l.append(node.label()),l.append('c')),
692
+ ....: lambda node: (l.append(node.label())))
693
+ sage: l
694
+ [1, 'a', 1, 'b', 2, 1, 'b', 3, 'a', 3, 'b', 4, 3, 'b', 5, 3, 'c', 1, 'c']
695
+
696
+ sage: l = []
697
+ sage: b = BinaryTree([[None,[]],[[[],[]],[]]]).canonical_labelling()
698
+ sage: b
699
+ 3[1[., 2[., .]], 7[5[4[., .], 6[., .]], 8[., .]]]
700
+ sage: b.contour_traversal(lambda node: l.append(node.label()),
701
+ ....: lambda node: l.append(node.label()),
702
+ ....: lambda node: l.append(node.label()),
703
+ ....: None)
704
+ sage: l
705
+ [3, 3, 1, 1, 1, 2, 2, 2, 2, 1, 3, 7, 7, 5, 5, 4, 4, 4, 4, 5, 6, 6, 6, 6, 5, 7, 8, 8, 8, 8, 7, 3]
706
+
707
+ The following test checks that things do not go wrong if some among
708
+ the descendants of the tree are equal or even identical::
709
+
710
+ sage: u = BinaryTree(None)
711
+ sage: v = BinaryTree([u, u])
712
+ sage: w = BinaryTree([v, v])
713
+ sage: t = BinaryTree([w, w])
714
+ sage: t.node_number()
715
+ 7
716
+ sage: l = []
717
+ sage: t.contour_traversal(first_action = lambda node: l.append(0))
718
+ sage: len(l)
719
+ 7
720
+ """
721
+ if first_action is None:
722
+ def first_action(x):
723
+ return
724
+ if middle_action is None:
725
+ def middle_action(x):
726
+ return
727
+ if final_action is None:
728
+ def final_action(x):
729
+ return
730
+ if leaf_action is None:
731
+ def leaf_action(x):
732
+ return
733
+ stack = []
734
+ stack.append(self)
735
+ corners = [0, 0]
736
+ while stack:
737
+ node = stack.pop()
738
+ if not node:
739
+ leaf_action(node)
740
+ corners.pop()
741
+ corners[-1] += 1
742
+ elif not corners[-1]:
743
+ first_action(node)
744
+ middle_action(node)
745
+ stack.append(node)
746
+ stack.append(node[0])
747
+ corners.append(0)
748
+ elif corners[-1] == len(node):
749
+ final_action(node)
750
+ corners.pop()
751
+ corners[-1] += 1
752
+ else:
753
+ middle_action(node)
754
+ stack.append(node)
755
+ stack.append(node[corners[-1]])
756
+ corners.append(0)
757
+
652
758
  def breadth_first_order_traversal(self, action=None):
653
759
  r"""
654
760
  Run the breadth-first post-order traversal algorithm
@@ -824,12 +930,41 @@ class AbstractTree:
824
930
  True
825
931
  sage: [T.node_number_at_depth(i) for i in range(3)]
826
932
  [0, 0, 0]
933
+
934
+ Check that we do not hit a recursion limit::
935
+
936
+ sage: T = OrderedTree([])
937
+ sage: for _ in range(9999):
938
+ ....: T = OrderedTree([T])
939
+ sage: T.node_number_at_depth(2000)
940
+ 1
827
941
  """
828
942
  if self.is_empty():
829
- return Integer(0)
830
- if depth == 0:
831
- return Integer(1)
832
- return sum(son.node_number_at_depth(depth - 1) for son in self)
943
+ return 0
944
+ m = 0
945
+
946
+ def fr_action(node):
947
+ nonlocal m, depths, depth
948
+ if depths[-1] == depth:
949
+ m += 1
950
+
951
+ def m_action(node):
952
+ nonlocal depths
953
+ depths.append(depths[-1] + 1)
954
+
955
+ def fn_action(node):
956
+ nonlocal depths
957
+ depths.pop()
958
+
959
+ def lf_action(node):
960
+ nonlocal m, depths, depth
961
+ if depths[-1] == depth:
962
+ m += 1
963
+ depths.pop()
964
+
965
+ depths = [0]
966
+ self.contour_traversal(fr_action, m_action, fn_action, lf_action)
967
+ return Integer(m)
833
968
 
834
969
  def paths_to_the_right(self, path):
835
970
  r"""
@@ -1053,11 +1188,25 @@ class AbstractTree:
1053
1188
  2
1054
1189
  sage: BinaryTree([[None, [[], []]], None]).node_number()
1055
1190
  5
1191
+
1192
+ TESTS:
1193
+
1194
+ Check that we do not hit a recursion limit::
1195
+
1196
+ sage: T = OrderedTree([])
1197
+ sage: for _ in range(9999):
1198
+ ....: T = OrderedTree([T])
1199
+ sage: T.node_number()
1200
+ 10000
1056
1201
  """
1057
- if self.is_empty():
1058
- return Integer(0)
1059
- else:
1060
- return sum((i.node_number() for i in self), Integer(1))
1202
+ count = 0
1203
+
1204
+ def incr(node):
1205
+ nonlocal count
1206
+ count += 1
1207
+
1208
+ self.iterative_pre_order_traversal(incr)
1209
+ return Integer(count)
1061
1210
 
1062
1211
  def depth(self):
1063
1212
  """
@@ -1080,11 +1229,33 @@ class AbstractTree:
1080
1229
  0
1081
1230
  sage: BinaryTree([[],[[],[]]]).depth()
1082
1231
  3
1232
+
1233
+ TESTS:
1234
+
1235
+ Check that we do not hit a recursion limit::
1236
+
1237
+ sage: T = OrderedTree([])
1238
+ sage: for _ in range(9999):
1239
+ ....: T = OrderedTree([T])
1240
+ sage: T.depth()
1241
+ 10000
1083
1242
  """
1084
- if self:
1085
- return Integer(1 + max(i.depth() for i in self))
1086
- else:
1087
- return Integer(0 if self.is_empty() else 1)
1243
+ if self.is_empty():
1244
+ return 0
1245
+ m = []
1246
+
1247
+ def action(node):
1248
+ nonlocal m
1249
+ if node.is_empty():
1250
+ m.append(-1)
1251
+ elif not bool(node):
1252
+ m.append(0)
1253
+ else:
1254
+ mx = max(m.pop() for _ in node)
1255
+ m.append(mx + 1)
1256
+
1257
+ self.contour_traversal(final_action=action, leaf_action=action)
1258
+ return Integer(m[0] + 1)
1088
1259
 
1089
1260
  def _ascii_art_(self):
1090
1261
  r"""
@@ -1308,7 +1479,7 @@ class AbstractTree:
1308
1479
  while l_repr:
1309
1480
  tr = l_repr.pop(0)
1310
1481
  acc += UnicodeArt([" "]) + tr
1311
- if not len(l_repr):
1482
+ if not l_repr:
1312
1483
  lf_sep += "─" * (tr._root) + "╮"
1313
1484
  ls_sep += " " * (tr._root) + "│"
1314
1485
  else:
@@ -1,8 +1,7 @@
1
1
  # sage_setup: distribution = sagemath-graphs
2
2
  r"""
3
- Interactive window for cluster seed mutations
3
+ Interactive display of quivers
4
4
  """
5
-
6
5
  import ipywidgets as widgets
7
6
  from sage.misc.latex import latex
8
7
  from sage.repl.rich_output.pretty_print import pretty_print