403Webshell
Server IP : 104.21.21.239  /  Your IP : 216.73.216.55
Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.7
System : Linux ip-172-31-69-123.ec2.internal 6.1.177-224.371.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jul 27 20:28:29 UTC 2026 x86_64
User : ec2-user ( 1000)
PHP Version : 8.4.24
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3.9/site-packages/elementpath/xpath2/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3.9/site-packages/elementpath/xpath2/__pycache__/xpath2_functions.cpython-39.opt-1.pyc
a

���c���@sDdZddlZddlZddlZddlZddlZddlZddlZddl	m	Z	ddl
mZmZddl
mZddlmZmZddlmZmZdd	lmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(dd
l)m*Z*m+Z+m,Z,m-Z-m.Z.ddl/m0Z0m1Z1ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=dd
l>m?Z?m@Z@ddlAmBZBeBjCZCeBjDZDdd�ZEeDdddd�eCeDdddd���dUdd��ZFeCeDdddd���dVdd��ZGeCeDdddd���dWdd��ZHeCeDd dd!d���dXd"d#��ZIeCeDd$dd%d���dYd&d'��ZJeCeDd(dd)d���dZd*d+��ZKeCeDd,dd-d���d[d.d/��ZLeCeDd0dd1d���d\d2d3��ZMeCeDd4dd5d���d]d6d7��ZNeCeDd8dd9d���d^d:d;��ZOeCeDd<d=d>d���d_d?d@��ZPeCeDdAdd>d���d`dBdC��ZQeCeDdDdEdFd���dadGdH��ZReCeDdIddJd���dbdKdL��ZSeCeDdMddNd���dcdOdP��ZTeCeDdQdEdRd��eCeDdSdEdRd���dddTdU���ZUeCeDdVddWd��eCeDdXddWd���dedYdZ���ZVeCdV��dfd[d\��ZWeCdX��dgd]d^��ZXeCeDd_dEd`d���dhdadb��ZYeCeDdcddded���didfdg��ZZeCeDdhdidjd���djdkdl��Z[eCeDdmddnd���dkdodp��Z\eCeDdqddrd���dldsdt��Z]eCeDdudidvd���dmdwdx��Z^eCeDdyddrd���dndzd{��Z_eCeDd|dd}d���dod~d��Z`eCeDd�dd�d���dpd�d���ZaeCeDd�dd�d���dqd�d���ZbeCeDd�did�d���drd�d���ZceCeDd�did�d���dsd�d���Zde�ed��ZfeCeDd�d�d�d���dtd�d���ZgeCeDd�did�d���dud�d���ZheCeDd�dEd�d���dvd�d���ZieCeDd�dd�d���dwd�d���ZjeCeDd�dd�d���dxd�d���ZkeCeDd�did�d���dyd�d���ZleCeDd�did�d���dzd�d���ZmeCeDd�dd�d���d{d�d���ZneCeDd�dd�d���d|d�d���ZoeCeDd�dEd�d���d}d�d���ZpeCeDd�dd�d���d~d�d���ZqeCeDd�dd�d���dd�d���ZreCeDd�dd�d���d�d�dÄ�ZseCeDd�dd�d���d�d�dƄ�ZteCeDd�dd�d���d�d�dɄ�ZueCeDd�did�d���d�d�d̄�ZveCeDd�did�d���d�d�dτ�ZweCeDd�did�d��eCeDd�did�d���d�d�dԄ��ZxeCeDd�dd�d���d�d�d؄�ZyeCeDd�dd�d���d�d�dۄ�ZzeCeDd�dd�d���d�d�dބ�Z{eCeDd�dd�d���d�d�d��Z|eCeDd�dd�d���d�d�d��Z}eCeDd�dd�d���d�d�d��Z~eCeDd�dd�d��eCeDd�dd�d��eCeDd�dd�d��eCeDd�dd�d��eCeDd�dd�d��eCeDd�dd�d���d�d�d�������ZeCeDd�dd�d���d�d�d���Z�eCeDd�dd�d��eCeDd�dd�d��eCeDd�dd�d��eCeDd�dd�d���d�d�d������Z�eCeDd�dd�d���d��d�d��Z�eCeD�ddd�d���d��d�d��Z�eCeD�dd�dd���d��d�d��Z�eCeD�d	d�d
d���d��d�d��Z�eCeD�d
dE�dd���d��d�d��Z�eCeD�ddE�dd���d��d�d��Z�eCeD�ddE�dd���d��d�d��Z�eCeD�dd�dd���d��d�d��Z�eCeD�dd�dd���d��d�d ��Z�eCeD�d!d�d"d���d��d#�d$��Z�eCeD�d%d�d&d���d��d'�d(��Z�eCeD�d)d�d*d���d��d+�d,��Z�eCeD�d-d�d.d���d��d/�d0��Z�eCeD�d1d=�d2d���d��d3�d4��Z�eCeD�d5dE�d6d���d��d7�d8��Z�eCeD�d9dE�d:d��eCeD�d;dE�d:d���d��d<�d=���Z�eCeD�d>dE�d?d���d��d@�dA��Z�eCeD�dBd�dCd��eCeD�dDd�dEd���d��dF�dG���Z�eCeD�dHd=�dId���d��dJ�dK��Z�eCeD�dL�dM�dNd���d��dO�dP��Z�eCeD�dQd�dRd���d��dS�dT��Z�dS(�z/
XPath 2.0 implementation - part 2 (functions)
�N)�copy)�Decimal�DecimalException)�
ascii_letters)�urlsplit�quote�)�	is_idrefs�is_xml_codepoint)�
QNAME_PATTERN�
DateTime10�DateTime�Date10�Date�Float10�DoubleProxy�Time�Duration�DayTimeDuration�YearMonthDuration�
UntypedAtomic�AnyURI�QName�NCName�Id�ArithmeticProxy�NumericProxy)�
XML_NAMESPACE�
get_namespace�split_expanded_name�XML_ID�XML_LANG)�XPathContext�XPathSchemaContext)�
AttributeNode�
NamespaceNode�is_element_node�is_document_node�
is_xpath_node�	node_name�node_nilled�
node_base_uri�node_document_uri�	node_kind�etree_deep_equal)�
RegexError�translate_pattern�)�XPath2ParsercCs|dvpt|�dko|tvS)N)��filer1)�lenr)�scheme�r7�G/usr/lib/python3.9/site-packages/elementpath/xpath2/xpath2_functions.py�is_local_url_scheme)sr9zempty-sequencez
sequence type)�nargs�label�itemcCs&|dur|���|jdur |jS|jS�N)�missing_contextr<�root��self�contextr7r7r8�evaluate_item_sequence_type2srCzprefix-from-QName)�	xs:QName?z
xs:NCName?)r:Zsequence_typescCs>|�|�}|durdSt|t�s4|�ddt|���|jp<gS�N�XPTY0004�argument has an invalid type %r)�get_argument�
isinstancer�error�type�prefix�rArB�qnamer7r7r8�#evaluate_prefix_from_qname_function;s

rOzlocal-name-from-QNamecCs>|�|�}|durdSt|t�s4|�ddt|���t|j�SrE)rHrIrrJrKr�
local_namerMr7r7r8�'evaluate_local_name_from_qname_functionFs

rQznamespace-uri-from-QName)rD�
xs:anyURI?cCsB|�|�}|durdSt|t�s4|�ddt|���t|jp>d�S)NrFrGr3)rHrIrrJrKr�urirMr7r7r8� evaluate_uri_from_qname_functionQs

rTznamespace-uri-for-prefix)�
xs:string?�	element()rRcCs�|dur|���|jt|�d�}|dur,d}t|t�sJ|�ddt|���|j|dd�}t|�sp|�dd|��dd	�|��D�}|j	j
��D]@\}}||vr�||kr�|r�|r�t|�Sd
}|�d||��q�dS)N�rBr3�FORG0006�#1st argument has an invalid type %rr1��index�&2nd argument %r is not an element nodecSsh|]}t|j��qSr7)r�tag)�.0�er7r7r8�	<setcomp>k�z=evaluate_namespace_uri_for_prefix_function.<locals>.<setcomp>z'Prefix %r is associated to no namespaceZXPST0081)
r>rHrrI�strrJrKr&�iter�parser�
namespaces�itemsr)rArBrL�elemZns_uris�prS�msgr7r7r8�*evaluate_namespace_uri_for_prefix_function\s$
rjzin-scope-prefixes)rV�
xs:string*ccs�|dur|���|�|�}t|�s2|�dd|��t|t�rL|jjEdHnlt|d�rtdVt	dd�|j
�EdHnDdh}|�dd�|jjD��|jr�|�d	d�|jD��|EdHdS)
NrFz"argument %r is not an element node�nsmap�xmlcSs|o
|dkS)Nrmr7��xr7r7r8�<lambda>�raz3select_in_scope_prefixes_function.<locals>.<lambda>css|]}|r|VqdSr=r7�r^ror7r7r8�	<genexpr>�raz4select_in_scope_prefixes_function.<locals>.<genexpr>css|]}|r|VqdSr=r7rqr7r7r8rr�ra)r>rHr&rJrIr#rdre�hasattr�filterrl�update)rArBrg�prefixesr7r7r8�!select_in_scope_prefixes_functionvs


rwz
resolve-QName)rUrVrDc	Csl|jt|�d�}|durdSt|t�s:|�ddt|���|durJ|���|j|dd�}t|�sp|�dd|��|��}t	�
|�}|dur�|�dd��|��d	p�d
}|dkr�tt
|�Szi|jj�|j�}Wnty�|jj}Yn0|��D]J\}}||kr�|�r&t|d�||��d
��St||��d
�Sq�|�sRd
|jjv�rb|�dd|��td
|�S)NrWrXrYr1rZr\�FOCA0002z 1st argument must be an xs:QNamerLr3rm�{}:{}Zlocal�FONS0004z no namespace found for prefix %r)rHrrIrbrJrKr>r&�stripr�match�	groupdictrrrdrerl�AttributeErrorrf�format)	rArBrNrgr|rLrl�pfxrSr7r7r8�evaluate_resolve_qname_function�s:


r�z	node-name)�node()?rDcCs�|�|�}|durdSt|�s*|�dd��t|�}|dur>dS|�d�r�t|�\}}|jj��D]&\}}||kr`t	|d�
||��Sq`|�dd�
|���nt	|jj�dd�|�SdS)NrF�an XPath node required�{ryrzz no prefix found for namespace {}r3)rHr(rJr)�
startswithrrdrerfrr�get)rArB�arg�name�	namespacerPr�rSr7r7r8�evaluate_node_name_function�s

r�Znilled)r��xs:boolean?cCs2|�|�}|durdSt|�s*|�dd��t|�S)NrFr�)rHr(rJr*)rArBr�r7r7r8�evaluate_nilled_function�s
r��data)�item()*�xs:anyAtomicType*ccs>|d�|�D]*}|�|�}|dur2|�dd��q|VqdS)NrZFOTY0012z)argument node does not have a typed value)�select�
data_valuerJ�rArBr<�valuer7r7r8�select_data_function�s

r�zbase-uri)rr1)r�rRcCs^|j|dd�}|dur"|�d��n8|dur.dSt|�sB|�d��nt|�}|durZt|�SdS)NT)�default_to_contextzcontext item is undefinedzcontext item is not a node)rHr>r(Zwrong_context_typer+r)rArBr<rSr7r7r8�evaluate_base_uri_function�sr�zdocument-uricCs�|dur|���|�|�}|dus*t|�s.dSt|�}|durFt|�St|j�r�z0|j��D] \}}||jur\t|�WSq\Wnty�Yn0dSr=)	r>rHr'r,rr?�	documentsrfr~)rArBr�rS�docr7r7r8�evaluate_document_uri_function�s


r�zround-half-to-even)r1r)�numeric?�
xs:integerr�c
Csf|�|�}|durdSt|t�r8t�|�s4t�|�r8|St|tttf�spt|t�rVdnd}|�	|d�
t|����t|�dkr�dn|d�
|�}z\t|t�r�t||�WSt|t�r�t||�WSt|t�r�tt||��WSttt�|�|��WSt�y}z|�	d|��WYd}~nNd}~0ttf�y`t|t��rRt�tt|�|��YSt||�YS0dS)NrFrX�invalid argument type {!r}rrr1)rHrI�float�math�isnan�isinf�intrrbrJrrKr5�evaluate�roundrZ
from_float�	TypeErrorr�
OverflowError)rArBr<�codeZ	precision�errr7r7r8�$evaluate_round_half_to_even_functions.



 r��abs)r�r�c
Cs�|�|�}|durdSt|t�r.t�|�r.|St|�rx|�|�}ztt|��WSt	yt|�
dd�||���Yq�0n:t|t�s�t|tt
tf�s�|�
dd�t|����nt|�SdS)Nrxz"invalid string value {!r} for {!r}rFr�)rHrIr�r�r�r(�string_valuer�rrrJr�boolr�rKr�r7r7r8�evaluate_abs_function)s

r�Zavg)r��xs:anyAtomicTypec
Csg}|d�|�D]N}t|t�r4|�|�|j��qt|ttf�rV|�dd�	|���q|�|�q|sjdSt|dt
�r�|d}z(|dd�D]}||}q�|t|�WSty�}z|�d|��WYd}~n
d}~00�n t
dd�|D���r t|�tt|��}|ddk�rt|�S|St
dd�|D���rHt|�tt|��St
dd�|D���r�ztd	d�|D��t|�WSt�y�}z|�d|��WYd}~n
d}~00nPztd
d�|D��t|�WSt�y�}z|�d|��WYd}~n
d}~00dS)NrrXz&non numeric value {!r} in the sequencer1css|]}t|t�VqdSr=)rIr�rqr7r7r8rrSraz(evaluate_avg_function.<locals>.<genexpr>css|]}t|ttf�VqdSr=)rIr�rrqr7r7r8rrVracss|]}t|t�VqdSr=)rIrrqr7r7r8rrXracss$|]}t|t�rt|�n|VqdSr=)rIrrrqr7r7r8rrZracss$|]}t|t�rt|�n|VqdSr=)rIrr�rqr7r7r8rr_ra)�select_data_valuesrIr�append�cast_to_doubler�rr�rJrrr5r��all�sumrr�)rArB�valuesr<r�r��resultr7r7r8�evaluate_avg_function>s>

&$r��max)r��	xs:stringzxs:anyAtomicType?�minc
s�����fdd�}g�d��jdkr(tnt��d�|�D]�}t|t�r^����|��t�q:t|t�r���|��dur�t	|��n�t
ur�t|t
�s�t�q:t|t�r���|j�q:t|t
tf�rΈ�|�q:t|ttf�r���dd�t	|�j���q:��|�q:zTt��dk�rP�j��|d�d��|�Wd�WS1�sF0Y|�WSt�y�}z��d|��WYd}~n
d}~00dS)	Ncs��s�Stdd��D��r:tdd��D��r���dd��nRtdd��D��rT���Stdd��D��rn�d�Std	d��D��r������S���S)
Ncss|]}t|t�VqdSr=)rIrbrqr7r7r8rrmrazAevaluate_max_min_functions.<locals>.max_or_min.<locals>.<genexpr>css|]}t|t�VqdSr=)rIrrqr7r7r8rrnrarXz(cannot compare strings with numeric datacss|]}t|ttf�VqdSr=)rIrr�rqr7r7r8rrpracss"|]}t|t�ot�|�VqdSr=)rIr�r�r�rqr7r7r8rrrraZNaNcss|]}t|tttf�VqdSr=)rIr�r�rrqr7r7r8rrtra)�anyrJr�r7�Zaggregate_funcZfloat_classrAr�r7r8�
max_or_minjsz.evaluate_max_min_functions.<locals>.max_or_minr�rrXzxs:{} is not an ordered typer1�Z	collation)�symbolr�r�r�rIrr�r�r�rKrrr�rrrrrJrr�r5�
use_localerHr�)rArBr�r<r�r7r�r8�evaluate_max_min_functionsds8




(r��empty)r��
xs:boolean�existscCstt|�|���Sr=)�nextrcr�r@r7r7r8�#evaluate_empty_and_exists_functions�sr�ccs>ztt|d�|���Wnty2dVYn0dVdS)NrTF�r�rcr��
StopIterationr@r7r7r8�select_empty_function�s
r�ccs>ztt|d�|���Wnty2dVYn0dVdS)NrFTr�r@r7r7r8�select_exists_function�s
r�zdistinct-values)r�r�r�c#sl��fdd�}t��dkr\�j���d�d��|�EdHWd�qh1sP0Yn|�EdHdS)Nc3s�d}g}�d���D]�}��|���dur2��_t�ttf�r�t���rZ|s��Vd}q�t�fdd�|D��r��V|�	��q�|vr�V|�	��qdS)NFrTc3s2|]*}t|tttf�rtj�|ddd�VqdS)gH�����z>r)Zrel_tolZabs_tolN)rIr�rr�r�Ziscloserq�r�r7r8rr�s�zKselect_distinct_values_function.<locals>.distinct_values.<locals>.<genexpr>)
r�r�r<rIr�rr�r�r�r�)�nan�resultsr<�rBrAr�r8�distinct_values�s&

�z8select_distinct_values_function.<locals>.distinct_valuesr1r�)r5r�rH)rArBr�r7r�r8�select_distinct_values_function�s
,r�z
insert-before�)r�r�r�r�ccs�ztd|djd�}Wn ty8|�dd�d�Yn0d}t|d�|��D]2\}}|s|||kr||d�|�EdHd}|VqP|s�|d�|�EdHdS)Nrr1rFz"2nd argument must be an xs:integerFrT)r�r�r�rJ�	enumerater�)rArBZ
insert_at_posZinserted�posr�r7r7r8�select_insert_before_function�sr�zindex-of)rr�)r�r�r��xs:integer*ccs�|d�t|��}|dur&|�dd��t|�dkrht|d�|�dd�D]\}}|�|�|krH|VqHnh|j|�|d�d��Dt|d�|�dd�D]\}}|�|�|kr�|Vq�Wd�n1s�0YdS)	Nr1rFz(2nd argument cannot be an empty sequencer�r��startrr�)	Zget_atomized_operandrrJr5r�r�r�r�rH)rArBr�r�r�r7r7r8�select_index_of_function�s
r��remove)r�r�r�ccsV|d�|�}t|t�s$|�dd��t|d�|�dd�D]\}}||kr:|Vq:dS)Nr1rFzan xs:integer requiredrr�)r�rIr�rJr�r�)rArBZpositionr�r�r7r7r8�select_remove_function�s
r��reverse)r�r�ccs&tdd�|d�|�D��EdHdS)NcSsg|]}|�qSr7r7rqr7r7r8�
<listcomp>raz+select_reverse_function.<locals>.<listcomp>r)�reversedr�r@r7r7r8�select_reverse_functionsr�Zsubsequence)r��	xs:doubler�r�ccs�|j|dtd�}t�|�s,t�|�s,t|�}t|�dkrht|d�|�dd�D]\}}||krN|VqNnn|j|dtd�}t�|�s�t�|�s�t|�}t|d�|�dd�D]*\}}||kr�||kr�nq�|Vq�dS)Nr1��clsrrr�)	rHrr�r�r�r�r5r�r�)rArBZstarting_locr�r�Zlengthr7r7r8�select_subsequence_function	s
r�Z	unorderedc#s2tdd��d�|�D��fdd�d�EdHdS)NcSsg|]}|�qSr7r7rqr7r7r8r� raz-select_unordered_function.<locals>.<listcomp>rcs
��|�Sr=�r�rn�rAr7r8rp raz+select_unordered_function.<locals>.<lambda>)�key)�sortedr�r@r7r�r8�select_unordered_functionsr�zzero-or-one)r�zitem()?ccsht|d�|��}zt|�}Wnty2YdS0zt|�WntyX|VYn0|�d��dS)NrZFORG0003�rcr�r�r�rJ�rArBr�r<r7r7r8�select_zero_or_one_function%sr�zone-or-more)r�zitem()+ccspt|d�|��}zt|�}Wnty<|�d�d�Yn00|Vzt|�VWqDtyhYqlYqD0qDdS)NrZFORG0004r�r�r7r7r8�select_one_or_more_function5sr�zexactly-one)r�zitem()ccsrt|d�|��}zt|�}Wnty<|�d�d�Yn20zt|�Wntyb|VYn0|�d��dS)NrZFORG0005r�r�r7r7r8�select_exactly_one_functionEsr�z
deep-equal)r�r�r�r�cs���fdd�}t|d�t|����t|d�t|����t|�dkr�|j|�|d�d��|�Wd�S1sv0Yn|�SdS)Ncst�d�}t�d�}|du|duAr(dS|dur4dSt|�t|�ArHdSt|��s��z,t|t�r|t|t�rr||urxWdS�nt|t�r�WdSt|t�r�t|t�r�||kr�WdSn�t|t�r�WdSt|t��rt�|�r�t�|�s�WdSn2t|t��r
|t|�k�rWdSn||k�r~WdSnbt|t��rnt�|��r:WdSt|t��r\|t|�k�rlWdSn||k�r~WdSn||k�r~WdSWnt	�y�YdS0qt
|�t
|�k�r�dSt|��r�t||��sdSq|j
|j
k�r�dSt|t��r�|j|jk�rdSqt|t�r|j|jkrdSqdS)NFT)r�r(rIr�rr�r�r�rr�r-r&r.r�r$r�r%rL)Zvalue1Zvalue2�Zseq1Zseq2r7r8�
deep_equal[sl
















z0evaluate_deep_equal_function.<locals>.deep_equalrr1rr�)rcr�rr5r�rH)rArBr�r7r�r8�evaluate_deep_equal_functionWs?&r�Zmatches)rUr�r�r�c	
Cs|j|dtd�}|j|ddtd�}d}t|�dkrv|j|ddtd�D]0}|dvrd|tt|���O}qD|�d	d
|��qDz&t|||jj	�}tj
|||d�duWStjtfy�}z(d}|�d
|�t|���d�WYd}~n<d}~0t
�y}z|�d
|�d�WYd}~n
d}~00dS)Nr3��defaultr�r1T��requiredr�rr�smix�FORX0001�"Invalid regular expression flag %r��flagszInvalid regular expression: {}�FORX0002)rHrbr5�getattr�re�upperrJr0rd�xsd_version�searchr/rr�)	rArB�input_string�patternr��c�python_patternr�rir7r7r8�evaluate_matches_function�s ,rz^([^\\$]|[\\]{2}|\\\$|\$\d+)*$�replace)r��)rUr�r�r�r�c
	Csj|j|dtd�}|j|ddtd�}|j|ddtd�}d}t|�dkr�|j|ddtd�D]0}|d	vrv|tt|���O}qV|�d
d|��qVz"t|||jj	�}tj
||d�}Wn(tjtfy�|�d
d|��Yn�0|�d�r�d}|�d||j
��n\t�|�du�r|�dd|��n:t|jdd�D]*}	d|	|v�r&t�d|	d|	|�}�q&|�||��dd�SdS)Nr3r�r1Tr�rrr�r�r�r�r�r��Invalid regular expression %r�0Regular expression %r matches zero-length string�FORX0003ZFORX0004zInvalid replacement string %r���z$%dz(?<!\\)\$%dz\\g<%d>z\$�$)rHrbr5r�r�r�rJr0rdr��compiler/r�r��REPLACEMENT_PATTERN�range�groups�subr)
rArBr�r�Zreplacementr�r�rri�gr7r7r8�evaluate_replace_function�s.
r�tokenize)rUr�r�rkc		cs|j|td�}|j|ddtd�}d}t|�dkrt|j|ddtd�D]0}|dvrb|tt|���O}qB|�dd	|��qBz"t|||jj	�}tj
||d
�}Wn*tjtfy�|�dd|�d�Yn"0|�d
�r�d}|�d||j
��|�r|�|�D] }|dur�|�|�dur�|Vq�dS)Nr�r1Tr�rrr�r�r�r�r�rr3rr)rHrbr5r�r�r�rJr0rdr�r	r/r�r��split)	rArBr�r�r�r�rrir�r7r7r8�select_tokenize_function�s(
rzresolve-uri)rUr�rRcCs�|j|td�}t|�dkrj|jjdur2|�d��n8|dur>dSt�|�s\|�dd�|���n|j	|dd�S|j|ddtd	�}t�|�s�|�dd�|���n:|dur�dSt�|�s�|�dd�|���n|j	||dd�SdS)
Nr�r1ZFONS0005ZFORG0002z{!r} is not a valid URIF)Z	as_stringT)r[r�r�)
rHrbr5rd�base_urirJr�is_validr�get_absolute_uri)rArB�relativerr7r7r8�evaluate_resolve_uri_functions"


rzcodepoints-to-string)r�r�cCs�g}|d�|�D]p}t|t�sTd�t|�|�}t|t�rF|�d|��|�d|��qt|�rl|�t	|��qd�|�}|�d|��qd�
|�S)Nrz invalid type {} for codepoint {}rFrXz#{} is not a valid XML 1.0 codepointZFOCH0001r3)r�rIr�rrKrbrJr
r��chr�join)rArBr�r�rir7r7r8�&evaluate_codepoints_to_string_functions


rzstring-to-codepoints)rUr�cCsDzdd�|d�|�D�pdWSty>|�dd�d�Yn0dS)NcSsg|]}t|��qSr7��ord)r^r�r7r7r8r�3raz:evaluate_string_to_codepoints_function.<locals>.<listcomp>rrFzan xs:string required)r�r�rJr@r7r7r8�&evaluate_string_to_codepoints_function/srZcompare)rUrUr��xs:integer?cCs�|j|dtttfd�}|j|dtttfd�}|dus<|dur@dSt|�dkrZt�||�}n@|j|�|d�d��t�||�}Wd�n1s�0Y|s�dS|dkr�dSdS)Nr�r�Zpromoter1r�rr�r)rHrbrrr5�locale�strcollr�)rArB�comp1�comp2r�r7r7r8�evaluate_compare_function8s*r$�contains)rUrUr�r�cCsv|j|dtd�}|j|ddtd�}t|�dkr6||vS|j|�|d�d��||vWd�S1sh0YdS�Nr3r�r1�r[r�r�r�rr�)rHrbr5r��rArB�arg1�arg2r7r7r8�evaluate_contains_functionIsr+zcodepoint-equal)rUrUr�cCsd|j|dtd�}|j|dtd�}|dus0|dur4dSt|�t|�krHdStdd�t||�D��SdS)Nrr�r1Fcss"|]\}}t|�t|�kVqdSr=r)r^Zc1Zc2r7r7r8rr`raz4evaluate_codepoint_equal_function.<locals>.<genexpr>)rHrbr5r��zip)rArBr"r#r7r7r8�!evaluate_codepoint_equal_functionVsr-zstring-join)rkr�r�cs4�fdd��d�|�D�}�j|ddtd��|�S)Ncsg|]}��|��qSr7r�)r^�sr�r7r8r�fraz1evaluate_string_join_function.<locals>.<listcomp>rr1Tr�)r�rHrbr)rArBrfr7r�r8�evaluate_string_join_functioncsr/znormalize-unicode)rUr�r�cCs�|j|dtd�}t|�dkrP|j|dtd�}|durB|�dd��qT|����}nd}|dkrpd	|}|�d
|��|sxdS|s�|Szt�||�WSty�d|}|�d
|�d�Yn0dS)Nr3r�r1r�rFz'2nd argument can't be an empty sequenceZNFCzFULLY-NORMALIZEDz#%r normalization form not supportedZFOCH0003z!unsupported normalization form %r)	rHrbr5rJr{r��unicodedata�	normalize�
ValueError)rArBr�Znormalization_formrir7r7r8�#evaluate_normalize_unicode_functionjs&r3z
upper-case)rUr�cCs|j|dtd���S�Nr3r�)rHrbr�r@r7r7r8�evaluate_upper_case_function�sr5z
lower-casecCs|j|dtd���Sr4)rHrb�lowerr@r7r7r8�evaluate_lower_case_function�sr7zencode-for-uricCs&|j|td�}|durdSt|dd�S)Nr�r3�~��safe)rHrb�urllib_quote)rArBZuri_partr7r7r8� evaluate_encode_for_uri_function�sr<z
iri-to-uricCs(|j|ttd�}|durdSt|dd�S)Nrr3z-_.!~*'()#;/?:@&=+$,[]%r9)rHrbrr;)rArBZirir7r7r8�evaluate_iri_to_uri_function�sr=zescape-html-uricCs<|j|td�}|durdSt|d�dd�tdd�D��d�S)Nr�r3css|]}t|�VqdSr=)r)r^Zcpr7r7r8rr�raz4evaluate_escape_html_uri_function.<locals>.<genexpr>� �r9)rHrbr;rr)rArBrSr7r7r8�!evaluate_escape_html_uri_function�sr@zstarts-withcCsz|j|dtd�}|j|ddtd�}t|�dkr8|�|�S|j|�|d�d��|�|�Wd�S1sl0YdSr&)rHrbr5r�r�r(r7r7r8�evaluate_starts_with_function�s
rAz	ends-withcCsz|j|dtd�}|j|ddtd�}t|�dkr8|�|�S|j|�|d�d��|�|�Wd�S1sl0YdSr&)rHrbr5�endswithr�r(r7r7r8�evaluate_ends_with_function�s
rC�substring-before)rUrUr�r�zsubstring-aftercCs�|j|dtd�}|j|ddtd�}t|�dkr:|�|�}n>|j|�|d�d��|�|�}Wd�n1sn0Y|dkr�dS|jd	kr�|d|�S||t|�d�SdS)
Nr3r�r1r'r�rr�rrD)rHrbr5�findr�r�)rArBr)r*r[r7r7r8�evaluate_substring_functions�s(
rFzyears-from-duration)zxs:duration?rcCsB|j|td�}|durdS|jdkr.|jdSt|j�dSdS�Nr�r��rHrZmonthsr��rArBr<r7r7r8�%evaluate_years_from_duration_function�srKzmonths-from-durationcCsB|j|td�}|durdS|jdkr.|jdSt|j�dSdSrGrIrJr7r7r8�&evaluate_months_from_duration_function�srLzdays-from-durationcCsB|j|td�}|durdS|jdkr.|jdSt|j�dSdS)Nr�ri�Q�rHr�secondsr�rJr7r7r8�$evaluate_days_from_duration_function�srOzhours-from-durationcCsJ|j|td�}|durdS|jdkr2|jddSt|j�ddSdS)Nr�ri�rMrJr7r7r8�%evaluate_hours_from_duration_function�srQzminutes-from-durationcCsJ|j|td�}|durdS|jdkr2|jddSt|j�ddSdS�Nr�r�<rMrJr7r7r8�'evaluate_minutes_from_duration_function�srTzseconds-from-durationcCsB|j|td�}|durdS|jdkr.|jdSt|j�dSdSrRrMrJr7r7r8�'evaluate_seconds_from_duration_functionsrUzyear-from-dateTime)�xs:dateTime?rzmonth-from-dateTimezday-from-dateTimezhours-from-dateTimezminutes-from-dateTimezseconds-from-dateTime)rV�xs:decimal?cCs�|jjdkrtnt}|j||d�}|dur.dS|j�d�r@|jS|j�d�rR|jS|j�d�rd|j	S|j�d�rv|j
S|j�d�r�|jS|jr�t
d�|j|j��S|jSdS)	N�1.1r��year�month�day�hour�minutez{}.{})rdr�r
rrHr�r�rYrZr[r\r]�microsecondrr�second�rArBr�r<r7r7r8� evaluate_from_datetime_functionss"raztimezone-from-dateTime)rV�xs:dayTimeDuration?cCsJ|jjdkrtnt}|j||d�}|dus4|jdur8dSt|jj��d�S)NrXr��rN)	rdr�r
rrH�tzinfor�offset�
total_secondsr`r7r7r8�(evaluate_timezone_from_datetime_function-s
rgzyear-from-date)�xs:date?rzmonth-from-datez
day-from-dateztimezone-from-date)rhrbcCs�|jjdkrtnt}|j||d�}|dur.dS|j�d�r@|jS|j�d�rR|jS|j�d�rd|j	S|j
durrdSt|j
j�
�d�S)NrXr�rYrZr[rc)rdr�rrrHr�r�rYrZr[rdrrerfr`r7r7r8�evaluate_from_date_functions7s
rizhours-from-time)�xs:time?rcCs |j|td�}|durdS|jS�Nr�)rHrr\rJr7r7r8�!evaluate_hours_from_time_functionLsrlzminutes-from-timecCs |j|td�}|durdS|jSrk)rHrr]rJr7r7r8�#evaluate_minutes_from_time_functionRsrmzseconds-from-time)rjrWcCs.|j|td�}|durdS|j|jtd�S)Nr�z	1000000.0)rHrr_r^rrJr7r7r8�#evaluate_seconds_from_time_functionXsrnztimezone-from-time)rjrbcCs6|j|td�}|dus |jdur$dSt|jj��d�S)Nr�rc)rHrrdrrerfrJr7r7r8�$evaluate_timezone_from_time_function^srozadjust-dateTime-to-timezone)rVrbrVcCs |jjdkrtnt}|�||�S�NrX)rdr�r
r�adjust_datetime�rArBr�r7r7r8�-evaluate_adjust_datetime_to_timezone_functionisrszadjust-date-to-timezone)rhrbrhcCs |jjdkrtnt}|�||�Srp)rdr�rrrqrrr7r7r8�)evaluate_adjust_date_to_timezone_functionpsrtzadjust-time-to-timezone)rjrbrjcCs|�|t�Sr=)rqrr@r7r7r8�)evaluate_adjust_time_to_timezone_functionwsruzdefault-collation)r�cCs|jjSr=)rdZdefault_collationr@r7r7r8�#evaluate_default_collation_functionsrvzstatic-base-uri)rRcCs|jjdurt|jj�SdSr=)rdrrr@r7r7r8�!evaluate_static_base_uri_function�srwzcurrent-dateTime)zxs:dateTimec	Csp|durtj��n|j}|jjdkrJt|j|j|j|j	|j
|j|j|j
�St|j|j|j|j	|j
|j|j|j
�Srp)�datetime�now�
current_dtrdr�r
rYrZr[r\r]r_r^rdr�rArBZdtr7r7r8�"evaluate_current_datetime_function�s��r|zcurrent-date)zxs:datecCsT|durtj��n|j}|jjdkr<t|j|j|j|j	d�St
|j|j|j|j	d�S)NrX)rd)rxryrzrdr�rrYrZr[rdrr{r7r7r8�evaluate_current_date_function�sr}zcurrent-time)zxs:timecCs2|durtj��n|j}t|j|j|j|j|j�Sr=)	rxryrzrr\r]r_r^rdr{r7r7r8�evaluate_current_time_function�sr~zimplicit-timezone)zxs:dayTimeDurationcCs8|dur |jdur t�|jj�St�tjtjd��SdS)Nrc)�timezonerZ
fromtimedeltarerxZ	timedelta�timer@r7r7r8�#evaluate_implicit_timezone_function�sr�r?)r�r�cs�|dur|���n�t|t�r dS|sJ|jdus8t|j�r>|jS|�d��n�|�|���dur`dSt��st|�d��n t�fdd�|�	�D��r�|jSzF|j
��D]6\}}t|d�}t�fdd�|�	�D��r�|WSq�Wnt
y�Yn0dS)NrFc3s|]}�|uVqdSr=r7rq�r<r7r8rr�raz)evaluate_root_function.<locals>.<genexpr>)r?c3s|]}�|uVqdSr=r7rqr�r7r8rr�ra)r>rIr#r<r(r?rJrHr�rcr�rfr"r~)rArBrSr�Zdoc_contextr7r�r8�evaluate_root_function�s,



r��lang)rU�node()r�cCst|�dkr|j|ddd�}n|dur0|���n|j}t|�sH|�d��z|jt��}Wnjt	y�t|�dkrzYdS|�
�D]6}zt|jvr�|jt}Wq�Wq�ty�Yq�0q�YdSYn0|j|td�}|dur�dS|���
�}|���
�}||k�p|�|��o|t|�dkS)Nr1T�r[r�rFFr��-)r5rHr>r<r&rJ�attribr!r{�KeyErrorZiter_ancestorsr~rbr6r�)rArBr<r�rgZ	test_langr7r7r8�evaluate_lang_function�s4




r�zelement-with-id)rkr�z
element()*�idc
#s��fdd��d�t|��D�}�j|ddd�}t|t�r>dSt|�sR��d��nt|�sft|�sfdS|�	�D�]4}t
�|j��r|j|v�r�j
jdur�|�|�}�j
j�|�j
j�}|dusn|j��s�qn|�|j��jdkr�|Vqn|�|�}|durn|Vqntd	d
�|j���D]�}|j|v�r�j
jdu�r�|�|�}�j
j�|�j
j�}|du�rb�q|j�|j�}	|	du�s|	j���s��q|�|j�|Vqn�qqndS)Ncs$h|]}��|���D]}|�qqSr7)r�r)r^r<ror�r7r8r`�s�z%select_id_function.<locals>.<setcomp>rr1Tr�rFr�cSst|�Sr=�r$rnr7r7r8rpraz$select_id_function.<locals>.<lambda>)r�rrHrIr#r(rJr&r'rcrr�textrdZschemaZget_pathrErerKZis_keyr�r�Z
get_parent�mapr�rfr�r�r�)
rArBZidrefs�noderg�pathZxsd_element�parent�attrZ
xsd_attributer7r�r8�select_id_function�sF 





r�Zidref)rkr��node()*c#sdd�|djt|�d�D�}|j|ddd�}t|t�r<dS|dus`||jurPn|jdur`|j}t|�st|�d��nt	|�s�t
|�s�dS|��D]p�t�j
�r�t�fd	d
�|D��r��Vq�tdd��j���D].��jtkr�t�fd
d
�|D��rЈVq�q�q�dS)NcSsg|]}|�qSr7r7rqr7r7r8r�*raz)select_idref_function.<locals>.<listcomp>rrWr1Tr�rFc3s*|]"}|��D]}|�j��vVqqdSr=)rr��r^ro�v)rgr7r8rr:raz(select_idref_function.<locals>.<genexpr>cSst|�Sr=r�rnr7r7r8rp=raz'select_idref_function.<locals>.<lambda>c3s*|]"}|��D]}|�j��vVqqdSr=)rr�r�)r�r7r8rr>ra)r�rrHrIr#r<r?r(rJr&r'rcr	r�r�r�r�rfr�r )rArBZidsr�r7)r�rgr8�select_idref_function's(

  r�r�)rUzdocument-node()?z
doc-available)rUr�c	Csh|�|�}|dur$|jdkr dSdS|dur6|���n,t|t�rBn t|t�rX|�d��n
|�d��|�|���}t|t	��sdz|j
|}Wn^ttfy�|jdkr�t
|�}t|j�r�tj�|j�d��r�|�dd��|�d��YdS0|du�r�|�d��z|jj|}Wnttf�y*d}Yn0|j�||��sPd	}|�|�|���|jdk�r`|Sd
SdS)Nr�F�FODC0002rF�:ZFODC0005zdocument URI is a directoryzdocument-node()�&Type does not match sequence type {!r}T)rHr�r>rIrbrrJrr{r#r�r�r�rr9r6�osr��isdir�lstriprdZdocument_types�match_sequence_type�wrong_sequence_typer)rArBrSr��	url_parts�
sequence_typerir7r7r8�evaluate_doc_functionsCsB






�



r��
collection)rUr�c	Cs,|�|�}|dur|���n�t|t�r*dS|r6|dur\|jdurL|�dd��|j}|jj}n�|�|�}z|j	|}Wn`t
tfy�t|�}t
|j�r�|j�d�s�|j�d�r�|�dd��|�dd�|��d�Yn0z|jj|}Wnt
tf�y|YS0|j�||��s(d}|�|�|���|S)	Nr�z&no default collection has been definedr��/ZFODC0003zcollection URI is a directoryz{!r} collection not foundr�)rHr>rIr#Zdefault_collectionrJrdZdefault_collection_typer�collectionsr�r�rr9r6r�r�rBrZcollection_typesr�r�)rArBrSr�r�r�rir7r7r8�evaluate_collection_functionns<







�
�
r�rJ)rr�)rDr�r�ZnonecCsl|s|�d��nXt|�dkr:|j|td�}|�|p4d��n.|j|td�}|j|dtd�}|�|pbd|��dS)NZFOER0000r1r��r[r�)rJr5rHrrb)rArBrJ�descriptionr7r7r8�evaluate_error_function�sr�Ztrace)r�r�r�ccsB|j|dtd�}|d�|�D]}d�|t|����|VqdS)Nr1r�rz{} {})rHrbr�rr{)rArBr;r�r7r7r8�select_trace_function�sr�)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)��__doc__r�rxr�r�r Zos.pathr�r0rZdecimalrr�stringr�urllib.parserrr;Zhelpersr	r
Z	datatypesrrr
rrrrrrrrrrrrrrrrerrrr r!Z
xpath_contextr"r#Zxpath_nodesr$r%r&r'r(r)r*r+r,r-r.Zregexr/r0Z
xpath2_parserr2�methodZfunctionr9rCrOrQrTrjrwr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr	r
rrrrrr$r+r-r/r3r5r7r<r=r@rArCrFrKrLrOrQrTrUrargrirlrmrnrorsrtrurvrwr|r}r~r�r�r�r�r�r�r�r�r�r7r7r7r8�<module>
s,P4�	�	�	��*		�%��2		��
��M�
���������������������
�	
�
�
�		
�&
�
�0))�

Youez - 2016 - github.com/yon3zu
LinuXploit