Ticket #3838: RElementAccess.patch

File RElementAccess.patch, 1.7 KB (added by SimonKing, 13 years ago)

Patch relative to 3.1.alpha0

  • sage/interfaces/r.py

    # HG changeset patch
    # User Simon King <king@mathematik.uni-jena.de>
    # Date 1218647623 -7200
    # Node ID 60427c9065c4427b12f7da4b0b59d7ac94d083db
    # Parent  6417e6c84a2a6f4851d87a7702a6257624ec8f13
    Bugfix and enhancement for RElement element access
    
    diff -r 6417e6c84a2a -r 60427c9065c4 sage/interfaces/r.py
    a b  
    11591159
    11601160    def __getitem__(self, n):
    11611161        """
    1162         Return n-th element of self.
     1162        Return element(s) of self.
    11631163       
    11641164        INPUT:
    1165             n -- an integer
     1165            n -- an integer, a tuple, a string that makes sense to R, or an RElement
    11661166        OUTPUT:
    11671167            RElement
    11681168           
     
    11781178            [1] 10.4  3.1  6.4 21.7
    11791179            sage: x[-3]
    11801180            [1] 10.4  5.6  6.4 21.7
    1181             sage: x[4]
    1182             [1] 6.4
     1181            sage: x['c(2,3)']
     1182            [1]  5.6 3.1
     1183            sage: x[2,3,4]
     1184            [1] 5.6 3.1 6.4
     1185            sage: key=r.c(2,3)
     1186            sage: x[key]
     1187            [1]  5.6 3.1
    11831188        """
    11841189        P = self._check_valid()
    11851190        if isinstance(n, basestring):
    11861191            n = n.replace('self', self._name)
    11871192            return P.new('%s[%s]'%(self._name, n))
    1188         elif not isinstance(n, tuple):
     1193        elif (hasattr(n,'parent') and n.parent()==P): # the key is RElement itself
     1194            return P.new('%s[%s]'%(self._name, n.name()))
     1195        elif not isinstance(n,tuple):
    11891196            return P.new('%s[%s]'%(self._name, n))
    11901197        else:
    1191             return P.new('%s[%s]'%(self._name, str(n)[1:-1]))
     1198            return P.new('%s[c%s]'%(self._name, str(n)))
    11921199
    11931200    def __nonzero__(self):
    11941201        """