U
    g:                     @  sH  d dl mZ ddlmZmZ d dlmZ d dlZd dlZddl	m
Z
 ddl	mZ G dd	 d	eZG d
d dejZG dd dejZG dd dejZeG dd dZeG dd dZeG dd dZeG dd dZG dd dejZeG dd dZddddZddd d!Zd,d"d#d$d%d&d'd(d)Zd&dd*d+ZdS )-    )annotations   )event_classT_JSON_DICT)	dataclassN)dom)runtimec                      sB   e Zd ZdZddddZedd dddZ fd	d
Z  ZS )AXNodeIdz/
    Unique accessibility node identifier.
    strreturnc                 C  s   | S N selfr   r   X/tmp/pip-unpacked-wheel-3ysq0mf8/selenium/webdriver/common/devtools/v85/accessibility.pyto_json   s    zAXNodeId.to_json)jsonr   c                 C  s   | |S r   r   clsr   r   r   r   	from_json   s    zAXNodeId.from_jsonc                   s   d t  S )NzAXNodeId({}))formatsuper__repr__r   	__class__r   r   r      s    zAXNodeId.__repr__)	__name__
__module____qualname____doc__r   classmethodr   r   __classcell__r   r   r   r   r	      s
   r	   c                   @  sh   e 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dZdZdZdZdZdZdZdd Zedd ZdS )AXValueTypez*
    Enum of possible property types.
    booleanZtristateZbooleanOrUndefinedidrefZ	idrefListintegernodeZnodeListnumberstringZcomputedStringtokenZ	tokenListZdomRelationroleZinternalRoleZvalueUndefinedc                 C  s   | j S r   valuer   r   r   r   r   5   s    zAXValueType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   8   s    zAXValueType.from_jsonN)r   r   r   r   ZBOOLEANZTRISTATEZBOOLEAN_OR_UNDEFINEDZIDREFZ
IDREF_LISTZINTEGERZNODEZ	NODE_LISTNUMBERSTRINGZCOMPUTED_STRINGZTOKENZ
TOKEN_LISTZDOM_RELATIONZROLEZINTERNAL_ROLEZVALUE_UNDEFINEDr   r    r   r   r   r   r   r"      s*   r"   c                   @  s<   e Zd ZdZdZdZdZdZdZdZ	dd	 Z
ed
d ZdS )AXValueSourceTypez,
    Enum of possible property sources.
    	attributeZimplicitstylecontentsplaceholderZrelatedElementc                 C  s   | j S r   r+   r   r   r   r   r   H   s    zAXValueSourceType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   K   s    zAXValueSourceType.from_jsonN)r   r   r   r   Z	ATTRIBUTEZIMPLICITZSTYLEZCONTENTSZPLACEHOLDERZRELATED_ELEMENTr   r    r   r   r   r   r   r/   =   s   r/   c                   @  sD   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
d Zedd ZdS )AXValueNativeSourceTypezd
    Enum of possible native property sources (as a subtype of a particular AXValueSourceType).
    
figcaptionlabelZlabelforZlabelwrappedZlegendZtablecaptiontitleotherc                 C  s   | j S r   r+   r   r   r   r   r   ]   s    zAXValueNativeSourceType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   `   s    z!AXValueNativeSourceType.from_jsonN)r   r   r   r   Z
FIGCAPTIONZLABELZLABELFORZLABELWRAPPEDZLEGENDZTABLECAPTIONZTITLEOTHERr   r    r   r   r   r   r   r4   P   s   r4   c                   @  s   e Zd ZU dZded< dZded< dZded< dZded	< dZd
ed< dZ	ded< dZ
ded< dZd
ed< dZded< dd Zedd ZdS )AXValueSourcez5
    A single source for a computed AX property.
    r/   type_Ntyping.Optional[AXValue]r,   typing.Optional[str]r0   attribute_valuetyping.Optional[bool]
supersededz(typing.Optional[AXValueNativeSourceType]native_sourcenative_source_valueinvalidinvalid_reasonc                 C  s   t  }| j |d< | jd k	r,| j |d< | jd k	r@| j|d< | jd k	rX| j |d< | jd k	rl| j|d< | jd k	r| j |d< | jd k	r| j |d< | j	d k	r| j	|d< | j
d k	r| j
|d	< |S )
Ntyper,   r0   attributeValuer@   nativeSourcenativeSourceValuerC   invalidReason)dictr;   r   r,   r0   r>   r@   rA   rB   rC   rD   r   r   r   r   r   r      s&    











zAXValueSource.to_jsonc                 C  s   | t |d d|kr$t|d nd d|kr:t|d nd d|krRt|d nd d|krht|d nd d|krt|d nd d|krt|d nd d|krt|d nd d	|krt|d	 nd d
	S )NrE   r,   r0   rF   r@   rG   rH   rC   rI   )	r;   r,   r0   r>   r@   rA   rB   rC   rD   )r/   r   AXValuer
   boolr4   r   r   r   r   r      s    zAXValueSource.from_json)r   r   r   r   __annotations__r,   r0   r>   r@   rA   rB   rC   rD   r   r    r   r   r   r   r   r:   e   s   
r:   c                   @  sB   e Zd ZU ded< dZded< dZded< dd Zed	d
 ZdS )AXRelatedNodezdom.BackendNodeIdbackend_dom_node_idNr=   r$   textc                 C  s@   t  }| j |d< | jd k	r(| j|d< | jd k	r<| j|d< |S )NbackendDOMNodeIdr$   rQ   )rJ   rP   r   r$   rQ   rK   r   r   r   r      s    



zAXRelatedNode.to_jsonc                 C  sB   | t j|d d|kr$t|d nd d|kr:t|d nd dS )NrR   r$   rQ   )rP   r$   rQ   )r   BackendNodeIdr   r
   r   r   r   r   r      s
    zAXRelatedNode.from_json)	r   r   r   rN   r$   rQ   r   r    r   r   r   r   r   rO      s   
	rO   c                   @  s2   e Zd ZU ded< ded< dd Zedd Zd	S )

AXPropertyAXPropertyNamenamerL   r,   c                 C  s&   t  }| j |d< | j |d< |S )NrV   r,   )rJ   rV   r   r,   rK   r   r   r   r      s    zAXProperty.to_jsonc                 C  s    | t |d t|d dS )NrV   r,   )rV   r,   )rU   r   rL   r   r   r   r   r      s    zAXProperty.from_jsonN)r   r   r   rN   r   r    r   r   r   r   r   rT      s
   
rT   c                   @  sR   e Zd ZU dZded< dZded< dZded< dZd	ed
< dd Ze	dd Z
dS )rL   z(
    A single computed AX property.
    r"   r;   Nztyping.Optional[typing.Any]r,   z+typing.Optional[typing.List[AXRelatedNode]]related_nodesz+typing.Optional[typing.List[AXValueSource]]sourcesc                 C  sh   t  }| j |d< | jd k	r(| j|d< | jd k	rFdd | jD |d< | jd k	rddd | jD |d< |S )NrE   r,   c                 S  s   g | ]}|  qS r   r   .0ir   r   r   
<listcomp>   s     z#AXValue.to_json.<locals>.<listcomp>relatedNodesc                 S  s   g | ]}|  qS r   rY   rZ   r   r   r   r]      s     rX   )rJ   r;   r   r,   rW   rX   rK   r   r   r   r      s    



zAXValue.to_jsonc                 C  s^   | t |d d|kr|d nd d|kr:dd |d D nd d|krVdd |d D nd dS )	NrE   r,   r^   c                 S  s   g | ]}t |qS r   )rO   r   rZ   r   r   r   r]      s     z%AXValue.from_json.<locals>.<listcomp>rX   c                 S  s   g | ]}t |qS r   )r:   r   rZ   r   r   r   r]      s     )r;   r,   rW   rX   )r"   r   r   r   r   r   r      s    zAXValue.from_json)r   r   r   r   rN   r,   rW   rX   r   r    r   r   r   r   r   rL      s   
rL   c                   @  s   e 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d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d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'd&Z(d'Z)d(Z*d)d* Z+e,d+d, Z-d-S ).rU   a  
    Values of AXProperty name:
    - from 'busy' to 'roledescription': states which apply to every AX node
    - from 'live' to 'root': attributes which apply to nodes in live regions
    - from 'autocomplete' to 'valuetext': attributes which apply to widgets
    - from 'checked' to 'selected': states which apply to widgets
    - from 'activedescendant' to 'owns' - relationships between elements other than parent/child/sibling.
    busydisablededitableZ	focusableZfocusedhiddenZ
hiddenRootrC   ZkeyshortcutsZsettableZroledescriptionZliveZatomicZrelevantrootautocompleteZhasPopuplevelZmultiselectableZorientation	multilinereadonlyrequiredZvalueminZvaluemaxZ	valuetextcheckedexpandedmodalZpressedselectedZactivedescendantcontrolsZdescribedbydetailsZerrormessageZflowtoZ
labelledbyZownsc                 C  s   | j S r   r+   r   r   r   r   r   3  s    zAXPropertyName.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   6  s    zAXPropertyName.from_jsonN).r   r   r   r   ZBUSYZDISABLEDZEDITABLEZ	FOCUSABLEZFOCUSEDZHIDDENZHIDDEN_ROOTINVALIDZKEYSHORTCUTSZSETTABLEZROLEDESCRIPTIONZLIVEZATOMICZRELEVANTROOTZAUTOCOMPLETEZ	HAS_POPUPZLEVELZMULTISELECTABLEZORIENTATION	MULTILINEZREADONLYZREQUIREDZVALUEMINZVALUEMAXZ	VALUETEXTZCHECKEDZEXPANDEDZMODALZPRESSEDZSELECTEDZACTIVEDESCENDANTZCONTROLSZDESCRIBEDBYZDETAILSZERRORMESSAGEZFLOWTOZ
LABELLEDBYZOWNSr   r    r   r   r   r   r   rU     sV   rU   c                   @  s   e Zd ZU dZded< ded< dZded< dZd	ed
< dZd	ed< dZd	ed< dZ	d	ed< dZ
ded< dZded< dZded< dd Zedd ZdS )AXNodez+
    A node in the accessibility tree.
    r	   node_idrM   ignoredNz(typing.Optional[typing.List[AXProperty]]ignored_reasonsr<   r*   rV   descriptionr,   
propertiesz&typing.Optional[typing.List[AXNodeId]]	child_ids"typing.Optional[dom.BackendNodeId]rP   c                 C  s   t  }| j |d< | j|d< | jd k	r<dd | jD |d< | jd k	rT| j |d< | jd k	rl| j |d< | jd k	r| j |d< | jd k	r| j |d	< | j	d k	rd
d | j	D |d< | j
d k	rdd | j
D |d< | jd k	r| j |d< |S )NnodeIdrt   c                 S  s   g | ]}|  qS r   rY   rZ   r   r   r   r]   c  s     z"AXNode.to_json.<locals>.<listcomp>ignoredReasonsr*   rV   rv   r,   c                 S  s   g | ]}|  qS r   rY   rZ   r   r   r   r]   m  s     rw   c                 S  s   g | ]}|  qS r   rY   rZ   r   r   r   r]   o  s     childIdsrR   )rJ   rs   r   rt   ru   r*   rV   rv   r,   rw   rx   rP   rK   r   r   r   r   ^  s(    








zAXNode.to_jsonc                 C  s   | t |d t|d d|kr2dd |d D nd d|krJt|d nd d|krbt|d nd d|krzt|d nd d	|krt|d	 nd d
|krdd |d
 D nd d|krdd |d D nd d|krtj|d nd d
S )Nrz   rt   r{   c                 S  s   g | ]}t |qS r   rT   r   rZ   r   r   r   r]   y  s     z$AXNode.from_json.<locals>.<listcomp>r*   rV   rv   r,   rw   c                 S  s   g | ]}t |qS r   r}   rZ   r   r   r   r]   ~  s     r|   c                 S  s   g | ]}t |qS r   )r	   r   rZ   r   r   r   r]     s     rR   )
rs   rt   ru   r*   rV   rv   r,   rw   rx   rP   )r	   r   rM   rL   r   rS   r   r   r   r   r   t  s    
zAXNode.from_json)r   r   r   r   rN   ru   r*   rV   rv   r,   rw   rx   rP   r   r    r   r   r   r   r   rr   ;  s   
rr   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]r   c                  c  s   ddi} | V }dS )z,
    Disables the accessibility domain.
    methodzAccessibility.disableNr   cmd_dictr   r   r   r   disable  s     r   c                  c  s   ddi} | V }dS )z
    Enables the accessibility domain which causes ``AXNodeId``'s to remain consistent between method calls.
    This turns on accessibility for the page, which can impact performance until accessibility is disabled.
    r~   zAccessibility.enableNr   r   r   r   r   enable  s     r   ztyping.Optional[dom.NodeId]ry   z'typing.Optional[runtime.RemoteObjectId]r?   z?typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[AXNode]])rs   backend_node_id	object_idfetch_relativesr   c                 c  st   t  }| dk	r|  |d< |dk	r.| |d< |dk	rB| |d< |dk	rR||d< d|d}|V }dd	 |d
 D S )a  
    Fetches the accessibility node and partial accessibility tree for this DOM node, if it exists.

    **EXPERIMENTAL**

    :param node_id: *(Optional)* Identifier of the node to get the partial accessibility tree for.
    :param backend_node_id: *(Optional)* Identifier of the backend node to get the partial accessibility tree for.
    :param object_id: *(Optional)* JavaScript object id of the node wrapper to get the partial accessibility tree for.
    :param fetch_relatives: *(Optional)* Whether to fetch this nodes ancestors, siblings and children. Defaults to true.
    :returns: The ``Accessibility.AXNode`` for this DOM node, if it exists, plus its ancestors, siblings and children, if requested.
    Nrz   ZbackendNodeIdZobjectIdZfetchRelativeszAccessibility.getPartialAXTree)r~   paramsc                 S  s   g | ]}t |qS r   rr   r   rZ   r   r   r   r]     s     z'get_partial_ax_tree.<locals>.<listcomp>nodes)rJ   r   )rs   r   r   r   r   r   r   r   r   r   get_partial_ax_tree  s    r   c                  c  s    ddi} | V }dd |d D S )zU
    Fetches the entire accessibility tree

    **EXPERIMENTAL**

    :returns: 
    r~   zAccessibility.getFullAXTreec                 S  s   g | ]}t |qS r   r   rZ   r   r   r   r]     s     z$get_full_ax_tree.<locals>.<listcomp>r   r   r   r   r   r   get_full_ax_tree  s
    	 r   )NNNN)
__future__r   utilr   r   Zdataclassesr   enumtyping r   r   r
   r	   Enumr"   r/   r4   r:   rO   rT   rL   rU   rr   r   r   r   r   r   r   r   r   <module>   s:   C%9H
    "