-
-
Notifications
You must be signed in to change notification settings - Fork 700
Closed
Description
Right now the category FiniteEnumeratedSets overrides a parent class's cardinality() when creating a list. Below is a minimal example of this behavior:
from sage.structure.parent import Parent
from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets
class TestParent(Parent):
def __init__(self):
Parent.__init__(self, category=FiniteEnumeratedSets())
def __iter__(self):
yield 1
return
def cardinality(self, bad_arg):
"""
EXAMPLES::
sage: P = sage.combinat.category_doctest_fail.TestParent()
sage: P.cardinality(-1)
1
sage: v = P.list(); v
[1]
sage: len(v)
1
sage: P.cardinality()
1
sage: P.cardinality(-1) # This test breaks
1
"""
return 1 # we don't want to change the semantics of cardinality()This seems to be caused by not checking if the parent class has a cardinality() function implemented, and just overriding it with _cardinality_from_list() (which takes no [optional/keyword] parameters).
CC: @nthiery @AndrewAtLarge @sagetrac-sage-combinat
Component: categories
Keywords: finite sets, cardinality, days45
Author: Travis Scrimshaw
Reviewer: Andrew Mathas
Merged: sage-5.8.beta1
Issue created by migration from https://trac.sagemath.org/ticket/13688