Ë u4Ïa�$›cãó®—dZddlZddlmZddlmZmZmZmZm Z m Z m Z m Z m Z mZddlmZmZmZmZmZddlmZddlmZmZdd lmZmZmZmZdd lm Z dd l!m"Z"dd l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)Gd „dee%«Z*e*jWd«e*jWd«e*jYd«e*jYd«e*jYd«e*jYd«e*jYd«e*jWd«e*jWd«e*jWdd¬«e*jWd«e*jWd«e*jWd«y)z> XPath 1.0 implementation - part 1 (parser class and symbols) éN)ÚABCMeta) ÚcastÚAnyÚClassVarÚDictÚMutableMappingÚOptionalÚTupleÚTypeÚSetÚSequenceé)ÚMissingContextErrorÚElementPathValueErrorÚElementPathNameErrorÚElementPathKeyErrorÚ xpath_error)ÚQName)ÚTokenÚParser)ÚNamespacesTypeÚ XML_NAMESPACEÚ XSD_NAMESPACEÚXPATH_FUNCTIONS_NAMESPACE)Úmatch_sequence_type)ÚAbstractSchemaProxy)Ú NargsTypeÚ XPathTokenÚ XPathAxisÚ XPathFunctionÚ ProxyTokenÚContextArgTypecóX‡—eZdZUdZdZ eZeee e d<e jd«Z e jd«Zhd£ZdeiZeeeefe d< d Zeeed fe d <hd £Zeeee d <dZeee d<dZeeeefe d<dZeee d<eZiZ eee!e"fefe d<dZ#e$e d<dZ%e$e d< dZ&eee d< d9dee'de$ddfˆfd„ Z(defd„Z)e*deeeffd„«Z+e*defd„«Z,dedefd„Z-e.d ed!e/ededfd"„«Z0e1d#edefd$„«Z2e.d:d%ed&ed'e"dee3fd(„«Z4e.d;d%ed)e$d'e"dee5fd*„«Z6e. dde8fd8„Z?ˆxZ@S)>Ú XPath1Parseraü XPath 1.0 expression parser class. Provide a *namespaces* dictionary argument for mapping namespace prefixes to URI inside expressions. If *strict* is set to `False` the parser enables also the parsing of QNames, like the ElementPath library. :param namespaces: a dictionary with mapping from namespace prefixes into URIs. :param strict: a strict mode is `False` the parser enables parsing of QNames in extended format, like the Python's ElementPath library. Default is `True`. ú1.0Útoken_base_classzF'(?:[^']|'')*'|"(?:[^"]|"")*"|(?:\d+|\.\d+)(?:\.\d*)?(?:[Ee][+-]?\d+)?z,[^\d\W][\w.\-\xb7\u0300-\u036F\u203F\u2040]*>úprocessing-instructionÚnodeÚtextÚcommentÚelementÚxmlÚDEFAULT_NAMESPACES)Úaxisz kind test.ÚPATH_STEP_LABELS> ú..Ú*Ú.Ú@Ú{ú(name)ú(float)ú(string)ú (decimal)ú (integer)ÚPATH_STEP_SYMBOLSNÚschemaÚvariable_typesÚbase_uriÚfunction_signaturesTÚparse_argumentsÚcompatibility_modeÚdefault_namespaceÚ namespacesÚstrictÚreturncó°•—tt|� «|jj «|_|�|j j |«||_y©N)Úsuperr$Ú__init__r-ÚcopyrBÚupdaterC)ÚselfrBrCÚ __class__s €úE/usr/lib/python3.12/site-packages/elementpath/xpath1/xpath1_parser.pyrHzXPath1Parser.__init__OsEø€ä Œl˜DÑ*Ô,Ø*.×*AÑ*A×*FÑ*FÓ*HˆŒØ Ð !Ø �O‰O× "Ñ " :Ô .Ø"ˆ� ócó—g}|j|jk7r$|jt|j««|j s|jd«|j j›ddj|«›d�S)Nz strict=FalseÚ(ú, Ú)) rBr-ÚappendÚstrÚother_namespacesrCrLÚ__name__Újoin)rKÚargss rMÚ__str__zXPath1Parser.__str__Wsj€ØˆØ �?‰?˜d×5Ñ5Ò 5Ø �K‰Kœ˜D×1Ñ1Ó2Ô 3Ø�{Š{Ø �K‰K˜Ô 'Ø—.‘.×)Ñ)Ð*¨!¨D¯I©I°d«OÐ+<¸AÐ>Ð>rNcóª—|jj«D��cic](\}}||jvs|j||k7r||“Œ*c}}Scc}}w)z.The subset of namespaces not known by default.)rBÚitemsr-)rKÚkÚvs rMrUzXPath1Parser.other_namespaces_sc€ð"&§¡×!6Ñ!6Ô!8ôXÑ!8™˜˜AؘD×3Ñ3Ñ3°t×7NÑ7NÈqÑ7QÐUVÒ7Vð�1‘Ð!8òXð XùóXsž-Acó—y)Nr%©)rKs rMÚ xsd_versionzXPath1Parser.xsd_versiones€àrNÚ local_namecóÜ—|jjd«tk(rd|zS|jj«D]\}}|tk(sŒ|r |›d|›�cS|cSt dd«‚)z2Returns a prefixed QName string for XSD namespace.Úxszxs:%sÚ:ÚXPST0081z"Missing XSD namespace registration)rBÚgetrr[r)rKraÚpfxÚuris rMÚ xsd_qnamezXPath1Parser.xsd_qnameisi€à �?‰?× Ñ ˜tÓ $¬ Ò 5ؘZÑ'Ð 'àŸ™×-Ñ-Ö/‰HˆC�Ø”mÓ#Ù69¢#¡zÐ2ÒI¸zÒIð0ô˜*Ð&JÓKÐKrNÚnameÚsymbolsc óЗ|jj«D��cic] \}}||vsŒ ||“Œ}}}ttdt |›|j ›�|fd|i««Scc}}w)z8Get a parser subclass with a restricted set of symbols.sr$Ú symbol_table)rmr[rr rrV)Úclsrjrkr\r]rms rMÚcreate_restricted_parserz%XPath1Parser.create_restricted_parserts{€ð !×-Ñ-×3Ñ3Ô5ô Ù5‘T�Q˜¸¸gºˆAˆq‰DÐ5ð ñ ô”D˜Ñ(¬'؈f�S—\‘\�NÐ # c V¨n¸lÐ-Kó+ ó ð ùó s ž A"«A"Ústring_literalcóx—|jd«r|ddjdd«S|ddjdd«S)NÚ'ééÿÿÿÿz''z""Ú")Ú startswithÚreplace)rps rMÚunescapezXPath1Parser.unescapesD€à × $Ñ $ SÔ )Ø! ! BÐ'×/Ñ/°°cÓ:Ð :à! ! BÐ'×/Ñ/°°cÓ:Ð :rNÚsymbolÚlabelÚbpcó0—||jvrWt|j|t«s:|jj|«}||jd|j›d|›�<|j |tf|||¬«}t tt|«S)z$Register a proxy token for a symbol.r4Ú})ÚbasesrzÚlbpÚrbp)rmÚ issubclassr!ÚpopÚ namespaceÚregisterrr )rnryrzr{Ú token_clsÚ proxy_classs rMÚproxyzXPath1Parser.proxy†s�€ð �S×%Ñ%Ñ %¬j¸×9IÑ9IÈ&Ñ9QÔS]Ô.^à×(Ñ(×,Ñ,¨VÓ4ˆIØENˆC× Ñ ˜r )×"5Ñ"5Ð!6°b¸¸ÐAÑ Bà—l‘l 6´*°ÀeÐQSÐY[�lÓ\ˆ Ü”DœÑ$ kÓ2Ð2rNÚ reverse_axiscóh—|j|dtf|||¬«}ttt|«S)z>Register a token for a symbol that represents an XPath *axis*.r.)rzr~rˆrr€)r„rrr )rnryrˆr{Ú token_classs rMr.zXPath1Parser.axis‘s8€ð—l‘l 6°Ä ¸|Ø0<À"È"ð#óNˆ ä”Dœ‘O [Ó1Ð1rNÚprefixÚnargsÚsequence_typescóª—tf||||dœ}d|vr(ttt|j|fi|¤Ž«S||jvrt |›d�«‚|r˜|j |}t||›d|›�«} | j|d<d|j«›|j«›t|«j«jdd«›�|d <||d <|j|d |¬ «nttd |z«} t|d <|�r||d<|€�nt|t «rJt#|«|dzk(sJ‚dj%dj'|dd«|d«|j(| |f<n»|d€Pt#|«|ddzk(sJ‚dj%dj'|dd«|d«|j(| |df<nft#|«|ddzk(sJ‚t+|d|ddz«D]8} dj%dj'|d| «|d«|j(| | f<Œ:ttt|j|fi|¤Ž«S)zY Registers a token class for a symbol that represents an XPath function. )r~rzrŒrr€Úfunctionz is a reserved function namerdÚ lookup_nameÚ_Ú ÚÚ class_namerƒzproxy function)rzr{zfn:%sr�Nrszfunction({}) as {}rQrtrzfunction({}, ...) as {})r rr r„ÚRESERVED_FUNCTION_NAMESrr-rÚ expanded_nameÚ capitalizerTÚtitlerwr‡rÚ isinstanceÚintÚlenÚformatrWr>Úrange) rnryr‹rzrŒr�r{ÚkwargsrƒÚqnameÚaritys rMr�zXPath1Parser.function˜s†€ô$Ð%ØØØØñ  ˆð ˜UÑ "䜜]Ñ+¨\¨S¯\©\¸&Ñ-KÀFÑ-KÓLÐ LØ �s×2Ñ2Ñ 2Ü'¨6¨*Ð4PÐ(QÓRÐ Rá Ø×.Ñ.¨vÑ6ˆIܘ)²¹Ð%?Ó@ˆEØ$)×$7Ñ$7ˆF�=Ò !à×!Ñ!Ô#Ø×!Ñ!Ô#Ü�E“ × Ñ Ó"×*Ñ*¨3°Ô3ð$ˆF�<Ñ ð #,ˆF�;Ñ Ø �I‰I�fÐ$4¸ˆIÕ <äÔ3°W¸vÑ5EÓFˆEÜ";ˆF�;Ñ â à'5ˆFÐ#Ñ $àˆ}ÙܘE¤3Ô'ܘ>Ó*¨e°a©iÒ7Ð7Ð7Ø:N×:UÑ:UØ—I‘I˜n¨S¨bÐ1Ó2°NÀ2Ñ4Fó;�×'Ñ'¨°¨Ò7ð�q‘Ð!ܘ>Ó*¨e°A©h¸©lÒ:Ð:Ð:Ø=V×=]Ñ=]Ø—I‘I˜n¨S¨bÐ1Ó2°NÀ2Ñ4Fó>�×'Ñ'¨°°a±Ð(9Ò:ô˜>Ó*¨e°A©h¸©lÒ:Ð:Ð:Ü" 5¨¡8¨U°1©X¸©\Ö:�EØ>R×>YÑ>YØŸ ™  .°°%Ð"8Ó9¸>È"Ñ;Mó?�C×+Ñ+¨U°E¨NÒ;ð;ô ”DœÑ'¨¨¯©°fÑ)GÀÑ)GÓHÐHrNÚsourcecóp•—tt|� |«} |j«|S#t$rY|SwxYwrF)rGr$ÚparseÚevaluater)rKr¡Ú root_tokenrLs €rMr£zXPath1Parser.parse×sGø€Üœ<¨Ñ4°VÓ<ˆ ð Ø × Ñ Ô !ðÐøô#ò Ø ØÐð ús –(¨ 5´5)Úmessager¦cóp—|jj|vryd|vrt|jttf«s_|j j |jj«�0|jd||jj«|_y|jj|«‚)a3 Checks the next token with a list of symbols. Replaces the next token with a '(name)' token if the check fails and the next token can be a name, otherwise raises a syntax error. :param symbols: a sequence of symbols. :param message: optional error message. Nr5) Ú next_tokenryr™r rÚ name_patternÚmatchrmÚ wrong_syntax)rKr¦rks rMÚ expected_nextzXPath1Parser.expected_nextßs�€ð �?‰?× !Ñ ! WÑ ,Ø Ø ˜Ñ ܘtŸ™´Ä Ð0JÔKØ×!Ñ!×'Ñ'¨¯©×(>Ñ(>Ó?ÐKà9˜d×/Ñ/°Ñ9¸$ÀÇÁ×@VÑ@VÓWˆD�Oà—/‘/×.Ñ.¨wÓ7Ð 7rNÚvaluescó¬—|j«D]A\}}t|t|t«rdnd|«rŒ&dj |«}t d|«‚y)zCChecks the sequence types of the XPath dynamic context's variables.zitem()*zitem()z)Unmatched sequence type for variable {!r}ÚXPDY0050N)r[rr™Úlistrœr)rKr­ÚvarnameÚvaluer¦s rMÚcheck_variableszXPath1Parser.check_variablesòsP€à$Ÿl™lžn‰NˆG�UÜ&ؤJ¨u´dÔ$;‘yÀÈ4õðF×LÑLÈWÓU�Ü! *¨gÓ6Ð6ñ -rNr Úcontextcó—d|vrttd|›�«}n\|jd«rtt|«}|dd}n5|jd«\}} |j|}t||›d|›�«}|j|jvr|j|j}n,||jvr|j|}ntd|›�«‚t|t«st|›d�«‚|j|jk7rtd|j›�«‚ |||¬ «}|�||_ |S#t $rt d|›�«d‚wxYw#t$r d|j›d |›�} t!d | «d‚wxYw) aD Returns an XPathFunction object suitable for stand-alone usage. :param name: the name of the function. :param arity: the arity of the function object, must be compatible with the signature of the XPath function. :param context: an optional context to bound to the function. rdzfn:éNzUnknown namespace zunknown function z is not an XPath functionznamespace mismatch: )rŒÚ#ÚXPST0017)rrrvÚsplitrBÚKeyErrorrr–rmrr�r rƒr´Ú TypeErrorrŸr) rKrjr r´rŸr‹rƒrŠÚfuncÚmsgs rMÚ get_functionzXPath1Parser.get_functionûs¦€ð �d‰?ÜÔ3°s¸4¸&°\ÓB‰EØ �_‰_˜UÔ #ÜÔ3°TÓ:ˆEؘ˜�8‰DàŸ:™: c›?‰LˆF�Dð =Ø ŸO™O¨FÑ3� ô˜i¨F¨8°1°T°FÐ);Ó<�à × Ñ  $×"3Ñ"3Ñ 3Ø×+Ñ+¨E×,?Ñ,?Ñ@‰KØ �T×&Ñ&Ñ &Ø×+Ñ+¨DÑ1‰Kä&Ð):¸4¸(Ð'CÓDÐ Dä˜+¤}Ô5Ü&¨$¨Ð1JÐ'KÓLÐ Là × Ñ  E§O¡OÒ 3Ü&Ð)=¸k×>SÑ>SÐ=TÐ'UÓVÐ Vð Ù˜t¨5Ô1ˆDð Ð"Ø&�” ؈Køô5ò UÜ)Ð,>¸v¸jÐ*IÓJÐPTÐTð Uûô(ò 9Ø% e§k¡k ]°!°E°7Ð;ˆCܘj¨#Ó.°DÐ 8ð 9úsÁD8Ä# EÄ8EÅ)E=)NT)r‡éZ)FéP)Nr�Nr_r¿rF)ArVÚ __module__Ú __qualname__Ú__doc__Úversionrr&r rrÚ__annotations__ÚreÚcompileÚliterals_patternr©r•rr-rrrTr/r r:r r;r rr<r=rÚfunction_namespacer>rršr?Úboolr@rArrHrYÚpropertyrUr`riÚ classmethodr roÚ staticmethodrxr!r‡rr.rr r�r£r¬rr³r"r¾Ú __classcell__)rLs@rMr$r$szø…ñð€GØ#à)3Ð�d˜5 ™:Ñ&Ó3Ø!�r—z‘zØUóÐð�2—:‘:ÐMÓN€LòÐð5:¸=Ð3IИ  c¨3 h¡Ñ0ÓIØ1ð3HÐ�h˜u S¨# X™Ñ/ÓGò-Ð�x  C¡Ñ)óð -1€FˆHÐ(Ñ )Ó0Ø/3€N�H˜T # s (™^Ñ,Ó3Ø"€Hˆh�s‰mÓ"Ø2ÐØ8:И˜e E¨3 JÑ/°Ð4Ñ5Ó:Ø €O�TÓ à#ИÓ#Ø'à'+Ð�x ‘}Ó+ðð ?CØ $ñ# 8¨NÑ#;ð#Øð#Ø)-õ#ð?˜ó?ððX $ s¨C x¡.òXóðXð ð˜Sòóðð L Cð L¨Có Lðð ¨Cð ¸(À3¹-ð Ø�NÑ#ò óð ðð; ð;¨ò;óð;ð ñ3˜3ð3 sð3¸#ð3ÀtÈJÑGWò3óð3ðñ2˜#ð2¨Tð2¸sð2ÈDÐQZÉOò2óð2ð à)-Ø(Ø$(Ø35Øñ <I˜cð<IØ! #™ð<Iàð<Ið"ð<Ið"' s¨C x¡ð <Ið ð <Ið #' }Ñ"5ò <Ióð<Ið|˜Cð JõðEIò8 cð8°H¸S±Mð8ÈTó8ð&7 n°S¸#°XÑ&>ð7À4ó7ð04ñ- ð-¨X°c©]ð-Ø,ð-Ø8E÷-rNr$z(start)z(end)r7r6r8r9z (invalid)z (unknown)Ú,rRéd)r{Ú]z::r})-rÃrÆÚabcrÚtypingrrrrrr r r r r Ú exceptionsrrrrrÚ datatypesrÚtdoprrrBrrrrr�rÚ schema_proxyrÚ xpath_tokensrrrr r!r"r$r„Úliteralr_rNrMÚrÚsðñó Ý÷)÷)÷)÷;õ;åß ÷óå0Ý.÷÷ôJ�6˜*Ñ%ôJð^ ×Ñ�iÔ Ø ×Ñ�gÔØ ×Ñ�ZÔ Ø ×Ñ�YÔØ ×Ñ�[Ô!Ø ×Ñ�[Ô!Ø ×Ñ�[Ô!Ø ×Ñ�kÔ"ð ×Ñ�cÔØ ×Ñ�c˜cÐÔ"Ø ×Ñ�cÔØ ×Ñ�dÔØ ×Ñ�cÕrN