
    Hoh                         g d Z ddl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)LiteralOptionalPattern   )DeviceMatcherOS	UserAgent)getreplacerc                       e Zd ZU dZe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fd       Zd
efdZy)r   zSEager user agent matcher, compiles the input ``regex`` at
    initialisation.

    patternfamilymajorminorpatchpatch_minorNregexreturnc                     t        j                  |      | _        |xs d| _        || _        || _        || _        || _        y )N$1recompiler   r   r   r   r   r   selfr   r   r   r   r   r   s          n/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/ua_parser/matchers.py__init__zUserAgentMatcher.__init__   s<     zz%(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   )
r   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                 .    | j                   j                   S Nr   r   s    r    r   zUserAgentMatcher.regex6       ||###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    c              3   8   K   | ]  \  }}|	d| d|  y wNz, = .0kvs      r    	<genexpr>z,UserAgentMatcher.__repr__.<locals>.<genexpr>B   $     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-   propertyr   rF   r8   r"   r    r   r   
   s    
 S\KC=C=C=#
 !%###%)'' ' }	'
 }' }' c]' 
' 3 8I#6  $s $ $
9# 
9r"   r   c                       e Zd ZU dZe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fd       Zd
efdZy)r   zKEager OS matcher, compiles the input ``regex`` at
    initialisation.

    r   r   r   r   r   r   Nr   r   c                     t        j                  |      | _        |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__T   sM     zz%(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__d   s    ##B''1'dkk1-F~ #?t!DEEtzz1-tzz1-tzz1-$T%5%5q9  r"   c                 .    | j                   j                   S r/   r0   r1   s    r    r   zOSMatcher.regexr   r2   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   r4   c              3   8   K   | ]  \  }}|	d| d|  y wr6   r8   r9   s      r    r=   z%OSMatcher.__repr__.<locals>.<genexpr>~   r>   r?   z
OSMatcher(r@   rA   rC   s      r    rF   zOSMatcher.__repr__v   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"   rG   )rH   rI   rJ   rK   r   rL   rM   r   r!   r   r-   rN   r   rF   r8   r"   r    r   r   G   s    
 S\KJJJ
 !%###%)// / }	/
 }/ }/ c]/ 
/ 3 8B<  $s $ $
2# 
2r"   r   c                       e Zd ZU dZee   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fd       Zed
efd       Zd
efdZy)r   zOEager device matcher, compiles the input ``regex`` at
    initialisation.

    r   r   brandmodelNr   
regex_flagir   c                     t        j                  ||dk(  rt         j                  nd      | _        |xs d| _        |xs d| _        |xs d| _        y )Nr_   r   )flagsr   r4   )r   r   
IGNORECASEr   r   r\   r]   )r   r   r^   r   r\   r]   s         r    r!   zDeviceMatcher.__init__   sI     zz**;
 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                 .    | j                   j                   S r/   r0   r1   s    r    r   zDeviceMatcher.regex   r2   r"   c                 D    | j                   t        j                  z  rdS dS )Nr_   r4   )ra   r   rb   r1   s    r    r^   zDeviceMatcher.regex_flag   s    jj2==0s8b8r"   c                 .    | j                   j                  S r/   )r   ra   r1   s    r    ra   zDeviceMatcher.flags   s    ||!!!r"   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                  t        j
                  z  rdnd}|dj                  d |D              z   }d| j                  | d	S )
Nr   r   r\   r]   z, "i"r4   c              3   8   K   | ]  \  }}|	d| d|  y wr6   r8   r9   s      r    r=   z)DeviceMatcher.__repr__.<locals>.<genexpr>   s$     R$!QAMA3au~Rr?   zDeviceMatcher(r@   )r   r\   r]   ra   r   rb   rB   r   )r   rD   iflagrE   s       r    rF   zDeviceMatcher.__repr__   s    dkkT&9t{{tDdjj(D)DJJ$$6djjDA

  ::52rwwR&RRR

~dV155r"   )NNNN)rH   rI   rJ   rK   r   rL   rM   r   r   r!   r
   r-   rN   r   r^   intra   rF   r8   r"   r    r   r      s    
 S\KJJ
 .2 $#### WS\*# 	#
 }# }# 
#
3 
8F#3 
 $s $ $ 9C 9 9 "s " "	6# 	6r"   r   )__all__r   typingr   r   r   corer
   r   r   r   utilsr   r   r   r   r   r8   r"   r    <module>ro      sO   
< 	 - - 0 0  :9wy) :9z92 92x;6GFO ;6r"   