
    'j                         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dS ))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dS )r   zSEager user agent matcher, compiles the input ``regex`` at
    initialisation.

    patternfamilymajorminorpatchpatch_minorNregexreturnc                     t          j        |          | _        |pd| _        || _        || _        || _        || _        d S )N$1recompiler   r   r   r   r   r   selfr   r   r   r   r   r   s          V/home/ice/.hermes/hermes-agent/venv/lib/python3.11/site-packages/ua_parser/matchers.py__init__zUserAgentMatcher.__init__   sC     z%((n


&    uac           
      l   | j                             |          x}rt          d| j        v r!| j                            d|d                   n| j        | j        pt          |d          | j        pt          |d          | j        pt          |d          | j	        pt          |d                    S d S )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{** K''ad333j-C1IIj-C1IIj-C1II ,9Aq		
 
 
 
 tr"   c                     | j         j         S Nr   r   s    r    r   zUserAgentMatcher.regex6       |##r"   c                     d| j         dk    r| j         nd fd| j        fd| j        fd| j        fd| j        fg}d                    d |D                       }d	| j        | d
S )Nr   r   r   r   r   r    c              3   0   K   | ]\  }}|d| d|V  d S Nz, = .0kvs      r    	<genexpr>z,UserAgentMatcher.__repr__.<locals>.<genexpr>B   2      JJ$!QAM~A~~~~MMMMJJr"   zUserAgentMatcher()r   r   r   r   r   joinr   r   fieldsargss      r    __repr__zUserAgentMatcher.__repr__:   s    dkT&9&9t{{tDdj!dj!dj!D,-
 wwJJ&JJJJJ84:88888r"   NNNNN)__name__
__module____qualname____doc__r   str__annotations__r   r!   r   r-   propertyr   rE   r8   r"   r    r   r   
   sf         
 S\KKKC=C=C=#
 !%###%)' '' ' }	'
 }' }' c]' 
' ' ' ' 3 8I#6     $s $ $ $ X$
9# 
9 
9 
9 
9 
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dS )r   zKEager OS matcher, compiles the input ``regex`` at
    initialisation.

    r   r   r   r   r   r   Nr   r   c                     t          j        |          | _        |pd| _        |pd| _        |pd| _        |pd| _        |pd| _        d S )Nr   $2$3$4$5r   r   s          r    r!   zOSMatcher.__init__T   sT     z%((n]d
]d
]d
&.$r"   r#   c           
      P   | j                             |          x}rt          | j        |          }|t	          d|           t          |t          | j        |          t          | j        |          t          | j        |          t          | j	        |                    S d S )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 
	dk1--F~ !D!D!DEEEtz1--tz1--tz1--$T%5q99    tr"   c                     | j         j         S r/   r0   r1   s    r    r   zOSMatcher.regexr   r2   r"   c                 0   d| j         dk    r| j         nd fd| j        dk    r| j        nd fd| j        dk    r| j        nd fd| j        dk    r| j        nd fd	| j        d
k    r| j        nd fg}d                    d |D                       }d| j        | dS )Nr   r   r   rP   r   rQ   r   rR   r   rS   r4   c              3   0   K   | ]\  }}|d| d|V  d S r6   r8   r9   s      r    r=   z%OSMatcher.__repr__.<locals>.<genexpr>~   r>   r"   z
OSMatcher(r?   r@   rB   s      r    rE   zOSMatcher.__repr__v   s    dkT&9&9t{{tDDJ$$6$6djjDADJ$$6$6djjDADJ$$6$6djjDA0@D0H0HD,,dS
 wwJJ&JJJJJ1DJ1$1111r"   rF   )rG   rH   rI   rJ   r   rK   rL   r   r!   r   r-   rM   r   rE   r8   r"   r    r   r   G   sL         
 S\KKKJJJJJJJJJ
 !%###%)/ // / }	/
 }/ }/ c]/ 
/ / / / 3 8B<     $s $ $ $ X$
2# 
2 
2 
2 
2 
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dS )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          | _        |pd| _        |pd| _        |pd| _        d S )Nr^   r   )flagsr   r4   )r   r   
IGNORECASEr   r   r[   r\   )r   r   r]   r   r[   r\   s         r    r!   zDeviceMatcher.__init__   sX     z**;*;
 
 
 n[b
]d


r"   r#   c                     | j                             |          x}rat          | j        |          }|t	          d|           t          |t          | j        |          t          | j        |                    S d S )Nz Unable to find device family in )r   r[   r\   )r   r*   r   r   rU   r
   r[   r\   rV   s       r    r-   zDeviceMatcher.__call__   s    ##B'''1 	dk1--F~ !HB!H!HIIItz1--tz1--   
 tr"   c                     | j         j         S r/   r0   r1   s    r    r   zDeviceMatcher.regex   r2   r"   c                 2    | j         t          j        z  rdndS )Nr^   r4   )r`   r   ra   r1   s    r    r]   zDeviceMatcher.regex_flag   s    j2=08ssb8r"   c                     | j         j        S r/   )r   r`   r1   s    r    r`   zDeviceMatcher.flags   s    |!!r"   c                     d| j         dk    r| j         nd fd| j        pd fd| j        dk    r| j        nd fg}| j        t          j        z  rdnd}|d                    d |D                       z   }d| j        | d	S )
Nr   r   r[   r\   z, "i"r4   c              3   0   K   | ]\  }}|d| d|V  d S r6   r8   r9   s      r    r=   z)DeviceMatcher.__repr__.<locals>.<genexpr>   s2      RR$!QAM~A~~~~MMMMRRr"   zDeviceMatcher(r?   )r   r[   r\   r`   r   ra   rA   r   )r   rC   iflagrD   s       r    rE   zDeviceMatcher.__repr__   s    dkT&9&9t{{tDdj(D)DJ$$6$6djjDA

  :5=2rwwRR&RRRRRR5
5d5555r"   )NNNN)rG   rH   rI   rJ   r   rK   rL   r   r   r!   r
   r-   rM   r   r]   intr`   rE   r8   r"   r    r   r      sz         
 S\KKKJJJJJJ
 .2 $### ## WS\*# 	#
 }# }# 
# # # #
3 
8F#3 
 
 
 
 $s $ $ $ X$ 9C 9 9 9 X9 "s " " " X"	6# 	6 	6 	6 	6 	6 	6r"   r   )__all__r   typingr   r   r   corer
   r   r   r   utilsr   r   r   r   r   r8   r"   r    <module>rn      s
  
<
<
< 				 - - - - - - - - - - 0 0 0 0 0 0 0 0 0 0 0 0                :9 :9 :9 :9 :9wy) :9 :9 :9z92 92 92 92 92 92 92 92x;6 ;6 ;6 ;6 ;6GFO ;6 ;6 ;6 ;6 ;6r"   