Ticket #9256: trac_9256-set_in_category-fh.patch

File trac_9256-set_in_category-fh.patch, 4.8 KB (added by hivert, 12 years ago)
  • sage/sets/set.py

    # HG changeset patch
    # User Florent Hivert <Florent.Hivert@univ-rouen.fr>
    # Date 1276811563 -7200
    # Node ID 8e2b1fd3b26344b5ee2810c7bc26fc1155f82cd6
    # Parent  52c6dfe1db84c935798b868504af2b30f4c5216a
    #9256: Put Set in the category Sets()
    
    diff --git a/sage/sets/set.py b/sage/sets/set.py
    a b AUTHORS: 
    1010
    1111- Mike Hansen (2007-3-25) - added differences and symmetric
    1212  differences; fixed operators
     13
     14- Florent Hivert (2010-06-17) - Adapted to categories
    1315"""
    1416
    1517#*****************************************************************************
    from sage.structure.parent import Parent 
    3234from sage.misc.latex import latex
    3335import sage.rings.infinity
    3436from sage.misc.misc import is_iterator
     37from sage.categories.sets_cat import Sets
     38from sage.categories.enumerated_sets import EnumeratedSets
    3539
    3640def Set(X):
    3741    r"""
    def Set(X): 
    5155        sage: X
    5256        {0, 1, 2, a, a + 1, a + 2, 2*a, 2*a + 1, 2*a + 2}
    5357        sage: type(X)
    54         <class 'sage.sets.set.Set_object_enumerated'>
     58        <class 'sage.sets.set.Set_object_enumerated_with_category'>
    5559        sage: Y = X.union(Set(QQ))
    5660        sage: Y
    5761        Set-theoretic union of {0, 1, 2, a, a + 1, a + 2, 2*a, 2*a + 1, 2*a + 2} and Set of elements of Rational Field
    5862        sage: type(Y)
    59         <class 'sage.sets.set.Set_object_union'>
     63        <class 'sage.sets.set.Set_object_union_with_category'>
    6064
    6165    Usually sets can be used as dictionary keys.
    6266
    def Set(X): 
    100104        sage: Set(iter([1,2,3]))
    101105        {1, 2, 3}
    102106        sage: type(_)
    103         <class 'sage.sets.set.Set_object_enumerated'>
     107        <class 'sage.sets.set.Set_object_enumerated_with_category'>
    104108    """
    105109    if is_Set(X):
    106110        return X
    class Set_object(Set_generic): 
    180184
    181185        sage: latex(S)
    182186        \left\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18\right\}
    183         sage: loads(S.dumps()) == S
    184         True
     187        sage: TestSuite(S).run()
    185188
    186189        sage: latex(Set(ZZ))
    187190        \Bold{Z}
    class Set_object(Set_generic): 
    196199        EXAMPLES::
    197200       
    198201            sage: type(Set(QQ))
    199             <class 'sage.sets.set.Set_object'>
     202            <class 'sage.sets.set.Set_object_with_category'>
    200203        """
     204        Parent.__init__(self, category=Sets())
    201205        self.__object = X
    202206
    203207    def __hash__(self):
    class Set_object(Set_generic): 
    261265        """
    262266        return self.__object.__iter__()
    263267
     268    an_element = EnumeratedSets.ParentMethods.__dict__['_an_element_from_iterator']
     269
    264270    def __contains__(self, x):
    265271        """
    266272        Return True if $x$ is in self.
    class Set_object_enumerated(Set_object): 
    597603            {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}
    598604            sage: print latex(S)
    599605            \left\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18\right\}
    600             sage: loads(S.dumps()) == S
    601             True
     606            sage: TestSuite(S).run()
    602607        """
    603608        Set_object.__init__(self, X)
    604609
    class Set_object_enumerated(Set_object): 
    705710            sage: type(X.set())
    706711            <type 'set'>
    707712            sage: type(X)
    708             <class 'sage.sets.set.Set_object_enumerated'>
     713            <class 'sage.sets.set.Set_object_enumerated_with_category'>
    709714        """
    710715        return set(self.object())
    711716
    class Set_object_union(Set_object): 
    855860
    856861            sage: latex(X)
    857862            \Bold{Q}^{2} \cup \Bold{Z}
    858            
    859             sage: loads(X.dumps()) == X
    860             True
     863
     864            sage: TestSuite(X).run()
    861865        """
    862866        self.__X = X
    863867        self.__Y = Y
    class Set_object_intersection(Set_object 
    980984    def __init__(self, X, Y):
    981985        r"""
    982986        EXAMPLES::
    983        
     987
    984988            sage: S = Set(QQ^2)
    985989            sage: T = Set(ZZ)
    986990            sage: X = S.intersection(T); X
    class Set_object_intersection(Set_object 
    988992            sage: latex(X)
    989993            \Bold{Q}^{2} \cap \Bold{Z}
    990994
    991             sage: loads(X.dumps()) == X
    992             True
     995            sage: X = Set(IntegerRange(100)).intersection(Primes())
     996            sage: TestSuite(X).run()
    993997        """
    994998        self.__X = X
    995999        self.__Y = Y
    class Set_object_difference(Set_object): 
    11381142            sage: latex(X)
    11391143            \Bold{Q} - \Bold{Z}
    11401144
    1141             sage: loads(X.dumps()) == X
    1142             True
     1145            sage: TestSuite(X).run()
    11431146        """
    11441147        self.__X = X
    11451148        self.__Y = Y
    class Set_object_symmetric_difference(Se 
    12931296            sage: latex(X)
    12941297            \Bold{Q} \bigtriangleup \Bold{Z}
    12951298
    1296             sage: loads(X.dumps()) == X
    1297             True
     1299            sage: TestSuite(X).run()
    12981300        """
    12991301        self.__X = X
    13001302        self.__Y = Y