403Webshell
Server IP : 172.67.201.108  /  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/xpath1/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

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

���cA��	@s�ddlZddlZddlZddlZddlmZddlmZmZmZm	Z	m
Z
ddlmZm
Z
ddlmZmZmZmZddlmZmZmZmZmZmZmZmZmZmZmZmZddl m!Z!dd	l"m#Z#dd
l$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ddl0m1Z1ddl2m3Z3m4Z4m5Z5m6Z6dd
l7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBejCejDejEejFejGejHd�ZIGdd�de#�ZJeJjKZKeJjLZLeJjMZMeJjNZNeJjOZOeJjPZPeJjQZQeJjRZReJjSZSeKd�eKd�eLd�eLd�eLd�eLd�eLd�eLd�eKd�eKddd�eKd�eKd�eKd�eQeKd d!d"d#��d$d%��ZTeQd �d�d&d'��ZUeQd �d�d(d)��ZVeQd*d+d�d,d-��ZWeQd*�d�d.d/��ZXeQd*�d�d0d1��ZYeQd2d+d�d3d4��ZZeQd2�d�d5d6��Z[eQd2�d�d7d8��Z\eQd9d:d�d;d<��Z]eQd9�d�d=d>��Z^eQeMd?��d�d@dA��Z_eQeMdB��d�dCdD��Z`eQeMdE��d�dFdG��ZaeQeOdHdId��d�dJdK��ZbeQeOdLdMd��d�dNdO��ZceQdPdQd�eQdRdQd�eQdSdQd�eQdTdQd�eQdUdQd�eQdVdQd�dWdX�������ZdeQdP�eQdR�eQdS�eQdT�eQdU�eQdV�d�dYdZ�������ZeeQeOd[d\d��d�d]d^��ZfeQeOd_d\d��d�d`da��ZgeQd[�eQd_�dbdc���ZheQeOd?ddd��d�dedf��ZieQeOdgddd��d�dhdi��ZjeQeOdjddd��d�dkdl��ZkeQdH�eQdL�eQdg�eQdj�dmdn�����ZleQdodpd�dqdr��ZmeQdo�d�dsdt��ZneQdudvd�dwdx��ZoeQdydvd�dzd{��ZpeQdu�eQdy�d|d}���ZqeQdy�d�d~d��ZreQdu�d�d�d���ZseQd�d�d�d�d���ZteQd��d�d�d���ZueQd�dd�d�d���ZveQd��d�d�d���ZweQd��d�d�d���ZxdS)��N)�copy)�cast�Any�Dict�Optional�Tuple�)�EQNAME_PATTERN�normalize_sequence_type)�MissingContextError�ElementPathKeyError�ElementPathValueError�xpath_error)�
AnyAtomicType�AbstractDateTime�Duration�DayTimeDuration�YearMonthDuration�NumericProxy�ArithmeticProxy�
UntypedAtomic�QName�xsd10_atomic_types�xsd11_atomic_types�
ATOMIC_VALUES)�XPathSchemaContext)�Parser)�NamespacesType�
XML_NAMESPACE�
XSD_NAMESPACE�XPATH_FUNCTIONS_NAMESPACE�XPATH_MATH_FUNCTIONS_NAMESPACE�XSD_ANY_SIMPLE_TYPE�XSD_ANY_ATOMIC_TYPE�XSD_UNTYPED_ATOMIC�
get_namespace�get_expanded_name�split_expanded_name)�AbstractSchemaProxy)�	NargsType�
XPathToken�	XPathAxis�
XPathFunction)�	XPathNode�TypedElement�
AttributeNode�TypedAttribute�
is_xpath_node�match_element_node�is_schema_node�is_document_node�match_attribute_node�is_element_node�	node_kind)�=�!=�>�>=�<�<=cs�eZdZUdZdZeed<eed<eZe�	d�Z
e�	d�Zej
hd�BZ
deiZd	Zeed
fed<hd�Zd
Zeeed<d
Zeeeefed<d
Zeeed<eZiZeeeefefed<hd�Zd?e e!e"e"d
d��fdd�
Z#e$e!d�dd��Z%e$eed�dd��Z&e$ed�dd��Z'eed�dd �Z(e)eed!�d"d#��Z*e+d@ee!ed&�d'd(��Z,e+dAee-eed
feed,�d-d.��Z.eed/��fd0d1�Z/d
d2�d3d4�Z0d5d6�Z1d7d8�Z2d9d:�Z3dBd;d<�Z4d=d>�Z5�Z6S)C�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�
next_tokenzF'(?:[^']|'')*'|"(?:[^"]|"")*"|(?:\d+|\.\d+)(?:\.\d*)?(?:[Ee][+-]?\d+)?z,[^\d\W][\w.\-\xb7\u0300-\u036F\u203F\u2040]*>I�namer9�/r8�-�{Zlast�(r;z
local-name�$�notZfalse�@�,�)znormalize-spaceZceiling�+Z	followingz
namespace-uri�node�::�roundZboolean�div�.z
string-length�|�countzstarts-with�text�}�	namespace�andZ	preceding�or�[�parent�string�positionzsubstring-before�sum�	attributer=�childzancestor-or-selfzpreceding-siblingZnumberr<�processing-instruction�contains�modzfollowing-sibling�:r:�concat�	translateZfloor�
descendantzsubstring-afterZlangzdescendant-or-self�self�*�]�comment�id�trueZancestor�//Z	substring�..Zxml��axisz	kind test.�PATH_STEP_LABELS>
�(float)�	(integer)rE�	(decimal)rQ�(name)rIrh�(string)rnN�schema�variable_types�base_uri�function_signatures>�functionrMr^zschema-attributerTznamespace-nodeZarrayzschema-element�itemzempty-sequencez
document-node�map�
typeswitch�ifZswitchZelementr`rjT)�
namespaces�strict�args�kwargs�returncs8tt|���|j��|_|dur.|j�|�||_dS�N)�superr>�__init__�DEFAULT_NAMESPACESrr��updater�)rgr�r�r�r���	__class__��D/usr/lib/python3.9/site-packages/elementpath/xpath1/xpath1_parser.pyr�|s
zXPath1Parser.__init__)r�cCsdS)zXPath 1.0 compatibility mode.Tr��rgr�r�r��compatibility_mode�szXPath1Parser.compatibility_modecCsdS)z�
        The default namespace. For XPath 1.0 this value is always `None` because the default
        namespace is ignored (see https://www.w3.org/TR/1999/REC-xpath-19991116/#node-tests).
        Nr�r�r�r�r��default_namespace�szXPath1Parser.default_namespacecCsdS)Nr?r�r�r�r�r��xsd_version�szXPath1Parser.xsd_version)�
local_namer�cCsZ|j�d�tkrd|S|j��D](\}}|tkr"|rBd||fn|Sq"tdd��dS)z2Returns a prefixed QName string for XSD namespace.Zxszxs:%sz%s:%s�XPST0081z"Missing XSD namespace registrationN)r��getr�itemsr)rgr�Zpfx�urir�r�r��	xsd_qname�szXPath1Parser.xsd_qname)�string_literalr�cCs6|�d�r|dd��dd�S|dd��dd�SdS)N�'����z''z""�")�
startswith�replace)r�r�r�r��unescape�s
zXPath1Parser.unescapeF�P)�symbol�reverse_axis�bpcCs|j|dtf|||d�S)z>Register a token for a symbol that represents an XPath *axis*.rp)�label�basesr��lbp�rbp)�registerr+)�clsr�r�r�r�r�r�rp�s�zXPath1Parser.axisr�r{�Z)r��nargs�sequence_typesr�r�c	Cs(d|vr�n||jvr&t|�d���n�|�r|dkrDttd|�}nttd|�}|dur\n�t|t�r�d�d�|dd	��|d	�|j	||f<n~|d
dur�d�d�|dd	��|d	�|j	||df<nDt
|d|d
d
�D],}d�d�|d|��|d	�|j	||f<q�|j||||tf||d
�S)zY
        Registers a token class for a symbol that represents an XPath function.
        r{z is a reserved function namez
math functionzmath:%szfn:%sNzfunction({}) as {}�, r�r�zfunction({}, ...) as {}r)r�r�r�r�r�r�)
�RESERVED_FUNCTION_NAMESr
rr!r �
isinstance�int�format�joinrz�ranger�r,)r�r�r�r�r�r�ZqnameZarityr�r�r�r{�s2

����zXPath1Parser.function)�sourcer�cs:tttt|��|��}z|��Wnty4Yn0|Sr�)rr*r�r>�parse�evaluater)rgr�Z
root_tokenr�r�r�r��szXPath1Parser.parse)�messagecGsX|jj|vrdS|jjdkrH|j�|jj�durH|jd||jj�|_n|j�|��dS)a1
        Checks the next symbol with a list of symbols. Replaces the next token
        with a '(name)' token if check fails and the symbol can be also a name.
        Otherwise raises a syntax error.

        :param symbols: a sequence of symbols.
        :param message: optional error message.
        N�operatorru)rAr�r��name_pattern�match�symbol_table�wrong_syntax)rgr�Zsymbolsr�r�r��
expected_name�s	�zXPath1Parser.expected_namecCs�t|�tkr�|tkrt|t�S|tkr0t|t�S|tkr^t|t�p\t|t�o\t	dd�|D��Sz*|j
dkrzt|t|�WSt|t|�WSt
y�Yn0|jdur�z|j�||�WSt
y�Yn0td|��dS)z'Checks an instance against an XSD type.css|]}t|t�VqdSr�)r�r��.0�xr�r�r��	<genexpr>��z+XPath1Parser.is_instance.<locals>.<genexpr>z1.1Nzunknown type %r)r%rr$r�rr#rr"�list�allr�rr�KeyErrorrw�is_instancer)rg�obj�
type_qnamer�r�r�r��s,



�

zXPath1Parser.is_instancec	s~zt|�}Wnty YdS0|s*dS|dks:|dkr>dS|ddvrV|dd�}|dvrbdS|�d	�r�|�d
�r�d|vr�t�|dd��duSz|dd��d
�\}}Wnty�YdS0|dks�t�|�duo�t�|�duS�nR|�d��r&|�d
��r&|�d��sdS��|dd��S|�d��r(|dk�rL�j	dk�rLdSz|�
dd�\}}Wnt�yvYdS0��|��s�dS|dk�r�dS|dd�}|�d��r�|dd�}d|v�r�t�fdd�|�d
�D��S|�d�}��||d���sdSt�fdd�|d|��d
�D��Snt
j�|�du�r>dSzt|�j�}��d|�Wnttf�ytYdS0dSdS)z4Checks is a string is a sequence type specification.F�empty-sequence()ZnoneTr��rh�?rLN>z	comment()Z
untypedAtomiczattribute()ztext()zprocessing-instruction()�node()�numericzdocument-node()�item()z	element()zattribute(*)z
element(*)zelement(rKrJ�r�rhzdocument-node(zdocument-node(element(�z	function(zfunction(*)�3.0z as r�z
function()�	z, ...���c3s|]}��|�VqdSr���is_sequence_typer�r�r�r�r�Br�z0XPath1Parser.is_sequence_type.<locals>.<genexpr>c3s|]}|r��|�VqdSr�r�r�r�r�r�r�Hr�)r
�	TypeErrorr��endswithr	r��split�
ValueErrorr��version�rsplitr��indexr�patternr&r�r�r�)rg�valueZarg1Zarg2Zreturn_type�kr�r�r�r�r�sl�


&zXPath1Parser.is_sequence_typec	Cs�t|t�rt||j�}d}n
|}|j}|r\t|�\}}|tkr\z
t|WStyZYn0|durz|j	durz|j	�
|�}|dur�td�S|��s�|�
�r�z|j	�|�}t|jWSttfy�td�YS0ntd�SdS)zPGets an atomic value for an XSD type instance or name. Used for schema contexts.N�1)r��strr&r�rBr'rrr�rwZget_typerZ	is_simpleZhas_simple_contentZget_primitive_typer��AttributeError)rgZtype_or_nameZ
expanded_nameZxsd_typer�r�Zprimitive_typer�r�r��get_atomic_valueUs.

zXPath1Parser.get_atomic_valuec	sB�ddvr&��|�dd��d�S|dus@t|t�rP|gkrP�dkpN|dvS�dkr\dSt|t�r�t|�dkr���|d��S|dus�|d	kr�dSt��fd
d�|D��Sn0�dkr�t|�p�t|ttf�S�d
kr�t|t�St|�}|du�r�dk�p�d|kSzt	��j
�}��||�WStt
f�y<YdS0dS)a

        Checks a value instance against a sequence type.

        :param value: the instance to check.
        :param sequence_type: a string containing the sequence type spec.
        :param occurrence: an optional occurrence spec, can be '?', '+' or '*'.
        r�r�Nr�>rhr�Fr�rr�c3s|]}��|��VqdSr�)�match_sequence_typer��rg�
sequence_typer�r�r��r�z3XPath1Parser.match_sequence_type.<locals>.<genexpr>r�r�r�z%s())r�r�r��lenr�r1rrr7r&r�r�r�r�)rgr�r��
occurrenceZ
value_kindr�r�r�r�r�vs0


z XPath1Parser.match_sequence_typecCsH|��D]:\}}|j|dt|t�r&dndd�sd�|�}td|��qdS)zCChecks the sequence types of the XPath dynamic context's variables.r�rhN)r�z)Unmatched sequence type for variable {!r}ZXPDY0050)r�r�r�r�r�r)rg�valuesZvarnamer�r�r�r�r��check_variables�s�
zXPath1Parser.check_variables)NT)Fr�)Nr�r{r�)N)7�__name__�
__module__�__qualname__�__doc__r�r*�__annotations__Ztoken_base_class�re�compileZliterals_patternr�rZSYMBOLSrr�rqrr��PATH_STEP_SYMBOLSrwrr(rxrryr Zfunction_namespacerzrr�r�r�boolrr��propertyr�r�r�r��staticmethodr��classmethodrpr)r{r�r�r�r�r�r�r��
__classcell__r�r�r�r�r>.sd
	�
���
�'J!
$r>z(start)z(end)rvrrrtrsz	(invalid)z	(unknown)rJrK�d)r�rirNrUru�
�literal)r�r�cCs�|jjjdkr�|jjdkrq�|jtkr<|�dd�|j���q�|j|jj	vr`|�dd�|j���q�|jdkr�d}|�d|�|j���q�d	}|�d|�|j���n|jjjd
kr�|�
d|j��|S)NrFr�ZXPST0017z!unknown constructor function {!r}zunknown function {!r}r~z)improper use of XQuery reserved name {!r}ZXPST0003z(improper use of XPath reserved name {!r}rNzaxis '%s::' not found)�parserrAr�r�rVr�errorr�r�r�Zmissing_axis)rg�msgr�r�r��nud_name_literal�s

r�cCsdd�|�|�D�S)NcSsg|]}|�qSr�r�r�r�r�r��
<listcomp>�r�z)evaluate_name_literal.<locals>.<listcomp>��select�rg�contextr�r�r��evaluate_name_literal�srccs�|dur|���|j}t|t�r6|�||�EdHdS|ddksJ|jjsP|}nd|jj|f}|j|jjur�|�	�D]}t
||�s�t||�rv|Vqvn�|jdus�t|jt��r>|�	�D]�}t
||�s�t||�r�t|t
tf�r�|Vq�|�|�}|jj�||jj�}|du�r||ji|_n
|jj|_|�|�|_|jVq�nT|�	�D]J}t
||��sbt||��rFt|t
tf��rz|Vn|�|�|_|jV�qFdS)NrrE�{%s}%s)�missing_contextr�r�r�select_xsd_nodesr�r��	xsd_typesrw�iter_children_or_selfr5r2r(r0r.�get_path�findr��type�get_typed_noder|)rgrrB�tagr|�path�xsd_noder�r�r��select_name_literal�s>




rrc�_cCs0|jjdkr|�d�n|�dd�|jjj�d�sB|j�dd�|j��rV|�d��|j	dkr�z|�
|j�}WnJty�|j�
�||jjf|dd�<d�|j�}|�d|�d�Yq�0|jj�|�n|jjj	dkr�|���||j�d�f|dd�<d	�|d
j|dj�|_|jjj	dk�r,|���|S)
Nr?rurhr{z2a QName cannot contains spaces before or after ':'zprefix {!r} is not declaredr�r�z{}:{}rr�rc)r�r�ZexpectedrAr�r�r�Z	is_spacedr�r�r%r�r�advancer@r�r��bind_namespace�
expression)rg�leftrVr�r�r�r��led_namespace_prefixs.



rcCs2|dj�d�r|d�|�Sdd�|�|�D�S)Nr�r{cSsg|]}|�qSr�r�r�r�r�r�r�<r�z-evaluate_namespace_prefix.<locals>.<listcomp>�r�r�r�rrr�r�r��evaluate_namespace_prefix8srccs�|dj�d�rF|d�|�}t|t�r4|EdHn|durB|VdS|djdkrdd|dj}nd|�|dj�|djf}|dur�|V�n\t|t�r�|�||�EdH�n<|j	|j
jur�|��D]}t
||�s�t||�r�|Vqʐn|j	du�st|j	t��r�|��D]�}t
||��s,t||��rt|ttf��rD|VnR|�|�}|j
j�||j
j�}|du�rx|�|�n
|j
j|_	|�|�|_|jV�qnT|��D]J}t
||��s�t||��r�t|ttf��r�|Vn|�|�|_|jV�q�dS)Nr�r{rrhz*:%sr)r�r�r�r�r�r�r%rrrr�rwr	r5r2r(r0r.r
rr��add_xsd_typer
r|)rgrr�rBr|rrr�r�r��select_namespace_prefix?sH





rrEcCs�|jjr|jdkr|�d��|jjj|j�d�}|j��|jjj�	d�sZ|j�
dd�|jj�|�|jjd|j|�|j�
d�f|dd�<|d	jdur�d|_nd
|dj|d	jf|_|S)NrEz,not allowed symbol if parser has strict=TruerUr{rurhrvr�r�rr)r�r�r�r�rAr�Z
advance_untilrr�r�r�rr�r)rgrVr�r�r��nud_namespace_urius


�rcCs2|dj�d�r|d�|�Sdd�|�|�D�S)Nr�r{cSsg|]}|�qSr�r�r�r�r�r�r��r�z*evaluate_namespace_uri.<locals>.<listcomp>rrr�r�r��evaluate_namespace_uri�srccs�|dj�d�r$|d�|�VdS|dur4|���t|t�rT|�||j�EdHn�|jdur�|�	�D]*}t
||j�r~|Vqft||j�rf|VqfnP|�	�D]F}t
||j�s�t||j�r�t|tt
f�r�|Vq�|�|�|_|jVq�dS)Nr�r{)r�r�r�rr�rrr�rr	r5r2r0r.r
r|�rgrr|r�r�r��select_namespace_uri�s&


rrGr�cCsD|j�d�|jjdd�f|dd�<d|djvr@|d�d��|S)Nrur��r�rcrz3variable reference requires a simple reference name)r�r�rr�r�r�r�r�r��nud_variable_reference�s
r!c
Cs`|dur|���z|j|djWStyZ}z |�dt|��d�WYd}~n
d}~00dS)Nrzunknown variable %r)rZ	variablesr�r�Zmissing_namer��rgr�errr�r�r��evaluate_variable_reference�sr$rhccs|r,|�|�}|dur*|dur$||_|Vn�|dur>|���n�t|t�rp|��D]}|durP|�|�|VqPn�|jdur�|��D]<}|dur�q�|jdkr�t|t	t
f�r�|Vq�t|�r�|Vq�nJ|��D]@}|jdur�|��r�t|t
t
f�r�|Vq�|�|�|_|jVq�dS)Nr^)r�r|rr�rr	rrrpr/r0r6Zis_principal_node_kindr.r
rr�r�r��select_wildcard�s8







r%rQccs�|dur|���n�t|t�rd|��D]<}t|�r<|�|�n||jurZ|D]}|�|�qJ|Vq$n�|jdur�|��D]&}|dur�|Vqvt|j�rv|jVqvnT|��D]J}|dur�t|t	t
f�r�|Vq�|�|�|_|jVq�t|j�r�|jVq�dSr�)
rr�rZ	iter_selfr3r�rootrr4r0r.r
r|)rgrr|Zxsd_elementr�r�r��select_self_shortcut�s0







r'rnccs6|dur|���n |�|j�}t|�r2||_|VdSr�)rZ
get_parentr|r6)rgrrZr�r�r��select_parent_shortcuts
r(rX�cCs0|�|d�t|���p.|�|d�t|���S�Nrr���
boolean_valuer�rrr�r�r��evaluate_or_operators�r-rW�cCs0|�|d�t|���o.|�|d�t|���Sr*r+rr�r�r��evaluate_and_operator"s�r/r8�r9r<r:r=r;cCs0|jtvr|���||jjdd�f|dd�<|S)Nr0r )r��
OPERATORS_MAPr�r�r�rgrr�r�r��led_comparison_operators*s
r3c
s�t|j�zt�fdd�|�|�D��WStyZ}z|�d|�d�WYd}~n:d}~0ty�}z|�d|�d�WYd}~n
d}~00dS)Nc3s|]\}}�||�VqdSr�r�)r�Zx1Zx2��opr�r�r�@r�z0evaluate_comparison_operators.<locals>.<genexpr>�XPTY0004ZFORG0001)r1r��anyZiter_comparison_datar�r�r�r"r�r4r��evaluate_comparison_operators7s
"r8rL�(c
Cs�t|�dkr*|j|td�}|dur�|
Sn�|j|td�\}}|dur�z
||WSty�}z|�d|�d�WYd}~nnd}~0ty�}zNt|t	�r�|�d|�d�n(t|t
�r�|�d|�d�n|�d|�d�WYd}~n
d}~00dS�Nr��r�r6�FODT0001�FODT0002�FOAR0002�r�Zget_argumentr�get_operandsrr�r��
OverflowErrorr�rr�rgr�arg�op1�op2r#r�r�r��evaluate_plus_operatorIs 
"

rFrDc
Cs�t|�dkr*|j|td�}|dur�|Sn�|j|td�\}}|dur�z
||WSty�}z|�d|�d�WYd}~nnd}~0ty�}zNt|t	�r�|�d|�d�n(t|t
�r�|�d|�d�n|�d|�d�WYd}~n
d}~00dSr:r?rBr�r�r��evaluate_minus_operator_s 
"

rGcCs|jjdd�f|dd�<|S)N�Fr )r�rr�r�r�r��nud_plus_minus_operatorsusrI�-c
Cs�|�r�|j|td�\}}|du�r�z"t|ttf�r<||WS||WSty�}z�t|ttjf�r�t	�
|�r||�d�d�nt	�|�r�|�d�d�t|ttjf�r�t	�
|�r�|�d�d�nt	�|�r�|�d�d�|�d|�d�WYd}~n�d}~0t
�y$}z|�d|�d�WYd}~ntd}~0t�y�}zRt|t��rP|�d|�d�n*t|t��rl|�d|�d�n|�d|�d�WYd}~n
d}~00ndd�|�|�D�SdS)	Nr;�FOCA0005r=r6r<r>cSsg|]}|�qSr�r�r�r�r�r�r��r�z.evaluate_multiply_operator.<locals>.<listcomp>)r@rr�rrr��float�decimal�Decimal�mathZisnanr��isinfr�rArrr�rgrrDrEr#r�r�r��evaluate_multiply_operator|s8






""&rRrPc
Cs�|j|td�\}}|durdS|dk�rz4t|t�rTt|t�rTt�|�t�|�WS||WSty�}z|�d|�d�WYd}~n�d}~0ty�}z|�d|�d�WYd}~n^d}~0t	y�}z|�d|�d�WYd}~n.d}~0t
tjf�y|�d�d�Yn0n�t|t��r.|�d��n�t|t
��rF|�d��n�|jj�s�t|ttjf��r�t|ttjf��r�|�d��n\|dk�r�td	�S|dk�r�t|��d
��r�td�Std�St|��d
��r�td�Std�SdS)
Nr;rr6rKr>�FOAR0001r<r=�nanrDz-inf�inf)r@rr�r�rMrNr�r�r�rA�ZeroDivisionErrorZDivisionByZerorrr�r�rLr�r�)rgrZdividendZdivisorr#r�r�r��evaluate_div_operator�s>

"""
��

 rWrbc
Cs|j|td�\}}|du�r|dkr6t|t�r6td�St�|�rjt�|�sj|dkrj|jjdkrb|Std�SzBt|t�r�t|t�r�||dkr�||nt	|�|WS||WSt
y�}z|�d|�d�WYd}~n.d}~0tt
jf�y|�d�d�Yn0dS)Nr;rrTr?ZFORG0006rS)r@rr�rLrOrPr�r�r��absr�r�rVrMZInvalidOperationrQr�r�r��evaluate_mod_operator�s
$
"rYcCs|jjd|j|j�}|��S)Nru)r�r�r�Znud)rgr@r�r�r��nud_logical_div_mod_operators�srZrR�2cCs4d|_|jdvrd|_||jjdd�f|dd�<|S)NT>�unionrRFr[r )�cut_and_sortr�r�rr2r�r�r��led_union_operator�s

r^c#sn�dur������fdd�td�D�}tdd�|D��rH��dd��n"�jsZ|EdHn��|�EdHdS)Ncs(h|] }�|�t���D]}|�qqSr�)rr)r�r�r|�rrgr�r��	<setcomp>�r�z(select_union_operator.<locals>.<setcomp>rcss|]}t|�VqdSr�)r1r�r�r�r�r��r�z(select_union_operator.<locals>.<genexpr>r6zonly XPath nodes are allowed)rr�r7r�r]Ziter_results)rgr�resultsr�r_r��select_union_operator�srbrm�KcCs<|jjj|jjvr"|jj|jj�|j�d�f|dd�<|S�Nrc�r�rAr�rqr�r�rr�r�r�r��nud_descendant_path�srfrCcCsX|jjj|jjvr>z|jj|jj�Wnty<|YS0|j�d�f|dd�<|Srd)r�rAr�rqr�r��SyntaxErrorrr�r�r�r��nud_child_paths
rhcCs>|jjj|jjvr"|jj|jj�||j�d�f|dd�<|Srdrer2r�r�r��led_child_or_descendant_pathsriccsb|dur|����nJ|s.t|j�r*|jV�n0t|�dkrvt|j�sP|j|jurtt|t�s`d|_|d�|�EdHn�t�}|�	|d�D]�}t
|j�s�|�d��|d�|�D]�}t|tt
f�s�t|d�s�|Vq�||vr�q�t|t��r|j|v�rZ|�|�|Vq�t|t��r2|j|v�rZ|�|�|Vq�|�|�|Vt|t�r�|d�|�q�q�dS)z`
    Child path expression. Selects child:: axis as default (when bind to '*' or '(name)').
    Nr�r�XPTY0019r)rr4r&r�r|r�rr�set�inner_focus_selectr1r��tupler-�hasattrr.�elem�addr0r^r)rgrr��_�resultr�r�r��select_child_paths>







rsccs�|dur|���n�t|�dkr�|djr,dnd}|d�|�D]B|_t|j�sX|�d��|j|dd�D]}|d�|�EdHqfq>nVt|j	�s�|j|j	ur�d|_|djr�dnd}|j|dd�D]}|d�|�EdHq�dS)Nrr�rfrrjT)rpZinner_focus)
rr�Z
child_axisrr|r1r�Ziter_descendantsr4r&)rgrZ_axisrqr�r�r��select_descendant_pathDs


rtrYr�cCs&||j��f|dd�<|j�d�|S)Nri�r�rrr2r�r�r��
led_predicate_srvccs�|dur|���|�|d�D]�}|djdvs>|djdkrRt|j�sR|�d��dd�|d�t|��D�}t	|�dkr�t
|dt�r�|j|dkr�|jVq|�
|�r|jVqdS)Nrr�rornZXPTY0020cSsg|]}|�qSr�r�r�r�r�r�r�pr�z$select_predicate.<locals>.<listcomp>)rrlr�r�r1r|r�rrr�r�rr\r,)rgrrqZ	predicater�r�r��select_predicatefs�


rwrFcCs$|j��f|dd�<|j�d�|S)NrKrur�r�r�r��nud_parenthesized_exprzsrxcCs|d�|�S�Nr)r�rr�r�r��evaluate_parenthesized_expr�srzcCs|d�|�Sryrrr�r�r��select_parenthesized_expr�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)yr�rOrMr�r�typingrrrrrZhelpersr	r
�
exceptionsrrr
rZ	datatypesrrrrrrrrrrrrZ
xpath_contextrZtdoprr�rrrr r!r"r#r$r%r&r'Zschema_proxyr(Zxpath_tokenr)r*r+r,Zxpath_nodesr-r.r/r0r1r2r3r4r5r6r7�eq�ne�gt�ge�lt�ler1r>r�r�Znullary�prefixZinfixZpostfix�methodr{rpr�rrrrrrrrr!r$r%r'r(r-r/r3r8rFrGrIrRrWrYrZr^rbrfrhrirsrtrvrwrxrzr{r�r�r�r��<module>
s844�
y
8

!5




'
!






$"





(





Youez - 2016 - github.com/yon3zu
LinuXploit