sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.22k stars 425 forks source link

Inherit __richcmp__ and __cmp__ in subclasses of Element #18329

Closed jdemeyer closed 9 years ago

jdemeyer commented 9 years ago

Use the __typeinit__ mechanism introduced by #18330 to inherit __cmp__ and __richcmp__ even if those would not be inherited by default.

Upstream patch added: https://github.com/cython/cython/pull/383

Upstream: Fixed upstream, but not in a stable release.

CC: @jpflori

Component: coercion

Author: Jeroen Demeyer

Branch: f6058e7

Reviewer: Jean-Pierre Flori

Issue created by migration from https://trac.sagemath.org/ticket/18329

jdemeyer commented 9 years ago

Branch: u/jdemeyer/inherit_richcompare

jdemeyer commented 9 years ago

Dependencies: #17890, #18321, #18322, #18330

jdemeyer commented 9 years ago

Commit: 3bb7361

jdemeyer commented 9 years ago

Last 10 new commits:

1ad339bImplement _rich_to_bool as inline function instead of member function
17bd067Merge tag '6.7.beta2' into t/17890/ticket/17890
313a400Optimize rich_to_bool_sgn
629f6a5Improve comparisons for permutation groups
0d1e049Improve _richcmp and documentation
39273f1Fix doctest formatting
04570b3Fix bad doctest in etaproducts
3976f2cAdd pointers for special uses of __richcmp__
d977150Merge remote-tracking branch 'origin/u/jdemeyer/ticket/17890' into u/jdemeyer/don_t_cimport_type
3bb7361Add hook for PyType_Ready
jdemeyer commented 9 years ago

Changed branch from u/jdemeyer/inherit_richcompare to none

jdemeyer commented 9 years ago

Changed dependencies from #17890, #18321, #18322, #18330 to #18321, #18322, #18330

jdemeyer commented 9 years ago

Description changed:

--- 
+++ 
@@ -1 +1 @@
-
+Use the `__typeinit__` mechanism introduced by #18330 to inherit `__cmp__` and `__richcmp__` even if those would not be inherited by default.
jdemeyer commented 9 years ago

Changed commit from 3bb7361 to none

jdemeyer commented 9 years ago

Branch: u/jdemeyer/ticket/18329

jdemeyer commented 9 years ago

New commits:

5d4b11eDon't cimport "type"
bb98fd0_cmp should try `_richcmp_` if `_cmp_` failed
30fe462Cython metaclass support
d4ba872Add check for tp_basicsize
3ec2842Revert changes to coerce_dict
2698d89Merge commit '5d4b11e4ed2b4053290386b87f666c88bb606782'; commit 'bb98fd07ee04b18a4ec329aeb2bf061dab4f7d6d'; commit '3ec2842529f4aa7763b2db0a7c6556c5bb437c14' into ticket/18329
db60d48Meteclass for inheriting comparison functions
jdemeyer commented 9 years ago

Commit: db60d48

jdemeyer commented 9 years ago

Changed dependencies from #18321, #18322, #18330 to #18321, #18322, #18330, #18380

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

4073a17Meteclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from db60d48 to 4073a17

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

8f60acbAdd class CombinatorialElement
d826520Use LazyFormat for `_cmp_` exception
ac9ca1cUpdate comment
6e6870bAdd some needed casts
bc4d957Remove TypeInitMetaclass, add some documentation
70908cbComment
19f3337Merge commit '5d4b11e4ed2b4053290386b87f666c88bb606782'; commit 'ac9ca1c83737253b380a79cde33b4908a51d0ead'; commit '70908cbbaa5b4ec6c6f5dc7332d0f7c1379b511e' into HEAD
3481133Metaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from 4073a17 to 3481133

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from 3481133 to 6c712ef

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

6c712efMetaclass for inheriting comparison functions
jdemeyer commented 9 years ago

Changed dependencies from #18321, #18322, #18330, #18380 to #18321, #18322, #18330, #18380, #18387

jdemeyer commented 9 years ago
comment:10

Almost there :-)

----------------------------------------------------------------------
sage -t src/sage/modular/modform_hecketriangle/hecke_triangle_group_element.py  # 693 doctests failed
sage -t src/sage/combinat/root_system/root_lattice_realizations.py  # 1 doctest failed
sage -t src/sage/graphs/generic_graph.py  # 2 doctests failed
sage -t src/sage/modular/modform_hecketriangle/readme.py  # 364 doctests failed
sage -t src/sage/modular/modform_hecketriangle/abstract_space.py  # 558 doctests failed
sage -t src/sage/combinat/k_tableau.py  # 27 doctests failed
sage -t src/sage/modular/modform_hecketriangle/graded_ring_element.py  # 593 doctests failed
sage -t src/sage/combinat/designs/database.py  # 6 doctests failed
sage -t src/sage/combinat/skew_tableau.py  # 14 doctests failed
sage -t src/sage/geometry/polyhedron/base.py  # 1 doctest failed
sage -t src/sage/combinat/partition.py  # 22 doctests failed
sage -t src/sage/schemes/projective/projective_morphism.py  # 4 doctests failed
sage -t src/sage/schemes/elliptic_curves/isogeny_small_degree.py  # 2 doctests failed
sage -t src/sage/modular/modform/element.py  # 23 doctests failed
sage -t src/sage/combinat/ncsf_qsym/ncsf.py  # 7 doctests failed
sage -t src/sage/schemes/toric/chow_group.py  # 3 doctests failed
sage -t src/sage/algebras/steenrod/steenrod_algebra.py  # 7 doctests failed
sage -t src/sage/modular/abvar/abvar.py  # 6 doctests failed
sage -t src/sage/combinat/sf/sfa.py  # 1 doctest failed
sage -t src/sage/combinat/set_partition.py  # 5 doctests failed
sage -t src/sage/modular/local_comp/type_space.py  # 50 doctests failed
sage -t src/sage/combinat/posets/posets.py  # 53 doctests failed
sage -t src/sage/combinat/root_system/weight_space.py  # 3 doctests failed
sage -t src/sage/combinat/sf/k_dual.py  # 3 doctests failed
sage -t src/sage/modular/abvar/homspace.py  # 1 doctest failed
sage -t src/sage/matrix/matrix2.pyx  # 5 doctests failed
sage -t src/sage/modular/modform_hecketriangle/hecke_triangle_groups.py  # 224 doctests failed
sage -t src/sage/schemes/toric/variety.py  # 2 doctests failed
sage -t src/sage/categories/semigroups.py  # 1 doctest failed
sage -t src/sage/algebras/iwahori_hecke_algebra.py  # 2 doctests failed
sage -t src/sage/schemes/elliptic_curves/ell_point.py  # 70 doctests failed
sage -t src/sage/modular/hecke/submodule.py  # 2 doctests failed
sage -t src/sage/doctest/forker.py  # 1 doctest failed
sage -t src/sage/modular/local_comp/local_comp.py  # 43 doctests failed
sage -t src/sage/combinat/ncsym/ncsym.py  # 7 doctests failed
sage -t src/sage/categories/pushout.py  # 3 doctests failed
sage -t src/sage/modules/free_module_element.pyx  # 4 doctests failed
sage -t src/sage/combinat/ncsf_qsym/qsym.py  # 4 doctests failed
sage -t src/sage/combinat/rigged_configurations/kr_tableaux.py  # 9 doctests failed
sage -t src/sage/schemes/elliptic_curves/ell_curve_isogeny.py  # 4 doctests failed
sage -t src/sage/modular/modform_hecketriangle/subspace.py  # 100 doctests failed
sage -t src/sage/combinat/tableau_tuple.py  # 34 doctests failed
sage -t src/sage/schemes/toric/morphism.py  # 1 doctest failed
sage -t src/sage/combinat/descent_algebra.py  # 4 doctests failed
sage -t src/sage/combinat/tableau.py  # 23 doctests failed
sage -t src/sage/combinat/crystals/affine_factorization.py  # 1 doctest failed
sage -t src/sage/modular/modform_hecketriangle/space.py  # 203 doctests failed
sage -t src/sage/rings/polynomial/polynomial_element.pyx  # 21 doctests failed
sage -t src/sage/combinat/designs/orthogonal_arrays_build_recursive.py  # 12 doctests failed
sage -t src/sage/coding/linear_code.py  # 20 doctests failed
sage -t src/sage/combinat/permutation.py  # 26 doctests failed
sage -t src/sage/tests/french_book/numbertheory.py  # 1 doctest failed
sage -t src/sage/algebras/hall_algebra.py  # 4 doctests failed
sage -t src/sage/structure/parent.pyx  # 5 doctests failed
sage -t src/sage/geometry/hyperplane_arrangement/arrangement.py  # 3 doctests failed
sage -t src/sage/categories/finite_dimensional_algebras_with_basis.py  # 7 doctests failed
sage -t src/sage/modular/modsym/ambient.py  # 9 doctests failed
sage -t src/sage/combinat/root_system/integrable_representations.py  # 1 doctest failed
sage -t src/sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py  # 34 doctests failed
sage -t src/sage/combinat/crystals/kirillov_reshetikhin.py  # 2 doctests failed
sage -t src/sage/combinat/sf/new_kschur.py  # 4 doctests failed
sage -t src/sage/combinat/symmetric_group_algebra.py  # 7 doctests failed
sage -t src/sage/combinat/crystals/littelmann_path.py  # 2 doctests failed
sage -t src/sage/combinat/root_system/type_relabel.py  # 2 doctests failed
sage -t src/sage/combinat/root_system/ambient_space.py  # 1 doctest failed
sage -t src/sage/combinat/skew_partition.py  # 7 doctests failed
sage -t src/sage/combinat/root_system/type_affine.py  # 3 doctests failed
sage -t src/sage/categories/coxeter_groups.py  # 1 doctest failed
sage -t src/sage/combinat/rigged_configurations/rigged_configuration_element.py  # 7 doctests failed
sage -t src/sage/combinat/quickref.py  # 1 doctest failed
sage -t src/sage/combinat/sf/jack.py  # 7 doctests failed
sage -t src/sage/combinat/partition_tuple.py  # 7 doctests failed
sage -t src/sage/combinat/designs/difference_family.py  # 5 doctests failed
sage -t src/sage/groups/matrix_gps/finitely_generated.py  # 1 doctest failed
sage -t src/sage/modular/local_comp/smoothchar.py  # 8 doctests failed
sage -t src/sage/combinat/root_system/type_marked.py  # 2 doctests failed
sage -t src/sage/schemes/elliptic_curves/ell_generic.py  # 8 doctests failed
sage -t src/sage/geometry/triangulation/point_configuration.py  # 1 doctest failed
sage -t src/sage/combinat/sf/macdonald.py  # 3 doctests failed
sage -t src/sage/combinat/yang_baxter_graph.py  # 1 doctest failed
sage -t src/sage/groups/matrix_gps/linear.py  # 1 doctest failed
sage -t src/sage/combinat/alternating_sign_matrix.py  # 3 doctests failed
sage -t src/sage/combinat/root_system/weyl_characters.py  # 3 doctests failed
sage -t src/sage/algebras/nil_coxeter_algebra.py  # 2 doctests failed
sage -t src/sage/combinat/rigged_configurations/rigged_configurations.py  # 3 doctests failed
sage -t src/sage/schemes/elliptic_curves/ell_finite_field.py  # 23 doctests failed
sage -t src/sage/combinat/root_system/associahedron.py  # 1 doctest failed
sage -t src/sage/modular/modform_hecketriangle/abstract_ring.py  # 513 doctests failed
sage -t src/sage/modular/modform_hecketriangle/element.py  # 72 doctests failed
sage -t src/sage/schemes/generic/algebraic_scheme.py  # 2 doctests failed
sage -t src/sage/combinat/rigged_configurations/kleber_tree.py  # 1 doctest failed
sage -t src/sage/geometry/fan_morphism.py  # 2 doctests failed
sage -t src/sage/matrix/matrix_mod2e_dense.pyx  # 2 doctests failed
sage -t src/sage/combinat/binary_tree.py  # 15 doctests failed
sage -t src/sage/geometry/toric_lattice.py  # 2 doctests failed
sage -t src/sage/modular/quatalg/brandt.py  # 2 doctests failed
sage -t src/sage/coding/code_constructions.py  # 57 doctests failed
sage -t src/sage/coding/codecan/autgroup_can_label.pyx  # 45 doctests failed
sage -t src/sage/categories/primer.py  # 1 doctest failed
sage -t src/sage/combinat/sf/sf.py  # 1 doctest failed
sage -t src/sage/modular/hecke/ambient_module.py  # 1 doctest failed
sage -t src/sage/combinat/affine_permutation.py  # 3 doctests failed
sage -t src/sage/modular/hecke/module.py  # 7 doctests failed
sage -t src/sage/categories/map.pyx  # 4 doctests failed
sage -t src/sage/combinat/crystals/tensor_product.py  # 11 doctests failed
sage -t src/sage/doctest/control.py  # 1 doctest failed
sage -t src/sage/combinat/perfect_matching.py  # 5 doctests failed
sage -t src/sage/combinat/integer_vectors_mod_permgroup.py  # 6 doctests failed
sage -t src/sage/combinat/root_system/root_space.py  # 1 doctest failed
sage -t src/sage/combinat/sf/schur.py  # 2 doctests failed
sage -t src/sage/algebras/commutative_dga.py  # 389 doctests failed
sage -t src/sage/combinat/sf/hall_littlewood.py  # 2 doctests failed
sage -t src/sage/combinat/crystals/alcove_path.py  # 3 doctests failed
sage -t src/sage/sets/set_from_iterator.py  # 1 doctest failed
sage -t src/sage/geometry/hyperbolic_space/hyperbolic_point.py  # 1 doctest failed
sage -t src/doc/en/thematic_tutorials/coding_theory.rst  # 19 doctests failed
sage -t src/sage/combinat/root_system/root_system.py  # 6 doctests failed
sage -t src/sage/modular/abvar/abvar_newform.py  # 1 doctest failed
sage -t src/sage/quivers/representation.py  # 7 doctests failed
sage -t src/sage/combinat/rigged_configurations/tensor_product_kr_tableaux_element.py  # 1 doctest failed
sage -t src/sage/rings/algebraic_closure_finite_field.py  # 54 doctests failed
sage -t src/sage/combinat/crystals/generalized_young_walls.py  # 2 doctests failed
sage -t src/sage/combinat/diagram_algebras.py  # 5 doctests failed
sage -t src/sage/rings/polynomial/multi_polynomial_libsingular.pyx  # 2 doctests failed
sage -t src/sage/combinat/ncsf_qsym/generic_basis_code.py  # 1 doctest failed
sage -t src/sage/misc/c3_controlled.pyx  # 9 doctests failed
sage -t src/sage/modular/modsym/subspace.py  # 2 doctests failed
sage -t src/sage/modular/modform/cuspidal_submodule.py  # 1 doctest failed
sage -t src/sage/combinat/rigged_configurations/rc_infinity.py  # 3 doctests failed
sage -t src/sage/rings/finite_rings/integer_mod_ring.py  # 1 doctest failed
sage -t src/sage/algebras/schur_algebra.py  # 2 doctests failed
sage -t src/sage/categories/homset.py  # 2 doctests failed
sage -t src/sage/modular/abvar/finite_subgroup.py  # 2 doctests failed
sage -t src/sage/algebras/free_algebra.py  # 10 doctests failed
sage -t src/sage/combinat/ncsym/dual.py  # 2 doctests failed
sage -t src/sage/monoids/automatic_semigroup.py  # 17 doctests failed
sage -t src/sage/groups/abelian_gps/abelian_group.py  # 1 doctest failed
sage -t src/sage/rings/polynomial/polynomial_quotient_ring.py  # 6 doctests failed
sage -t src/sage/geometry/hyperbolic_space/hyperbolic_model.py  # 8 doctests failed
sage -t src/sage/combinat/composition_tableau.py  # 6 doctests failed
sage -t src/sage/tensor/modules/free_module_tensor.py  # 2 doctests failed
sage -t src/doc/en/thematic_tutorials/algebraic_combinatorics/tsetlin_library.rst  # 11 doctests failed
sage -t src/sage/coding/codecan/codecan.pyx  # 33 doctests failed
sage -t src/sage/combinat/dyck_word.py  # 15 doctests failed
sage -t src/sage/schemes/elliptic_curves/ell_field.py  # 9 doctests failed
sage -t src/sage/modular/modsym/boundary.py  # 5 doctests failed
sage -t src/sage/categories/highest_weight_crystals.py  # 1 doctest failed
sage -t src/sage/modular/abvar/homology.py  # 6 doctests failed
sage -t src/sage/combinat/crystals/monomial_crystals.py  # 3 doctests failed
sage -t src/sage/combinat/free_module.py  # 5 doctests failed
sage -t src/sage/combinat/sf/witt.py  # 2 doctests failed
sage -t src/sage/combinat/set_partition_ordered.py  # 3 doctests failed
sage -t src/sage/groups/generic.py  # 8 doctests failed
sage -t src/sage/modular/abvar/cuspidal_subgroup.py  # 2 doctests failed
sage -t src/sage/schemes/projective/endPN_automorphism_group.py  # 12 doctests failed
sage -t src/sage/algebras/affine_nil_temperley_lieb.py  # 1 doctest failed
sage -t src/sage/combinat/sf/orthotriang.py  # 1 doctest failed
sage -t src/sage/modular/hecke/hecke_operator.py  # 1 doctest failed
sage -t src/sage/rings/finite_rings/finite_field_base.pyx  # 17 doctests failed
sage -t src/sage/combinat/ribbon_tableau.py  # 7 doctests failed
sage -t src/sage/combinat/derangements.py  # 4 doctests failed
sage -t src/sage/combinat/six_vertex_model.py  # 2 doctests failed
sage -t src/sage/geometry/hyperplane_arrangement/hyperplane.py  # 1 doctest failed
sage -t src/sage/categories/classical_crystals.py  # 3 doctests failed
sage -t src/sage/combinat/posets/poset_examples.py  # 1 doctest failed
sage -t src/sage/combinat/crystals/fast_crystals.py  # 6 doctests failed
sage -t src/sage/categories/examples/with_realizations.py  # 4 doctests failed
sage -t src/sage/modular/modform_hecketriangle/functors.py  # 121 doctests failed
sage -t src/sage/matrix/matrix0.pyx  # 1 doctest failed
sage -t src/sage/sets/disjoint_union_enumerated_sets.py  # 6 doctests failed
sage -t src/sage/categories/sets_cat.py  # 1 doctest failed
sage -t src/sage/combinat/gelfand_tsetlin_patterns.py  # 6 doctests failed
sage -t src/sage/combinat/composition.py  # 6 doctests failed
sage -t src/sage/modules/fg_pid/fgp_morphism.py  # 3 doctests failed
sage -t src/sage/combinat/ribbon_shaped_tableau.py  # 5 doctests failed
sage -t src/sage/rings/finite_rings/conway_polynomials.py  # 17 doctests failed
sage -t src/sage/combinat/ordered_tree.py  # 3 doctests failed
sage -t src/sage/categories/crystals.py  # 1 doctest failed
sage -t src/sage/groups/perm_gps/symgp_conjugacy_class.py  # 4 doctests failed
sage -t src/sage/schemes/plane_conics/con_field.py  # 1 doctest failed
sage -t src/sage/rings/polynomial/polynomial_ring.py  # 1 doctest failed
sage -t src/sage/homology/chain_complex.py  # 2 doctests failed
sage -t src/sage/combinat/root_system/type_F.py  # 1 doctest failed
sage -t src/sage/rings/universal_cyclotomic_field/universal_cyclotomic_field.py  # 2 doctests failed
sage -t src/sage/rings/morphism.pyx  # 19 doctests failed
sage -t src/sage/categories/modules_with_basis.py  # 2 doctests failed
sage -t src/sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py  # 1 doctest failed
sage -t src/sage/rings/polynomial/multi_polynomial.pyx  # 7 doctests failed
sage -t src/sage/algebras/clifford_algebra.py  # 3 doctests failed
sage -t src/sage/tensor/modules/tensor_with_indices.py  # 1 doctest failed
sage -t src/sage/tests/french_book/linalg_doctest.py  # 1 doctest failed
sage -t src/sage/combinat/sf/classical.py  # 5 doctests failed
sage -t src/sage/combinat/abstract_tree.py  # 2 doctests failed
sage -t src/sage/combinat/symmetric_group_representations.py  # 6 doctests failed
sage -t src/sage/combinat/root_system/type_G.py  # 1 doctest failed
sage -t src/sage/combinat/sf/dual.py  # 1 doctest failed
sage -t src/sage/schemes/plane_conics/con_finite_field.py  # 1 doctest failed
sage -t src/sage/combinat/similarity_class_type.py  # 4 doctests failed
sage -t src/sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py  # 4 doctests failed
sage -t src/sage/categories/examples/finite_weyl_groups.py  # 1 doctest failed
sage -t src/sage/quivers/path_semigroup.py  # 2 doctests failed
sage -t src/sage/sets/set.py  # 1 doctest failed
sage -t src/sage/schemes/projective/projective_space.py  # 1 doctest failed
sage -t src/sage/groups/additive_abelian/additive_abelian_group.py  # 1 doctest failed
sage -t src/doc/en/thematic_tutorials/explicit_methods_in_number_theory/l_series.rst  # 3 doctests failed
sage -t src/sage/rings/quotient_ring.py  # 1 doctest failed
sage -t src/sage/modular/modform_hecketriangle/constructor.py  # 35 doctests failed
sage -t src/sage/categories/magmas.py  # 1 doctest failed
sage -t src/sage/geometry/linear_expression.py  # 3 doctests failed
sage -t src/sage/schemes/affine/affine_space.py  # 1 doctest failed
sage -t src/sage/combinat/crystals/elementary_crystals.py  # 4 doctests failed
sage -t src/sage/combinat/root_system/type_A.py  # 1 doctest failed
sage -t src/sage/rings/finite_rings/hom_finite_field.pyx  # 37 doctests failed
sage -t src/sage/combinat/sf/monomial.py  # 2 doctests failed
sage -t src/sage/algebras/shuffle_algebra.py  # 2 doctests failed
sage -t src/sage/geometry/polyhedron/backend_field.py  # 2 doctests failed
sage -t src/sage/rings/finite_rings/element_pari_ffelt.pyx  # 11 doctests failed
sage -t src/sage/misc/sage_unittest.py  # 1 doctest failed
sage -t src/sage/schemes/projective/projective_homset.py  # 1 doctest failed
sage -t src/sage/combinat/root_system/type_C.py  # 1 doctest failed
sage -t src/sage/combinat/rigged_configurations/bij_type_B.py  # 2 doctests failed
sage -t src/sage/combinat/core.py  # 3 doctests failed
sage -t src/sage/categories/finite_posets.py  # 46 doctests failed
sage -t src/sage/rings/polynomial/polynomial_quotient_ring_element.py  # 1 doctest failed
sage -t src/sage/combinat/sf/powersum.py  # 2 doctests failed
sage -t src/sage/modular/ssmod/ssmod.py  # 12 doctests failed
sage -t src/sage/rings/finite_rings/element_ext_pari.py  # 6 doctests failed
sage -t src/sage/categories/examples/semigroups.py  # 6 doctests failed
sage -t src/sage/categories/examples/finite_semigroups.py  # 2 doctests failed
sage -t src/sage/combinat/posets/incidence_algebras.py  # 10 doctests failed
sage -t src/sage/rings/multi_power_series_ring.py  # 7 doctests failed
sage -t src/sage/schemes/generic/homset.py  # 4 doctests failed
sage -t src/doc/en/thematic_tutorials/coercion_and_categories.rst  # 4 doctests failed
sage -t src/sage/rings/number_field/class_group.py  # 1 doctest failed
sage -t src/sage/combinat/designs/orthogonal_arrays_find_recursive.pyx  # 2 doctests failed
sage -t src/sage/categories/functor.pyx  # 5 doctests failed
sage -t src/sage/combinat/rigged_configurations/bij_type_D_twisted.py  # 2 doctests failed
sage -t src/sage/rings/finite_rings/constructor.py  # 5 doctests failed
sage -t src/sage/categories/hopf_algebras_with_basis.py  # 2 doctests failed
sage -t src/sage/combinat/integer_list.py  # 1 doctest failed
sage -t src/sage/rings/power_series_ring.py  # 3 doctests failed
sage -t src/sage/modular/modform_hecketriangle/graded_ring.py  # 68 doctests failed
sage -t src/sage/rings/finite_rings/finite_field_givaro.py  # 3 doctests failed
sage -t src/sage/rings/finite_rings/finite_field_pari_ffelt.py  # 17 doctests failed
sage -t src/sage/misc/dev_tools.py  # 1 doctest failed
sage -t src/sage/modular/hecke/element.py  # 2 doctests failed
sage -t src/sage/sets/finite_set_maps.py  # 16 doctests failed
sage -t src/sage/quivers/homspace.py  # 1 doctest failed
sage -t src/sage/modular/modsym/manin_symbol_list.py  # 1 doctest failed
sage -t src/sage/combinat/rigged_configurations/bij_abstract_class.py  # 2 doctests failed
sage -t src/sage/rings/finite_rings/finite_field_ntl_gf2e.py  # 1 doctest failed
sage -t src/sage/rings/finite_rings/element_ntl_gf2e.pyx  # 3 doctests failed
sage -t src/sage/combinat/rigged_configurations/bij_type_D.py  # 2 doctests failed
sage -t src/doc/en/thematic_tutorials/explicit_methods_in_number_theory/method_of_graphs.rst  # 2 doctests failed
sage -t src/sage/modular/modform_hecketriangle/series_constructor.py  # 85 doctests failed
sage -t src/sage/rings/finite_rings/finite_field_ext_pari.py  # 2 doctests failed
sage -t src/sage/combinat/sf/homogeneous.py  # 2 doctests failed
sage -t src/sage/rings/quotient_ring_element.py  # 2 doctests failed
sage -t src/sage/geometry/polyhedron/parent.py  # 1 doctest failed
sage -t src/sage/sets/cartesian_product.py  # 1 doctest failed
sage -t src/sage/modules/fg_pid/fgp_element.py  # 1 doctest failed
sage -t src/sage/combinat/interval_posets.py  # 418 doctests failed
sage -t src/sage/modules/module.pyx  # 1 doctest failed
sage -t src/sage/categories/commutative_rings.py  # 2 doctests failed
sage -t src/sage/combinat/integer_matrices.py  # 1 doctest failed
sage -t src/sage/categories/examples/hopf_algebras_with_basis.py  # 1 doctest failed
sage -t src/sage/rings/polynomial/polynomial_zz_pex.pyx  # 21 doctests failed
sage -t src/sage/tensor/modules/finite_rank_free_module.py  # 4 doctests failed
sage -t src/sage/combinat/sf/elementary.py  # 2 doctests failed
sage -t src/sage/categories/regular_crystals.py  # 1 doctest failed
sage -t src/sage/combinat/rigged_configurations/rc_crystal.py  # 2 doctests failed
sage -t src/sage/modular/modform_hecketriangle/analytic_type.py  # 113 doctests failed
sage -t src/sage/rings/finite_rings/homset.py  # 24 doctests failed
sage -t src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx  # 3 doctests failed
sage -t src/sage/rings/finite_rings/finite_field_prime_modn.py  # 1 doctest failed
sage -t src/sage/modular/modsym/element.py  # 1 doctest failed
sage -t src/sage/geometry/polyhedron/backend_cdd.py  # 2 doctests failed
sage -t src/sage/groups/semimonomial_transformations/semimonomial_transformation_group.py  # 29 doctests failed
sage -t src/sage/algebras/jordan_algebra.py  # 4 doctests failed
sage -t src/sage/combinat/combinatorial_algebra.py  # 2 doctests failed
sage -t src/sage/modules/with_basis/morphism.py  # 8 doctests failed
sage -t src/sage/libs/ntl/ntl_ZZ_pEX_linkage.pxi  # 20 doctests failed
sage -t src/sage/algebras/letterplace/free_algebra_letterplace.pyx  # 1 doctest failed
sage -t src/sage/schemes/generic/scheme.py  # 3 doctests failed
sage -t src/sage/rings/complex_mpc.pyx  # 6 doctests failed
sage -t src/sage/categories/modules.py  # 1 doctest failed
sage -t src/sage/combinat/crystals/highest_weight_crystals.py  # 2 doctests failed
sage -t src/sage/rings/finite_rings/element_base.pyx  # 6 doctests failed
sage -t src/sage/geometry/newton_polygon.py  # 2 doctests failed
sage -t src/sage/sets/family.py  # 1 doctest failed
sage -t src/sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.py  # 1 doctest failed
sage -t src/sage/algebras/weyl_algebra.py  # 2 doctests failed
sage -t src/sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py  # 1 doctest failed
sage -t src/sage/quivers/algebra.py  # 1 doctest failed
sage -t src/sage/combinat/sf/multiplicative.py  # 1 doctest failed
sage -t src/sage/tensor/modules/free_module_automorphism.py  # 3 doctests failed
sage -t src/sage/rings/polynomial/polynomial_zmod_flint.pyx  # 4 doctests failed
sage -t src/sage/combinat/crystals/affine.py  # 2 doctests failed
sage -t src/sage/categories/algebras_with_basis.py  # 1 doctest failed
sage -t src/sage/combinat/rooted_tree.py  # 4 doctests failed
sage -t src/sage/monoids/hecke_monoid.py  # 7 doctests failed
sage -t src/sage/groups/affine_gps/affine_group.py  # 1 doctest failed
sage -t src/sage/modular/hecke/degenmap.py  # 1 doctest failed
sage -t src/sage/modular/modsym/modular_symbols.py  # 5 doctests failed
sage -t src/sage/modules/with_basis/subquotient.py  # 2 doctests failed
sage -t src/sage/modular/abvar/lseries.py  # 2 doctests failed
sage -t src/sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py  # 1 doctest failed
sage -t src/sage/algebras/free_algebra_quotient.py  # 3 doctests failed
sage -t src/sage/structure/parent_gens.pyx  # 4 doctests failed
sage -t src/sage/groups/affine_gps/euclidean_group.py  # 1 doctest failed
sage -t src/sage/combinat/integer_list_old.py  # 1 doctest failed
sage -t src/sage/groups/abelian_gps/values.py  # 2 doctests failed
sage -t src/sage/tensor/modules/free_module_alt_form.py  # 1 doctest failed
sage -t src/sage/groups/affine_gps/group_element.py  # 1 doctest failed
sage -t src/sage/algebras/free_algebra_quotient_element.py  # 1 doctest failed
sage -t src/sage/tensor/modules/free_module_linear_group.py  # 1 doctest failed
sage -t src/sage/geometry/polyhedron/base_RDF.py  # 1 doctest failed
sage -t src/sage/tensor/modules/tensor_free_module.py  # 1 doctest failed
sage -t src/sage/rings/finite_rings/hom_finite_field_givaro.pyx  # 14 doctests failed
sage -t src/sage/tensor/modules/free_module_homset.py  # 1 doctest failed
sage -t src/sage/rings/homset.py  # 2 doctests failed
sage -t src/sage/combinat/lyndon_word.py  # 1 doctest failed
sage -t src/sage/geometry/hyperbolic_space/hyperbolic_interface.py  # 1 doctest failed
sage -t src/sage/groups/semimonomial_transformations/semimonomial_transformation.pyx  # 35 doctests failed
sage -t src/sage/monoids/indexed_free_monoid.py  # 8 doctests failed
sage -t src/sage/rings/polynomial/polynomial_gf2x.pyx  # 2 doctests failed
sage -t src/sage/combinat/posets/elements.py  # 1 doctest failed
sage -t src/sage/categories/examples/finite_dimensional_algebras_with_basis.py  # 1 doctest failed
sage -t src/sage/combinat/rigged_configurations/bij_type_C.py  # 2 doctests failed
sage -t src/sage/combinat/rigged_configurations/bij_type_A2_odd.py  # 2 doctests failed
sage -t src/sage/schemes/generic/spec.py  # 1 doctest failed
sage -t src/sage/geometry/polyhedron/backend_ppl.py  # 1 doctest failed
sage -t src/sage/homology/koszul_complex.py  # 1 doctest failed
sage -t src/sage/algebras/free_algebra_element.py  # 2 doctests failed
sage -t src/sage/combinat/posets/linear_extensions.py  # 101 doctests failed
sage -t src/sage/combinat/rigged_configurations/bij_type_A2_even.py  # 2 doctests failed
sage -t src/sage/rings/noncommutative_ideals.pyx  # 4 doctests failed
sage -t src/sage/combinat/rigged_configurations/bij_type_A2_dual.py  # 2 doctests failed
sage -t src/sage/combinat/rigged_configurations/bij_type_A.py  # 2 doctests failed
sage -t src/sage/categories/examples/sets_cat.py  # 1 doctest failed
sage -t src/sage/rings/polynomial/polynomial_ring_homomorphism.pyx  # 3 doctests failed
sage -t src/sage/geometry/polyhedron/base_QQ.py  # 1 doctest failed
sage -t src/sage/combinat/necklace.py  # 1 doctest failed
sage -t src/sage/rings/finite_rings/hom_prime_finite_field.pyx  # 7 doctests failed
sage -t src/sage/groups/indexed_free_group.py  # 4 doctests failed
sage -t src/sage/rings/ideal_monoid.py  # 1 doctest failed
sage -t src/sage/categories/examples/finite_coxeter_groups.py  # 1 doctest failed
sage -t src/sage/categories/examples/finite_monoids.py  # 2 doctests failed
sage -t src/sage/sets/finite_set_map_cy.pyx  # 29 doctests failed
sage -t src/sage/tensor/modules/ext_pow_free_module.py  # 1 doctest failed
sage -t src/sage/categories/finite_crystals.py  # 1 doctest failed
sage -t src/sage/sets/totally_ordered_finite_set.py  # 3 doctests failed
sage -t src/sage/categories/finite_weyl_groups.py  # 1 doctest failed
sage -t src/sage/modular/modsym/manin_symbol.pyx  # 1 doctest failed
sage -t src/sage/categories/examples/algebras_with_basis.py  # 1 doctest failed
sage -t src/sage/categories/examples/crystals.py  # 1 doctest failed
sage -t src/sage/misc/nested_class_test.py  # 2 doctests failed
sage -t src/sage/monoids/free_monoid.py  # 1 doctest failed
sage -t src/sage/combinat/vector_partition.py  # 2 doctests failed
sage -t src/sage/categories/examples/posets.py  # 2 doctests failed
sage -t src/sage/categories/examples/graded_modules_with_basis.py  # 1 doctest failed
sage -t src/sage/categories/examples/semigroups_cython.pyx  # 4 doctests failed
sage -t src/sage/structure/list_clone_timings.py  # 1 doctest failed
sage -t src/sage/categories/examples/commutative_additive_semigroups.py  # 2 doctests failed
sage -t src/sage/rings/pari_ring.py  # 1 doctest failed
sage -t src/sage/categories/examples/commutative_additive_monoids.py  # 2 doctests failed
sage -t src/sage/categories/examples/monoids.py  # 2 doctests failed
sage -t src/sage/monoids/monoid.py  # 1 doctest failed
----------------------------------------------------------------------
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from 6c712ef to 1ba4030

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

1ba4030Metaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

96886e9Metaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from 1ba4030 to 96886e9

jdemeyer commented 9 years ago

Changed dependencies from #18321, #18322, #18330, #18380, #18387 to #18321, #18322, #18330, #18380, #18387, #18388

jdemeyer commented 9 years ago

Changed dependencies from #18321, #18322, #18330, #18380, #18387, #18388 to #18321, #18322, #18330, #18380, #18387, #18388, #18389

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from 96886e9 to 9c8c73f

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

9c8c73fMetaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from 9c8c73f to 381b844

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

381b844Metaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from 381b844 to c27cb6b

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

c27cb6bMetaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from c27cb6b to 0bfb7e1

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

c448299Fix comparison for MPComplexField
39a25b9Merge tag '6.7' into HEAD
0bfb7e1Metaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

36900faMetaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from 0bfb7e1 to 36900fa

jdemeyer commented 9 years ago
comment:20

This now passes all doctests. All it needs now is some more documentation and testing.

jdemeyer commented 9 years ago

Changed dependencies from #18321, #18322, #18330, #18380, #18387, #18388, #18389 to #18389

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

69f0325Metaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from 36900fa to 69f0325

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

ce032bdMetaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from 69f0325 to ce032bd

jdemeyer commented 9 years ago

Changed dependencies from #18389 to none

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

4b08519Metaclass for inheriting comparison functions
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 9 years ago

Changed commit from ce032bd to 4b08519

simon-king-jena commented 9 years ago
comment:27

Can you tell how it actually works?

Background of my question: I was about to open a ticket for "using Cython and the coercion model on combinatorial free modules". When I searched "cython combinatorial free module" on trac, your ticket was among the first hits. And of course, when cythoning the elements of a combinatorial free module, __cmp__ and __richcmp__ would still be copied rather than inherited from sage.structure.element.

jdemeyer commented 9 years ago
comment:28

Replying to @simon-king-jena:

Can you tell how it actually works?

There are two things you need to know:

  1. The Cython "metaclass" mechanism implemented in #18330. This is similar to but not the same as a Python metaclass. It is a mechanism to change the type() of a Cython extension type and call the __init__ method (but not __new__!) of the metaclass. Using the C preprocessor, a hook to implement this is added which is called whenever a Cython extension type is created.

  2. This ticket uses that mechanism to manually inherit the tp_compare and tp_richcompare slots of extension types, see the code in src/sage/misc/inherit_comparison.pyx in the branch.

And of course, when cythoning the elements of a combinatorial free module, __cmp__ and __richcmp__ would still be copied rather than inherited from sage.structure.element.

What do you mean with "would still be copied"? I don't understand what you're trying to say.

simon-king-jena commented 9 years ago
comment:29

Replying to @jdemeyer:

Replying to @simon-king-jena:

Can you tell how it actually works?

There are two things you need to know:

  1. The Cython "metaclass" mechanism implemented in #18330. This is similar to but not the same as a Python metaclass. It is a mechanism to change the type() of a Cython extension type and call the __init__ method (but not __new__!) of the metaclass. Using the C preprocessor, a hook to implement this is added which is called whenever a Cython extension type is created.

OK, I should have a look at that.

  1. This ticket uses that mechanism to manually inherit the tp_compare and tp_richcompare slots of extension types, see the code in src/sage/misc/inherit_comparison.pyx in the branch.

I still don't understand what it is supposed to mean. What do you mean by "manually inherit"?

And of course, when cythoning the elements of a combinatorial free module, __cmp__ and __richcmp__ would still be copied rather than inherited from sage.structure.element.

What do you mean with "would still be copied"? I don't understand what you're trying to say.

See the comments in sage.structure.element:

    ####################################################################
    # For a derived Cython class, you **must** put the __richcmp__
    # method below in your subclasses, in order for it to take
    # advantage of the above generic comparison code.
    #
    # You must also define either _cmp_ (if your subclass is totally
    # ordered), _richcmp_ (if your subclass is partially ordered), or
    # both (if your class has both a total order and a partial order,
    # or if that gives better performance).
    #
    # Rich comparisons (like a < b) will default to using _richcmp_,
    # three-way comparisons (like cmp(a,b)) will default to using
    # _cmp_. But if you define just one of _richcmp_ and _cmp_, it will
    # be used for all kinds of comparisons.
    #
    # In the _cmp_ and _richcmp_ methods, you can assume that both
    # arguments have identical parents.
    ####################################################################

My understanding was that with the ticket here it would in future NOT be needed to copy the __cmp__ and __richcmp__ methods.

jdemeyer commented 9 years ago
comment:30

Replying to @simon-king-jena:

  1. This ticket uses that mechanism to manually inherit the tp_compare and tp_richcompare slots of extension types, see the code in src/sage/misc/inherit_comparison.pyx in the branch.

I still don't understand what it is supposed to mean. What do you mean by "manually inherit"?

An extension type with the InheritComparisonMetaclass "metaclass" will inherit __cmp__ and __richcmp__ from its base class if neither __cmp__ nor __richcmp__ is defined.

In practice, it means that we no longer need the boilerplate code

def __richcmp__(left, right, int op):
    return (<Element>left)._richcmp(right, op)

def __cmp__(left, right):
    return (<Element>left)._cmp(right)

in subclasses of Element since those will be inherited from Element.

jdemeyer commented 9 years ago
comment:31

Replying to @simon-king-jena:

My understanding was that with the ticket here it would in future NOT be needed to copy the __cmp__ and __richcmp__ methods.

Exactly.