
     h=                     f    d dl mZ d dl mZ d dl mZ i Zd ZddZ G d de      Z G d d	e      Z	y
)    )full11)tiny12)patternc                 0    t        |       t        |      z   S N)str)profiledebugs     o/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/svgwrite/validator2.py	cache_keyr      s    w<#e*$$    c                     	 t         t        | |         S # t        $ rG | dk(  rt        |      }n| dv rt	        |      }nt        d| z        |t         t        | |      <   |cY S w xY w)z Validator factory tiny)fullbasicnonezUnsupported profile: '%s')validator_cacher   KeyErrorTiny12ValidatorFull11Validator
ValueError)r	   r
   	validators      r   get_validatorr      su    
y%899 f'.I11'.I87BCC5>	'512s    AA%$A%c                   f    e Zd ZdZddZd Zd Zd Zd Zd Z	ddZ
d	 Zd
 Zd Zd Zd Zd ZeZy)r   zTiny 1.2c                     || _         t        j                  | _        t        j                  | _        t        j                         | _        y r   )r
   r   
attributeselementsTypeCheckertypecheckerselfr
   s     r   __init__zTiny12Validator.__init__&   2    
 ++!--/r   c                 Z    |j                         D ]  \  }}| j                  |||        y)z
        Check if attributes are valid for object 'elementname' and all svg
        attributes have valid types and values.

        Raises ValueError.
        N)itemscheck_svg_attribute_value)r!   elementnamer   attributenamevalues        r   check_all_svg_attribute_valuesz.Tiny12Validator.check_all_svg_attribute_values,   s5     %/$4$4$6 	N M5**;uM	Nr   c                 N    | j                  ||       | j                  |||       y)z
        Check if 'attributename' is valid for object 'elementname' and 'value'
        is a valid svg type and value.

        Raises ValueError.
        N)_check_valid_svg_attribute_name_check_svg_value)r!   r'   r(   r)   s       r   r&   z)Tiny12Validator.check_svg_attribute_value6   s&     	,,[-Hk=%@r   c           	          | j                   |   }|j                  |      D ]   }| j                  j                  ||      s  y t	        |      }||j                  |      vrt        d|d|d|d      y)z
        Checks if 'value' is a valid svg-type for svg-attribute
        'attributename' at svg-element 'elementname'.

        Raises TypeError.
        N'z&' is not a valid value for attribute 'z' at svg-element <>.)r   	get_typesr   checkr   	get_const	TypeError)r!   r'   r(   r)   	attributetypenamevaluestrs          r   r-   z Tiny12Validator._check_svg_value@   s     OOM2	!++K8 	H%%h6	 u:9..{;;chjw  zE  F  G  G <r   c                 L    | j                  ||      st        d|d|d      y)z~ Check if 'attributename' is a valid svg-attribute for svg-element
        'elementname'.

        Raises ValueError.
        zInvalid attribute '' for svg-element <r0   N)is_valid_svg_attributer   )r!   r'   r(   s      r   r,   z/Tiny12Validator._check_valid_svg_attribute_nameQ   s+     **;F}^ijkk Gr   c                 t    	 | j                   |   S # t        $ r t        d|d| j                  d      w xY w)N<z&> is not valid for selected profile: ''.)r   r   profilenamer!   r'   s     r   _get_elementzTiny12Validator._get_elementZ   s?    	n==-- 	nk[_[k[klmm	ns    &7c                 `    | j                   j                  ||      r|S t        |d|d      )zZ
        Check if 'value' matches svg type 'typename'.

        Raises TypeError.
        z is not of type 'r=   )r   r2   r4   r!   r)   r6   s      r   check_svg_typezTiny12Validator.check_svg_type`   s/     !!(E2LIJJr   c                 :    | j                   j                  ||      S r   )r   r2   rB   s      r   is_valid_svg_typez!Tiny12Validator.is_valid_svg_typek   s    %%h66r   c                     || j                   v S )z4 True if 'elementname' is a valid svg-element name. )r   r?   s     r   is_valid_elementnamez$Tiny12Validator.is_valid_elementnamen   s    dmm++r   c                 @    | j                  |      }||j                  v S )za True if 'attributename' is a valid svg-attribute for svg-element
        'elementname'.
        )r@   valid_attributes)r!   r'   r(   elements       r   r:   z&Tiny12Validator.is_valid_svg_attributer   s%     ##K0 8 888r   c                 @    | j                  |      }||j                  v S )zf True if svg-element 'childrenname' is a valid children of
        svg-element 'elementname'.
        )r@   valid_children)r!   r'   childrennamerJ   s       r   is_valid_childrenz!Tiny12Validator.is_valid_childreny   s%     ##K0w5555r   c                 L    | j                  ||      st        d|d|d      y)z Checks if svg-element 'childrenname' is a valid children of
        svg-element 'elementname'.

        Raises ValueError.
        zInvalid children 'r9   r0   N)rN   r   )r!   r'   rM   s      r   check_valid_childrenz$Tiny12Validator.check_valid_children   s+     %%k<@l\ghii Ar   c                    |t        d      t        |t        t        f      r|df}nat        j
                  j                  |j                               }|r |j                         \  }}}t        |      }nt        d|z        ||f}| j                  j                  |d         r|S d| j                  j                         z  }t        |d|d      )zk Split value in (number, unit) if value has an unit or (number, None).

        Raises ValueError.
        NzInvalid type 'None'.z#'%s' is not a valid svg-coordinate.r   z	SVG %s %sz is not a valid number for: .)r4   
isinstanceintfloatr   
coordinatematchstripgroupsr   r   	is_numberget_version)r!   r)   resultnumbertmpunitversions          r   get_coordinatezTiny12Validator.get_coordinate   s     =233ec5\*T]F''--ekkm<F$*MMO!Tv !F!NOOd^F%%fQi0M!D$4$4$@$@$BBGE7STTr   NT)string)__name__
__module____qualname__r>   r"   r*   r&   r-   r,   r@   rC   rE   rG   r:   rN   rP   ra   
get_length r   r   r   r   #   sW    K0NAG"ln	K7,96jU.  Jr   r   c                       e Zd ZdZddZy)r   zFull 1.1c                     || _         t        j                  | _        t        j                  | _        t        j                         | _        y r   )r
   r   r   r   r   r   r    s     r   r"   zFull11Validator.__init__   r#   r   Nrb   )rd   re   rf   r>   r"   rh   r   r   r   r      s    K0r   r   Nrb   )
svgwrite.datar   r   r   r   r   r   objectr   r   rh   r   r   <module>rm      s:    !   !%} f } @0o 0r   