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@sdZddlmZddlZddlZddlZddlZddlZddlZyddl Z Wne k rddl Z nXyddl m Z Wn!e k rddl m Z nXddlmZddlmZdefdYZd efd YZdaeaejd dadefdYZdefdYZeZeeeeedZdS(s Creates a session object in your WSGI environment. Use like: ..code-block:: Python environ['paste.session.factory']() This will return a dictionary. The contents of this dictionary will be saved to disk when the request is completed. The session will be created when you first fetch the session dictionary, and a cookie will be sent in that case. There's current no way to use sessions without cookies, and there's no way to delete a session except to clear its data. @@: This doesn't do any locking, and may cause problems when a single session is accessed concurrently. Also, it loads and saves the session for each request, with no caching. Also, sessions aren't expired. i(t SimpleCookieN(tmd5(twsgilib(trequesttSessionMiddlewarecBseZddZdZRS(cKs||_||_dS(N(t applicationt factory_kw(tselfRt global_confR((s1/usr/lib/python2.7/site-packages/paste/session.pyt__init__/s cst||j|dRtidRtstrt hexdigesttAttributeErrortdigesttordR9(Rt for_objecttrtmd5_hashRDtchar((s1/usr/lib/python2.7/site-packages/paste/session.pyR<s  cCst}|j||jWWdta XdS(NRUi<texp_timetnow( tdatetimet timedeltaR)RgRAtwalkRZt_clean_up_fileR#t cleaning_up(RRfRgtroottdirstfilesRb((s1/usr/lib/python2.7/site-packages/paste/session.pyt _clean_ups" %c Cs|jd}t|dkr%dS|d}yptjt|dd!t|dd!t|dd!t|dd!t|dd!t|dd !}Wntk rdSX|||krtjtjj|j |ndS( NR8iiiiii i i( RQtlenRhRXRRAtremoveRMR9RZ(RRbRfRgttt sess_time((s1/usr/lib/python2.7/site-packages/paste/session.pyRks   cCstjj}trdSt s0tt|kr~ts~tay)|atjd|j}|j Wq{t aq{Xq~ndS(Nttarget( RhRgRlt last_cleanupt cleanup_cycleR,t threadingtThreadRpRR#(RRgRs((s1/usr/lib/python2.7/site-packages/paste/session.pyR4sN( R R!R#ttempfilet gettempdirRR R\R-RRpRkR4(((s1/usr/lib/python2.7/site-packages/paste/session.pyR&s     t _NoDefaultcBseZdZRS(cCsdS(Ns((R((s1/usr/lib/python2.7/site-packages/paste/session.pyt__repr__s(R R!R}(((s1/usr/lib/python2.7/site-packages/paste/session.pyR|sc Cs|tkr!|jdd }nt|}|tkrN|jdd}nt|}|tkr{|jdd}n|tkr|jdd }n|tkr|jd d}nt|d|d|d |d|d |S(s Adds a middleware that handles sessions for your applications. The session is a peristent dictionary. To get this dictionary in your application, use ``environ['paste.session.factory']()`` which returns this persistent dictionary. Configuration: session_expiration: The time each session lives, in minutes. This controls the cookie expiration. Default 12 hours. expiration: The time each session lives on disk. Old sessions are culled from disk based on this. Default 48 hours. cookie_name: The cookie name used to track the session. Use different names to avoid session clashes. session_file_path: Sessions are put in this location, default /tmp. chmod: The octal chmod you want to apply to new sessions (e.g., 660 to make the sessions group readable/writable) Each of these also takes from the global configuration. cookie_name and chmod take from session_cookie_name and session_chmod R*i<i R)i0tsession_cookie_nameR"RZs/tmpt session_chmodR$RYii@ N(t NoDefaulttgetRXRR(tappRR*R)R$RZRY((s1/usr/lib/python2.7/site-packages/paste/session.pytmake_session_middlewares %         i(t__doc__tCookieRR:R?RARhRxRzR`t ImportErrortpicklethashlibRtpasteRRtobjectRRRRvR#RlRiRwR&R|RR(((s1/usr/lib/python2.7/site-packages/paste/session.pyts<        "]h