
    h                        % S r SSKrSSKrSSKrSSKrSSKJrJrJrJ	r	J
r
Jr  SSKJrJr  SSKJr  SrSq\S	   \S
'   \R(                  S\S	   4S j5       rS\S	   4S jrS\S\4S jrS\	\   S\4S jrS\S\4S jrS\S\4S jrS\S\4S jrS\S\
\\4   4S jrS\S\S\4S jr\R@                  " SS9S\RB                  4S j5       r"S\4S jr#S \S\4S! jr$S"\\   S\4S# jr%S$\S\4S% jr&g)&z1Utilities and constants for working with strings.    N)IterableListLiteralSequenceTupleType)get_args
get_origin   )	_resolver__tyro_dummy_field__-)r   _	DELIMETER	delimeterc              #   (   #    [         nU q Sv   Uq g7f)zwContext for setting the delimeter. Determines if `field_a` is populated as
`--field-a` or `--field_a`. Not thread-safe.Nr   )r   delimeter_restores     G/home/james-whalen/.local/lib/python3.13/site-packages/tyro/_strings.pydelimeter_contextr      s     
 "I	!Is   returnc                      [         $ )z%Get delimeter used to separate words.r        r   get_delimeterr      s    r   pc                     [        5       S:X  a@  U R                  S5      nU S[        U 5      [        U5      -
   UR                  SS5      -   n U $ U R                  SS5      n U $ )zJReplace hyphens with underscores (or vice versa) except when at the start.r   r   N)r   lstriplenreplace)r   strippeds     r   swap_delimetersr"   !   sc    #88C=&AX&'(*:*:3*DD H IIc3Hr   partsc                 r    SR                  U 5      nSR                  S UR                  S5       5       5      $ )zJoin parts of a field name together. Used for nesting.

('parent_1', 'child') => 'parent-1.child'
('parents', '1', '_child_node') => 'parents.1._child-node'
('parents', '1', 'middle._child_node') => 'parents.1.middle._child-node'
.c              3   r   #    U  H-  n[        U5      S :  d  M  U[        :w  d  M   [        U5      v   M/     g7f)r   N)r   dummy_field_namer"   ).0parts     r   	<genexpr>"make_field_name.<locals>.<genexpr>3   s:      "Dt9q= 	!%55 	"s   777)joinsplit)r#   outs     r   make_field_namer/   +   s7     ((5/C88 IIcN  r   namec                     U  S3$ )Nz (positional)r   )r0   s    r   make_subparser_destr2   :   s    V=!!r   textc                     U R                  S5      u  pnUS:X  a  [        R                  " U 5      $ UR                  5        S[        R                  " U5       3$ )z4Same as textwrap.dedent, but ignores the first line.
 )	partitiontextwrapdedentstrip)r3   
first_line
line_breakrests       r   r9   r9   >   sQ    #'>>$#7 JDRt$$ !HOOD$9#:;;r   c                     [         R                  " S5      R                  [        5       S-   U 5      R	                  5       nU$ )Nz(((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))z\1)recompilesubr   lower)r0   r.   s     r    hyphen_separated_from_camel_caserC   F   s5    


=>	]_u$d	+	 
 Jr   clsc                   ^ SSK Jn  [        R                  " U 5      u  p[        R                  " U [        R
                  5      u  p4[        R                  " XR                  5      u  pS nSn[        U5      S:  a  US   R                  nUS   R                  nUb  Xg4$ [        U5      S:  a  [        US   R                  5      U4$ S[        S[        4U4S jjm[        U5      S:X  a
  T" U 5      U4$ [        5       R                  T" U 5      /[        [!        S	 [        UR#                  5       5      5      5      -   5      U4$ )
Nr   )_confstructTr   rD   r   c                   > [        U 5      nUbv  [        US5      (       ae  UR                  /nUR                  [	        T[        U 5      5      5        U Vs/ s H  n[        U5      PM     nn[        5       R                  U5      $ [        U S5      (       a  [        U R                  5      $ [        [        U 5      5      $ s  snf )N__name__)
r
   hasattrrI   extendmapr	   rC   r   r,   str)rD   origr#   r)   get_names       r   rO   +_subparser_name_from_type.<locals>.get_namem   s    #j 9 9]]OELLXx}56HMN5d;EN ?''..S*%%3CLLAA3CH== Os   C c                     [        U 5      S   $ )Nr   )_subparser_name_from_typexs    r   <lambda>+_subparser_name_from_type.<locals>.<lambda>   s    7:1=r   )confrF   r   resolve_generic_typesunwrap_annotatedTyroTypeAliasBreadCrumb_SubcommandConfigr   r0   prefix_namerC   r   rM   r   r,   listrL   values)	rD   rF   type_from_typevarr   type_alias_breadcrumbsfound_subcommand_configs
found_namer\   rO   s	           @r   rR   rR   O   sU   !&<<SAC ) : :Y..!A %.$>$>**%!C
 JK
#$q(-a055
.q1==&& !"Q&,-CB-G-L-LM
 	

>d 
>s 
> "}k)) 	c]O=*1134	
 	 r   prefixc                     U[        S 5      La  [        U5      OSu  p#[        U 5      S:X  d  U(       d  U$ [        5       S:X  a  U  S[	        UR                  S5      5       3$ [        5       S:X  d   eU  SU 3$ )N)NoneTr   r   :r%   r   )typerR   r   r   r/   r-   )rc   rD   suffix
use_prefixs       r   subparser_name_from_typerj      s    *-T$Z*?!#&^ F 6{az#?6<<+<=>??#%%%6(##r   )maxsizec                  .    [         R                  " S5      $ )Nz%\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~]))r?   r@   r   r   r   _get_ansi_patternrm      s     ::>??r   rT   c                 6    [        5       R                  SU 5      $ )Nr6   )rm   rA   rS   s    r   strip_ansi_sequencesro      s    ""2q))r   singlec                 P    [        [        U 5      5      S:  a  SU  S3$ SU  SU  S3$ )N    [z [...]]z [z ...]])r   ro   )rp   s    r   multi_metavar_from_singlert      s9    
'(B.6('""6("VHF++r   metavarsc                    [        U 5      n U S   /n[        S[        U 5      5       H  nUS   nX   nUR                  S5      (       as  UR	                  S5      (       a]  UR                  S5      (       aG  UR	                  S5      (       a1  SU;  a+  SU;  a%  SUSS ;  a  SUSS ;  a  USS S-   USS -   US'   M  UR                  U5        M     [        U5       H  u  p%SU;   d  M  SU-   S-   X'   M     S	R                  U5      $ )
a  Metavar generation helper for unions. Could be revisited.

Examples:
    None, INT => NONE|INT
    {0,1,2}, {3,4} => {0,1,2,3,4}
    {0,1,2}, {3,4}, STR => {0,1,2,3,4}|STR
    {None}, INT [INT ...] => {None}|{INT [INT ...]}
    STR, INT [INT ...] => STR|{INT [INT ...]}
    STR, INT INT => STR|{INT INT}

The curly brackets are unfortunately overloaded but alternatives all interfere with
argparse internals.
r   r   rG   {} N,|)tupleranger   
startswithendswithappend	enumerater,   )ru   merged_metavarsiprevcurrms         r   join_union_metavarsr      s    XH{mO1c(m$r"{ OOC  c""$$c""444":%4":%"&s)c/DH"<OB""4(# %& /*!8!$q3O + 88O$$r   helptextc                 B   U R                  S5      n/ nU H  nUR                  5       n[        U5      S:X  aH  [        U5      S:  =(       a    US   S:H  nU(       d  UR                  S5        UR                  S5        Mj  US   R	                  5       (       d  UR                  S5        [        U5      S:  =(       a    US   S:H  n[        U5      S:  a  U(       d  UR                  S5        UR                  U5        M     SR                  U5      R                  5       $ )Nr5   r   r   rG   ry   r6   )r-   rstripr   r   isalphar,   )r   linesoutput_partslineprev_is_breaks        r   remove_single_line_breaksr      s    NN4 E L{{} t9>-2O|B7G47OM ##D)% 7??$$##D)-2O|B7G47OM< A%m##C(%% ( 77< ''))r   )'__doc__
contextlib	functoolsr?   r8   typingr   r   r   r   r   r   typing_extensionsr	   r
   r6   r   r'   r   __annotations__contextmanagerr   r   rM   r"   r/   r2   r9   rC   boolrR   rj   	lru_cachePatternrm   ro   rt   r   r   r   r   r   <module>r      s}   7   	  A A 2 ) "	78 " "!2 " "wx( 
s s 8C= S "c "c "< < <3 3 84 8E#t),< 8v$S $t $ $ T"@2:: @ #@
*C *,c ,c ,'%(3- '%C '%T* * *r   