Ticket #3983: trac_3983.patch

File trac_3983.patch, 8.3 KB (added by mhansen, 13 years ago)
  • sage/interfaces/sage0.py

    # HG changeset patch
    # User Mike Hansen <mhansen@gmail.com>
    # Date 1219967693 25200
    # Node ID da10dca01a97328d6411756980d502321791e1c8
    # Parent  d66b9d4289394adb0760a2ee0b4eca78d8982fc0
    Get coverage for sage/interfaces/sage0.py up to 100%
    
    diff -r d66b9d428939 -r da10dca01a97 sage/interfaces/sage0.py
    a b  
    107107                       server_tmpdir = None,
    108108                       remote_cleaner = True,
    109109                       **kwds):
     110        """
     111        EXAMPLES:
     112            sage: sage0 == loads(dumps(sage0))
     113            True
     114        """
    110115        if python:
    111116            if server:
    112117                command = "sage -python -u"
     
    154159        return float(s)
    155160
    156161    def trait_names(self):
     162        """
     163        EXAMPLES:
     164            sage: t = sage0.trait_names()
     165            sage: len(t) > 100
     166            True
     167            sage: 'gcd' in t
     168            True
     169
     170        """
    157171        return eval(self.eval('globals().keys()'))
    158172
    159173    def quit(self, verbose=False):
     174        """
     175        EXAMPLES:
     176            sage: s = Sage()
     177            sage: s.eval('2+2')
     178            '4'
     179            sage: s.quit()
     180        """
    160181        import signal
    161182        if not self._expect is None:
    162183            pid = self._expect.pid
     
    189210                pass
    190211            self._expect = None
    191212       
    192     def _remote_tmpfile(self):
    193         try:
    194             return self.__remote_tmpfile
    195         except AttributeError:
    196             self.__remote_tmpfile = eval(self.eval('import sage.interfaces.expect as e; e.tmp'))
    197             return self.__remote_tmpfile
    198 
    199213    def __call__(self, x):
     214        """
     215        EXAMPLES:
     216            sage: a = sage0(4)
     217            sage: a.parent()
     218            Sage
     219            sage: a is sage0(a)
     220            True
     221        """
    200222        if isinstance(x, SageElement) and x.parent() is self:
    201223            return x
    202224        if isinstance(x, str):
     
    211233            return SageElement(self, 'loads(open("%s").read())'%self._remote_tmpfile())
    212234
    213235    def __reduce__(self):
     236        """
     237        EXAMPLES:
     238            sage: sage0.__reduce__()
     239            (<function reduce_load_Sage at 0x...>, ())
     240
     241        """
    214242        return reduce_load_Sage, tuple([])
    215243
    216244    def _quit_string(self):
     245        """
     246        EXAMPLES:
     247            sage: sage0._quit_string()
     248            'from sage.misc.misc import delete_tmpfiles; delete_tmpfiles()'
     249        """
    217250        return 'from sage.misc.misc import delete_tmpfiles; delete_tmpfiles()'
    218251
    219252    def preparse(self, x):
     253        """
     254        Returns the preparsed version of the string s.
     255
     256        EXAMPLES:
     257            sage: sage0.preparse('2+2')
     258            'Integer(2)+Integer(2)'
     259
     260        """
    220261        return sage.misc.preparser.preparse(x)
    221262
    222263    def eval(self, line, strip=True):
     
    230271        INPUT:
    231272            line -- input line of code
    232273            strip -- ignored
     274
     275        EXAMPLES:
     276            sage: sage0.eval('2+2')
     277            '4'
    233278        """
    234279        if self._preparse:
    235280            line = self.preparse(line)
     
    238283    def set(self, var, value):
    239284        """
    240285        Set the variable var to the given value.
     286
     287        EXAMPLES:
     288            sage: sage0.set('x', '2')
     289            sage: sage0.get('x')
     290            '2'
    241291        """
    242292        cmd = '%s=%s'%(var,value)
    243293        out = self.eval(cmd)
     
    247297    def get(self, var):
    248298        """
    249299        Get the value of the variable var.
     300
     301        EXAMPLES:
     302            sage: sage0.set('x', '2')
     303            sage: sage0.get('x')
     304            '2'
    250305        """
    251306        return self.eval('print %s'%var)
    252307       
    253     #def clear(self, var):
    254     #    """
    255     #    Clear the variable named var.
    256     #    """
    257     #    self.eval('del %s'%var)
     308    def clear(self, var):
     309        """
     310        Clear the variable named var.
     311
     312        EXAMPLES:
     313            sage: sage0.set('x', '2')
     314            sage: sage0.get('x')
     315            '2'
     316            sage: sage0.clear('x')
     317            sage: sage0.get('x')
     318            "...NameError: name 'x' is not defined"
     319
     320        """
     321        self.eval('del %s'%var)
    258322   
    259323    def _contains(self, v1, v2):
     324        """
     325        EXAMPLES:
     326            sage: sage0._contains('2', 'QQ')
     327            'True'
     328        """
    260329        return self.eval('%s in %s'%(v1,v2))
    261330
    262331    def _is_true_string(self, t):
     332        """
     333        EXAMPLES:
     334            sage: sage0._is_true_string('True')
     335            True
     336            sage: sage0._is_true_string(True)
     337            False
     338        """
    263339        return t == "True"
    264340
    265341    def console(self):
     342        """
     343        Spawn a new Sage command-line session.
     344
     345        EXAMPLES:
     346            sage: sage0.console() #not tested
     347            ----------------------------------------------------------------------
     348            | SAGE Version ..., Release Date: ...                                |
     349            | Type notebook() for the GUI, and license() for information.        |
     350            ----------------------------------------------------------------------
     351            ...
     352        """
    266353        sage0_console()
    267354
    268355    def version(self):
    269         return eval(sage0_version())
     356        """
     357        EXAMPLES:
     358            sage: sage0.version()
     359            'SAGE Version ..., Release Date: ...'
     360            sage: sage0.version() == version()
     361            True
     362        """
     363        return sage0_version()
    270364
    271365    def _object_class(self):
     366        """
     367        EXAMPLES:
     368            sage: sage0._object_class()
     369            <class 'sage.interfaces.sage0.SageElement'>
     370        """
    272371        return SageElement
    273372
    274373    def new(self, x):
     374        """
     375        EXAMPLES:
     376           sage: sage0.new(2)
     377           2
     378           sage: _.parent()
     379           Sage
     380
     381        """
    275382        return SageElement(self, x)
    276383
    277384class SageElement(ExpectElement):
    278385    def __getattr__(self, attrname):
     386        """
     387        EXAMPLES:
     388            sage: m = sage0(4)
     389            sage: four_gcd = m.gcd
     390            sage: type(four_gcd)
     391            <class 'sage.interfaces.sage0.SageFunction'>
     392        """
    279393        self._check_valid()
    280394        return SageFunction(self, attrname)
    281395
     
    300414   
    301415class SageFunction(FunctionElement):
    302416    def __call__(self, *args, **kwds):
     417        """
     418        EXAMPLES:
     419            sage: four_gcd = sage0(4).gcd
     420            sage: four_gcd(6)
     421            2
     422        """
    303423        P = self._obj.parent()
    304424        args = [P(x) for x in args]
    305425        args = ','.join([x.name() for x in args])
     
    317437        return z
    318438
    319439    def __repr__(self):
    320         return str(self.eval('%s.%s'%(self._obj._name, self._name)))
     440        """
     441        EXAMPLES:
     442            sage: sage0(4).gcd
     443            <built-in method gcd of sage.rings.integer.Integer object at 0x...>
     444
     445        """
     446       
     447        return str(self._obj.parent().eval('%s.%s'%(self._obj._name, self._name)))
    321448
    322449                           
    323450
    324451sage0 = Sage()
    325452
    326453def reduce_load_Sage():
     454    """
     455    EXAMPLES:
     456        sage: from sage.interfaces.sage0 import reduce_load_Sage
     457        sage: reduce_load_Sage()
     458        Sage
     459    """
    327460    return sage0
    328461
    329462def reduce_load_element(s):
    330     return sage0('loads(%s)'%s)
     463    """
     464    EXAMPLES:
     465        sage: from sage.interfaces.sage0 import reduce_load_element
     466        sage: s = dumps(1/2)
     467        sage: half = reduce_load_element(s); half
     468        1/2
     469        sage: half.parent()
     470        Sage
     471    """
     472    import base64
     473    s = base64.b32encode(s)
     474    sage0.eval('import base64')
     475    return sage0('loads(base64.b32decode("%s"))'%s)
    331476
    332477
    333478import os
    334479def sage0_console():
     480    """
     481    Spawn a new Sage command-line session.
     482
     483    EXAMPLES:
     484        sage: sage0_console() #not tested
     485        ----------------------------------------------------------------------
     486        | SAGE Version ..., Release Date: ...                                |
     487        | Type notebook() for the GUI, and license() for information.        |
     488        ----------------------------------------------------------------------
     489        ...
     490    """
    335491    os.system('sage')
    336492
    337493def sage0_version():
    338     return sage0('version()')
     494    """
     495    EXAMPLES:
     496        sage: from sage.interfaces.sage0 import sage0_version
     497        sage: sage0_version() == version()
     498        True
     499    """
     500    return str(sage0('version()'))
    339501
    340502#def irun(filename):
    341503#    """