й¼]N.ã @sõdddddddddd d d g Zd d lZdZdZdZeeZdZeddZdZdZ eee eZ d dd„Z d d l Z d dlmZGdd„deƒZGdd „d deƒZGdd „d ƒZd S)Ú ascii_lettersÚascii_lowercaseÚascii_uppercaseÚcapwordsÚdigitsÚ hexdigitsÚ octdigitsÚ printableÚ punctuationÚ whitespaceÚ FormatterÚTemplateéNz ÚabcdefghijklmnopqrstuvwxyzÚABCDEFGHIJKLMNOPQRSTUVWXYZÚ 0123456789ZabcdefZABCDEFÚ01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~cCs)|p djdd„|j|ƒDƒƒS)Nú 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ÚpatternÚdelimÚid) ÚsuperrÚ__init__rÚ_reÚescapeÚ delimiterÚ idpatternÚcompileÚflagsÚVERBOSE)ÚclsÚnameÚbasesÚdctr)Ú __class__rrr#As  z_TemplateMetaclass.__init__)Ú__name__Ú __module__Ú __qualname__rr#rr)r/rr7s rc@sUeZdZdZdZejZdd„Zdd„Z dd„Z d d „Z d S) r ú$z[_a-z][_a-z0-9]*cCs ||_dS)N)Útemplate)Úselfr4rrrr#TszTemplate.__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éÿÿÿÿ)Ústartr4Ú splitlinesÚlenrÚ ValueError)r5Ú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 argumentr8zToo 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Úescapedr6z#Unrecognized named group in pattern)Úgroupr&rDr>r)r?rEÚval)Úmappingr5rrÚconvertss    z$Template.substitute..convert)Ú TypeErrorr=Ú _ChainMaprÚsubr4)ÚargsÚkwsrKr)rJr5rÚ 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 argumentr8zToo 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)NrErFz%srGr6z#Unrecognized named group in pattern)rHÚKeyErrorr&r>r)r?rE)rJr5rrrK‘s   z)Template.safe_substitute..convert)rLr=rMrrNr4)rOrPrKr)rJr5rÚsafe_substituteƒs     zTemplate.safe_substituteN) r0r1r2r&r'r$Ú IGNORECASEr)r#rDrQrSrrrrr 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')rLr>ÚpopÚwarningsÚwarnÚDeprecationWarningÚvformat)rOÚkwargsr5rVrZrrrÚformat¯s        zFormatter.formatcCsAtƒ}|j||||dƒ\}}|j|||ƒ|S)NrX)ÚsetÚ_vformatÚcheck_unused_args)r5rVrOr^Ú used_argsÚresultÚ_rrrr]Á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 exceededr9FzJcannot switch from manual field specification to automatic field numberingr8Úauto_arg_index) r>ÚparseÚappendÚstrÚisdigitÚ get_fieldÚaddÚ convert_fieldraÚ format_fieldr)r5rVrOr^rcÚrecursion_depthrfrdÚ literal_textÚ field_nameÚ format_specÚ conversionÚobjÚarg_usedrrrraÇs4              zFormatter._vformatcCs#t|tƒr||S||SdS)N)Ú isinstanceÚint)r5ÚkeyrOr^rrrÚ get_valueýszFormatter.get_valuecCsdS)Nr)r5rcrOr^rrrrbszFormatter.check_unused_argscCs t||ƒS)N)r_)r5ÚvaluerrrrrrnszFormatter.format_fieldcCsk|dkr|S|dkr&t|ƒS|dkr<t|ƒS|dkrRt|ƒStdj|ƒƒ‚dS)NrÚrÚaz"Unknown conversion specifier {0!s})riÚreprÚasciir>r_)r5rzrsrrrrm s       zFormatter.convert_fieldcCs tj|ƒS)N)Ú_stringÚformatter_parser)r5rVrrrrg szFormatter.parsec Csmtj|ƒ\}}|j|||ƒ}x6|D].\}}|rUt||ƒ}q1||}q1W||fS)N)rÚformatter_field_name_splitryÚgetattr) r5rqrOr^ÚfirstÚrestrtÚis_attrr@rrrrk)szFormatter.get_fieldN) r0r1r2r_r]raryrbrnrmrgrkrrrrr ®s   5     )Ú__all__rr rrrrrrr rrÚrer$Ú collectionsrrMÚtyperr r rrrrÚs$    a