
    Hoh/                         g d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	m
Z
mZmZ ddlmZmZ  G d d	e
e         Z G d
 de
e         Z G d de
e	         Zy))DeviceMatcher	OSMatcherUserAgentMatcher    N)cached_property)LiteralOptionalPattern   )DeviceMatcherOS	UserAgent)getreplacerc                       e Zd ZU dZdZeed<   eed<   ee   ed<   ee   ed<   ee   ed<   ee   ed<   	 	 	 	 	 ddedee   dee   dee   dee   dee   d
d	fdZded
ee	   fdZ
ed
ee   fd       Zd
efdZy	)r   zLazy user agent matcher, compiles the input ``regex`` on first
    use.

    Requires slightly more memory as it needs to reference both the
    pattern string and the compiled pattern.

     regexfamilymajorminorpatchpatch_minorNreturnc                 `    || _         |xs d| _        || _        || _        || _        || _        y )N$1r   r   r   r   r   r   selfr   r   r   r   r   r   s          j/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/ua_parser/lazy.py__init__zUserAgentMatcher.__init__   s3     
n


&    uac           
         | j                   j                  |      x}rt        d| j                  v r| j                  j	                  d|d         n| j                  | j
                  xs t        |d      | j                  xs t        |d      | j                  xs t        |d      | j                  xs t        |d            S y )Nr   r
               r   r   r   r   r   )
patternsearchr   r   replacer   r   r   r   r   )r   r"   ms      r   __call__zUserAgentMatcher.__call__+   s    ##B''1' t{{* KK''ad3jj-C1Ijj-C1Ijj-C1I ,,9Aq	
 
 r!   c                 @    t        j                  | j                        S Nrecompiler   r   s    r   r)   zUserAgentMatcher.pattern:       zz$**%%r!   c                     d| j                   dk7  r| j                   nd fd| j                  fd| j                  fd| j                  fd| j                  fg}dj                  d |D              }d	| j                  | d
S )Nr   r   r   r   r   r   r   c              3   8   K   | ]  \  }}|	d| d|  y wNz, = .0kvs      r   	<genexpr>z,UserAgentMatcher.__repr__.<locals>.<genexpr>F   $     J$!QAMA3au~J   
zUserAgentMatcher()r   r   r   r   r   joinr   r   fieldsargss      r   __repr__zUserAgentMatcher.__repr__>   s    dkkT&9t{{tDdjj!djj!djj!D,,-
 wwJ&JJ"4::.a88r!   NNNNN)__name__
__module____qualname____doc__r   str__annotations__r   r    r   r-   r   r	   r)   rG   r9   r!   r   r   r      s     E3OKC=C=C=#
 !%###%)'' ' }	'
 }' }' c]' 
' 3 8I#6  & & &
9# 
9r!   r   c                       e Zd ZU dZdZeed<   eed<   eed<   eed<   eed<   eed<   	 	 	 	 	 ddedee   dee   dee   dee   dee   d
d	fdZded
ee	   fdZ
ed
ee   fd       Zd
efdZy	)r   zLazy OS matcher, compiles the input ``regex`` on first
    use.

    Requires slightly more memory as it needs to reference both the
    pattern string and the compiled pattern.

    r   r   r   r   r   r   r   Nr   c                     || _         |xs d| _        |xs d| _        |xs d| _        |xs d| _        |xs d| _        y )Nr   $2$3$4$5r   r   s          r   r    zOSMatcher.__init__[   sD     
n]d
]d
]d
&.$r!   r"   c           
      J   | j                   j                  |      x}rt        | j                  |      }|t	        d|       t        |t        | j                  |      t        | j                  |      t        | j                  |      t        | j                  |            S y )NzUnable to find OS family in r(   )
r)   r*   r   r   
ValueErrorr   r   r   r   r   r   r"   r,   r   s       r   r-   zOSMatcher.__call__k   s    ##B''1'dkk1-F~ #?t!DEEtzz1-tzz1-tzz1-$T%5%5q9  r!   c                 @    t        j                  | j                        S r/   r0   r3   s    r   r)   zOSMatcher.patterny   r4   r!   c                    d| j                   dk7  r| j                   nd fd| j                  dk7  r| j                  nd fd| j                  dk7  r| j                  nd fd| j                  dk7  r| j                  nd fd	| j                  d
k7  r| j                  nd fg}dj                  d |D              }d| j                  | dS )Nr   r   r   rQ   r   rR   r   rS   r   rT   r   c              3   8   K   | ]  \  }}|	d| d|  y wr7   r9   r:   s      r   r>   z%OSMatcher.__repr__.<locals>.<genexpr>   r?   r@   z
OSMatcher(rA   rB   rD   s      r   rG   zOSMatcher.__repr__}   s    dkkT&9t{{tDDJJ$$6djjDADJJ$$6djjDADJJ$$6djjDA0@0@D0HD,,dS
 wwJ&JJDJJ>$q11r!   rH   )rI   rJ   rK   rL   r   rM   rN   r   r    r   r-   r   r	   r)   rG   r9   r!   r   r   r   K   s     E3OKJJJ
 !%###%)// / }	/
 }/ }/ c]/ 
/ 3 8B<  & & &
2# 
2r!   r   c                       e Zd ZU dZdZeed<   dZee	d      ed<   eed<   eed<   eed	<   	 	 	 	 ddedee	d      dee   dee   d	ee   d
dfdZ
ded
ee   fdZed
efd       Zed
ee   fd       Zd
efdZy)r   zLazy device matcher, compiles the input ``regex`` on first
    use.

    Requires slightly more memory as it needs to reference both the
    pattern string and the compiled pattern.

    r   r   Ni
regex_flagr   brandmodelr   c                 b    || _         || _        |xs d| _        |xs d| _        |xs d| _        y )Nr   r   )r   r]   r   r^   r_   )r   r   r]   r   r^   r_   s         r   r    zDeviceMatcher.__init__   s3     
$n[b
]d
r!   r"   c                     | j                   j                  |      x}r\t        | j                  |      }|t	        d|       t        |t        | j                  |      t        | j                  |            S y )Nz Unable to find device family in )r   r^   r_   )r)   r*   r   r   rV   r   r^   r_   rW   s       r   r-   zDeviceMatcher.__call__   su    ##B''1'dkk1-F~ #CB4!HIItzz1-tzz1- 
 r!   c                 D    | j                   dk(  rt        j                  S dS )Nr\   r   )r]   r1   
IGNORECASEr3   s    r   flagszDeviceMatcher.flags   s     $3 6r}}=A=r!   c                 X    t        j                  | j                  | j                        S )N)rd   )r1   r2   r   rd   r3   s    r   r)   zDeviceMatcher.pattern   s    zz$**DJJ77r!   c                    d| j                   dk7  r| j                   nd fd| j                  xs d fd| j                  dk7  r| j                  nd fg}| j                  rdnd}|dj	                  d |D              z   }d| j
                  | d	S )
Nr   r   r^   r_   z, "i"r   c              3   8   K   | ]  \  }}|	d| d|  y wr7   r9   r:   s      r   r>   z)DeviceMatcher.__repr__.<locals>.<genexpr>   s$     R$!QAMA3au~Rr@   zDeviceMatcher(rA   )r   r^   r_   r]   rC   r   )r   rE   iflagrF   s       r   rG   zDeviceMatcher.__repr__   s    dkkT&9t{{tDdjj(D)DJJ$$6djjDA

  ??rwwR&RRR

~dV155r!   )NNNN)rI   rJ   rK   rL   r   rM   rN   r]   r   r   r    r   r-   propertyintrd   r   r	   r)   rG   r9   r!   r   r   r      s     E3O)-J&-KJJ
 .2 $#### WS\*# 	#
 }# }# 
#
3 
8F#3 
 >s > > 8 8 8	6# 	6r!   r   )__all__r1   	functoolsr   typingr   r   r	   corer   r   r   r   utilsr   r   r   r   r   r9   r!   r   <module>rp      sR   
< 	 % - - 0 0  =9wy) =9@<2 <2~:6GFO :6r!   