
    _f                          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 ZddZ edg d          ZddZ edg d          ZddZ edg d          Zd Z G d de          Z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                 v    t          | t                    r#|                                 rt          |           S | S N)
isinstancer   isdigitint)	attributes    E/var/www/html/env/lib/python3.11/site-packages/user_agents/parsers.pyverify_attributer*   X   s9    )\** y/@/@/B/B 9~~    Nc           	          t          |           } t          |          }t          |          }t          |          }t          t          d | |||f                    S )Nc                 
    | d uS r$    )xs    r)   <lambda>zparse_version.<locals>.<lambda>g   s
    $ r+   )r*   tuplefilter)majorminorpatchpatch_minors       r)   parse_versionr7   _   sb    U##EU##EU##E";//K&&uk(JKK  r+   Browser)familyversionversion_stringc                     t          |||          }d                    d |D                       }t          | ||          S )N.c                 ,    g | ]}t          |          S r.   str.0vs     r)   
<listcomp>z!parse_browser.<locals>.<listcomp>q       777!s1vv777r+   )r7   joinr8   r9   r3   r4   r5   r6   r:   r;   s          r)   parse_browserrH   n   sE    E5%00GXX77w77788N67N333r+   OperatingSystemc                     t          |||          }d                    d |D                       }t          | ||          S )Nr=   c                 ,    g | ]}t          |          S r.   r?   rA   s     r)   rD   z*parse_operating_system.<locals>.<listcomp>z   rE   r+   )r7   rF   rI   rG   s          r)   parse_operating_systemrL   x   sE    E5%00GXX77w77788N67N;;;r+   Devicer9   brandmodelc                 $    t          | ||          S r$   )rM   rN   s      r)   parse_devicerR      s    &%'''r+   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ed	             Zed
             Zed             Zed             Zed             Zed             ZdS )	UserAgentc                     t          j        |          }|| _        t          di |d         | _        t          di |d         | _        t          di |d         | _        d S )Nos
user_agentdevicer.   )	r   Parse	ua_stringrL   rV   rH   browserrR   rX   )selfuser_agent_stringua_dicts      r)   __init__zUserAgent.__init__   sk    #)*;<<*(9974=99$==w|'<=="77WX%677r+   c                     d                     |                                 |                                 |                                           S )Nz{device} / {os} / {browser})rX   rV   r[   )format
get_deviceget_osget_browserr\   s    r)   __str__zUserAgent.__str__   sF    ,33??$${{}}$$&& 4 
 
 	
r+   c                 :    t          t          |                     S r$   )unicoder@   re   s    r)   __unicode__zUserAgent.__unicode__   s    s4yy!!!r+   c                 <    d| j         vr| j        j        dk    rdS dS )NzMobile SafarizFirefox MobileTF)rZ   r[   r9   re   s    r)   _is_android_tabletzUserAgent._is_android_tablet   s,     4>11#'7774ur+   c                 F    d| j         j        v rdS d| j         j        v rdS dS )NzBlackberry 99TzBlackberry 95FrX   r9   re   s    r)   #_is_blackberry_touch_capable_devicez-UserAgent._is_blackberry_touch_capable_device   s3     dk0004dk0004ur+   c                 ,    | j         rdp| j        j        S )NPC)is_pcrX   r9   re   s    r)   rb   zUserAgent.get_device   s    z"d8dk&88r+   c                 \    | j         j        d| j         j                                        S N )rV   r9   r;   stripre   s    r)   rc   zUserAgent.get_os   s)    7>>>47+A+ABIIKKKr+   c                 \    | j         j        d| j         j                                        S rs   )r[   r9   r;   ru   re   s    r)   rd   zUserAgent.get_browser   s,    <...0K0KLSSUUUr+   c                    | 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    rd| j        j        vrdS dS )NTr   WindowsRTr   MobileF)rX   r9   TABLET_DEVICE_FAMILIESrV   rk   r;   
startswithr[   re   s    r)   	is_tabletzUserAgent.is_tablet   s    ;!7774GNi''D,C,C,E,E'47>Y&&47+A+L+LT+R+R&47>\))hdl>Q.Q.Q4ur+   c                    | 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 rdS d| j        v s	d| j        v rdS d| j        v rdS d	| j        v rdS | j         j        d
k    rd| j        j        v rdS d| j        v rd| j        v rdS dS )NTr   r   zBlackBerry OSr   J2MEMIDPziPhone;zGooglebot-MobileSpiderrz   NokiaBrowserF)	rX   r9   MOBILE_DEVICE_FAMILIESr[   MOBILE_BROWSER_FAMILIESrV   r}   MOBILE_OS_FAMILIESrZ   re   s    r)   	is_mobilezUserAgent.is_mobile   s!    ;!7774<"9994 W^y((DGNl,J,JN -K47>_,,1CG\1\1\47>///4T^##v'?'?4&&4//4;))h$,:M.M.M4T^++DN0J0J4ur+   c                 X   | j         j        t          v rdS | j        j        t          v rdS | j         j        dk    rK| j         j                            d          rdS | j         j                            d          rd| j        v rdS d| j         j        v r|                                 rdS dS )NTrx   )ry   CE8Touch
BlackBerryF)	rV   r9   TOUCH_CAPABLE_OS_FAMILIESrX   TOUCH_CAPABLE_DEVICE_FAMILIESr;   r|   rZ   rn   re   s    r)   is_touch_capablezUserAgent.is_touch_capable   s     7>6664;!>>>47>Y&&w%00>> tw%0055 'T^:S:St47>))d.V.V.X.X)4ur+   c                    d| j         v s3| 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 rdS d
| j         v rd| j         v rdS dS )Nz
Windows NTrx   METzMac OS XSilkr   Fz	Chrome OSLinuxX11)rZ   rV   r9   PC_OS_FAMILIESr;   re   s    r)   rq   zUserAgent.is_pc   s     4>))TW^~-M-M7>Y&&47+AT+I+I47>Z''F$.,H,H4dn$$5$'.((4dn$$$.)@)@4ur+   c                 *    | j         j        dk    rdndS )Nr   TFrm   re   s    r)   is_botzUserAgent.is_bot   s    {)X55tt5@r+   c                 0    | j         j        t          v rdS dS )NTF)r[   r9   EMAIL_PROGRAM_FAMILIESre   s    r)   is_email_clientzUserAgent.is_email_client  s    <"8884ur+   N)__name__
__module____qualname__r_   rf   ri   rk   rn   rb   rc   rd   propertyr}   r   r   rq   r   r   r.   r+   r)   rT   rT      s7       8 8 8
 
 
" " "    9 9 9L L LV V V 	 	 X	   X>   X   X" A A XA   X  r+   rT   c                      t          |           S r$   )rT   )r]   s    r)   parser     s    &'''r+   )NNNN)collectionsr   	ua_parserr   compatr   r   r   r   r   r{   r   r   setr   r*   r7   r8   rH   rI   rL   rM   rR   objectrT   r   r.   r+   r)   <module>r      s   " " " " " " ' ' ' ' ' '               
  !      &  	 	 	 	 *Y G G G
H
H4 4 4 4 *.0W0W0WXX< < < < 
H:::	;	;( ( (C C C C C C C CL( ( ( ( (r+   