Ticket #3983: trac_3983.patch

File trac_3983.patch, 8.3 KB (added by mhansen, 5 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#    """