U a`@sddlZddlZddlZddlmZejr6ddlm Z GdddZ Gddde Z Gd d d e Z Gd d d eZGd ddeZdS)N) UserAgent)WSGIEnvironmentc@seZdZUdZejejejeefe d<dZ ejejejeefe d<dZ e dZddd d Zeejejeejeejeejefd d d ZdS)_UserAgentParser))z cros Zchromeos)z iphone|iosZiphone)ipadr)zdarwin\b|mac\b|os\s*xZmacos)winZwindows)androidr)netbsdr )openbsdr )freebsdr )Z dragonflyZ dragonflybsd)z (sun|i86)ossolaris)zx11\b|lin(\b|ux)?linux)znintendo\s+wiiZwii)irixr)zhp-?uxZhpux)aixr)z sco|unix_svZsco)bsdr)amigar)zblackberry|playbookZ blackberry)symbianrplatform_rules))Z googlebotZgoogle)ZmsnbotZmsn)yahoor)z ask jeevesask)zaol|america\s+online\s+browserZaol)z opera|oprZopera)zedge|edgZedge)z chrome|criosZchrome) seamonkeyr)z"firefox|firebird|phoenix|iceweaselZfirefox)galeonr)zsafari|versionZsafari)webkitr)caminor) konquerorr)zk-meleonZkmeleon)netscaper)z4msie|microsoft\s+internet\s+explorer|trident/.+? rv:Zmsie)lynxr)linksr)Z BaiduspiderZbaidu)ZbingbotZbing)mozillar browser_rulesz&(?:{pattern})[/\sa-z(]*(\d+[.\da-z]+)?za(?:;\s*|\s+)(\b\w{2}\b(?:-\b\w{2}\b)?)\s*;|(?:\(|\[|;)\s*(\b\w{2}\b(?:-\b\w{2}\b)?)\s*(?:\]|\)|;)Nreturncs,ddjD_fddjD_dS)NcSs"g|]\}}|t|tjfqS)recompileI.0abr"r"TC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-1tps7o9u\werkzeug\useragents.py Dsz-_UserAgentParser.__init__..cs,g|]$\}}|tjj|dtjfqS))pattern)r#r$_browser_version_reformatr%r&selfr"r*r+Es)r platformsrbrowsersr/r"r/r*__init__Cs z_UserAgentParser.__init__) user_agentr!c Cs|jD]\}}||}|dk rq*qd}d}tdtj|s`d|kr`|ddkr`|d}|jD]0\}}|||d}|dk rf|d}qqfd}}|j|}|dk r|dp|d}nd}||||fS)Nrztrident/.+? rv:)r) r1searchr#r$r%rindexr2group _language_re) r0r4platformregexmatchZlast_closing_parenbrowserversionlanguager"r"r*__call__Js0     z_UserAgentParser.__call__)__name__ __module__ __qualname__rtClassVarIterableTuplestr__annotations__rr-r#r$r;r3OptionalrBr"r"r"r*r s ""(rcs&eZdZdZddfdd ZZS)UserAgentParserzA simple user agent parser. Used by the `UserAgent`. .. deprecated:: 2.0 Will be removed in Werkzeug 2.1. Use a dedicated parser library instead. Nr cstjdtddtdS)Nzl'UserAgentParser' is deprecated and will be removed in Werkzeug 2.1. Use a dedicated parser library instead.r7 stacklevel)warningswarnDeprecationWarningsuperr3r/ __class__r"r*r3{s zUserAgentParser.__init__rCrDrE__doc__r3 __classcell__r"r"rTr*rMssrMcsNeZdZejdgejfddfdd Zejejejdfdd ZZS) _deprecated_property _UserAgentN)fgetr!cs t|d|jd|_dS)NzVThe built-in user agent parser is deprecated and will be removed in Werkzeug 2.1. The z property will be 'None'. Subclass 'werkzeug.user_agent.UserAgent' and set 'Request.user_agent_class' to use a different parser.)rSr3rCmessage)r0r[rTr"r*r3s  z_deprecated_property.__init__)argskwargsr!cs tj|jtddtj||S)NrN)rPrQr\rRrS__get__)r0r]r^rTr"r*r`sz_deprecated_property.__get__) rCrDrErFCallableAnyr3r`rXr"r"rTr*rYs" rYcseZdZeZeddfdd Zeej edddZ eej eddd Z eej edd d Z eej edd d Z ZS)rZN)stringr!cs.t|||}|\|_|_|_|_dSN)rSr3_parser _platform_browser_version _language)r0rcinforTr"r*r3s  z_UserAgent.__init__r cCs|jSrd)rfr/r"r"r*r<sz_UserAgent.platformcCs|jSrd)rgr/r"r"r*r?sz_UserAgent.browsercCs|jSrd)rhr/r"r"r*r@sz_UserAgent.versioncCs|jSrd)rir/r"r"r*rAsz_UserAgent.language)rCrDrErrerJr3rYrFrLr<r?r@rArXr"r"rTr*rZsrZcs(eZdZdZdddfdd ZZS)raRepresents a parsed user agent header value. This uses a basic parser to try to extract some information from the header. :param environ_or_string: The header value to parse, or a WSGI environ containing the header. .. deprecated:: 2.0 Will be removed in Werkzeug 2.1. Subclass :class:`werkzeug.user_agent.UserAgent` (note the new module name) to use a dedicated parser instead. .. versionchanged:: 2.0 Passing a WSGI environ is deprecated and will be removed in 2.1. zt.Union[str, WSGIEnvironment]N)environ_or_stringr!csLt|tr(tjdtdd|dd}n|}tjdtddt|dS)NzzPassing an environ to 'UserAgent' is deprecated and will be removed in Werkzeug 2.1. Pass the header value string instead.r7rNZHTTP_USER_AGENTzThe 'werkzeug.useragents' module is deprecated and will be removed in Werkzeug 2.1. The new base API is 'werkzeug.user_agent.UserAgent'.) isinstancedictrPrQrRgetrSr3)r0rkrcrTr"r*r3s zUserAgent.__init__rVr"r"rTr*rsr)r#typingrFrPr4rZ_BaseUserAgent TYPE_CHECKINGZ_typeshed.wsgirrrMpropertyrYrZr"r"r"r*s  h