
    'jy                    Z   U d dl mZ g dZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZ ddlmZmZ ddlmZ er eeej        e         ej        f         Zded	<   	 d d
lmZmZ n$# e $ r 	 d dlmZmZ n# e $ r dxZZY nw xY wY nw xY wd)dZ!d)dZ" G d de          Z# G d de#d          Z$ G d de#d          Z% G d de#d          Z&ee	e$         e	e%         e	e&         f         Z'ee'gef         Z(d*dZ)d*dZ* G d de          Z+e)fd+d$Z,d%ed&<   edZ-dS e)fd,d(Z-dS )-    )annotations)

DeviceDictMatchersDataOSDictUserAgentDictload_builtins	load_data	load_json	load_lazyload_lazy_builtins	load_yamlN)TYPE_CHECKINGCallableListLiteralOptionalProtocolTupleType	TypedDictUnioncast   )lazymatchers)MatcherszOptional[Type[object]]
SafeLoader)CSafeLoaderload)r   r   returnr   c                 8    ddl m}  t          t          |           S )zLoads the pre-compiled matcher data into eager matchers.

    The matchers data is imported lazily, and cached after imports,
    further imports simply reference the existing datas.

    r   MATCHERS)ua_parser_builtins.matchersr#   r   r   r"   s    U/home/ice/.hermes/hermes-agent/venv/lib/python3.11/site-packages/ua_parser/loaders.pyr   r   0   s(     544444 (###    c                 8    ddl m}  t          t          |           S )zLoads the pre-compiled matcher data into lazy matchers.

    The matchers data is imported lazily, and cached after imports,
    further imports simply reference the existing datas.

    r   r"   )ua_parser_builtins.lazyr#   r   r   r"   s    r%   r   r   >   s&     100000(###r&   c                      e Zd ZU ded<   dS )
_RegexDictstrregexN__name__
__module____qualname____annotations__ r&   r%   r*   r*   L   s         JJJJJr&   r*   c                  B    e Zd ZU ded<   ded<   ded<   ded<   ded<   dS )r   r+   family_replacementv1_replacementv2_replacementv3_replacementv4_replacementNr-   r2   r&   r%   r   r   P   sN         r&   r   F)totalc                  B    e Zd ZU ded<   ded<   ded<   ded<   ded<   dS )r   r+   os_replacementos_v1_replacementos_v2_replacementos_v3_replacementos_v4_replacementNr-   r2   r&   r%   r   r   X   sN         r&   r   c                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )r   zLiteral['i']
regex_flagr+   device_replacementbrand_replacementmodel_replacementNr-   r2   r&   r%   r   r   `   sB         r&   r   dr   c                l    d | d         D             d | d         D             d | d         D             fS )z-Loads the input data set into eager matchers.c                
   g | ]}t          j        |d          |                    d          |                    d          |                    d          |                    d          |                    d                    S r,   r4   r5   r6   r7   r8   )r   UserAgentMatcherget.0ps     r%   
<listcomp>zload_data.<locals>.<listcomp>n   s     
	
 
	
 
	
  %'
*++&''&''&''&'' 
	
 
	
 
	
r&   r   c                
   g | ]}t          j        |d          |                    d          |                    d          |                    d          |                    d          |                    d                    S r,   r;   r<   r=   r>   r?   )r   	OSMatcherrJ   rK   s     r%   rN   zload_data.<locals>.<listcomp>y   s     
	
 
	
 
	
  '
&'')**)**)**)** 
	
 
	
 
	
r&   r   c                    g | ]l}t          j        |d          |                    d          |                    d          |                    d          |                    d                    mS r,   rA   rB   rC   rD   )r   DeviceMatcherrJ   rK   s     r%   rN   zload_data.<locals>.<listcomp>   s}     		
 		
 		
  "'
l##*++)**)** 		
 		
 		
r&      r2   rE   s    r%   r	   r	   k   r    
	
 
	
 qT
	
 
	
 
	

	
 
	
 qT
	
 
	
 
	
		
 		
 qT		
 		
 		
/! !r&   c                l    d | d         D             d | d         D             d | d         D             fS )z,Loads the input data set into lazy matchers.c                
   g | ]}t          j        |d          |                    d          |                    d          |                    d          |                    d          |                    d                    S rH   )r   rI   rJ   rK   s     r%   rN   zload_lazy.<locals>.<listcomp>   s     
	
 
	
 
	
  !'
*++&''&''&''&'' 
	
 
	
 
	
r&   r   c                
   g | ]}t          j        |d          |                    d          |                    d          |                    d          |                    d          |                    d                    S rP   )r   rQ   rJ   rK   s     r%   rN   zload_lazy.<locals>.<listcomp>   s     
	
 
	
 
	
  N'
&'')**)**)**)** 
	
 
	
 
	
r&   r   c                    g | ]l}t          j        |d          |                    d          |                    d          |                    d          |                    d                    mS rS   )r   rT   rJ   rK   s     r%   rN   zload_lazy.<locals>.<listcomp>   s}     		
 		
 		
  '
l##*++)**)** 		
 		
 		
r&   rU   r2   rV   s    r%   r   r      rW   r&   c                      e Zd Zefd	dZdS )

FileLoaderpath
PathOrFileloader
DataLoaderr    r   c                    d S )Nr2   )selfr^   r`   s      r%   __call__zFileLoader.__call__   s    3r&   Nr^   r_   r`   ra   r    r   )r.   r/   r0   r	   rd   r2   r&   r%   r]   r]      s0        5>      r&   r]   fr_   r`   ra   c                &   t          | t          t          j        f          r=t	          | d          5 }t          j        |          }ddd           n# 1 swxY w Y   nt          j        |           } ||d         |d         |d         f          S )a  Loads JSON data following the ``regexes.yaml`` structure.

    The ``loader`` parameter customises which matcher variant is
    generated, by default :func:`load_data` is used to generate eager
    matchers, :func:`load_lazy` can be used to generate lazy matchers
    instead.

    rbNuser_agent_parsers
os_parsersdevice_parsers)
isinstancer+   osPathLikeopenjsonr   )rf   r`   fpregexess       r%   r
   r
      s     !c2;'(( !T]] 	$bimmG	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ )A,,6()L!$%	
  s   AAAzOptional[FileLoader]r   r^   c                6   t          | t          t          j        f          r?t	          | d          5 }t          |t                    }ddd           n# 1 swxY w Y   nt          | t                    }t          |d         |d         |d         f          S )a-  Loads YAML data following the ``regexes.yaml`` structure.

        The ``loader`` parameter customises which matcher variant is
        generated, by default :func:`load_data` is used to generate eager
        matchers, :func:`load_lazy` cab be used to generate lazy matchers
        instead.
        rh   )LoaderNri   rj   rk   )rl   r+   rm   rn   ro   r   r   r	   )r^   r`   rq   rr   s       r%   r   r      s     dS"+.// 	4dD!! 6Rr*5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4
333G,-%()
 
 	
s   AAA)r    r   )rE   r   r    r   )rf   r_   r`   ra   r    r   re   ).
__future__r   __all__iorp   rm   typingr   r   r   r   r   r   r   r   r   r   r    r   r   corer   r+   rn   IOBaser_   r1   yamlr   r   r   ImportErrorr   r   r*   r   r   r   r   ra   r	   r   r]   r
   r   r2   r&   r%   <module>r~      sx   " " " " " " "   
			  				                                        'sBK,bi78J&&&&!444444444 ! ! !!))))))))) ! ! !  zzz!!$ $ $ $	$ 	$ 	$ 	$           Je        Zu        5     T-($v,Z8HHI|nh./
# # # #L# # # #L        3<     0     <III :C 
 
 
 
 
 
 
s6   #A, ,B2A;:B;	BBBBB