ó
‚•oTc           @   sÃ  d  d l  Z  d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d  d l m Z m	 Z	 m
 Z
 m Z m Z d  d l m Z m Z d  d l m Z m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d ƒ Z Z e e j ƒ e _ e d e j d d ƒe _ e d e j ƒ e _ e d e j  ƒ e _! e d e j" ƒ e _# e d  e j$ d d! ƒe _$ e e j% ƒ e _& e d" e j' d d# ƒe _( e d$ e	 j) ƒ e _) e d" e	 j* d d% ƒe _* e d" e	 j+ d d& ƒe _+ e e j, ƒ e _, e e j- ƒ e _- e ƒ  e _ e e j. ƒ e _ e e j/ ƒ e _ e d$ e j0 d' ƒ e _ e d" e j1 ƒ e _1 e d" e j ƒ e _ e d" e j2 ƒ e _2 e d e j3 ƒ e _3 e d e j4 ƒ e _4 e d e
 j5 ƒ e _5 e d e
 j6 ƒ e _6 e d$ e j7 d d( ƒe _7 e d" e j8 ƒ e _8 e d e j9 ƒ e _9 e d e j% ƒ e _% [ [ [	 [
 [ [ d S()   iÿÿÿÿNc         C   sA   d d  l  } t |  | j ƒ r* |  j }  n  |  j } | j | j  S(   Niÿÿÿÿ(   t   typest
   isinstancet
   MethodTypet   im_funct	   func_codet   co_varnamest   co_argcount(   t   funcR    t   co(    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   _getargs   s
    	t   Toolc           B   sD   e  Z d  Z d d d „ Z d „  Z d d „ Z d „  Z d „  Z RS(   t   toolsi2   c         C   sA   | |  _  | |  _ | |  _ | |  _ |  j j |  _ |  j ƒ  d  S(   N(   t   _pointt   callablet   _namet	   _priorityt   __doc__t   _setargs(   t   selft   pointR   t   namet   priority(    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   __init__.   s    				c         C   s®   y. x' t  |  j ƒ D] } t |  | d  ƒ q WWny t t f k
 r‰ t |  j d ƒ rª x- t  |  j j ƒ D] } t |  | d  ƒ qi Wqª n! t k
 r™ n t	 k
 r© n Xd  S(   Nt   __call__(
   R	   R   t   setattrt   Nonet	   TypeErrort   AttributeErrort   hasattrR   t   NotImplementedErrort
   IndexError(   R   t   arg(    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR   6   s    c         C   sn   | r | j  ƒ  } n i  } t j j |  j } |  j | k rT | j | |  j ƒ n  d | k rj | d =n  | S(   Nt   on(   t   copyt   cherrypyt   requestt   toolmapst	   namespaceR   t   update(   R   t   dt   conft   tm(    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   _merged_argsI   s    
c            s2   | r t  d ˆ j ƒ ‚ n  ‡  ‡ f d †  } | S(   NsQ   The %r Tool does not accept positional arguments; you must use keyword arguments.c            sv   t  |  d ƒ s i  |  _ n  ˆ j d ˆ j d } t |  j | d <x+ ˆ  j ƒ  D] \ } } | |  j | | <qQ W|  S(   Nt
   _cp_configt   .R    (   R   R+   R%   R   t   Truet	   iteritems(   t   ft   subspacet   kt   v(   t   kwargsR   (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   tool_decoratorg   s    (   R   R   (   R   t   argsR3   R4   (    (   R3   R   s%   /var/www/SABnzbd/cherrypy/_cptools.pyR   Y   s
    
c         C   sn   |  j  ƒ  } | j d d  ƒ } | d  k rE t |  j d |  j ƒ } n  t j j j	 |  j
 |  j d | | d  S(   NR   (   R*   t   popR   t   getattrR   R   R"   R#   t   hookst   attachR   (   R   R(   t   p(    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   _setupq   s    N(	   t   __name__t
   __module__R%   R   R   R   R*   R   R;   (    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR
   &   s   		t   HandlerToolc           B   s/   e  Z d d  „ Z d „  Z d „  Z d „  Z RS(   c         C   s   t  j |  d | | ƒ d  S(   Nt   before_handler(   R
   R   (   R   R   R   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR   Š   s    c            s"   ‡  ‡ ‡ f d †  } t  | _ | S(   Nc             s:   ˆ j  ˆ  ˆ j ˆ ƒ Ž  } | s0 t j ƒ  ‚ n  t j j S(   N(   R   R*   R"   t   NotFoundt   responset   body(   t   at   kwt   handled(   R5   R3   R   (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   handle_func•   s    (   R-   t   exposed(   R   R5   R3   RF   (    (   R5   R3   R   s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   handler   s    	c         K   s"   |  j  |   r d  t j _ n  d  S(   N(   R   R   R"   R#   RH   (   R   R3   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   _wrapper   s    c         C   sn   |  j  ƒ  } | j d d  ƒ } | d  k rE t |  j d |  j ƒ } n  t j j j	 |  j
 |  j d | | d  S(   NR   (   R*   R6   R   R7   R   R   R"   R#   R8   R9   R   RI   (   R   R(   R:   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR;   ¡   s    N(   R<   R=   R   R   RH   RI   R;   (    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR>      s   		t   HandlerWrapperToolc           B   s#   e  Z d  d d d „ Z d „  Z RS(   R?   i2   c         C   s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   t
   newhandlerR   R   R   (   R   RK   R   R   R   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR   Á   s    			c            s.   t  j j ‰  ‡  ‡ f d †  } | t  j _ d  S(   Nc             s   ˆ j  ˆ  |  | Ž S(   N(   RK   (   R5   R3   (   t	   innerfuncR   (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   wrapÉ   s    (   R"   R#   RH   (   R   RM   (    (   RL   R   s%   /var/www/SABnzbd/cherrypy/_cptools.pyR   Ç   s    N(   R<   R=   R   R   R   (    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyRJ   ¯   s   t	   ErrorToolc           B   s&   e  Z d d  „ Z d „  Z d „  Z RS(   c         C   s   t  j |  d  | | ƒ d  S(   N(   R
   R   R   (   R   R   R   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR   Ñ   s    c         C   s   |  j  |  j ƒ    d  S(   N(   R   R*   (   R   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyRI   Ô   s    c         C   s   |  j  t j _ d  S(   N(   RI   R"   R#   t   error_response(   R   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR;   ×   s    N(   R<   R=   R   R   RI   R;   (    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyRN   Î   s   	(   t   cptoolst   encodingt   autht   statict   tidy(   t   sessionst   xmlrpc(   t   cachingt   wsgiappt   SessionToolc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  j |  d t j ƒ d  S(   Nt   before_request_body(   R
   R   t	   _sessionst   init(   R   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR   ö   s    c         C   s   t  j j j ƒ  d  S(   N(   R"   t   servingt   sessiont   acquire_lock(   R   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   _lock_sessionú   s    c         C   sö   t  j j } |  j ƒ  } | j d d  ƒ } | d  k rQ t |  j d |  j ƒ } n  | j	 |  j
 |  j d | | | j d d ƒ } | d k r¤ | j	 d |  j ƒ n( | d k rÌ | j	 d |  j d d ƒn  | j	 d t j ƒ | j	 d	 t j ƒ d  S(
   NR   t   lockingt   implicitR?   t   earlyRZ   i<   t   before_finalizet   on_end_request(   R"   R#   R8   R*   R6   R   R7   R   R   R9   R   R`   R[   t   savet   close(   R   R8   R(   R:   Ra   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR;   ý   s    
c      
   C   sj   t  j j } | j ƒ  t g  |  j ƒ  j ƒ  D]$ \ } } | d k r, | | f ^ q, ƒ } t j |   d  S(   Nt   patht   path_headerR   t   timeoutt   domaint   secure(   Rh   Ri   R   Rj   Rk   Rl   (	   R"   R]   R^   t
   regeneratet   dictR*   R.   R[   t   set_response_cookie(   R   t   sessR1   R2   R(   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyRm     s    
"(   R<   R=   R   R`   R;   Rm   (    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyRY   ç   s   			t   XMLRPCControllerc           B   s'   e  Z i e d  6Z d „  Z e e _ RS(   s   tools.xmlrpc.onc   	      O   sÖ   t  j ƒ  \ } } |  } x/ t | ƒ j d ƒ D] } t | | d  ƒ } q. W| rx t | d t ƒ rx | | | | Ž  } n t d | ‚ t j	 j
 d j d i  ƒ } t  j | | j d d ƒ | j d d	 ƒ ƒ t j j S(
   NR,   RG   s   method "%s" is not supportedR   RV   RQ   s   utf-8t
   allow_nonei    (   t   _xmlrpct   process_bodyt   strt   splitR7   R   t   Falset	   ExceptionR"   R#   R$   t   gett   respondRA   RB   (	   R   t   vpatht   paramst	   rpcparamst	   rpcmethodt
   subhandlert   attrRB   R(   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   defaultN  s    	(   R<   R=   R-   R+   R   RG   (    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyRq   )  s   #	t   WSGIAppToolc           B   s   e  Z d  „  Z RS(   c         C   s   t  t j _ t j |  ƒ d  S(   N(   Rw   R"   R#   t   process_request_bodyR>   R;   (   R   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR;   y  s    (   R<   R=   R;   (    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR‚   g  s   t   SessionAuthToolc           B   s   e  Z d  „  Z RS(   c         C   s@   x9 t  t j ƒ D]( } | j d ƒ s t |  | d  ƒ q q Wd  S(   Nt   __(   t   dirRP   t   SessionAutht
   startswithR   R   (   R   R   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR     s    (   R<   R=   R   (    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR„     s   t   CachingToolc           B   s&   e  Z d d „ Z d e _ d „  Z RS(   t   POSTt   PUTt   DELETEc         K   s°   t  j } t t  d ƒ sf | j d t j ƒ ƒ  t  _ x0 | j ƒ  D] \ } } t t  j | | ƒ q@ Wn  t j	 d | ƒ r„ d  | _ n( | j r¬ | j j d t j d d ƒn  d  S(   Nt   _cachet   cache_classt   invalid_methodsRd   R   iZ   (   R"   R#   R   R6   t   _cachingt   MemoryCacheR   R.   R   Ry   R   RH   t	   cacheableR8   R9   t
   tee_output(   R   R   R3   R#   R1   R2   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyRI   Š  s    		i   c         C   sD   |  j  ƒ  } | j d d  ƒ } t j j j d |  j d | | d  S(   NR   R?   (   R*   R6   R   R"   R#   R8   R9   RI   (   R   R(   R:   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR;   ž  s    (   RŠ   R‹   RŒ   (   R<   R=   RI   R   R;   (    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR‰   ‡  s   	t   Toolboxc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   R%   (   R   R%   (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR   ¯  s    c         C   sP   t  | t ƒ r9 | j d  k r* | | _ n  |  j | _ n  t j |  | | ƒ d  S(   N(   R   R
   R   R   R%   t   objectt   __setattr__(   R   R   t   value(    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR–   ²  s
    c            s*   i  t  j j |  j <‰  ‡  f d †  } | S(   Nc            s8   |  j  d d ƒ \ } } ˆ  j | i  ƒ } | | | <d  S(   NR,   i   (   Rv   t
   setdefault(   R1   R2   t   toolnameR   t   bucket(   t   map(    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   populate½  s    (   R"   R#   R$   R%   (   R   Rœ   (    (   R›   s%   /var/www/SABnzbd/cherrypy/_cptools.pyt	   __enter__º  s    c         C   sp   t  j j j |  j ƒ } | rl xK | j ƒ  D]: \ } } | j d t ƒ r+ t |  | ƒ } | j ƒ  q+ q+ Wn  d  S(   NR    (	   R"   R#   R$   Ry   R%   t   itemsRw   R7   R;   (   R   t   exc_typet   exc_valt   exc_tbR›   R   t   settingst   tool(    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   __exit__Ã  s    (   R<   R=   R   R–   R   R¤   (    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyR”   ¨  s   				R   RZ   R   i   t   on_start_resourcet   before_error_responseRe   id   Rd   iK   R?   iF   iP   RW   i<   (:   R"   R	   R•   R
   R>   RJ   RN   t   cherrypy.libRP   RQ   RR   RS   RT   RU   R[   RV   Rs   RW   R   RX   t   _wsgiappRY   Rq   R‚   R„   R‰   R”   t   default_toolboxt   _dt   session_autht   proxyt   response_headerst   log_tracebackt   log_tracebackst   log_request_headerst   log_headerst	   log_hookst   redirectt   err_redirectt   validate_etagst   etagst   decodet   encodet   gzipt	   staticdirt
   staticfilet   on_errort   runRy   t   expirest   nsgmlst   ignore_headerst   referert
   basic_autht   digest_autht   trailing_slasht   flattent   accept(    (    (    s%   /var/www/SABnzbd/cherrypy/_cptools.pyt   <module>   sX   	
Y0(B>!%