PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  aNc@sdZddlZddlZddlmZdaddgZdZdZ ej Z dZ d e fd YZdefd YZdefd YZd efdYZdefdYZedkrddlZejndS(s3 This module implements a class for handling URLs. iN(trequesttURLtImagecCs&|dkrdStjt|dS(Nti(tNonetcgitescapetstr(tv((s-/usr/lib/python2.7/site-packages/paste/url.pyt html_quotes cCs#|dkrdStjt|S(NR(RturllibtquoteR(R((s-/usr/lib/python2.7/site-packages/paste/url.pyt url_quotes cCsQ|dkrdS|tkr dS|tkr0dSt|trYddjtt|St|trddjg|D](\}}dt|t|f^qxSt|t rt |St|t rt |j dSt|t tfrt |St|tr$t |jd St|d r=|jStd |dS( Ntnulltfalsettrues[%s]s, s{%s}s%s: %ssUTF-8tLt __js_repr__s<I don't know how to turn %r into a Javascript representation(RtFalsetTruet isinstancetlisttjointmaptjs_reprtdictRtreprtunicodetencodetfloattinttlongtlstripthasattrRt ValueError(Rtkeytvalue((s-/usr/lib/python2.7/site-packages/paste/url.pyRs2    4   t URLResourcecBs eZdZiZddddZeeddddZeeZdZ dZ dZ dZ dZ dZd Zd Zd ZeZd Zd ZeeZdZdZeeZdZdZdZdZdZRS(sD This is an abstract superclass for different kinds of URLs cCsk|p d|_|pg|_|p'i|_|jj|_|pHi|_|rg|jj|ndS(Nt/(turltvarstattrstdefault_paramstcopytparamstoriginal_paramstupdate(tselfR'R(R)R,((s-/usr/lib/python2.7/site-packages/paste/url.pyt__init__@sc Cstj|dtd|d|d|}|ri|dkrKtj|}qotj|dtdt}nd}||d|} | S(Ntwith_query_stringtwith_path_infot script_namet path_infotkeep_blank_valueststrict_parsingR((Rt construct_urlRRtparse_querystringRt parse_qslR( tclstenvironR1R2R3R4t querystringR'R(R((s-/usr/lib/python2.7/site-packages/paste/url.pyt from_environKs     cOs"|j|}|j|}|S(N(t_add_positionalt _add_vars(R/targstkwtres((s-/usr/lib/python2.7/site-packages/paste/url.pyt__call__ascCsTd|krD|jdd\}}|jit|t|6S|j|fS(Nt=i(tsplitR?t url_unquoteR>(R/titemtnameR$((s-/usr/lib/python2.7/site-packages/paste/url.pyt __getitem__fs  cKsx?|jD]1}|jdr ||||d <||=q q W|jj}|j||j|jd|jd|d|jS(Nt_iR(R)R,( tkeystendswithR)R+R.t __class__R'R(R-(R/RAR#t new_attrs((s-/usr/lib/python2.7/site-packages/paste/url.pytattrls cKsD|jj}|j||j|jd|jd|jd|S(NR(R)R,(R-R+R.RMR'R(R)(R/RAt new_params((s-/usr/lib/python2.7/site-packages/paste/url.pytparamws   cCst}x]|jD]O\}}t|tr7t}n|jdr||||d <||=qqW|rtdkrddlmantj |}n|S(NRJi(tvariabledecode( RtitemsRRRRLRRRt formencodetvariable_encode(R/R(tneed_variable_encodeR#R$((s-/usr/lib/python2.7/site-packages/paste/url.pyt coerce_vars~s  cKsJ|j|}|j|j}|j|jd|d|jd|jS(NR(R)R,(RWR(RSRMR'R)R-(R/RAtnew_vars((s-/usr/lib/python2.7/site-packages/paste/url.pytvars  cKs|j|}g}x<|jD]1\}}||kr=qn|j||fqW|j|j|j|jd|d|jd|jS(s Like ``.var(...)``, except overwrites keys, where .var simply extends the keys. Setting a variable to None here will effectively delete it. R(R)R,( RWR(tappendtextendRSRMR'R)R-(R/RARXRHtvalues((s-/usr/lib/python2.7/site-packages/paste/url.pytsetvars  cKs.|j|jd|jd|jd|jS(s Creates a copy of this URL, but with all the variables set/reset (like .setvar(), except clears past variables at the same time) R(R)R,(RMR'RSR)R-(R/RA((s-/usr/lib/python2.7/site-packages/paste/url.pytsetvarss c Gs|}xv|D]n}t|jd}|j}|jdsM|d7}n|j||d|jd|jd|j}q W|S(NR&R(R)R,(RR R'RLRMR(R)R-(R/tpathstutpathtnew_url((s-/usr/lib/python2.7/site-packages/paste/url.pytaddpaths    cCs(||jd|jd|jd|jS(NR(R)R,(R'R(R)R-(R/t OtherClass((s-/usr/lib/python2.7/site-packages/paste/url.pytbecomes cCs|j}|jr|d7}g}xy|jD]n\}}t|ttfrug|D]}|dk rT|^qT}n|dkrq,n|j||fq,W|tj|t 7}n|S(Nt?( R'R(RRttupleRRZR t urlencodeR(R/tsR(RHtvalR((s-/usr/lib/python2.7/site-packages/paste/url.pyt href__gets   ( c Csd|jj|jpdf}|jrz|ddjg|jjD](\}}dt|t|f^qD7}n|jr|ddjg|jjD]\}}d||f^q7}n|d S( Ns<%s %ss''s attrs(%s)t s%s="%s"s params(%s)s, s%s=%rt>(RMt__name__threfR)RRSR R-(R/tbasetnR((s-/usr/lib/python2.7/site-packages/paste/url.pyt__repr__s   C  7cCs|jjds%td|n|j}d|jjd}djg|jD](\}}dt|t|f^qZ}|r|d|7}n||j7}|dkr|dSd|||jjdfSdS(Nttags<You cannot get the HTML of %r until you set the 'tag' param's<%sRls%s="%s"s />s %s>%s( R,tgetR"t _get_contentRt _html_attrsR t _html_extraR(R/tcontentRsRqRR)((s-/usr/lib/python2.7/site-packages/paste/url.pyt html__gets  ; cCs |jjS(N(R)RS(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyRvscCsdS(NR((R/((s-/usr/lib/python2.7/site-packages/paste/url.pyRwscCs tdS(sw Return the content for a tag (for self.html); return None for an empty tag (like ````) N(tNotImplementedError(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyRuscCs tdS(N(Rz(R/R(((s-/usr/lib/python2.7/site-packages/paste/url.pyR?scCs tdS(N(Rz(R/R@((s-/usr/lib/python2.7/site-packages/paste/url.pyR>sN(Rnt __module__t__doc__R*RR0RR=t classmethodRCRIRORQRWRYR]R^Rct__div__ReRktpropertyRoRrRythtmlRvRwRuR?R>(((s-/usr/lib/python2.7/site-packages/paste/url.pyR%8s:                  cBseZdZidd6ZdZdZdZdZdZdZ e e Z d Z e e Z d Ze eZRS( s >>> u = URL('http://localhost') >>> u >>> u = u['view'] >>> str(u) 'http://localhost/view' >>> u['//foo'].param(content='view').html 'view' >>> u.param(confirm='Really?', content='goto').html 'goto' >>> u(title='See "it"', content='goto').html 'goto' >>> u('another', var='fuggetaboutit', content='goto').html 'goto' >>> u.attr(content='goto').html Traceback (most recent call last): .... ValueError: You must give a content param to generate anchor tags >>> str(u['foo=bar%20stuff']) 'http://localhost/view?foo=bar+stuff' taRscCs|jS(N(Ro(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyt__str__!scCs0|jjds%td|n|jdS(NRxs8You must give a content param to %r generate anchor tags(R,RtR"(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyRu$s  cCs||}x<dD]4}||kr |ji|j||6}q q Wd|kro|jd|jd}n|j|S(NtconfirmRxttarget(sconfirmscontent(RQtpopRORY(R/R(R'RH((s-/usr/lib/python2.7/site-packages/paste/url.pyR?+s  & cCs |j|S(N(Rc(R/R@((s-/usr/lib/python2.7/site-packages/paste/url.pyR>4scCse|jj}|jdd|jf|jjdra|jddt|jdfn|S(NiRoRtonclicksreturn confirm(%s)(R)RStinsertRoR,RtRZR(R/R)((s-/usr/lib/python2.7/site-packages/paste/url.pyRv7s  cCsdt|jS(Nslocation.href=%s; return false(RRo(R/((s-/usr/lib/python2.7/site-packages/paste/url.pytonclick_goto__get?scCs |jtS(N(RetButton(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyt button__getDscCs |jtS(N(RetJSPopup(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyt js_popup__getIs(RnR{R|R*RRuR?R>RvRRt onclick_gotoRtbuttonRtjs_popup(((s-/usr/lib/python2.7/site-packages/paste/url.pyRs          cBsHeZdZidd6ZdZdZdZdZdZRS(s >>> i = Image('/images') >>> i = i / '/foo.png' >>> i.html '' >>> str(i['alt=foo']) 'foo' >>> i.href '/images/foo.png' timgRscCs|jS(N(R(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyR]scCsdS(N(R(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyRu`scCs |j|S(N(RO(R/R(((s-/usr/lib/python2.7/site-packages/paste/url.pyR?cscCs |j|S(N(Rc(R/R@((s-/usr/lib/python2.7/site-packages/paste/url.pyR>fscCs,|jj}|jdd|jf|S(Nitsrc(R)RSRRo(R/R)((s-/usr/lib/python2.7/site-packages/paste/url.pyRvis( RnR{R|R*RRuR?R>Rv(((s-/usr/lib/python2.7/site-packages/paste/url.pyRNs      RcBsHeZdZidd6ZdZdZdZdZdZRS(s >>> u = URL('/') >>> u = u / 'delete' >>> b = u.button['confirm=Sure?'](id=5, content='del') >>> str(b) '' RRscCs|jS(N(R(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyRzscCs>|jjdr|jdS|jjdr:|jdSdS(NRxR$(R,RtR)R(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyRu}s   cCsg|}d|kr0|jd|jd}nd|krZ|jd|jd}n|j|S(NRRx(RQRRY(R/R(R((s-/usr/lib/python2.7/site-packages/paste/url.pyR?s   cCs |j|S(N(Rc(R/R@((s-/usr/lib/python2.7/site-packages/paste/url.pyR>scCsx|jj}dt|j}|jjdrTdt|jd|f}n|d7}|jdd|f|S(Nslocation.href=%sRsif (confirm(%s)) {%s}s; return falseiR(R)RSRRoR,RtR(R/R)R((s-/usr/lib/python2.7/site-packages/paste/url.pyRvs ( RnR{R|R*RRuR?R>Rv(((s-/usr/lib/python2.7/site-packages/paste/url.pyRns     RcBsOeZdZidd6dd6ZdZdZdZdZd ZRS( s >>> u = URL('/') >>> u = u / 'view' >>> j = u.js_popup(content='view') >>> j.html 'view' RRst_blankRcCsR|}x<dD]4}||kr |ji|j||6}q q W|j|S(NtwidththeighttstrippedRx(swidthRRscontent(RQRRY(R/R(RRY((s-/usr/lib/python2.7/site-packages/paste/url.pyR?s   &cCs2|j}g}|jdr;d|d<|d<|dd D]6}|j|sqn|jd |||fqW|j|d g}|r|jd j|ndjtt|S(NRt0tlocationtstatusttoolbarsXchannelmode directories fullscreen location menubar resizable scrollbars status titlebartyestnot1s%s=%ssheight left top widthRt,s, (syesRRR(R,RtRERZRoRRR(R/tptfeaturesRQRR@((s-/usr/lib/python2.7/site-packages/paste/url.pyt _window_argss*       cCso|jj}d|j}|jdd|jdf|jdd|f|jdd|jf|S(Nswindow.open(%s); return falseiRRRo(R)RSRRR,Ro(R/R)R((s-/usr/lib/python2.7/site-packages/paste/url.pyRvs cCs0|jjds%td|n|jdS(NRxs8You must give a content param to %r generate anchor tags(R,RtR"(R/((s-/usr/lib/python2.7/site-packages/paste/url.pyRus  cCs |j|S(N(Rc(R/R@((s-/usr/lib/python2.7/site-packages/paste/url.pyR>s( RnR{R|R*R?RRvRuR>(((s-/usr/lib/python2.7/site-packages/paste/url.pyRs   t__main__(R|R RtpasteRRRRt__all__R R tunquoteRFRtobjectR%RRRRRntdoctestttestmod(((s-/usr/lib/python2.7/site-packages/paste/url.pyts"       H ,>