Ë
    	š„jÑ  ã                   ó  — d Z ddlZddlZddlmZ dZd„ Zd„ Zej                  re	Z
d„ ZneZ
e	Zd„ Z G d	„ d
e«      Zd„ Zd„ Zd„ Zd„ ZdZ ed«      Z ed«      Z ej.                  e«      j0                  Zd„ Zedk(  ryy)z¾
This is Victor Stinner's pure-Python implementation of PEP 383: the "surrogateescape" error
handler of Python 3.

Source: misc/python/surrogateescape.py in https://bitbucket.org/haypo/misc
é    N)ÚutilsÚsurrogateescapec                 óH   — t         j                  r| S | j                  d«      S )NÚunicode_escape)r   ÚPY3Údecode)Útexts    úS/var/www/html/GAP/venv/lib/python3.12/site-packages/future/utils/surrogateescape.pyÚur      s   € Ü‡y‚yØˆà�{‰{Ð+Ó,Ð,ó    c                 óH   — t         j                  r| j                  d«      S | S )NÚlatin1)r   r   Úencode)Údatas    r
   Úbr      s   € Ü‡y‚yØ�{‰{˜8Ó$Ð$àˆr   c                 ó   — t        | f«      S ©N)Úbytes)Úcodes    r
   ú<lambda>r   #   s   € œU D 7›^€ r   c                 óø   — | j                   | j                  | j                   }	 t        | t        «      rt        |«      }nt        | t        «      rt        |«      }n| ‚|| j                  fS # t        $ r | ‚w xY w)zý
    Pure Python implementation of the PEP 383: the "surrogateescape" error
    handler of Python 3. Undecodable bytes will be replaced by a Unicode
    character U+DCxx on decoding, and these are translated into the
    original bytes on encoding.
    )	ÚobjectÚstartÚendÚ
isinstanceÚUnicodeDecodeErrorÚreplace_surrogate_decodeÚUnicodeEncodeErrorÚreplace_surrogate_encodeÚNotASurrogateError)ÚexcÚmystringÚdecodeds      r
   Úsurrogateescape_handlerr$   (   sy   € ð �z‰z˜#Ÿ)™) C§G¡GÐ,€HðÜ�cÔ-Ô.ä.¨xÓ8‰GÜ˜Ô/Ô0ô /¨xÓ8‰GàˆIð �S—W‘WÐÐøô ò Øˆ	ðús   ¥:A- Á-A9c                   ó   — e Zd Zy)r    N)Ú__name__Ú
__module__Ú__qualname__© r   r
   r    r    C   s   „ Ør   r    c                 ó4  — g }| D ]y  }t        |«      }d|cxk  r
dk  st        ‚ t        ‚d|cxk  rdk  r!n n|j                  t        |dz
  «      «       ŒR|dk  r|j                  t        |dz
  «      «       Œut        ‚ t	        «       j                  |«      S )zƒ
    Returns a (unicode) string, not the more logical bytes, because the codecs
    register_error functionality expects this.
    é Ø  éÿÜ  é Ü  iÜ  )Úordr    ÚappendÚ_unichrÚstrÚjoin)r"   r#   Úchr   s       r
   r   r   G   sœ   € ð
 €GØò %ˆô �2‹wˆð ˜Ô' Ò'ä$Ð$ð (ä$Ð$ð
 �TÔ#˜VÕ#Ø�N‰Nœ7 4¨&¡=Ó1Õ2Ø�VŠ^Ø�N‰Nœ7 4¨&¡=Ó1Õ2ä$Ð$ð'%ô( ‹5�:‰:�gÓÐr   c                 ó$  — g }| D ]q  }t        |t        «      r|}nt        |«      }d|cxk  rdk  r!n n|j                  t	        d|z   «      «       ŒM|dk  r|j                  t	        |«      «       Œmt
        ‚ t        «       j                  |«      S )z$
    Returns a (unicode) string
    é€   éÿ   r-   é   )r   Úintr.   r/   r0   r    r1   r2   )Úmybytesr#   r3   r   s       r
   r   r   d   s†   € ð €GØò %ˆô �bœ#ÔØ‰Dä�r“7ˆDØ�4Ô˜4ÕØ�N‰Nœ7 6¨D¡=Ó1Õ2Ø�TŠ\Ø�N‰Nœ7 4›=Õ)ô %Ð$ð!%ô" ‹5�:‰:�gÓÐr   c                 óÐ  — t         dk(  rŽg }t        | «      D ]e  \  }}t        |«      }|dk  rt        |«      }n3d|cxk  rdk  rn nt        |dz
  «      }nt	        t         | ||dz   d«      ‚|j                  |«       Œg t        «       j                  |«      S t         dk(  r­g }t        | «      D ]„  \  }}t        |«      }d	|cxk  rd
k  rGn nDd|cxk  rdk  r#n n t        |dz
  «      }|j                  |«       ŒMt	        t         | ||dz   d«      ‚|j                  d«      }|j                  |«       Œ† t        «       j                  |«      S | j                  t         t        «      S )NÚasciir5   i€Ü  r,   r-   é   zordinal not in range(128)zutf-8r+   iÿß  zsurrogates not allowed)
ÚFS_ENCODINGÚ	enumerater.   Ú	bytes_chrr   r/   r   r2   r   Ú	FS_ERRORS)ÚfnÚencodedÚindexr3   r   Úch_utf8s         r
   ÚencodefilenamerE   }   s]  € Ü�gÒð ˆÜ" 2›ò 
	‰IˆE�2Ü�r“7ˆDØ�cŠzÜ˜t“_‘Ø˜4Ô) 6Õ)Ü˜t f™}Ó-‘ä(¬Ø˜˜u Q™wØ/ó1ð 1ð �N‰N˜2Õð
	ô ‹w�|‰|˜GÓ$Ð$Ü	˜Ò	ð ˆÜ" 2›ò 	(‰IˆE�2Ü�r“7ˆDØ˜Ô' Õ'Ø˜TÔ+ VÕ+Ü" 4¨&¡=Ó1�BØ—N‘N 2Õ&ä,Ü#Ø˜E 5¨¡7Ð,DóFð Fð Ÿ)™) GÓ,�Ø—‘˜wÕ'ð	(ô ‹w�|‰|˜GÓ$Ð$à�y‰yœ¤iÓ0Ð0r   c                 ó6   — | j                  t        t        «      S r   )r   r=   r@   )rA   s    r
   ÚdecodefilenamerG   ¤   s   € Ø�9‰9”[¤)Ó,Ð,r   r;   u   [abcÃ¿]u   [abcí³¿]c                  ó´   — t         j                  ry	 t        j                  t        «       y# t
        $ r! t        j                  t        t        «       Y yw xY w)zH
    Registers the surrogateescape error handler on Python 2 (only)
    N)r   r   ÚcodecsÚlookup_errorr@   ÚLookupErrorÚregister_errorr$   r)   r   r
   Úregister_surrogateescaperM   ±   sD   € ô ‡y‚yØðBÜ×ÑœIÕ&øÜò BÜ×ÑœiÔ)@ÖAðBús   “- ­'AÁAÚ__main__)Ú__doc__rI   ÚsysÚfuturer   r@   r   r   r   Úchrr0   r?   Úunichrr$   Ú	Exceptionr    r   r   rE   rG   r=   rA   rB   ÚlookupÚnamerM   r&   r)   r   r
   ú<module>rW      s±   ðñó Û 
å ð €	ò
-òð 	‡9‚9Ø€GÙ+�Ià€GØ€Iòô6	˜ô 	òò:ò2%1òN-ð €™A˜k›N�r±a¸Ó6F¨Gð ˆf�m‰m˜KÓ(×-Ñ-€ò	Bð ˆzÒØð r   