ó
    F±‰j/  ã                   ó(   • S r SSKJr   " S S5      rg)aD  
Implements a buffer with insertion points. When you know you need to
"get back" to a place and write more later, simply call insertion_point()
at that spot and get a new StringIOTree object that is "left behind".

EXAMPLE:

>>> a = StringIOTree()
>>> _= a.write('first\n')
>>> b = a.insertion_point()
>>> _= a.write('third\n')
>>> _= b.write('second\n')
>>> a.getvalue().split()
['first', 'second', 'third']

>>> c = b.insertion_point()
>>> d = c.insertion_point()
>>> _= d.write('alpha\n')
>>> _= b.write('gamma\n')
>>> _= c.write('beta\n')
>>> b.getvalue().split()
['second', 'alpha', 'beta', 'gamma']

>>> from io import StringIO

>>> i = StringIOTree()
>>> d.insert(i)
>>> _= i.write('inserted\n')
>>> out = StringIO()
>>> a.copyto(out)
>>> out.getvalue().split()
['first', 'second', 'alpha', 'inserted', 'beta', 'gamma', 'third']
é    )ÚStringIOc                   óX   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rS rS rSrg)ÚStringIOTreeé'   z
See module docs.
Nc                 óh   • / U l         Uc
  [        5       nXl        UR                  U l        / U l        g ©N)Úprepended_childrenr   ÚstreamÚwriteÚmarkers)Úselfr
   s     Ú¡C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\Cython/StringIOTree.pyÚ__init__ÚStringIOTree.__init__,   s-   € Ø"$ˆÔØ‰>Ü“ZˆFØŒØ—\‘\ˆŒ
Øˆ�ó    c                 óØ   • U R                   R                  5       (       a  gU R                  (       a3  [        U R                   Vs/ s H  oR	                  5       PM     sn5      $ S$ s  snf )NFT)r
   Útellr	   ÚallÚempty)r   Úchilds     r   r   ÚStringIOTree.empty4   sO   € Ø�;‰;×Ñ×ÑØØLP×Lc×LcŒs¨t×/FÒ/FÓGÒ/F e—K‘K–MÑ/FÑGÓHÐmÐimÐmùÒGs   ÁA'c                 óJ   • / nU R                  U5        SR                  U5      $ )NÚ )Ú_collect_inÚjoin)r   Úcontents     r   ÚgetvalueÚStringIOTree.getvalue9   s$   € ØˆØ×Ñ˜Ô!Ø�w‰w�wÓÐr   c                 ó²   • U R                    H  nUR                  U5        M     U R                  R                  5       nU(       a  UR	                  U5        g g r   )r	   r   r
   r   Úappend)r   Útarget_listÚxÚstream_contents       r   r   ÚStringIOTree._collect_in>   sF   € à×(Ô(ˆAØ�M‰M˜+Ö&ñ )àŸ™×-Ñ-Ó/ˆÞØ×Ñ˜~Õ.ð r   c                 ó²   • U R                    H  nUR                  U5        M     U R                  R                  5       nU(       a  UR	                  U5        gg)zMPotentially cheaper than getvalue as no string concatenation
needs to happen.N)r	   Úcopytor
   r   r   )r   Útargetr   r#   s       r   r&   ÚStringIOTree.copytoF   sF   € ð ×,Ô,ˆEØ�L‰L˜Ö ñ -àŸ™×-Ñ-Ó/ˆÞØ�L‰L˜Õ(ð r   c                 ó>  • U R                   R                  5       (       a~  U R                  R                  [	        U R                   5      5        U R
                  U R                  S   l        / U l        [        5       U l         U R                   R                  U l        g g )Néÿÿÿÿ)r
   r   r	   r    r   r   r   r   ©r   s    r   ÚcommitÚStringIOTree.commitP   sq   € ð �;‰;×Ñ×ÑØ×#Ñ#×*Ñ*¬<¸¿¹Ó+DÔEØ26·,±,ˆD×#Ñ# BÑ'Ô/ØˆDŒLÜ"›*ˆDŒKØŸ™×*Ñ*ˆD�Jð r   c                 ót   • / U l         / U l        [        5       U l        U R                  R                  U l        g r   )r	   r   r   r
   r   r+   s    r   ÚresetÚStringIOTree.resetZ   s+   € Ø"$ˆÔØˆŒÜ“jˆŒØ—[‘[×&Ñ&ˆ�
r   c                 óZ   • U R                  5         U R                  R                  U5        g)z{
Insert a StringIOTree (and all of its contents) at this location.
Further writing to self appears after what is inserted.
N)r,   r	   r    )r   Úiotrees     r   ÚinsertÚStringIOTree.insert`   s!   € ð
 	�‰ŒØ×Ñ×&Ñ& vÕ.r   c                 óp   • U R                  5         [        5       nU R                  R                  U5        U$ )a  
Returns a new StringIOTree, which is left behind at the current position
(it what is written to the result will appear right before whatever is
next written to self).

Calling getvalue() or copyto() on the result will only return the
contents written to it.
)r,   r   r	   r    )r   Úothers     r   Úinsertion_pointÚStringIOTree.insertion_pointh   s-   € ð 	�‰Œä“ˆØ×Ñ×&Ñ& uÔ-Øˆr   c                 ó–   • U R                   nU VVs/ s H  o"R                  5         H  o3PM     M     snnU R                  -   $ s  snnf r   )r	   Ú
allmarkersr   )r   ÚchildrenÚcÚms       r   r:   ÚStringIOTree.allmarkersy   s:   € à×*Ñ*ˆÙ#Ô<š8�a¯\©\¯^¨’©^‘™8Ò<¸t¿|¹|ÑKÐKùÓ<s   ’"A)r   r	   r
   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   r&   r,   r/   r3   r7   r:   Ú__static_attributes__© r   r   r   r   '   s@   † ñôònò
 ò
/ò)ò+ò'ò/òò"Lò
+r   r   N)rC   Úior   r   rE   r   r   Ú<module>rG      s   ðñ õF ÷Bò Br   