o
    b                     @   sx   d dl mZmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZ G dd	 d	eZeZdS )
    )absolute_importunicode_literalsN)Lock)settings)FakeUserAgentError)logger)loadload_cached	str_typesupdatec                       s`   e Zd Zddejdde fddZdd Ze e_	dddZ
e e
_	d	d
 Z fddZ  ZS )FakeUserAgentTNc                 C   s   t |ts	J d|| _t |tsJ d|| _t |ts!J d|| _|d ur1t |ts1J d|| _t |ts=J d|| _t |tt	t
fsLJ d|r]dd |D }t|s]J dt	|| _i | _g | _i | _|   d S )	Ncache must be True or Falsez&use_cache_server must be True or Falsezpath must be string or unicodez"fallback must be string or unicodez verify_ssl must be True or Falsez7safe_attrs must be list\tuple\set of strings or unicodec                 S   s   g | ]}t |tqS  )
isinstancer
   ).0attrr   r   >/usr/local/lib/python3.10/dist-packages/fake_useragent/fake.py
<listcomp>5   s    
z*FakeUserAgent.__init__.<locals>.<listcomp>)r   boolcacheuse_cache_serverr
   pathfallback
verify_ssllistsettupleall
safe_attrsdatadata_randomizedata_browsersr   )selfr   r   r   r   r   r   Zstr_types_safe_attrsr   r   r   __init__   sH   	

zFakeUserAgent.__init__c                 C   s   zA| j j2 | jrt| j| j| jd| _n	t | j| jd| _t| jd 	 | _
| jd | _W d    W d S 1 s:w   Y  W d S  tyV   | jd u rN td Y d S w )Nr   r   Z	randomizeZbrowserszFError occurred during fetching data, but was suppressed with fallback.)r   lockr   r	   r   r   r   r   r   valuesr    r!   r   r   r   warning)r"   r   r   r   r   G   s,   

&

zFakeUserAgent.loadc                 C   sp   | j j* |d urt|tsJ d|| _| jr"t | j| j| jd |   W d    d S 1 s1w   Y  d S )Nr   r$   )	r   r%   r   r   r   r   r   r   r   )r"   r   r   r   r   r   d   s   

"zFakeUserAgent.updatec                 C   s
   |  |S N)__getattr__)r"   r   r   r   r   __getitem__v   s   
zFakeUserAgent.__getitem__c              	      s   || j v rtt| |S z/tj D ]
\}}|||}q| }|dkr-t	
| j}ntj||}t	
| j| W S  ttfyX   | jd u rNtdtd | j Y S w )Nrandomz%Error occurred during getting browserzHError occurred during getting browser, but was suppressed with fallback.)r   super	UserAgentr)   r   ZREPLACEMENTSitemsreplacelowerr+   choicer    Z	SHORTCUTSgetr!   KeyError
IndexErrorr   r   r   r'   )r"   r   valuereplacementZbrowser	__class__r   r   r)   y   s$   


zFakeUserAgent.__getattr__r(   )__name__
__module____qualname__r   ZDBr   r#   r   r   r%   r   r*   r)   __classcell__r   r   r7   r   r      s    
9
r   )
__future__r   r   r+   	threadingr   Zfake_useragentr   Zfake_useragent.errorsr   Zfake_useragent.logr   Zfake_useragent.utilsr   r	   r
   r   objectr   r-   r   r   r   r   <module>   s    
