e .Sr/SQrSSKrSrSrSr\\-rSr\S-S -rS r S r \\-\ -\-r SS jr SSK rSS KJr 0r"SS5r\R)5 "SS5rg)anA collection of string constants. Public module variables: whitespace -- a string containing all ASCII whitespace ascii_lowercase -- a string containing all ASCII lowercase letters ascii_uppercase -- a string containing all ASCII uppercase letters ascii_letters -- a string containing all ASCII letters digits -- a string containing all ASCII decimal digits hexdigits -- a string containing all ASCII hexadecimal digits octdigits -- a string containing all ASCII octal digits punctuation -- a string containing all ASCII punctuation characters printable -- a string containing all ASCII characters considered printable ) ascii_lettersascii_lowercaseascii_uppercasecapwordsdigits hexdigits octdigits printable punctuation whitespace FormatterTemplateNz abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789abcdefABCDEF01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~cU=(d SR[[RUR U555$)aucapwords(s [,sep]) -> string Split the argument into words using split, capitalize each word using capitalize, and join the capitalized words using join. If the optional second argument sep is absent or None, runs of whitespace characters are replaced by a single space and leading and trailing whitespace are removed, otherwise sep is used to split and join the words.  )joinmapstr capitalizesplit)sseps ,/opt/imh/python3.13/lib/python3.13/string.pyrr%s, J3  S> ??)ChainMapc^\rSrSrSrSrSrSr\Rr U4Sjr Sr Sr \4S jr\4S jrS rS rS rU=r$)r 9z.A string class for supporting $-substitutions.$z(?a:[_a-z][_a-z0-9]*)Nc |>[TU]5 SUR;a URnOZ[R "UR 5nURnUR=(d URnSUSUSUSUS3 n[R"XR[R-5Ulg)Npatternz z(?: (?PzC) | # Escape sequence of two delimiters (?PzJ) | # delimiter and a Python identifier {(?Pz)} | # delimiter and a braced identifier (?P) # Other ill-formed delimiter exprs ) ) super__init_subclass____dict__r%_reescape delimiter idpatternbraceidpatterncompileflagsVERBOSE)clsr%delimidbid __class__s rr'Template.__init_subclass__Es !#  $kkGJJs}}-EB$$5 C G '"5! Gkk'99s{{+BC rcXlgNtemplate)selfr:s r__init__Template.__init__Ws rcURS5nURSURSS9nU(dSnSnO+U[SR USS55- n[U5n[ SXT4-5e)NinvalidT)keependsz.Invalid placeholder in string: line %d, col %d)startr: splitlineslenr ValueError)r;moilinescolnolinenos r_invalidTemplate._invalid\s| HHY  bq!,,d,;EFBGGE#2J/00EZFI )* *rc ^^T[LaUmOU(a [UT5mUU4SjnTRRUTR5$)Nc&>URS5=(d URS5nUb[TU5$URS5b TR$URS5bTRU5 [ STR 5eNnamedbracedescapedr?#Unrecognized named group in pattern)grouprr+rMrGr%rHrRmappingr;s rconvert$Template.substitute..convertnsHHW%;();E 75>**xx ".~~%xx ". b!B!\\+ +r_sentinel_dict _ChainMapr%subr:r;rXkwsrYs`` r substituteTemplate.substitutehsA n $G W-G +||77rc ^^T[LaUmOU(a [UT5mUU4SjnTRRUTR5$)Ncf>URS5=(d URS5nUb[TU5$URS5b TR$URS5bUR5$[ STR 5e![a UR5s$f=frQ)rVrKeyErrorr+rGr%rWs rrY)Template.safe_substitute..convertsHHW%;();E &wu~..xx ".~~%xx ".xxz!B!\\+ +  &88:%&s BB0/B0r[r_s`` rsafe_substituteTemplate.safe_substitute{sA n $G W-G +||77rc$URRUR5HgnURS5b gURS5bM+URS5bM?URS5bMS[ SUR5e g)Nr?FrRrSrTrUT)r%finditerr:rVrG)r;rHs ris_validTemplate.is_valids|,,'' 6Bxx ".!)HHX&.HHY'/!!FLL""7rcl/nURRUR5HnURS5=(d URS5nUbX1;aUR U5 MGUbMLURS5bM`URS5bMt[ SUR5e U$)NrRrSr?rTrU)r%rjr:rVappendrG)r;idsrHrRs rget_identifiersTemplate.get_identifierss,,'' 6BHHW%;();E U%5 5!-HHY'/HHY'/!!FLL""7 rr9)__name__ __module__ __qualname____firstlineno____doc__r+r,r-r) IGNORECASEr/r'r<rMr\rargrkrp__static_attributes__ __classcell__)r5s@rr r 9sS8I )IN NNED$! *"08&'58* rr cP\rSrSrSrSrS SjrSrSrSr Sr S r S r S r g )r c&URXU5$r8)vformat)r; format_stringargskwargss rformatFormatter.formats||M88rch[5nURXX4S5upVURXBU5 U$)N)set_vformatcheck_unused_args)r;r~rr used_argsresult_s rr}Formatter.vformats2E MM-v!L  y7 rc 8US:a [S5e/nURU5HuppU(aURU5 U cM#U S:Xa!USLa [S5e[U5n US- nO)U R 5(aU(a [S5eSnUR XU5upUR U 5 URX5n URXUXES- US9upURURX55 M SRU5U4$)NrzMax string recursion exceededrBFzJcannot switch from manual field specification to automatic field numberingrA)auto_arg_index) rGparsernrisdigit get_fieldadd convert_fieldr format_fieldr)r;r~rrrrecursion_depthrr literal_text field_name format_spec conversionobjarg_useds rrFormatter._vformats= Q <= = =) >Lk l+% #%.(*566"%^!4J"a'N''))%(*566 &+N!%z H  h'((9/3mmvq0#1/</3+  d//ABW*Zwwv..rc<[U[5(aX!$X1$r8) isinstanceint)r;keyrrs r get_valueFormatter.get_values c3  9 ; rcgr8)r;rrrs rrFormatter.check_unused_argss rc[X5$r8)r)r;valuers rrFormatter.format_fields e))rcUcU$US:Xa [U5$US:Xa [U5$US:Xa [U5$[SR U55e)Nrraz"Unknown conversion specifier {0!s})rreprasciirGr)r;rrs rrFormatter.convert_field sZ  L 3 u:  3 ;  3 < =DDZPQQrc.[R"U5$r8)_stringformatter_parser)r;r~s rrFormatter.parses'' 66rc[R"U5upEURXBU5nUHupxU(a [Xh5nMXhnM Xd4$r8)rformatter_field_name_splitrgetattr) r;rrrfirstrestris_attrrIs rrFormatter.get_field(sO88D nnU&1JGcof  zrrN)r)rrrsrtrurr}rrrrrrrrxrrrr r s69!"3/l * R(7 rr r8)rv__all__rr rrrrrrr r rrer) collectionsr r]r\r r'r rrrrs  2 ../1  X  (  5 ] "[ 0: = @-rrl yyr