a
    xd                     @   sf   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ZeZdS )	    N)Lock)settings)FakeUserAgentError)logger)loadload_cached	str_typesupdatec                       s   e Zd Zdejdg 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edd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd  Zed!d" Zed#d$ Z  ZS )&FakeUserAgentFN)chromeedgezinternet explorerfirefoxsafarioperaTc                 C   s   t |tsJ d|| _t |ts*J d|| _|d urJt |tsJJ d|| _t |ttfsfJ d|| _t |ts~J d|| _	t |tt
tfsJ d|rdd |D }t|sJ dt
|| _i | _|   d S )	N'use_external_data must be True or Falsez$cache_path must be string or unicodez"fallback must be string or unicodezbrowsers must be list or stringz 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   K/var/www/html/Ranjet/env/lib/python3.9/site-packages/fake_useragent/fake.py
<listcomp>0       z*FakeUserAgent.__init__.<locals>.<listcomp>)r   booluse_external_datar   
cache_pathfallbackliststrbrowsers
verify_sslsettupleall
safe_attrsdata_browsersr   )selfr   r   r   r   r   r#   Zstr_types_safe_attrsr   r   r   __init__   s<    	

zFakeUserAgent.__init__c                 C   s   z\| j j@ | jr*t| j| j| jd| _nt | j| jd| _W d    n1 sP0    Y  W n* ty   | j	d u rx n
t
d Y n0 d S )Nr   zFError occurred during fetching data, but was suppressed with fallback.)r   lockr   r   r   r   r   r$   r   r   r   warningr%   r   r   r   r   =   s$    

*
zFakeUserAgent.loadc                 C   sn   | j jR |d ur*t|ts$J d|| _| jrDt | j| j| jd |   W d    n1 s`0    Y  d S )Nr   r'   )	r	   r(   r   r   r   r   r   r   r   )r%   r   r   r   r   r	   X   s    
zFakeUserAgent.updatec                 C   s
   |  |S N__getattr__)r%   r   r   r   r   __getitem__m   s    zFakeUserAgent.__getitem__c              	      s   || j v rtt| |S z^tj D ]\}}|||}q&| }|dkrZt	
| j}ntj||}t	
| j| W S  ttfy   | jd u rtd| ntd| d | j Y S Y n0 d S )Nrandomz'Error occurred during getting browser: z#, 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_name	__class__r   r   r-   p   s&    


zFakeUserAgent.__getattr__c                 C   s
   |  dS )Nr   r,   r*   r   r   r   r      s    zFakeUserAgent.chromec                 C   s   | j S r+   )r   r*   r   r   r   googlechrome   s    zFakeUserAgent.googlechromec                 C   s
   |  dS )Nr   r,   r*   r   r   r   r      s    zFakeUserAgent.edgec                 C   s
   |  dS )Nier,   r*   r   r   r   r>      s    zFakeUserAgent.iec                 C   s   | j S r+   r>   r*   r   r   r   internetexplorer   s    zFakeUserAgent.internetexplorerc                 C   s   | j S r+   r?   r*   r   r   r   msie   s    zFakeUserAgent.msiec                 C   s
   |  dS )Nr   r,   r*   r   r   r   r      s    zFakeUserAgent.firefoxc                 C   s   | j S r+   )r   r*   r   r   r   ff   s    zFakeUserAgent.ffc                 C   s
   |  dS )Nr   r,   r*   r   r   r   r      s    zFakeUserAgent.safaric                 C   s
   |  dS )Nr   r,   r*   r   r   r   r      s    zFakeUserAgent.operac                 C   s
   |  dS )Nr/   r,   r*   r   r   r   r/      s    zFakeUserAgent.random)N)__name__
__module____qualname__r   ZDBr!   r&   r   r   r(   r	   r.   r-   propertyr   r=   r   r>   r@   rA   r   rB   r   r   r/   __classcell__r   r   r;   r   r
   
   sF   
2










r
   )r/   	threadingr   Zfake_useragentr   Zfake_useragent.errorsr   Zfake_useragent.logr   Zfake_useragent.utilsr   r   r   r	   r
   r1   r   r   r   r   <module>   s    4