Ë
    Ç[;jG   ã                   óÞ   — d Z ddlZddlZ ej                  d«      j                  Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeeeeeedœZde
iZ G d„ d«      Zd„ Zd„ Zd„ Zd„ Zy)zî
A simple XPath-like language for tree traversal.

This works by creating a filter chain of generator functions.  Each
function selects a part of the expression, e.g. a child node, a
specific descendant or a node that holds an attribute.
é    NzH(b?'[^']*'|b?\"[^\"]*\"|//?|\(\)|==?|[/.*\[\]()@])|([^/\[\]()@=\s]+)|\s+c                 óL   — t        | |«      }|�t        |«      t        u r|S |gS y)N© )ÚgetattrÚtypeÚlist)ÚnodeÚ	attr_nameÚchilds      úaG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\Cython/Compiler/TreePath.pyÚiterchildrenr      s/   € ä�D˜)Ó$€EØÐÜ�‹;œ$ÑØˆLà�7ˆNàó    c                 ó8   — 	 t        | «      S # t        $ r Y y w xY w©N)ÚnextÚStopIteration)Úits    r   Ú_get_first_or_noner   #   s"   € ðÜ�B‹xˆøÜò Ùðús   ‚
 �	˜c                 óR   — | j                   j                  j                  d«      d   S )NÚ.éÿÿÿÿ)Ú	__class__Ú__name__Úsplit)r   s    r   Ú	type_namer   )   s"   € Ø�>‰>×"Ñ"×(Ñ(¨Ó-¨bÑ1Ð1r   c                 óf   — |d   } | «       }|d   dk7  rt        d|z  «      ‚t        | |«      }||fS )Né   r   Ú(z%Expected '(' after function name '%s')Ú
ValueErrorÚhandle_predicate)r   ÚtokenÚnameÚ	predicates       r   Ú
parse_funcr#   ,   sD   € Ø�‰8€DÙ‹F€EØˆQ�x�3‚ÜÐ@À4ÑGÓHÐHÜ   uÓ-€IØ�ˆ?Ðr   c                 ó0   ‡— t        | |«      \  }Šˆfd„}|S )z
    not(...)
    c              3   óJ   •K  — | D ]  }t         ‰|g«      «      �Œ|–— Œ y ­wr   )r   )Úresultr   r"   s     €r   Úselectzhandle_func_not.<locals>.select:   s(   øè ø€ ÛˆDÜ!¡)¨T¨FÓ"3Ó4Ñ<Ø“
ñ ùs   ƒ#œ#)r#   )r   r    r!   r'   r"   s       @r   Úhandle_func_notr(   4   s!   ø€ ô !  uÓ-�O€Dˆ)ôð €Mr   c                 óJ   ‡— |d   Š‰t         v rt        ‰   | |«      S ˆfd„}|S )z)
    /NodeName/
    or
    func(...)
    r   c              3   ó†   •K  — | D ]7  }|j                   D ]&  }t        ||«      D ]  }t        |«      ‰k(  sŒ|–— Œ Œ( Œ9 y ­wr   ©Úchild_attrsr   r   )r&   r   r	   r
   r!   s       €r   r'   zhandle_name.<locals>.selectI   sD   øè ø€ ÛˆDØ!×-Ô-�	Ü)¨$°	Ö:�EÜ  Ó'¨4Ó/Ø#›ñ ;ñ .ñ ùs
   ƒ2A¶A)Ú	functions)r   r    r'   r!   s      @r   Úhandle_namer.   @   s3   ø€ ð �‰8€DØŒyÑÜ˜‰˜t UÓ+Ð+ô$ð €Mr   c                 ó   — d„ }|S )z
    /*/
    c              3   óh   K  — | D ]'  }|j                   D ]  }t        ||«      E d {  –—†  Œ Œ) y 7 Œ	­wr   ©r,   r   )r&   r   r!   s      r   r'   zhandle_star.<locals>.selectU   s3   è ø€ ÛˆDØ×(Ô(�Ü'¨¨dÓ3×3Ñ3ñ )ñ à3ús   ‚$2¦0§
2r   ©r   r    r'   s      r   Úhandle_starr3   Q   s   € ò4ð €Mr   c                 ó   — d„ }|S )z
    /./
    c                 ó   — | S r   r   )r&   s    r   r'   zhandle_dot.<locals>.select_   s   € Øˆr   r   r2   s      r   Ú
handle_dotr6   [   s   € òà€Mr   c                 óv   ‡‡—  | «       }|d   dk(  rˆfd„Šn|d   s|d   Šˆˆfd„Šnt        d«      ‚ˆfd„}|S )z
    //...
    r   Ú*c              3   ó~   •K  — | j                   D ]'  }t        | |«      D ]  }|–—  ‰|«      E d {  –—†  Œ Œ) y 7 Œ	­wr   r1   )r   r!   r
   Úiter_recursives      €r   r:   z*handle_descendants.<locals>.iter_recursivei   s@   øè ø€ Ø×(Ô(�Ü)¨$°Ö5�EØ’KÙ-¨eÓ4×4Ñ4ñ 6ñ )ð 5ús   ƒ.=±;²
=r   c              3   óš   •K  — | j                   D ]5  }t        | |«      D ]$  }t        |«      ‰k(  r|–—  ‰|«      E d {  –—†  Œ& Œ7 y 7 Œ	­wr   r+   )r   r!   r
   r:   Ú	node_names      €€r   r:   z*handle_descendants.<locals>.iter_recursivep   sM   øè ø€ Ø×(Ô(�Ü)¨$°Ö5�EÜ  Ó'¨9Ò4Ø#šÙ-¨eÓ4×4Ñ4ñ 6ñ )ð 5ús   ƒ<A¿A	Á 
AzExpected node name after '//'c              3   ó@   •K  — | D ]  } ‰|«      E d {  –—†  Œ y 7 Œ­wr   r   )r&   r   r:   s     €r   r'   z"handle_descendants.<locals>.selecty   s"   øè ø€ ÛˆDÙ% dÓ+×+Ñ+ñ Ø+ús   ƒ”•)r   )r   r    r'   r:   r<   s      @@r   Úhandle_descendantsr>   c   sM   ù€ ñ ‹F€EØˆQ�x�3‚õ	5ð
 �1ŠXØ˜!‘Hˆ	ö	5ô Ð8Ó9Ð9ô,ð €Mr   c                 óâ   ‡‡—  | «       }|d   rt        d«      ‚|d   }d Š| j                  «       }|d   dk(  r | «        t        | «      Št        j                  |«      Š‰€ˆfd„}|S ˆˆfd„}|S )Nr   zExpected attribute namer   Ú=c              3   óZ   •K  — | D ]  }	  ‰|«      }|€Œ|–— Œ y # t         $ r Y Œ!w xY w­wr   )ÚAttributeError)r&   r   Ú
attr_valueÚreadattrs      €r   r'   z handle_attribute.<locals>.select�   s@   øè ø€ Û�ðÙ!)¨$£�Jð Ñ)Ø$Ó$ñ øô &ò Ùðüs    ƒ+Š’+•+œ	(¥+§(¨+c              3   óÔ   •K  — | D ]O  }	  ‰|«      }|‰k(  r|–— Œt        |t        «      sŒ't        ‰t        «      sŒ8|‰j	                  «       k(  sŒL|–— ŒQ y # t         $ r Y Œ^w xY w­wr   )rB   Ú
isinstanceÚbytesÚstrÚencode)r&   r   rC   rD   Úvalues      €€r   r'   z handle_attribute.<locals>.select–   si   øè ø€ Û�ðÙ!)¨$£�Jð  Ò&Ø$Ó$Ü  ¬UÕ3¼
À5Ì#Õ8NØ" e§l¡l£nÓ4à$Ó$ñ øô &ò Ùðüs7   ƒA(ŠA’A(­A(¾A(ÁA(Á	A%Á"A(Á$A%Á%A()r   ÚpeekÚparse_path_valueÚoperatorÚ
attrgetter)r   r    r!   r'   rD   rJ   s       @@r   Úhandle_attributerO   €   s}   ù€ Ù‹F€EØˆQ‚xÜÐ2Ó3Ð3Ø�‰8€DØ€EØ�I‰I‹K€EØˆQ�x�3‚ÙŒÜ  Ó&ˆä×"Ñ" 4Ó(€HØ€}ô	%ð, €Mõ	%ð €Mr   c                 ó˜  —  | «       }|d   }|r_|d d dk(  s|d d dk(  r|d   |d   k(  sJ ‚|dd S |d d dk(  s|d d dk(  r!|d   |d   k(  sJ ‚|dd j                  d	«      S 	 t        |«      S |d   j                  «       rt        |d   «      S |d   j	                  «       }|d
k(  ry|dk(  ryt        d|› d�«      ‚# t        $ r Y Œw xY w)Nr   r   Ú'Ú"r   é   zb'zb"zUTF-8ÚtrueTÚfalseFzInvalid attribute predicate: ')rI   Úintr   ÚisdigitÚlower)r   r    rJ   r!   s       r   rL   rL   ¦   s  € Ù‹F€EØ�!‰H€EÙØ��!ˆ9˜Ò˜u R a˜y¨CÒ/Ø˜‘9  a¡Ò(Ð(Ð(Ø˜˜2�;ÐØ��!ˆ9˜Ò  b q 	¨TÒ 1Ø˜‘9  a¡Ò(Ð(Ð(Ø˜˜2�;×%Ñ% gÓ.Ð.ð	Ü�u“:Ðð 
ˆq‰×	Ñ	Ô	Ü�5˜‘8‹}Ðà�Q‰x�~‰~ÓˆØ�6Š>ØØ�WŠ_ØÜ
Ð5°e°W¸AÐ>Ó
?Ð?øô ò 	Ùð	ús   Á#
B= Â=	C	ÃC	c                 ó’  ‡—  | «       }g g}|gŠ|d   dvr�|d   j                  t        |d      | |«      «       	  | «       }|d   dk(  r | «       }	 |d   sD|d   dk(  r|j                  g «        | «       }n#|d   dk(  rg g}‰j                  |«        | «       }|d   dvrŒ�|d   st        d«      ‚ˆfd	„}|S # t        $ r Y Œ"w xY w)
Nr   )Ú]Ú)r   Ú/r   ÚandÚorzIncomplete predicatec              3   óš   •K  — | D ]A  }|f}‰D ]7  }|D ]+  }t        |«      }|D ]
  } ||«      }Œ t        |«      }|�Œ+ Œ2 |–—  ŒA ŒC y ­wr   )Úiterr   )	r&   r   Ú	node_baseÚand_conditionsÚ	conditionÚ	subresultr'   Úpredicate_resultÚor_conditionss	           €r   r'   z handle_predicate.<locals>.selectÛ   sg   øè ø€ ÛˆDØ˜ˆIÛ"/�Û!/�IÜ $ Y£�IÛ"+˜Ù$*¨9Ó$5™	ð #,ä'9¸)Ó'DÐ$Ø'Ñ/áð "0ð ’JÙñ #0ñ ùs
   ƒ:A¾A)ÚappendÚ
operationsr   r   )r   r    rb   r'   rf   s       @r   r   r   ¿   sý   ø€ Ù‹F€Eà�T€NØ#Ð$€Mà
�‰(˜*Ñ
$Ø�rÑ×!Ñ!¤:¨e°A©hÑ#7¸¸eÓ#DÔFð	Ù“FˆEð �Q‰x˜3ŠÙ›‘à�QŠxØ�Q‰x˜5Ò Ø×%Ñ% bÔ)Ù›‘Ø�q‘˜TÒ!Ø"$ �Ø×$Ñ$ ^Ô4Ù›�ð# �‰(˜*Ò
$ð& ˜"ÒÜÐ/Ó0Ð0ôð" €MøôG ò 	Ùð	ús   »B: Â:	CÃC)Ú@Ú r8   r   z//Ú[Únotc                   ó    — e Zd Zd„ Zdd„Zd„ Zy)Ú_LookAheadTokenizerc                 ó–   — t        |«      D ��cg c]  \  }}|s|r||f‘Œ c}}| _        | j                  j                  «        y c c}}w r   )Úpath_tokenizerÚ_tokensÚreverse)ÚselfÚpathÚspecialÚtexts       r   Ú__init__z_LookAheadTokenizer.__init__þ   sL   € ô $2°$Ô#7ô
á#7‘�˜$Ù™$ð �dŠOØ#7ò
ˆŒð
 	�‰×ÑÕùó
s   �Ac                 ó<   — | j                   r| j                   d   S |S )Nr   )rq   )rs   Údefaults     r   rK   z_LookAheadTokenizer.peek  s   € Ø#'§<¢<ˆt�|‰|˜BÑÐ<°WÐ<r   c                 ó`   — 	 | j                   j                  «       S # t        $ r t        d ‚w xY wr   )rq   ÚpopÚ
IndexErrorr   )rs   s    r   Ú__call__z_LookAheadTokenizer.__call__	  s1   € ð	*Ø—<‘<×#Ñ#Ó%Ð%øÜò 	*Ü TÐ)ð	*ús   ‚ œ-N))NN)r   Ú
__module__Ú__qualname__rw   rK   r}   r   r   r   rn   rn   ý   s   „ òó=ó*r   rn   c                 óð   — t        | «      } |«       }g }	 	 |j                  t        |d      ||«      «       	  |«       }|d   dk(  r |«       }Œ:# t        $ r t	        d«      ‚w xY w# t        $ r Y |S w xY w)Nr   zinvalid pathr\   )rn   rg   rh   r   r   )rt   Ú_nextr    Úselectors       r   Ú_build_path_iteratorrƒ     s“   € ä Ó%€EÙ‹G€EØ€HØ
ð	-Ø�O‰OœJ u¨Q¡xÑ0°¸Ó>Ô?ð	Ù“GˆEØ�Q‰x˜3ŠÙ›�ð øô ò 	-Ü˜^Ó,Ð,ð	-ûô ò 	ØØ€Oð	ús   —!A ¹A( ÁA%Á(	A5Á4A5c                 óR   — t        |«      }t        | f«      }|D ]
  } ||«      }Œ |S r   )rƒ   r`   )r   rt   Úselector_chainr&   r'   s        r   Úiterfindr†   $  s/   € Ü)¨$Ó/€NÜ�4�'‹]€FÛ ˆÙ˜“‰ð !à€Mr   c                 ó,   — t        t        | |«      «      S r   )r   r†   ©r   rt   s     r   Ú
find_firstr‰   +  s   € Üœh t¨TÓ2Ó3Ð3r   c                 ó,   — t        t        | |«      «      S r   )r   r†   rˆ   s     r   Úfind_allr‹   .  s   € Ü”˜˜tÓ$Ó%Ð%r   )Ú__doc__ÚrerM   ÚcompileÚfindallrp   r   r   r   r#   r(   r.   r3   r6   r>   rO   rL   r   rh   r-   rn   rƒ   r†   r‰   r‹   r   r   r   Ú<module>r�      s·   ðñó 
Û à�—‘ðó	÷ �gð ò	òò2òò
òò"òòò:#òL@ò2-ðb Ø
Ø
Ø
Ø
Ø
ñ€
ð 
ˆOð€	÷
*ñ *ò&ò(ò4ó&r   