o
    bh                      @   s   d dl mZ d dlmZ ddlmZ dZdZdZdZ	d	Z
d
ZdZedZdd Zd!ddZedg dZd!ddZedg dZd!ddZedg dZdd ZG dd deZdd  ZdS )"    )
namedtuple)user_agent_parser   )string_types)iPhoneiPodzGeneric SmartphonezGeneric Feature PhonezPlayStation Vitaz
iOS-Device)z
Windows 95z
Windows 98Solaris)Windows PhonezWindows Phone OSz
Symbian OSBada
Windows CEWindows MobileMaemo)z	IE MobilezOpera Mobilez
Opera MinizChrome MobilezChrome Mobile WebViewzChrome Mobile iOS)	iPadBlackBerry PlaybookBlackberry PlaybookKindleKindle FirezKindle Fire HDz
Galaxy TabXoomzDell Streak)iOSAndroidr	   r   r   
Firefox OSMeeGo)r   r   r   )OutlookWindows Live MailAirMailz
Apple Mailr   Thunderbird	LightningThunderBrowser   zThe Bat!zLotus Notesz	IBM NotesBarcaMailBarkmail2YahooMobileMailc                 C   s   t | tr|  rt| S | S N)
isinstancer   isdigitint)	attribute r'   _/var/www/html/Testing_prj/Navya-Bakers/venv/lib/python3.10/site-packages/user_agents/parsers.pyverify_attributeX   s   r)   Nc                 C   s:   t | } t |}t |}t |}ttdd | |||fS )Nc                 S   s   | d uS r"   r'   )xr'   r'   r(   <lambda>g   s    zparse_version.<locals>.<lambda>)r)   tuplefilter)majorminorpatchpatch_minorr'   r'   r(   parse_version_   s   r2   Browser)familyversionversion_stringc                 C   ,   t |||}ddd |D }t| ||S )N.c                 S      g | ]}t |qS r'   str.0vr'   r'   r(   
<listcomp>q       z!parse_browser.<locals>.<listcomp>)r2   joinr3   r4   r.   r/   r0   r1   r5   r6   r'   r'   r(   parse_browsern   s   rC   OperatingSystemc                 C   r7   )Nr8   c                 S   r9   r'   r:   r<   r'   r'   r(   r?   z   r@   z*parse_operating_system.<locals>.<listcomp>)r2   rA   rD   rB   r'   r'   r(   parse_operating_systemx   s   rE   Devicer4   brandmodelc                 C   s   t | ||S r"   )rF   rG   r'   r'   r(   parse_device      rJ   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	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dS )	UserAgentc                 C   sP   t |}|| _tdi |d | _tdi |d | _tdi |d | _d S )Nos
user_agentdevicer'   )	r   Parse	ua_stringrE   rM   rC   browserrJ   rO   )selfuser_agent_stringua_dictr'   r'   r(   __init__   s
   
zUserAgent.__init__c                 C   s   dj |  |  |  dS )Nz{device} / {os} / {browser})rO   rM   rR   )format
get_deviceget_osget_browserrS   r'   r'   r(   __str__   s
   zUserAgent.__str__c                 C   s   t t| S r"   )unicoder;   r[   r'   r'   r(   __unicode__   rK   zUserAgent.__unicode__c                 C   s   d| j vr| jjdkrdS dS )NzMobile SafarizFirefox MobileTF)rQ   rR   r4   r[   r'   r'   r(   _is_android_tablet   s   
zUserAgent._is_android_tabletc                 C   s$   d| j jv rdS d| j jv rdS dS )NzBlackberry 99TzBlackberry 95FrO   r4   r[   r'   r'   r(   #_is_blackberry_touch_capable_device   s
   z-UserAgent._is_blackberry_touch_capable_devicec                 C   s   | j rdp| jjS )NPC)is_pcrO   r4   r[   r'   r'   r(   rX      s   zUserAgent.get_devicec                 C      d| j j| j jf  S Nz%s %s)rM   r4   r6   stripr[   r'   r'   r(   rY         zUserAgent.get_osc                 C   rd   re   )rR   r4   r6   rf   r[   r'   r'   r(   rZ      rg   zUserAgent.get_browserc                 C   sf   | j jtv rdS | jjdkr|  rdS | jjdkr#| jjdr#dS | jjdkr1d| jjvr1dS dS )NTr   WindowsRTr   MobileF)rO   r4   TABLET_DEVICE_FAMILIESrM   r_   r6   
startswithrR   r[   r'   r'   r(   	is_tablet   s   zUserAgent.is_tabletc                 C   s   | j jtv rdS | jjtv rdS | jjdks| jjdkr!| js!dS | jjdkr/| j jdkr/dS | jjtv r7dS d| jv sAd| jv rCdS d| jv rJdS d	| jv rQdS | j jd
kr_d| jjv r_dS d| jv rkd| jv rkdS dS )NTr   r   zBlackBerry OSr   J2MEMIDPziPhone;zGooglebot-MobileSpiderrj   NokiaBrowserF)	rO   r4   MOBILE_DEVICE_FAMILIESrR   MOBILE_BROWSER_FAMILIESrM   rm   MOBILE_OS_FAMILIESrQ   r[   r'   r'   r(   	is_mobile   s.   

zUserAgent.is_mobilec                 C   sv   | j jtv rdS | jjtv rdS | j jdkr-| j jdrdS | j jdr-d| jv r-dS d| j jv r9|  r9dS dS )NTrh   )ri   CE8Touch
BlackBerryF)	rM   r4   TOUCH_CAPABLE_OS_FAMILIESrO   TOUCH_CAPABLE_DEVICE_FAMILIESr6   rl   rQ   ra   r[   r'   r'   r(   is_touch_capable   s   zUserAgent.is_touch_capablec                 C   s   d| j v s| jjtv s| jjdkr| jjdkrdS | jjdkr&d| j vr&dS d| j v r-dS d	| jjv r5dS d
| j v rAd| j v rAdS dS )Nz
Windows NTrh   METzMac OS XSilkr   Fz	Chrome OSLinuxX11)rQ   rM   r4   PC_OS_FAMILIESr6   r[   r'   r'   r(   rc      s   
zUserAgent.is_pcc                 C   s   | j jdkrdS dS )Nrp   TFr`   r[   r'   r'   r(   is_bot   s   zUserAgent.is_botc                 C   s   | j jtv rdS dS )NTF)rR   r4   EMAIL_PROGRAM_FAMILIESr[   r'   r'   r(   is_email_client  s   zUserAgent.is_email_clientN)__name__
__module____qualname__rV   r\   r^   r_   ra   rX   rY   rZ   propertyrm   ru   r|   rc   r   r   r'   r'   r'   r(   rL      s*    	




rL   c                 C   s   t | S r"   )rL   )rT   r'   r'   r(   parse  s   r   )NNNN)collectionsr   	ua_parserr   compatr   rr   r   rt   rs   rk   rz   r{   setr   r)   r2   r3   rC   rD   rE   rF   rJ   objectrL   r   r'   r'   r'   r(   <module>   s,    	
	



 