
    -hh
.                         / S Qr SSKrSrSrSr\\-   rSr\S-   S-   rS	rS
r	\\-   \	-   \-   r
SS jrSSKrSSKJr  0 r " S S5      r\R'                  5          " S S5      rg))ascii_lettersascii_lowercaseascii_uppercasecapwordsdigits	hexdigits	octdigits	printablepunctuation
whitespace	FormatterTemplate    Nz 	
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789abcdefABCDEF01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~c                     U=(       d    SR                  [        [        R                  U R	                  U5      5      5      $ )N )joinmapstr
capitalizesplit)sseps     //opt/python-3.13.8/usr/lib/python3.13/string.pyr   r   %   s,     J3S>??    )ChainMapc                   |   ^  \ rS rSrSrSrSr\R                  r	U 4S jr
S rS r\4S jr\4S	 jrS
 rS rSrU =r$ )r   9   $z(?a:[_a-z][_a-z0-9]*)Nc           	      |  > [         TU ]  5         SU R                  ;   a  U R                  nOZ[        R
                  " U R                  5      nU R                  nU R                  =(       d    U R                  nSU SU SU SU S3	n[        R                  " XR                  [        R                  -  5      U l        g )Npatternz
            z(?:
              (?P<escaped>zC)  |   # Escape sequence of two delimiters
              (?P<named>zJ)       |   # delimiter and a Python identifier
              {(?P<braced>z)} |   # delimiter and a braced identifier
              (?P<invalid>)             # Other ill-formed delimiter exprs
            )
            )super__init_subclass____dict__r%   _reescape	delimiter	idpatternbraceidpatterncompileflagsVERBOSE)clsr%   delimidbid	__class__s        r   r'   Template.__init_subclass__E   s    !#$kkGJJs}}-EB$$5CG  ' " 5 !	G kk'99s{{+BCr   c                     Xl         g Ntemplate)selfr:   s     r   __init__Template.__init__W   s     r   c                     UR                  S5      nU R                  S U R                  SS9nU(       d  SnSnO+U[        SR	                  US S 5      5      -
  n[        U5      n[        SXT4-  5      e)NinvalidT)keepends    z.Invalid placeholder in string: line %d, col %d)startr:   
splitlineslenr   
ValueError)r;   moilinescolnolinenos         r   _invalidTemplate._invalid\   s|    HHYbq!,,d,;EFBGGE#2J/00EZFI ) * 	*r   c                   ^ ^ T[         L a  UmOU(       a  [        UT5      mUU 4S jnT R                  R                  UT R                  5      $ )Nc                 &  > U R                  S5      =(       d    U R                  S5      nUb  [        TU   5      $ U R                  S5      b  TR                  $ U R                  S5      b  TR                  U 5        [	        STR
                  5      eNnamedbracedescapedr?   #Unrecognized named group in pattern)groupr   r+   rM   rG   r%   rH   rR   mappingr;   s     r   convert$Template.substitute.<locals>.convertn   s    HHW%;();E 75>**xx	".~~%xx	".b!B!\\+ +r   _sentinel_dict	_ChainMapr%   subr:   r;   rX   kwsrY   s   ``  r   
substituteTemplate.substituteh   sA    n$GW-G
	+ ||77r   c                   ^ ^ T[         L a  UmOU(       a  [        UT5      mUU 4S jnT R                  R                  UT R                  5      $ )Nc                 f  > U R                  S5      =(       d    U R                  S5      nUb   [        TU   5      $ U R                  S5      b  TR                  $ U R                  S5      b  U R                  5       $ [	        STR
                  5      e! [         a    U R                  5       s $ f = frQ   )rV   r   KeyErrorr+   rG   r%   rW   s     r   rY   )Template.safe_substitute.<locals>.convert   s    HHW%;();E &wu~.. xx	".~~%xx	".xxz!B!\\+ +   &88:%&s   B B0/B0r[   r_   s   ``  r   safe_substituteTemplate.safe_substitute{   sA    n$GW-G	+ ||77r   c                 $   U R                   R                  U R                  5       Hg  nUR                  S5      b    gUR                  S5      b  M+  UR                  S5      b  M?  UR                  S5      b  MS  [	        SU R                   5      e   g)Nr?   FrR   rS   rT   rU   T)r%   finditerr:   rV   rG   )r;   rH   s     r   is_validTemplate.is_valid   s|    ,,''6Bxx	".!)HHX&.HHY'/ !!FLL" " 7 r   c                 l   / nU R                   R                  U R                  5       H  nUR                  S5      =(       d    UR                  S5      nUb  X1;  a  UR	                  U5        MG  Ub  ML  UR                  S5      b  M`  UR                  S5      b  Mt  [        SU R                   5      e   U$ )NrR   rS   r?   rT   rU   )r%   rj   r:   rV   appendrG   )r;   idsrH   rR   s       r   get_identifiersTemplate.get_identifiers   s    ,,''6BHHW%;();E U%5

5!-HHY'/HHY'/ !!FLL" " 7 
r   r9   )__name__
__module____qualname____firstlineno__r+   r,   r-   r)   
IGNORECASEr/   r'   r<   rM   r\   ra   rg   rk   rp   __static_attributes____classcell__)r5   s   @r   r   r   9   sR     I
 )INNNED$!

* "0 8& '5 8* r   r   c                   P    \ rS 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g)r      c                &    U R                  XU5      $ r8   )vformat)r;   format_stringargskwargss       r   formatFormatter.format   s    ||M88r   c                 h    [        5       nU R                  XX4S5      u  pVU R                  XBU5        U$ )N   )set_vformatcheck_unused_args)r;   r}   r~   r   	used_argsresult_s          r   r|   Formatter.vformat   s2    E	MM-v!L	y7r   c           
      8   US:  a  [        S5      e/ nU R                  U5       H  u  ppU(       a  UR                  U5        U	c  M#  U	S:X  a!  USL a  [        S5      e[        U5      n	US-  nO)U	R	                  5       (       a  U(       a  [        S5      eSnU R                  XU5      u  pUR                  U5        U R                  X5      nU R                  XUXES-
  US9u  pUR                  U R                  X5      5        M     SR                  U5      U4$ )Nr   zMax string recursion exceededrB   FzJcannot switch from manual field specification to automatic field numberingrA   )auto_arg_index)rG   parsern   r   isdigit	get_fieldaddconvert_fieldr   format_fieldr   )r;   r}   r~   r   r   recursion_depthr   r   literal_text
field_nameformat_spec
conversionobjarg_useds                 r   r   Formatter._vformat   s=   Q<==

=) >Lk l+ %
 #%.( *5 6 6 "%^!4J"a'N''))%( *5 6 6
 &+N !%z Hh' ((9 /3mmvq0#1 /< /3+ d//ABW *Z wwv..r   c                 <    [        U[        5      (       a  X!   $ X1   $ r8   )
isinstanceint)r;   keyr~   r   s       r   	get_valueFormatter.get_value   s    c39;r   c                     g r8    )r;   r   r~   r   s       r   r   Formatter.check_unused_args  s    r   c                     [        X5      $ r8   )r   )r;   valuer   s      r   r   Formatter.format_field  s    e))r   c                     Uc  U$ US:X  a  [        U5      $ US:X  a  [        U5      $ US:X  a  [        U5      $ [        SR	                  U5      5      e)Nr   raz"Unknown conversion specifier {0!s})r   reprasciirG   r   )r;   r   r   s      r   r   Formatter.convert_field  sZ    L3u:3;3<=DDZPQQr   c                 .    [         R                  " U5      $ r8   )_stringformatter_parser)r;   r}   s     r   r   Formatter.parse  s    ''66r   c                     [         R                  " U5      u  pEU R                  XBU5      nU H  u  pxU(       a  [        Xh5      nM  Xh   nM     Xd4$ r8   )r   formatter_field_name_splitr   getattr)	r;   r   r~   r   firstrestr   is_attrrI   s	            r   r   Formatter.get_field(  sO    88DnnU&1 JGcof	  zr   r   N)r   )rr   rs   rt   ru   r   r|   r   r   r   r   r   r   r   rw   r   r   r   r   r      s6    9 !"3/l*
R(7r   r   r8   )__all__r   r   r   r   r   r   r   r   r
   r	   r   rer)   collectionsr    r]   r\   r   r'   r   r   r   r   <module>r      s   "2  
../1	X(		5]"[0:=	
@  -r rl 	   y yr   