¯ÕYfN.ã @sûdZddddddddd d d d g Zd dlZdZdZdZeeZdZeddZdZ dZ eee eZ ddd„Z d dl Zd dlmZGdd„deƒZGdd „d deƒZGdd „d ƒZdS)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_lettersÚascii_lowercaseÚascii_uppercaseÚcapwordsÚdigitsÚ hexdigitsÚ octdigitsÚ printableÚ punctuationÚ whitespaceÚ FormatterÚTemplateéNz ZabcdefghijklmnopqrstuvwxyzZABCDEFGHIJKLMNOPQRSTUVWXYZÚ 0123456789ZabcdefZABCDEFZ01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~cCs)|p djdd„|j|ƒDƒƒS)a‘capwords(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. ú css|]}|jƒVqdS)N)Ú capitalize)Ú.0Úx©rú+/opt/alt/python35/lib64/python3.5/string.pyú 0szcapwords..)ÚjoinÚsplit)ÚsÚseprrrr%s )ÚChainMapcs(eZdZdZ‡fdd†Z‡S)Ú_TemplateMetaclassa/ %(delim)s(?: (?P%(delim)s) | # Escape sequence of two delimiters (?P%(id)s) | # delimiter and a Python identifier {(?P%(id)s)} | # delimiter and a braced identifier (?P) # Other ill-formed delimiter exprs ) cstt|ƒj|||ƒd|kr4|j}n(tjdtj|jƒd|ji}tj||j tj Bƒ|_dS)NÚpatternZdelimÚid) ÚsuperrÚ__init__rÚ_reÚescapeÚ delimiterÚ idpatternÚcompileÚflagsÚVERBOSE)ÚclsÚnameÚbasesZdctr)Ú __class__rrrAs  z_TemplateMetaclass.__init__)Ú__name__Ú __module__Ú __qualname__rrrr)r*rr7s rc@s[eZdZdZdZdZejZdd„Z dd„Z dd „Z d d „Z d S) r z.A string class for supporting $-substitutions.ú$z[_a-z][_a-z0-9]*cCs ||_dS)N)Útemplate)Úselfr/rrrrTszTemplate.__init__cCsŒ|jdƒ}|jd|…jddƒ}|sCd}d}n/|tdj|dd…ƒƒ}t|ƒ}td||fƒ‚dS)NÚinvalidÚkeependsTéÚz.Invalid placeholder in string: line %d, col %déÿÿÿÿ)Ústartr/Ú splitlinesÚlenrÚ ValueError)r0ÚmoÚiÚlinesÚcolnoÚlinenorrrÚ_invalidYs # zTemplate._invalidcsœ|stdƒ‚|^‰}t|ƒdkr<tdƒ‚|sK|‰n&|rgt||dƒ‰n |d‰‡‡fdd†}ˆjj|ˆjƒS)Nz>descriptor 'substitute' of 'Template' object needs an argumentr3zToo many positional argumentsr cs“|jdƒp|jdƒ}|dk r?ˆ|}d|fS|jdƒdk r[ˆjS|jdƒdk r}ˆj|ƒtdˆjƒ‚dS)NÚnamedÚbracedz%sÚescapedr1z#Unrecognized named group in pattern)Úgroupr"r?r9r)r:r@Úval)Úmappingr0rrÚconvertss    z$Template.substitute..convert)Ú TypeErrorr8Ú _ChainMaprÚsubr/)ÚargsÚkwsrFr)rEr0rÚ substitutees     zTemplate.substitutecsœ|stdƒ‚|^‰}t|ƒdkr<tdƒ‚|sK|‰n&|rgt||dƒ‰n |d‰‡‡fdd†}ˆjj|ˆjƒS)NzCdescriptor 'safe_substitute' of 'Template' object needs an argumentr3zToo many positional argumentsr c s­|jdƒp|jdƒ}|dk r\ydˆ|fSWntk r[|jƒSYnX|jdƒdk rxˆjS|jdƒdk r—|jƒStdˆjƒ‚dS)Nr@rAz%srBr1z#Unrecognized named group in pattern)rCÚKeyErrorr"r9r)r:r@)rEr0rrrF‘s   z)Template.safe_substitute..convert)rGr8rHrrIr/)rJrKrFr)rEr0rÚsafe_substituteƒs     zTemplate.safe_substituteN) r+r,r-Ú__doc__r"r#r Ú IGNORECASEr%rr?rLrNrrrrr Ms    Ú metaclassc@seZdZdd„Zdd„Zddd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dS)r c Os¥|stdƒ‚|^}}y|^}}Wnatk r‘d|kr~|jdƒ}ddl}|jdtddƒntdƒd‚YnX|j|||ƒS)Nz;descriptor 'format' of 'Formatter' object needs an argumentÚ format_stringr z9Passing 'format_string' as keyword argument is deprecatedÚ stackleveléz@format() missing 1 required positional argument: 'format_string')rGr9ÚpopÚwarningsÚwarnÚDeprecationWarningÚvformat)rJÚkwargsr0rRrVrrrÚformat¯s        zFormatter.formatcCsAtƒ}|j||||dƒ\}}|j|||ƒ|S)NrT)ÚsetÚ_vformatÚcheck_unused_args)r0rRrJrZÚ used_argsÚresultÚ_rrrrYÁs !zFormatter.vformatr c CsU|dkrtdƒ‚g}x!|j|ƒD]\}} } } |rS|j|ƒ| dk r.| dkrœ|dkrƒtdƒ‚t|ƒ} |d7}n$| jƒrÀ|rºtdƒ‚d}|j| ||ƒ\} } |j| ƒ|j| | ƒ} |j| ||||dd|ƒ\} }|j|j | | ƒƒq.Wdj |ƒ|fS)Nr zMax string recursion exceededr4FzJcannot switch from manual field specification to automatic field numberingr3Úauto_arg_index) r9ÚparseÚappendÚstrÚisdigitÚ get_fieldÚaddÚ convert_fieldr]Ú format_fieldr)r0rRrJrZr_Zrecursion_depthrbr`Z literal_textÚ field_nameÚ format_specÚ conversionÚobjZarg_usedrrrr]Çs4              zFormatter._vformatcCs#t|tƒr||S||SdS)N)Ú isinstanceÚint)r0ÚkeyrJrZrrrÚ get_valueýszFormatter.get_valuecCsdS)Nr)r0r_rJrZrrrr^szFormatter.check_unused_argscCs t||ƒS)N)r[)r0ÚvaluerlrrrrjszFormatter.format_fieldcCsk|dkr|S|dkr&t|ƒS|dkr<t|ƒS|dkrRt|ƒStdj|ƒƒ‚dS)NrÚrÚaz"Unknown conversion specifier {0!s})reÚreprÚasciir9r[)r0rsrmrrrri s       zFormatter.convert_fieldcCs tj|ƒS)N)Ú_stringZformatter_parser)r0rRrrrrc szFormatter.parsec Csmtj|ƒ\}}|j|||ƒ}x6|D].\}}|rUt||ƒ}q1||}q1W||fS)N)rxZformatter_field_name_splitrrÚgetattr) r0rkrJrZÚfirstÚrestrnZis_attrr;rrrrg)szFormatter.get_fieldN) r+r,r-r[rYr]rrr^rjrircrgrrrrr ®s   5     )rOÚ__all__rxr rrrrrrr rrÚrer Ú collectionsrrHÚtyperr r rrrrÚs&    a