
    'j/                         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dS ))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d	S )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                 ^    || _         |pd| _        || _        || _        || _        || _        d S )N$1r   r   r   r   r   r   selfr   r   r   r   r   r   s          R/home/ice/.hermes/hermes-agent/venv/lib/python3.11/site-packages/ua_parser/lazy.py__init__zUserAgentMatcher.__init__   s9     
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   )
pattern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                 4    t          j        | j                  S Nrecompiler   r   s    r   r)   zUserAgentMatcher.pattern:       z$*%%%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   r   c              3   0   K   | ]\  }}|d| d|V  d S Nz, = .0kvs      r   	<genexpr>z,UserAgentMatcher.__repr__.<locals>.<genexpr>F   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-   r   r	   r)   rF   r9   r!   r   r   r      sg          E3OOOKKKC=C=C=#
 !%###%)' '' ' }	'
 }' }' c]' 
' ' ' ' 3 8I#6     & & & & _&
9# 
9 
9 
9 
9 
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d	S )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                 n    || _         |pd| _        |pd| _        |pd| _        |pd| _        |pd| _        d S )Nr   $2$3$4$5r   r   s          r   r    zOSMatcher.__init__[   sJ     
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__k   s    ##B'''1 
	dk1--F~ !D!D!DEEEtz1--tz1--tz1--$T%5q99    tr!   c                 4    t          j        | j                  S r/   r0   r3   s    r   r)   zOSMatcher.patterny   r4   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   r   c              3   0   K   | ]\  }}|d| d|V  d S r7   r9   r:   s      r   r>   z%OSMatcher.__repr__.<locals>.<genexpr>   r?   r!   z
OSMatcher(r@   rA   rC   s      r   rF   zOSMatcher.__repr__}   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!   rG   )rH   rI   rJ   rK   r   rL   rM   r   r    r   r-   r   r	   r)   rF   r9   r!   r   r   r   K   sM          E3OOOKKKJJJJJJJJJ
 !%###%)/ // / }	/
 }/ }/ c]/ 
/ / / / 3 8B<     & & & & _&
2# 
2 
2 
2 
2 
2 
2r!   r   c                   8   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dS )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                 X    || _         || _        |pd| _        |pd| _        |pd| _        d S )Nr   r   )r   r\   r   r]   r^   )r   r   r\   r   r]   r^   s         r   r    zDeviceMatcher.__init__   s7     
$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                 4    | j         dk    rt          j        ndS )Nr[   r   )r\   r1   
IGNORECASEr3   s    r   flagszDeviceMatcher.flags   s     $3 6 6r}}A=r!   c                 B    t          j        | j        | j                  S )N)rc   )r1   r2   r   rc   r3   s    r   r)   zDeviceMatcher.pattern   s    z$*DJ7777r!   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        rdnd}|d                    d |D                       z   }d| j        | d	S )
Nr   r   r]   r^   z, "i"r   c              3   0   K   | ]\  }}|d| d|V  d S r7   r9   r:   s      r   r>   z)DeviceMatcher.__repr__.<locals>.<genexpr>   s2      RR$!QAM~A~~~~MMMMRRr!   zDeviceMatcher(r@   )r   r]   r^   r\   rB   r   )r   rD   iflagrE   s       r   rF   zDeviceMatcher.__repr__   s    dkT&9&9t{{tDdj(D)DJ$$6$6djjDA

  ?2rwwRR&RRRRRR5
5d5555r!   )NNNN)rH   rI   rJ   rK   r   rL   rM   r\   r   r   r    r   r-   propertyintrc   r   r	   r)   rF   r9   r!   r   r   r      sm          E3OOO)-J&---KKKJJJJJJ
 .2 $### ## WS\*# 	#
 }# }# 
# # # #
3 
8F#3 
 
 
 
 >s > > > X> 8 8 8 8 _8	6# 	6 	6 	6 	6 	6 	6r!   r   )__all__r1   	functoolsr   typingr   r   r	   corer   r   r   r   utilsr   r   r   r   r   r9   r!   r   <module>ro      s  
<
<
< 				 % % % % % % - - - - - - - - - - 0 0 0 0 0 0 0 0 0 0 0 0                =9 =9 =9 =9 =9wy) =9 =9 =9@<2 <2 <2 <2 <2 <2 <2 <2~:6 :6 :6 :6 :6GFO :6 :6 :6 :6 :6r!   