
    >fh(                     b   d dl mZmZ er5d dl mZmZ ed   Z G d ded      Z G d d	ed      Z G d
 ded      Znd dl m	Z	 e
Zee
e	f   xZxZZ G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d de      Z G d de      Z G d de      Z G d d      Zy)     )TYPE_CHECKINGOptional)Literal	TypedDict)portrait	landscapec                   6    e Zd ZU eed<   eed<   eed<   eed<   y)_MarginOptsleftrighttopbottomN__name__
__module____qualname__float__annotations__     _/var/www/zara/venv/lib/python3.12/site-packages/selenium/webdriver/common/print_page_options.pyr
   r
      s    
r   r
   F)totalc                   "    e Zd ZU eed<   eed<   y)	_PageOptswidthheightNr   r   r   r   r   r       s    r   r   c                   Z    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   e	e
   ed<   y)	
_PrintOptsmarginpage
backgroundorientationscaleshrinkToFit
pageRangesN)r   r   r   r
   r   r   boolOrientationr   liststrr   r   r   r   r   $   s.      Ir   r   )Anyc                   0    e Zd ZdZd Zdee   fdZddZy)_PageSettingsDescriptorz8Descriptor which validates `height` and 'width' of page.c                     || _         y Nnameselfr0   s     r   __init__z _PageSettingsDescriptor.__init__7   	    	r   returnc                 N    |j                   j                  | j                  d       S r.   )_pagegetr0   r2   objclss      r   __get__z_PageSettingsDescriptor.__get__:   s    yy}}TYY--r   Nc                      t        |d      | j                  |       ||j                  | j                  <   |j                  |j                  d<   y )N_validate_num_propertyr    )getattrr0   r7   _print_optionsr2   r:   values      r   __set__z_PageSettingsDescriptor.__set__=   s@    .-.tyy%@$		$))%(YY6"r   r5   N	r   r   r   __doc__r3   r   r   r<   rC   r   r   r   r,   r,   4   s    B.8E? ./r   r,   c                   0    e Zd ZdZd Zdee   fdZddZy)_MarginSettingsDescriptorz`Descriptor which validates below attributes.

    - top
    - bottom
    - left
    - right
    c                     || _         y r.   r/   r1   s     r   r3   z"_MarginSettingsDescriptor.__init__L   r4   r   r5   c                 N    |j                   j                  | j                  d       S r.   )_marginr8   r0   r9   s      r   r<   z!_MarginSettingsDescriptor.__get__O   s    {{tyy$//r   Nc                      t        |d      d| j                   |       ||j                  | j                  <   |j                  |j                  d<   y )Nr>   zMargin r   )r?   r0   rK   r@   rA   s      r   rC   z!_MarginSettingsDescriptor.__set__R   sG    .-./DeL!&DII'*{{8$r   rD   rE   r   r   r   rH   rH   C   s!    08E? 03r   rH   c                   0    e Zd ZdZd Zdee   fdZddZy)_ScaleDescriptorz'Scale descriptor which validates scale.c                     || _         y r.   r/   r1   s     r   r3   z_ScaleDescriptor.__init__[   r4   r   r5   c                 L    |j                   j                  | j                        S r.   r@   r8   r0   r9   s      r   r<   z_ScaleDescriptor.__get__^   s    !!%%dii00r   Nc                      t        |d      | j                  |       |dk  s|dkD  rt        d      ||j                  | j                  <   y )Nr>   g?   z*Value of scale should be between 0.1 and 2)r?   r0   
ValueErrorr@   rA   s      r   rC   z_ScaleDescriptor.__set__a   sG    .-.tyy%@3;%!)IJJ(-499%r   rD   rE   r   r   r   rN   rN   X   s    118E? 1.r   rN   c                   8    e Zd ZdZddgZd Zdee   fdZd	dZ	y)
_PageOrientationDescriptorz?PageOrientation descriptor which validates orientation of page.r   r   c                     || _         y r.   r/   r1   s     r   r3   z#_PageOrientationDescriptor.__init__m   r4   r   r5   c                 N    |j                   j                  | j                  d       S r.   rQ   r9   s      r   r<   z"_PageOrientationDescriptor.__get__p       !!%%dii66r   Nc                     || j                   vrt        d| j                          ||j                  | j                  <   y )Nz!Orientation value must be one of )ORIENTATION_VALUESrT   r@   r0   rA   s      r   rC   z"_PageOrientationDescriptor.__set__s   s>    ///@AXAX@YZ[[(-499%r   rD   )
r   r   r   rF   r[   r3   r   r'   r<   rC   r   r   r   rV   rV   h   s+    I$k278K#8 7.r   rV   c                   *    e Zd ZdZdefdZd ZddZy)_ValidateTypeDescriptorzEBase Class Descriptor which validates type of any subclass attribute.expected_typec                      || _         || _        y r.   )r0   r^   )r2   r0   r^   s      r   r3   z _ValidateTypeDescriptor.__init__|   s    	*r   c                 N    |j                   j                  | j                  d       S r.   rQ   r9   s      r   r<   z_ValidateTypeDescriptor.__get__   rY   r   Nc                     t        || j                        s.t        | j                   d| j                  j                         ||j
                  | j                  <   y )Nz should be of type )
isinstancer^   rT   r0   r   r@   rA   s      r   rC   z_ValidateTypeDescriptor.__set__   sN    %!3!34		{*=d>P>P>Y>Y=Z[\\(-499%r   rD   )r   r   r   rF   typer3   r<   rC   r   r   r   r]   r]   y   s    O+D +7.r   r]   c                   "     e Zd ZdZ fdZ xZS )_ValidateBackGroundz&Expected type of background attribute.c                 .    t         |   |t               y r.   superr3   r&   r2   r0   	__class__s     r   r3   z_ValidateBackGround.__init__       t$r   r   r   r   rF   r3   __classcell__rj   s   @r   re   re      s    0% %r   re   c                   "     e Zd ZdZ fdZ xZS )_ValidateShrinkToFitz)Expected type of shrink to fit attribute.c                 .    t         |   |t               y r.   rg   ri   s     r   r3   z_ValidateShrinkToFit.__init__   rk   r   rl   rn   s   @r   rp   rp      s    3% %r   rp   c                   "     e Zd ZdZ fdZ xZS )_ValidatePageRangesz'Expected type of page ranges attribute.c                 .    t         |   |t               y r.   )rh   r3   r(   ri   s     r   r3   z_ValidatePageRanges.__init__   rk   r   rl   rn   s   @r   rs   rs      s    1% %r   rs   c                   2   e Zd Z ed      Z	  ed      Z	  ed      Z	  ed      Z	  ed      Z		  ed      Z
	  ed      Z	  ed      Z	  ed	      Z	  ed
      Z	  ed      Z	 dddZdddZdddZdddZddZdefdZdeddfdZdededdfdZ y)PrintOptionsr   r   r   r   r   r   r#   r"   r!   r$   r%   g33333=@g      5@r   r   gHzA@gףp=
5@gq=
ף;@gףp=
E@r5   Nc                 x    i | _         t        j                  d   t        j                  d   d| _        i | _        y )Nr   r   rw   )r@   rv   A4r7   rK   r2   s    r   r3   zPrintOptions.__init__  s4    *,"ooh/!__W-!

 %'r   c                     | j                   S )z-:Returns: A hash of print options configured.)r@   rz   s    r   to_dictzPrintOptions.to_dict  s    """r   	page_sizec                     | j                  d|d          | j                  d|d          |d   | j                  d<   |d   | j                  d<   | j                  | j                  d<   y)a  Sets the page size to predefined or custom dimensions.

        Parameters:
        -----------
        page_size: dict
        A dictionary containing `height` and `width` as keys with respective values.

        Example:
        --------
        self.set_page_size(PageSize.A4)  # A4 predefined size
        self.set_page_size({"height": 15.0, "width": 20.0})  # Custom size in cm
        r   r   r    N)r>   r7   r@   )r2   r}   s     r   set_page_sizezPrintOptions.set_page_size  sh     	##Hi.AB##GYw-?@(2

8'0

7&*jjF#r   property_namerB   c                 r    t        |t        t        f      st        | d      |dk  rt        | d      y)z3Helper function to validate some of the properties.z  should be an integer or a floatr   z cannot be less than 0N)rb   intr   rT   )r2   r   rB   s      r   r>   z#PrintOptions._validate_num_property  sB    %#u..NOPP19.DEFF r   rD   )!r   r   r   r,   page_height
page_widthrH   
margin_topmargin_bottommargin_leftmargin_rightrN   r#   rV   r"   re   r!   rp   shrink_to_fitrs   page_rangesry   LEGALLETTERTABLOIDr3   r   r|   dictr   r)   r   r>   r   r   r   rv   rv      s'   )(3K* )1J* +51J* .h7M* ,F3K* -W5L* W%E* -];K* %\2J* )7M* &l3K* 4	(Bu-E.F/G'# #1t 1 1&GC G G$ Gr   rv   N)typingr   r   r   r   r'   r
   r   r   r*   r)   r   r,   rH   rN   rV   r]   re   rp   rs   rv   r   r   r   <module>r      s   & +)12Kiu IU Ye  K+/S>9K9)j/ /3 3*. . . .". . %1 %%2 %%1 %]G ]Gr   