§
{<ˆjMT ã ó˜ — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZmZm Z m
Z
ddlmZm
Z
ddlZerde_ ddlZg d ¢Zd
j Zdj Zdj Z G d
„ de¦ « Zej ej z dz Zi dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%“d&d'“d(d)“d*d+“d,d-“d.d/“d0d1“i d2d3“d4d5“d6d7“d8d9“d:d;“dd?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“dNdO“dPdQ“dRdS“¥i dTdU“dVdW“dXdY“dZd[“d\d]“d^d_“d`da“dbdc“ddde“dfdg“dhdi“djdk“dldm“dndo“dpdq“drds“dtdu“¥i dvdw“dxdy“dzd{“d|d}“d~d“d€d�“d‚dƒ“d„d…“d†d‡“dˆd‰“dŠd‹“dŒd�“dŽd�“d�d‘“d’d““d”d•“d–d—“¥i d˜d™“dšd›“dœd�“dždŸ“d d¡“d¢d£“d¤d¥“d¦d§“d¨d©“dªd«“d¬d“d®d¯“d°d±“d²d³“d´dµ“d¶d·“d¸d¹“¥i dºd»“d¼d½“d¾d¿“dÀdÁ“dÂdÓdÄdÅ“dÆdÇ“dÈdÉ“dÊdË“dÌdÍ“dÎdÏ“dÐdÑ“dÒdÓ“dÔdÕ“dÖdדdØdÙ“dÚdÛ“¥i dÜdÝ“dÞdß“dàdá“dâdã“dädå“dædç“dèdé“dêdë“dìdí“dîdï“dðdñ“dòdó“dôdõ“död÷“dødù“dúdû“düdý“¥i dþdÿ“�d �d“�d�d“�d�d“�d�d“�d�d “�d
�d“�d�d
“�d�d“�d�d“�d�d“�d�d“�d�d“�d�d“�d�d“�d�d“�d�d“¥i �d �d!“�d"�d#“�d$�d%“�d&�d'“�d(�d)“�d*�d+“�d,�d-“�d.�d/“�d0�d1“�d2�d3“�d4�d5“�d6�d7“�d8�d9“�d:�d;“�d<�d=“�d>�d?“�d@�dA“¥�dB�dC�dD�dE�dF�dG�dH�dI�dJ�dK�dL�dM�dNœ¥Zef�dO„Z ej �dP¦ « Z ej �dQ¦ « Z�dR„ Z g �dS¢Z!g �dT¢Z"de!e"f�dU„Z# G �dV„ �dWe¦ « Z$�dXZ% ej �dYe%z �dZz e%z �d[z ej ¦ « Z& G �d\„ �d]e¦ « Z' G �d^„ �d_e'¦ « Z(dS (` af
http.cookies module ported to python-future from Py3.3
Here's a sample session to show how to use this module.
At the moment, this is the only documentation.
The Basics
----------
Importing is easy...
>>> from http import cookies
Most of the time you start by creating a cookie.
>>> C = cookies.SimpleCookie()
Once you've created your Cookie, you can add values just as if it were
a dictionary.
>>> C = cookies.SimpleCookie()
>>> C["fig"] = "newton"
>>> C["sugar"] = "wafer"
>>> C.output()
'Set-Cookie: fig=newton\r\nSet-Cookie: sugar=wafer'
Notice that the printable representation of a Cookie is the
appropriate format for a Set-Cookie: header. This is the
default behavior. You can change the header and printed
attributes by using the .output() function
>>> C = cookies.SimpleCookie()
>>> C["rocky"] = "road"
>>> C["rocky"]["path"] = "/cookie"
>>> print(C.output(header="Cookie:"))
Cookie: rocky=road; Path=/cookie
>>> print(C.output(attrs=[], header="Cookie:"))
Cookie: rocky=road
The load() method of a Cookie extracts cookies from a string. In a
CGI script, you would use this method to extract the cookies from the
HTTP_COOKIE environment variable.
>>> C = cookies.SimpleCookie()
>>> C.load("chips=ahoy; vienna=finger")
>>> C.output()
'Set-Cookie: chips=ahoy\r\nSet-Cookie: vienna=finger'
The load() method is darn-tootin smart about identifying cookies
within a string. Escaped quotation marks, nested semicolons, and other
such trickeries do not confuse it.
>>> C = cookies.SimpleCookie()
>>> C.load('keebler="E=everybody; L=\\"Loves\\"; fudge=\\012;";')
>>> print(C)
Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=\012;"
Each element of the Cookie also supports all of the RFC 2109
Cookie attributes. Here's an example which sets the Path
attribute.
>>> C = cookies.SimpleCookie()
>>> C["oreo"] = "doublestuff"
>>> C["oreo"]["path"] = "/"
>>> print(C)
Set-Cookie: oreo=doublestuff; Path=/
Each dictionary element has a 'value' attribute, which gives you
back the value associated with the key.
>>> C = cookies.SimpleCookie()
>>> C["twix"] = "none for you"
>>> C["twix"].value
'none for you'
The SimpleCookie expects that all values should be standard strings.
Just to be sure, SimpleCookie invokes the str() builtin to convert
the value to a string, when the values are set dictionary-style.
>>> C = cookies.SimpleCookie()
>>> C["number"] = 7
>>> C["string"] = "seven"
>>> C["number"].value
'7'
>>> C["string"].value
'seven'
>>> C.output()
'Set-Cookie: number=7\r\nSet-Cookie: string=seven'
Finis.
é )Úunicode_literals)Úprint_function)Údivision)Úabsolute_import)ÚchrÚdictÚintÚstr)ÚPY2Ú
as_native_strN)ÚCookieErrorÚ
BaseCookieÚSimpleCookieÚ z; ú c ó — e Zd ZdS )r
N)Ú__name__Ú
__module__Ú__qualname__© ó úo/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/future/backports/http/cookies.pyr
r
š s € € € € € Ø€Dr r
z!#$%&'*+-.^_`|~:ú z\000úz\001úz\002úz\003úz\004úz\005úz\006úz\007úz\010ú z\011ú
z\012úz\013úz\014ú
z\015úz\016úz\017úz\020úz\021úz\022úz\023úz\024úz\025úz\026úz\027úz\030úz\031úz\032úz\033úz\034úz\035úz\036úz\037ú,z\054ú;z\073ú"ú\"ú\z\\úz\177õ €z\200õ Â�z\201õ ‚z\202õ ƒz\203õ „z\204õ Â…z\205õ †z\206õ ‡z\207õ ˆz\210õ ‰z\211õ Šz\212õ ‹z\213õ ÂŒz\214õ Â�z\215õ ÂŽz\216õ Â�z\217õ Â�z\220õ ‘z\221õ Â’z\222õ “z\223õ ”z\224õ •z\225õ –z\226õ —z\227õ ˜z\230õ ™z\231õ šz\232õ ›z\233õ œz\234õ Â�z\235õ žz\236õ Ÿz\237õ  z\240õ ¡z\241õ ¢z\242õ £z\243õ ¤z\244õ Â¥z\245õ ¦z\246õ §z\247õ ¨z\250õ ©z\251õ ªz\252õ «z\253õ ¬z\254õ Âz\255õ ®z\256õ ¯z\257õ °z\260õ ±z\261õ ²z\262õ ³z\263õ ´z\264õ µz\265õ ¶z\266õ ·z\267õ ¸z\270õ ¹z\271õ ºz\272õ »z\273õ ¼z\274õ ½z\275õ ¾z\276õ ¿z\277õ Àz\300õ Ã�z\301õ Âz\302õ Ãz\303õ Äz\304õ Ã…z\305õ Æz\306õ Çz\307õ Èz\310õ Éz\311õ Êz\312õ Ëz\313õ ÃŒz\314õ Ã�z\315õ ÃŽz\316õ Ã�z\317õ Ã�z\320õ Ñz\321õ Ã’z\322õ Óz\323õ Ôz\324õ Õz\325õ Öz\326õ ×z\327õ Øz\330õ Ùz\331õ Úz\332õ Ûz\333õ Üz\334õ Ã�z\335õ Þz\336õ ßz\337õ à z\340õ áz\341õ âz\342õ ãz\343õ äz\344õ Ã¥z\345õ æz\346õ çz\347õ èz\350õ éz\351õ êz\352õ ëz\353õ ìz\354õ Ãz\355õ îz\356õ ïz\357õ ðz\360õ ñz\361õ òz\362õ óz\363z\364z\365z\366z\367z\370z\371z\372z\373z\374z\375z\376z\377)õ ôõ õõ öõ ÷õ øõ ùõ úõ ûõ üõ ýõ þõ ÿc ó| ‡— t ˆfd„| D ¦ « ¦ « r| S dt d„ | D ¦ « ¦ « z dz S )zãQuote a string for use in a cookie header.
If the string does not need to be double-quoted, then just return the
string. Otherwise, surround the string in doublequotes and quote
(with a \) special characters.
c 3 ó •K — | ]}|‰v V — Œ d S ©Nr ©Ú.0ÚcÚ
LegalCharss €r ú z_quote..ò s' øè è € Ð
(Ð
(˜qˆ1�
ˆ?Ð
(Ð
(Ð
(Ð
(Ð
(Ð
(r r; c 3 óL K — | ]}t ||¦ « V — Œ d S rÁ )Ú_TranslatorÚget)rà Úss r rÆ z_quote..õ s0 è è € ÐBÐB¸�{Ÿš¨q°!Ñ4Ô4ÐBÐBÐBÐBÐBÐBr )ÚallÚ _nulljoin)r
rÅ s `r Ú_quoterÍ ë sW ø€ õ Ð
(Ð
(Ð
(Ð
( CÐ
(Ñ
(Ô
(Ñ(Ô(ð I؈
à•YÐBÐB¸cÐBÑBÔBÑBÔBÑBÀSÑHÐHr z\\[0-3][0-7][0-7]z[\\].c
óf — t | ¦ « dk r| S | d dk s| d dk r| S | dd… } d}t | ¦ « }g }d|cxk r|k �rIn �nEt | |¦ « }t | |¦ « }|s |s| | |d … ¦ « nídx}}|r| d¦ « }|r| d¦ « }|rI|r||k rA| | ||… ¦ « | | |dz ¦ « |dz }n`| | ||… ¦ « | t
t | |dz |dz … d¦ « ¦ « ¦ « |dz }d|cxk r|k �°Cn t |¦ « S )Né r r; éÿÿÿÿé é é ) ÚlenÚ
_OctalPattÚsearchÚ
_QuotePattÚappendÚstartr r rÌ )ÚmystrÚiÚnÚresÚo_matchÚq_matchÚjÚks r Ú_unquoterâ û sÜ € õ ˆ5�z„z�A‚~€~؈؈Q„x�3‚€˜% œ) sÒ*Ð*؈ð
�!�B�$ŒK€Eð
€A݈E‰
Œ
€AØ
€CØ
ˆqˆ*ˆ*Š*ˆ*�1Š*‰*ˆ*ˆ*‰*Ý×#Ò# E¨1Ñ-Ô-ˆÝ×#Ò# E¨1Ñ-Ô-ˆØð ˜wð Ø�JŠJ�u˜Q˜R˜R”yÑ!Ô!Ð!Øàˆ
ˆˆAØð !Ø—
’
˜aÑ Ô ˆAØð !Ø—
’
˜aÑ Ô ˆAØð ˜Gð q¨1¢u uØ�JŠJ�u˜Q˜q˜S”zÑ"Ô"Ð"Ø�JŠJ�u˜Q˜q™S”zÑ"Ô"Ð"Ø�A‘ˆAˆAà�JŠJ�u˜Q˜q˜S”zÑ"Ô"Ð"Ø�JŠJ•s�3˜u Q q¡S¨¨1© Wœ~¨qÑ1Ô1Ñ2Ô2Ñ3Ô3Ð3Ø�A‘ˆAð' ˆqˆ*ˆ*Š*ˆ*�1Š*‰*ˆ*ˆ*õ( �S‰>Œ>Ðr )ÚMonÚTueÚWedÚThuÚFriÚSatÚSun)
NÚJanÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecc ó† — ddl m}m } |¦ « } ||| z ¦ « \ }}}} }
}}}
}d|| ||| || |
|fz S )Nr )ÚgmtimeÚtimez#%s, %02d %3s %4d %02d:%02d:%02d GMT)rø r÷ )ÚfutureÚweekdaynameÚ monthnamer÷ rø ÚnowÚyearÚmonthÚdayÚhhÚmmÚssÚwdÚyÚzs r Ú_getdater 3 su € Ø!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø
ˆ$‰&Œ&€CØ-3¨V°C¸&±LÑ-AÔ-AÑ*€Dˆ%��b˜"˜b " a¨Ø0ؘŒO˜S )¨EÔ"2°D¸"¸bÀ"ÐEñFð Fr c ó — e Zd ZdZdddddddd d
œZ eddg¦ « Zd„ Zd„ Zd
„ Z e
fd„Zdd„ZeZ e
¦ « d„ ¦ « Zdd„Zdd„ZdS )ÚMorsela‘ A class to hold ONE (key, value) pair.
In a cookie, each such pair may have several attributes, so this class is
used to keep the attributes associated with the appropriate key,value pair.
This class also includes a coded_value attribute, which is used to hold
the network representation of the value. This is most useful when Python
objects are pickled for network transit.
ÚexpiresÚPathÚCommentÚDomainzMax-AgeÚsecureÚhttponlyÚVersion)r ÚpathÚcommentÚdomainúmax-ager
r Úversionc óp — d x| _ x| _ | _ | j D ]}t j | |d¦ « Œd S )Nr )ÚkeyÚvalueÚcoded_valueÚ _reservedr Ú__setitem__)Úselfr s r Ú__init__zMorsel.__init__^ sM € à37Ð7ˆŒÐ7�4”: Ô 0ð ”>ð ,ð ,ˆCÝÔ˜T 3¨Ñ+Ô+Ð+Ð+ð ,ð ,r c ó� — | ¦ « }|| j vrt d|z ¦ « ‚t j | ||¦ « d S )NzInvalid Attribute %s)Úlowerr r
r r )r ÚKÚVs r r zMorsel.__setitem__f sK € Ø
�GŠG‰IŒIˆØ�D”NÐ"Ð"ÝÐ4°qÑ8Ñ9Ô9Ð9ÝÔ˜˜q !Ñ$Ô$Ð$Ð$Ð$r c ó8 — | ¦ « | j v S rÁ )r r )r r s r Ú
isReservedKeyzMorsel.isReservedKeyl s € Ø�wŠw‰yŒy˜DœNÐ*Ð*r c óæ ‡— | ¦ « | j v rt d|z ¦ « ‚t ˆfd„|D ¦ « ¦ « rt d|z ¦ « ‚|| _ || _ || _ d S )Nz!Attempt to set a reserved key: %sc 3 ó •K — | ]}|‰vV — Œ d S rÁ r r s €r rÆ zMorsel.set..t s( øè è € Ð0Ð0 qˆq˜
Ð"Ð0Ð0Ð0Ð0Ð0Ð0r zIllegal key value: %s)r r r
Úanyr r r )r r ÚvalÚ coded_valrÅ s `r Úsetz
Morsel.seto s… ø€ ð �9Š9‰;Œ;˜$œ.Ð(Ð(ÝÐAÀCÑGÑHÔHÐHÝÐ0Ð0Ð0Ð0¨CÐ0Ñ0Ô0Ñ0Ô0ð =ÝÐ5¸Ñ;Ñ<Ô<Ð<𠈌؈Œ
Ø$ˆÔÐÐr NúSet-Cookie:c ó6 — |›d| |¦ « ›�S )Nr )ÚOutputString)r ÚattrsÚheaders r Úoutputz
Morsel.output| s" € Ø ˜&˜& $×"3Ò"3°EÑ":Ô":Ð":Ð;Ð;r c óæ — t r/t | j t ¦ « rt | j ¦ « }n| j }d| j j ›dt | j ¦ « ›dt |¦ « ›d�S )Nú<ú: ú=ú>) r Ú
isinstancer Úunicoder
Ú __class__r r Úrepr©r r& s r Ú__repr__zMorsel.__repr__� sg € åð •:˜dœj'Ñ2Ô2ð Ý�d”j‘/”/ˆCˆCà”*ˆCøØ $¤Ô 7Ð 7Ð 7Ý # D¤H¡
¤
t°C©y¬y¨y¨yð:ð :r c óZ — d| |¦ « dd¦ « z S )Nz—
r; r<