-í
”‚É<c       s•     d  Z     y ! d k l Z Wn " e j
 o # d Z n X% d g Z ' d f  d „  ƒ  YZ ­ d „  Z Õ e d j o Ö e ƒ  n d S(   s	  File-like objects that read from or write to a string buffer.

This implements (nearly) all stdio methods.

f = StringIO()      # ready for writing
f = StringIO(buf)   # ready for reading
f.close()           # explicitly release resources held
flag = f.isatty()   # always false
pos = f.tell()      # get current position
f.seek(pos)         # set current position
f.seek(pos, mode)   # mode 0: absolute; 1: relative; 2: relative to EOF
buf = f.read()      # read until EOF
buf = f.read(n)     # read up to n bytes
buf = f.readline()  # read until end of line ('
') or EOF
list = f.readlines()# list of f.readline() results until EOF
f.truncate([size])  # truncate file at to at most size (default: current pos)
f.write(buf)        # write at current position
f.writelines(list)  # for line in list: f.write(line)
f.getvalue()        # return whole file's contents as a string

Notes:
- Using a real file is often faster (but less convenient).
- There's also a much faster implementation in C, called cStringIO, but
  it's not subclassable.
- fileno() is left unimplemented so that code which uses it triggers
  an exception early.
- Seeking far beyond EOF and then writing will insert real null
  bytes that occupy space in the buffer.
- There's a simple test set (see end of this file).
(   s   EINVALi   s   StringIOc      s¿   ' ( d d „ Z  1 d „  Z 4 d „  Z 9 d „  Z > d d „ Z J d „  Z O d	 d
 „ Z ] e d „ Z o d d „ Z	 { e d „ Z
 † d „  Z  d „  Z   d „  Z ¤ d „  Z RS(   Ns    c    s[   ( * t  | ƒ |  _ + t | ƒ |  _ , g  |  _ - d |  _ . d |  _ / d |  _ d  S(   Ni    (   s   strs   bufs   selfs   lens   buflists   poss   closeds	   softspace(   s   selfs   buf(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   __init__( s   c    s   1 2 t  |  i d ƒ Sd  S(   Ns    (   s   iters   selfs   readline(   s   self(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   __iter__1 s   c    s4   4 5 |  i o 6 d |  _ 7 |  ` |  ` n d  S(   Ni   (   s   selfs   closeds   bufs   pos(   s   self(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   close4 s   c    s+   9 : |  i o ; t d ‚ n < d Sd  S(   Ns   I/O operation on closed filei    (   s   selfs   closeds
   ValueError(   s   self(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   isatty9 s   i    c    s¼   > ? |  i o @ t d ‚ n A |  i o. B |  i d i |  i ƒ 7_ C g  |  _ n D | d j o E | |  i 7} n% F | d j o G | |  i 7} n H t	 d | ƒ |  _ d  S(   Ns   I/O operation on closed files    i   i   i    (
   s   selfs   closeds
   ValueErrors   buflists   bufs   joins   modes   poss   lens   max(   s   selfs   poss   mode(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   seek> s   c    s.   J K |  i o L t d ‚ n M |  i Sd  S(   Ns   I/O operation on closed file(   s   selfs   closeds
   ValueErrors   pos(   s   self(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   tellJ s   iÿÿÿÿc    sÄ   O P |  i o Q t d ‚ n R |  i o. S |  i d i |  i ƒ 7_ T g  |  _ n U | d j  o V |  i } n X t	 |  i
 | |  i ƒ } Y |  i |  i
 | !} Z | |  _
 [ | Sd  S(   Ns   I/O operation on closed files    i    (   s   selfs   closeds
   ValueErrors   buflists   bufs   joins   ns   lens   newposs   mins   poss   r(   s   selfs   ns   rs   newpos(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   readO s   c    s  ] ^ |  i o _ t d ‚ n ` |  i o. a |  i d i |  i ƒ 7_ b g  |  _ n c |  i i d |  i ƒ } d | d j  o e |  i	 } n g | d } h | t j	 o/ i |  i | | j  o j |  i | } n n k |  i |  i | !} l | |  _ m | Sd  S(   Ns   I/O operation on closed files    s   
i    i   (   s   selfs   closeds
   ValueErrors   buflists   bufs   joins   finds   poss   is   lens   newposs   lengths   Nones   r(   s   selfs   lengths   rs   is   newpos(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   readline] s   c    sŸ   o p d } q g  } r |  i ƒ  } s xj s | o_ t | i | ƒ u | t | ƒ 7} v d | j  o
 | j n o w Pn x |  i ƒ  } q* Wy | Sd  S(   Ni    (   s   totals   liness   selfs   readlines   lines   appends   lens   sizehint(   s   selfs   sizehints   totals   liness   line(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys	   readlineso s   		 
!c    s£   { | |  i o } t d ‚ n ~ | t j o  |  i } nJ € | d j  o  t t d ƒ ‚ n$ ‚ | |  i j  o ƒ | |  _ n „ |  i ƒ  |  |  _	 d  S(   Ns   I/O operation on closed filei    s   Negative size not allowed(
   s   selfs   closeds
   ValueErrors   sizes   Nones   poss   IOErrors   EINVALs   getvalues   buf(   s   selfs   size(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   truncate{ s   c    s~  † ‡ |  i o ˆ t d ‚ n ‰ | o ‰ d  Sn ‹ t | ƒ } Œ |  i |  i j o4  |  i i d |  i |  i ƒ Ž |  i |  _ n  |  i t | ƒ }  |  i |  i j  o” ‘ |  i o. ’ |  i
 d i |  i ƒ 7_
 “ g  |  _ n ” |  i
 |  i  | |  i
 | g |  _ • d |  _
 – | |  i j o — | |  _ n n  ™ |  i i | ƒ š | |  _ › | |  _ d  S(   Ns   I/O operation on closed files    s    (   s   selfs   closeds
   ValueErrors   ss   strs   poss   lens   buflists   appends   newposs   bufs   join(   s   selfs   ss   newpos(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   write† s(    !&c    s     ž |  i d i | ƒ ƒ d  S(   Ns    (   s   selfs   writes   joins   list(   s   selfs   list(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys
   writelines s   c    s$     ¡ |  i o ¢ t d ‚ n d  S(   Ns   I/O operation on closed file(   s   selfs   closeds
   ValueError(   s   self(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   flush  s   c    sL   ¤ ¥ |  i o. ¦ |  i d i |  i ƒ 7_ § g  |  _ n ¨ |  i Sd  S(   Ns    (   s   selfs   buflists   bufs   join(   s   self(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   getvalue¤ s   (   s   __init__s   __iter__s   closes   isattys   seeks   tells   reads   Nones   readlines	   readliness   truncates   writes
   writeliness   flushs   getvalue(    (    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   StringIO' s   	c  
   sª  ­ ® d  k  } ¯ | i d o ° | i d } n
 ² d } ³ t | d ƒ i ƒ  } ´ t | d ƒ i ƒ  } µ t ƒ  }  ¶ x% | d  D¶ ] }	 · |  i |	 ƒ q‡ W¸ |  i | d ƒ ¹ |  i ƒ  | j o º t d ‚ n » |  i ƒ  } ¼ d G| GH½ |  i t | d ƒ ƒ ¾ |  i | d ƒ ¿ |  i d ƒ À d G|  i ƒ  GHÁ |  i ƒ  } Â |  i ƒ  }	 Ã d	 G|	 GHÄ |  i t |	 ƒ d ƒ Å |  i t |	 ƒ ƒ } Æ |	 | j o Ç t d
 ‚ n È |  i t | ƒ d ƒ É |  i ƒ  } Ê | d }	 Ë |  i |  i ƒ  t |	 ƒ ƒ Ì |  i ƒ  } Í |	 | j o Î t d ‚ n Ï d Gt | ƒ Gd GHÐ d G|  i ƒ  GHÑ |  i ƒ  | j o Ò t d ‚ n Ó |  i ƒ  d  S(   Ni   s   /etc/passwds   riþÿÿÿs   write faileds   File length =i    s   First line =s   Second line =s   bad result after seek backiÿÿÿÿs#   bad result after seek back from EOFs   Reads
   more liness
   bad length(   s   syss   argvs   files   opens	   readliness   liness   reads   texts   StringIOs   fs   lines   writes
   writeliness   getvalues   RuntimeErrors   tells   lengths   seeks   lens   readlines   heres   line2s   lists   close(
   s   fs   texts   liness   line2s   syss   lists   lengths   heres   files   line(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   test­ sL   	 	 s   __main__N(   s   __doc__s   errnos   EINVALs   ImportErrors   __all__s   StringIOs   tests   __name__(   s   tests   __all__s   StringIOs   EINVAL(    (    s(   /usr/local/twc/lib/python2.2/StringIO.pys   ? s   †(