ó
    °"³jç  ã                  ón   • S SK Jr  S SKrS SKJr  SSKJr  / SQrSrSS jr	SS	 jr
SS
 jr " S S5      rg)é    )ÚannotationsN)ÚPathé   )Ú	ToolError)ÚREAD_STREAM_CHUNK_BYTESÚLineRangeCollectorÚread_line_rangeÚread_text_exactÚwrite_text_exacti   c                ó@   • U R                  5       R                  S5      $ )z.Read a UTF-8 file without newline translation.úutf-8)Ú
read_bytesÚdecode)Úpaths    ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/anthropic/lib/tools/_files.pyr
   r
      s   € à�?‰?Ó×#Ñ# GÓ,Ð,ó    c                óD   • U R                  UR                  S5      5        g)z/Write a UTF-8 file without newline translation.r   N)Úwrite_bytesÚencode)r   Útexts     r   r   r      s   € à×Ñ�T—[‘[ Ó)Õ*r   c                ó˜  • [        XX4S9nUR                  5       (       a  gU R                  S5       nUR                  [        5      =n(       aE  UR                  U5        UR                  5       (       a  OUR                  [        5      =n(       a  ME  SSS5        UR                  5       $ ! , (       d  f       UR                  5       $ = f)zWReturn lines `[start_line, end_line]` of `path`, capping the selected bytes at `limit`.)Ú	file_pathÚ
start_lineÚend_lineÚlimitÚ ÚrbN)r   Úrange_is_emptyÚopenÚreadr   Úcollect_fromÚrange_is_collectedr   )r   r   r   r   r   ÚlinesÚfÚchunks           r   r	   r	      s£   € ä¨ÐT\Ñj€EØ×Ñ×ÑØØ	�‰�4Œ˜AØ—v‘vÔ5Ó6Ð6ˆeÕ6Ø×Ñ˜uÔ%Ø×'Ñ'×)Ñ)Øð —v‘vÔ5Ó6Ð6ˆe×6÷ 
ð
 �:‰:‹<Ð÷ 
Œð
 �:‰:‹<Ðús   ²A B,Â,
C	c                  ó^   • \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrS
rg)r   é$   zeCollects the bytes of lines `[start_line, end_line]` from consecutive file chunks, capped at `limit`.c               óÂ   • Xl         X l        X0l        [        SUS-
  5      U l        US:”  a  UO[
        R                  U l        X@l        SU l	        [        5       U l        g )Nr   r   )Ú
_file_pathÚ_start_lineÚ	_end_lineÚmaxÚ_startÚsysÚmaxsizeÚ_endÚ_limitÚ_lineÚ	bytearrayÚ
_collected)Úselfr   r   r   r   s        r   Ú__init__ÚLineRangeCollector.__init__'   sL   € Ø#ŒØ%ÔØ!ŒÜ˜!˜Z¨!™^Ó,ˆŒØ (¨1£‘H´#·+±+ˆŒ	ØŒØˆŒ
Ü#›+ˆ�r   c                ó4   • U R                   U R                  :*  $ ©N)r0   r-   ©r5   s    r   r   Ú!LineRangeCollector.range_is_empty1   s   € Ø�y‰y˜DŸK™KÑ'Ð'r   c                ó4   • U R                   U R                  :¬  $ r9   )r2   r0   r:   s    r   r"   Ú%LineRangeCollector.range_is_collected4   s   € Ø�z‰z˜TŸY™YÑ&Ð&r   c                óŒ  • SnU[        U5      :  a³  U R                  5       (       d�  UR                  SU5      nUS:  a  [        U5      OUnU R                  U R                  :¼  a  U R                  XU US:¬  S9  US:  a  g U =R                  S-  sl        US-   nU[        U5      :  a  U R                  5       (       d  M›  g g g g )Nr   ó   
)Únewline_terminatedr   )Úlenr"   Úfindr2   r-   Ú_collect)r5   r%   Ú
line_startÚnewlineÚline_ends        r   r!   ÚLineRangeCollector.collect_from7   s±   € Øˆ
Øœ3˜u›:Ó%¨d×.EÑ.E×.GÑ.GØ—j‘j ¨
Ó3ˆGØ%,¨q£[”s˜5”z°gˆHØ�z‰z˜TŸ[™[Ó(Ø—‘˜e¨xÐ8ÈWÐXYÉ\�ÑZØ˜‹{ØØ�JŠJ˜!‰O�JØ  1™ˆJð œ3˜u›:Ó%¨d×.EÑ.E×.GÔ.GÐ%Ð.GÐ%r   c               ó  • U =R                   U-  sl         U(       a2  U R                  S-   U R                  :  a  U =R                   S-  sl         [        U R                   5      U R                  :”  a  U R                  5       eg )Nr   r?   )r4   r2   r0   rA   r1   Ú_over_limit_error)r5   Ú
line_bytesr@   s      r   rC   ÚLineRangeCollector._collectC   s]   € Ø�Š˜:Ñ%�Þ $§*¡*¨q¡.°4·9±9Ó"<Ø�OŠO˜uÑ$�OÜˆt�‰Ó $§+¡+Ó-Ø×(Ñ(Ó*Ð*ð .r   c                ó(  • U R                   U R                  -
  S:X  a6  [        SU R                  S-    SU R                   SU R                   S35      $ [        SU R
                   SU R                   SU R                   S	U R                   S
3	5      $ )Nr   zread: line z of z alone exceeds zb-byte limit. The read tool cannot return part of a line, so view_range cannot narrow this further.zread: view_range [z, z] of z	 exceeds z=-byte limit. Narrow the view_range to read a smaller portion.)r0   r-   r   r)   r1   r*   r+   r:   s    r   rI   Ú$LineRangeCollector._over_limit_errorJ   s§   € Ø�9‰9�t—{‘{Ñ" aÓ'ÜØ˜dŸk™k¨A™oÐ.¨d°4·?±?Ð2CÀ?ÐSW×S^ÑS^ÐR_ð `hð hóð ô Ø  ×!1Ñ!1Ð 2°"°T·^±^Ð4DÀEÈ$Ï/É/ÐIZÐZcÐdh×doÑdoÐcpð q?ð ?ó
ð 	
r   c                ó8   • U R                   R                  S5      $ )Nr   )r4   r   r:   s    r   r   ÚLineRangeCollector.textU   s   € Ø�‰×%Ñ% gÓ.Ð.r   )r4   r0   r+   r)   r1   r2   r-   r*   N)
r   Ústrr   Úintr   rQ   r   rQ   ÚreturnÚNone)rR   Úbool)r%   ÚbytesrR   rS   )rJ   rU   r@   rT   rR   rS   )rR   r   )rR   rP   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r6   r   r"   r!   rC   rI   r   Ú__static_attributes__© r   r   r   r   $   s(   † Ùoô&ô(ô'ô
%ô+ô	
÷/r   r   )r   r   rR   rP   )r   r   r   rP   rR   rS   )r   r   r   rP   r   rQ   r   rQ   r   rQ   rR   rP   )Ú
__future__r   r.   Úpathlibr   Ú_beta_functionsr   Ú__all__r   r
   r   r	   r   r\   r   r   Ú<module>ra      s5   ðÝ "ã 
Ý å &â
u€à#Ð ô-ô
+ô

÷2/ò 2/r   