ó
fô§Ic           @   sp   d  Z  d d l Z d d l Z d d l Z d d	 d „  ƒ  YZ e j Z d d
 d „  ƒ  YZ d d d „  ƒ  YZ d S(   sµ  Code for more fancy file handles.


Classes:
UndoHandle     File object decorator with support for undo-like operations.
StringHandle   Wraps a file object around a string.
SGMLHandle     File object that automatically strips SGML tags from data.

SGMLStripper   Object that strips SGML.  This is now considered OBSOLETE, and
               is likely to be deprecated in a future release of Biopython,
               and later removed.

iÿÿÿÿNt
   UndoHandlec           B   s†   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z d „  Z d „  Z RS(   sé   A Python handle that adds functionality for saving lines.

    Saves lines in a LIFO fashion.

    Added methods:
    saveline    Save a line to be returned next time.
    peekline    Peek at the next line without consuming it.

    c         C   s   | |  _  g  |  _ d  S(   N(   t   _handlet   _saved(   t   selft   handle(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyt   __init__!   s    	c         C   s   |  S(   N(    (   R   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyt   __iter__%   s    c         C   s   |  j  ƒ  } | s t ‚ n  | S(   N(   t   readlinet   StopIteration(   R   t   next(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR	   (   s    	c         O   s)   |  j  |  j j | | Ž  } g  |  _  | S(   N(   R   R   t	   readlines(   R   t   argst   keywdst   lines(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR
   .   s    	c         O   s7   |  j  r |  j  j d ƒ } n |  j j | | Ž  } | S(   Ni    (   R   t   popR   R   (   R   R   R   t   line(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR   3   s    	iÿÿÿÿc         C   sÝ   | d k r+ d j  |  j ƒ } g  |  j (nž d } x• | d k rÈ |  j rÈ t |  j d ƒ | k r’ | t |  j d ƒ } | |  j j d ƒ } q4 | |  j d |  } |  j d | |  j d <d } q4 W| |  j j | ƒ S(   Niÿÿÿÿt    i    (   t   joinR   t   lenR   R   t   read(   R   t   sizet   saved(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR   :   s    
c         C   s    | r | g |  j  |  _  n  d  S(   N(   R   (   R   R   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyt   savelineJ   s    c         C   s9   |  j  r |  j  d } n |  j j ƒ  } |  j | ƒ | S(   Ni    (   R   R   R   R   (   R   R   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyt   peeklineN   s
    	c         C   s8   t  t |  j ƒ } t d „  | d ƒ } |  j j ƒ  | S(   Nc         S   s   |  | S(   N(    (   t   xt   y(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyt   <lambda>X   s    i    (   t   mapR   R   t   reduceR   t   tell(   R   t   lengthst   sum(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR   V   s    c         G   s   g  |  _  |  j j | Œ  d  S(   N(   R   R   t   seek(   R   R   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR    [   s    	c         C   s   t  |  j | ƒ S(   N(   t   getattrR   (   R   t   attr(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyt   __getattr___   s    c         C   s   |  S(   N(    (   R   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyt	   __enter__b   s    c         C   s   |  j  j ƒ  d  S(   N(   R   t   close(   R   t   typet   valuet	   traceback(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyt   __exit__e   s    (   t   __name__t
   __module__t   __doc__R   R   R	   R
   R   R   R   R   R   R    R#   R$   R)   (    (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR       s   												t
   SGMLHandlec           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sÙ   A Python handle that automatically strips SGML tags from data (OBSOLETE).

    This module is now considered to be obsolete, and is likely to be
    deprecated in a future release of Biopython, and later removed.
    c         C   s   | |  _  t ƒ  |  _ d S(   s_   SGMLStripper(handle)

        handle is a file handle to SGML-formatted data.
        
        N(   R   t   SGMLStrippert	   _stripper(   R   R   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR   v   s    	c         O   s%   |  j  j | | Ž  } |  j j | ƒ S(   N(   R   R   R/   t   strip(   R   R   R   t   data(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR      s    c         O   s%   |  j  j | | Ž  } |  j j | ƒ S(   N(   R   R   R/   R0   (   R   R   R   R   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR   ƒ   s    c         O   sL   |  j  j | | Ž  } x0 t t | ƒ ƒ D] } |  j j t ƒ | | <q( W| S(   N(   R   R
   t   rangeR   R/   R0   t   str(   R   R   R   R   t   i(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR
   ‡   s    c         C   s   t  |  j | ƒ S(   N(   R!   R   (   R   R"   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR#      s    (   R*   R+   R,   R   R   R   R
   R#   (    (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR-   p   s   					R.   c           B   s3   e  Z d  e j f d „  ƒ  YZ d „  Z d „  Z RS(   t   MyParserc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   t  j j |  ƒ d |  _ d  S(   NR   (   t   sgmllibt
   SGMLParserR   R1   (   R   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR   “   s    c         C   s   |  j  | |  _  d  S(   N(   R1   (   R   R1   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyt   handle_data–   s    (   R*   R+   R   R8   (    (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR5   ’   s   	c         C   s   t  j ƒ  |  _ d  S(   N(   R.   R5   t   _parser(   R   (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR   ™   s    c         C   sj   | s
 d S| d d k } d |  j  _ |  j  j | ƒ |  j  j rQ |  j  j } n | r` d } n d } | S(   sG   S.strip(str) -> string

        Strip the SGML tags from str.

        R   iÿÿÿÿs   
s   (   s   
s   (   R9   R1   t   feed(   R   R3   t
   is_newline(    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR0   œ   s    	(   R*   R+   R6   R7   R5   R   R0   (    (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyR.   ‘   s   	(    (    (    (   R,   t   ost   StringIOR6   R    t   StringHandleR-   R.   (    (    (    s{   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/File.pyt   <module>   s   U	!