
^rEc           @   s  d  d k  l Z d  d k  l Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k	 Z	 d  d k
 Z
 d  d k Z d  d k Z d  d k Z d  d k Z y d  d k Z Wn d  d k Z n Xd e f d     YZ h  Z e d  Z e d  Z d   Z d	 d
  Z e e _ h  Z d   Z d   Z d   Z d   Z e e _ e e _ e e _ e i e _ d   Z  d   Z! e e e d  Z e e _ d f  d     YZ" d f  d     YZ# d f  d     YZ$ e$   Z% d   Z& e% i' e _' e% i( e _( e% i) e _) d f  d     YZ* d f  d     YZ+ e i, i- d	 e+    d f  d     YZ. e i/ e _0 e.   e _/ e i1 Z1 e1 i2 e1 _3 e1 i4 e1 _5 e1 i6 e1 _7 e1 i8 e1 _9 e1 i: e1 _; e1 i< e1 _= d e> e i?  d  Z@ h  e iA e iB g d! <e iA g d" <e iA g d# <e iA e iB g d$ <e iA e iB g d% <e iA e iB g d& <e iA g d' <e iA g d( <e iA g d) <e iA e iB g d* <e iA e iB g d+ <e iA e iB g d, <ZC d-   ZD d.   ZE d/   Z2 d0   Z4 d1   Z6 e iF e2 e1 e iG  e1 _2 e iF e4 e1 e iG  e1 _4 e iF e6 e1 e iG  e1 _6 d2   Z8 e iF e8 e1 e iG  e1 _8 d3   Z: e iF e: e1 e iG  e1 _: e e e d4 d4 d	 d5  Z< e iF e< e1 e iG  e1 _< d S(6   i(   t   apache(   t	   publisherNt   _module_cachec           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR   <   s    c         C   s'   |  p
 t  i   }  t i |  d   d  S(   N(   t	   threadingt   currentThreadt   _request_modules_cachet   popt   None(   t   thread(    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _cleanup_request_modules_cache@   s    c         C   sf   t  i   } t i |  pF t   t | <d t | _ d t | _ |  o |  i t |  qb n d  S(   Ni    (	   R   R   R   t   has_keyR   t
   generationt   ctimet   register_cleanupR   (   t   reqR
   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _setup_request_modules_cacheD   s    c          C   s   t  i   }  t i |  d   S(   N(   R   R   R   t   getR	   (   R
   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _get_request_modules_cacheM   s    i    c         C   s  t  i    } t   } | d IJ| d IJx@| i   D]2} | i } | i } |  o | i i } t i t i	 | i
   } t i t i	 | i   } t i t i	 | i   }	 | i }
 | i } | i } | i } d } | d 7} | d 7} | | | | | | |	 |
 | | | f	 IJn d } | | | | f IJ| i i } x" | D] } | d | | f IJqJWq6 W| d IJ| i   S(	   Ns   digraph REQUEST {s   node [shape=box];s3   %s [label="%s\nmtime = %s\nctime = %s\natime = %s\ns-   generation = %d, direct = %d, indirect = %d\ns   path = %s"];s   %s [label="%s"];s   %s -> %st   }(   t   StringIOR   t   valuesR   t   __file__t   __mp_info__t   cachet   timet   asctimet	   localtimeR   t   mtimet   atimeR   t   directt   indirectt   __mp_path__t   childrent   getvalue(   t   verboset   outputt   modulest   modulet   namet   filenameR   R   R   R   R   R   R    t   patht   messageR"   t
   child_name(    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   request_modules_graphQ   s<    	

 						

 
c         C   sw   t  i   } | o t i i |  } n t i | d  } |  d  j o | d  j o t | =n |  | | f t | <| S(   N(   NNN(   R   R   t   osR*   t   normpatht   _current_cacheR   R	   (   t   configt   optionst	   directoryR
   R   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _setup_current_cache   s    c          C   s=   t  i   }  t i |  t i i   d  d  f  \ } } } | S(   N(   R   R   R0   R   R    t   main_servert
   get_configR	   (   R
   R1   R2   R3   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   get_current_config   s    	$c          C   s=   t  i   }  t i |  d  t i i   d  f  \ } } } | S(   N(   R   R   R0   R   R	   R    R5   t   get_options(   R
   R1   R2   R3   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   get_current_options   s    	$c          C   s+   t  i   }  t i |  d  \ } } } | S(   N(   NNN(   R   R   R0   R   R	   (   R
   R1   R2   R3   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   get_handler_root   s    	c          C   s   y
 t   Wn\ t i   d i i }  x@ |  o4 |  i i d  o! |  i d t j o |  i }  q) Wn X|  o; |  i i d  o( |  i d } |  i d } | | f Sn d S(   Ni   R   R   R!   (   NN(	   t	   Exceptiont   syst   exc_infot   tb_framet   f_backt	   f_globalsR   R   R	   (   t   parentt   parent_infot   parent_path(    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _parent_context   s    
 c         C   s   x | D] } | d  j	 o | d j o$ t   } | d  j	 o
 | } q nI | d  d j o7 t   } | d  j	 o t i i | | d  } q n t i i | |   d } t i i |  o | Sq q q Wd  S(   Nt   ~i   s   ~/s   .py(   R	   R:   R.   R*   t   joint   exists(   t   module_nameR*   R3   t   roott   file(    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _find_module   s     		!c         C   st  d  } g  } t i i |   o
 |  } n|  d  d j o7 t   } | d  j	 o t i i | |  d  } q3n |  d  d j oR t   \ } } | d  j	 o2 t i i | i  } t i i | |  d  } q3n` |  d  d j oN t   \ } } | d  j	 o. t i i | i  } t i i | |   } q3n | d  j o g  }	 | d  j	 o |	 i	 |  n t   \ } } | d  j	 o& t i i | i  } |	 i
 |  n | d  j	 o |	 i	 |  n t   }
 |
 i d  o! t |
 d  } |	 i	 |  n |	 o t |  |	  } q3n | d  j	 o
 | } n | d  j	 o t i | | | |  Sn t |  h  h  d g  Sd  S(   Ni   s   ~/s   ./i   s   ../s   mod_python.importer.patht   *(   R	   R.   R*   t   isabsR:   RF   RD   t   dirnameRJ   t   extendt   appendR9   R   t   evalRK   t   _global_modules_cachet   import_modulet
   __import__(   RH   t
   autoreloadt   logR*   RJ   t   import_pathR3   RB   RC   t   search_pathR2   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyRS      sP    	
	!!		
t
   _CacheInfoc           B   s   e  Z d    Z RS(   c         C   s   | |  _  | |  _ | |  _ d  |  _ d |  _ d |  _ h  |  _ g  |  _ d |  _	 d |  _
 d |  _ d |  _ d |  _ t i   |  _ d  S(   Ni    (   t   labelRJ   R   R	   R'   t   instanceR   R"   R*   R   R   R   R    t   reloadR   t   Lockt   lock(   t   selfRZ   RJ   R   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   __init__8  s    													(   R   R   R`   (    (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyRY   6  s   t   _InstanceInfoc           B   s   e  Z d    Z RS(   c         C   s(   | |  _  | |  _ | |  _ h  |  _ d  S(   N(   RZ   RJ   R   R"   (   R_   RZ   RJ   R   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR`   J  s    			(   R   R   R`   (    (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyRa   H  s   t   _ModuleCachec           B   s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d d	  Z
 d
   Z e e e d  Z d   Z d   Z d   Z RS(   t   _mp_c         C   sF   h  |  _  t i   |  _ t i   |  _ d |  _ t |  _ h  |  _ d  S(   Ni    (	   t   _cacheR   R]   t   _lock1t   _lock2t   _generationt   Falset   _frozent   _directories(   R_   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR`   T  s    			c         C   sP   t  i   } t i } t i t i B} d | | | f } t i i | |  d  S(   Ns'   mod_python (pid=%d, interpreter=%s): %s(   R.   t   getpidR    t   interpretert   APLOG_NOERRNOt   APLOG_NOTICER5   t	   log_error(   R_   t   msgt   pidR(   t   flagst   text(    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _log_notice\  s
    	c         C   sP   t  i   } t i } t i t i B} d | | | f } t i i | |  d  S(   Ns'   mod_python (pid=%d, interpreter=%s): %s(   R.   Rk   R    Rl   Rm   t   APLOG_WARNINGR5   Ro   (   R_   Rp   Rq   R(   Rr   Rs   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _log_warningc  s
    	c   	      C   s   t  i   } t i } t i t i B} d } d | | | f } t i i | |  t i	   \ } } } x4 t
 i | | |  D] } t i i | d  |  q} Wd  } d  S(   Ns   Application errors'   mod_python (pid=%d, interpreter=%s): %si(   R.   Rk   R    Rl   Rm   t	   APLOG_ERRR5   Ro   R<   R=   t	   tracebackt   format_exceptionR	   (	   R_   Rq   R(   Rr   Rp   Rs   t   etypet   evaluet   etb(    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _log_exceptionj  s    	 c         C   s3   |  i  i   z |  i i   SWd  |  i  i   Xd  S(   N(   Re   t   acquireRd   t   keyst   release(   R_   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   cached_modulesv  s    c         C   s1   |  i  i   z |  i | SWd  |  i  i   Xd  S(   N(   Re   R~   Rd   R   (   R_   RZ   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   module_info}  s    c         C   s   t  |  _ d  S(   N(   t   TrueRi   (   R_   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   freeze_modules  s    i    c         C   s  |  i  i   zut i   } |  i } | d IJ| d IJx1| i   D]#} | i } | i } | o t i t i	 | i
   } t i t i	 | i   } t i t i	 | i   }	 | i }
 | i } | i } | i } d } | d 7} | d 7} | | | | | | |	 |
 | | | f	 IJn d } | | | | f IJ| i } x" | D] } | d | | f IJqKWqF W| d IJ| i   SWd  |  i  i   Xd  S(	   Ns   digraph GLOBAL {s   node [shape=box];s'   %s [label="%s\nmtime = %s\nctime = %s\ns)   atime = %s\ngeneration = %d, direct = %d,s   indirect = %d\npath = %s"];s   %s [label="%s"];s   %s -> %sR   (   Re   R~   R   Rd   R   RZ   RJ   R   R   R   R   R   R   R   R   R    R*   R"   R#   R   (   R_   R$   R%   R&   R   R(   R)   R   R   R   R   R   R    R*   R+   R"   R,   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   modules_graph  s@    	

 						

	 
c         C   sv   t  i i |  } | |  i j oP d  |  i | <| t i j o/ d } | d } | d | } |  i |  qr n d  S(   Ns'   Module directory listed in "sys.path". s,   This may cause problems. Please check code. s   File being imported is "%s".(   R.   R*   RN   Rj   R	   R<   Rv   (   R_   RJ   R3   Rp   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _check_directory  s    
c         C   s  t  i i |  } | d  j p | d  j o_ t   } | d  j o t | i d d   } n | d  j o t | i d d   } q n | o |  i |  n t   \ } } | o" | | i	 j p t
 d |  n t   } |  i |  }	 | d  j	 o> | i |	  o* | o t i   | i |	 <n | |	 Sq>n zd  }
 |  i | |	 | |  \ }
 } |
 i i   | i d j o |  i | _ t i   | _ n | o|
 i d |
 _ d |
 _ t i |	  } |
 i d  j o(t |
 i d  o y6 | o d | } |  i |  n |
 i i |  Wq|  i   | o d | } |  i |  n t |
 i d	  o) y |
 i i   Wq|  i   qXn d  |
 _ t i |	  } qXn | oF |
 i d  j o d
 | } |  i |  qd | } |  i |  q*n# | o d
 | } |  i |  n | | _  t! |	 | |
  } | | _" | d  j o
 g  } n t# |  | _$ | d  j	 o | | |	 <n t i   } | o | | i |	 <n y t% | | i&  Wn( |
 i d  j o |  i' |	 =n   n X| |
 _ d |
 _ t( | i" i  |
 _ | i$ |
 _ |  i) i   |  i d |  _ |  i |
 _ |  i) i*   | |
 _ | |
 _+ d |
 _, d |
 _- nb |
 i } | d  j	 o | | |	 <n t i   } | o | | i |	 <n | |
 _+ |
 i, d |
 _, | SWd  |
 d  j	 o |
 i i*   n Xd  S(   Nt   PythonAutoReloadi   t   PythonDebugi    s   Import cycle in %s.t   __mp_clone__s   Cloning module '%s's   Purging module '%s't   __mp_purge__s   Importing module '%s's   Reimporting module '%s'(.   R.   R*   R/   R	   R7   t   intR   R   RD   RJ   t   AssertionErrorR   t   _module_labelR   R   R"   t   _reload_requiredR^   R~   R   Rg   R   R[   R\   t   impt
   new_moduleR'   t   hasattrRt   R   R}   R   R   Ra   R   t   listR!   t   execfilet   __dict__Rd   t   dictRf   R   R   R   R    (   R_   RJ   RU   RV   R*   R1   RB   RC   R&   RZ   R   t   loadR'   Rp   R[   R   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyRS     s    	 "			


	


			

			
				
	c         C   s  z|  i  i   |  i i |  p? t i i |  } t | | |  } | |  i | <| t f Sn |  i | } | i	 p$ |  i
 p | o | t f Sq n y t i i |  } Wn< d } | d } | d | } |  i |  | t f Sn X| i	 p | | i j o | | _ | t f Sn | i o h  } | g }	 xm | i D]^ }
 |  i i |
  p | t f Sn |  i |
 } |  i | | | | |	  o | t f SqFqFWn | t f SWd  |  i  i   Xd  S(   Ns#   Module code file has been removed. s.   This may cause problems. Using cached module. s   File being imported "%s".(   Re   R~   Rd   R   R.   R*   t   getmtimeRY   R   R\   Ri   Rh   Rv   R   R"   t   _check_moduleR   (   R_   R&   RZ   RJ   RU   R   R   Rp   t   visitedt	   ancestorst   tagt   child(    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR     sF    

	
	
 c   
   
   C   s  | i  d | _  t i   | _ | i o t Sn | i | i j o t Sn | i | i  o t Sn y1 t	 i
 i | i  } | | i j o t Sn WnZ d } | d } | d | i } |  i |  | d  j	 o | i | | i <n t Sn X| i o | | i g } x | i i   D] } | | j o6 d } | d } | d | i } |  i |  t Sn |  i i |  p t Sn |  i | }	 |  i | | |	 | |  o t SqqWn | | | i <| d  j	 o | i | | i <n t S(   Ni   s#   Module code file has been removed. s.   This may cause problems. Using cached module. s   File being imported "%s".s#   Module imports an ancestor module. s,   This may cause problems. Please check code. s   File doing import is "%s".(   R    R   R   R\   R   R   R   RZ   Rh   R.   R*   R   RJ   R   Rv   R	   R'   R"   R   Rd   R   (
   R_   R&   RA   t   currentR   R   R   Rp   RZ   R   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR   Z  sP    


 
c         C   s   |  i  t i |  i   S(   N(   t   _prefixt   md5t   newt	   hexdigest(   R_   RJ   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR     s    	(   R   R   R   R`   Rt   Rv   R}   R   R   R   R   R   R	   RS   R   R   R   (    (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyRb   P  s   							+	 H	U	ic           C   s   t  S(   N(   RR   (    (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _get_global_modules_cache  s    t   _ModuleLoaderc           B   s   e  Z d    Z d   Z RS(   c         C   s   | |  _  d  S(   N(   t   _ModuleLoader__file(   R_   RJ   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR`     s    c         C   s   t  i |  i  S(   N(   RR   RS   R   (   R_   t   fullname(    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   load_module  s    (   R   R   R`   R   (    (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR     s   	t   _ModuleImporterc           B   s   e  Z d d   Z RS(   c   	      C   s   d | j o d  Sn t   \ } } | d  j o d  Sn g  } t i i | i  } | i |  | d  j	 o | i |  n t   } | i	 d  o! t
 | d  } | i |  n | p d  Sn t | |  } | d  j	 o t |  Sn d  S(   Nt   .s   mod_python.importer.path(   R	   RD   R.   R*   RN   RJ   RP   RO   R9   R   RQ   RK   R   (	   R_   R   R*   RB   RC   RX   R3   R2   RJ   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   find_module  s(    			N(   R   R   R	   R   (    (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR     s   t
   _PageCachec           B   s   e  Z d    Z RS(   c         C   s   t  | i  S(   N(   RS   R)   (   R_   R   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   __getitem__"  s    (   R   R   R   (    (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR   !  s   s   Handler has returned result or raised SERVER_RETURN
exception with argument having non integer type. Type of value returned
was %s, whereas expected R   t   postreadrequesthandlert   transhandlert   maptostoragehandlert   inithandlert   headerparserhandlert   accesshandlert   authenhandlert   authzhandlert   typehandlert   fixuphandlert
   loghandlert   handlerc   
   
   C   sS  y t  |  i d d   } t i d  } | o[ | oT t i   } | i   t i | i	  z | |  } Wd  d | _
 t i d   Xn | |  } Wnp t i j
 oa } | p   n t | i  d j o' | i \ } }	 |	 o |	 | _ qq| i d } n X| p | | j o. t |  t i j p t t t |   n | S(   Nt   PythonEnablePdbt   0t   ONE_PROCESSi   i   i    (   R   R   R    t   exists_config_definet   pdbt   Pdbt   resetR<   t   settracet   trace_dispatcht   quittingR	   t   SERVER_RETURNt   lent   argst   statust   typet   typest   IntTypeR   t   _result_warning(
   R1   R   t   objectt   argt	   pdb_debugt   one_processt   debuggert   resultt   valueR   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _execute_targetJ  s.    	
	.c      	   C   s  t  |  p| i d d  } | d } t |  d j o
 | }	 n | d }	 |  i d  oj t i i   zH |  d }
 t i i |
  p' t |
  } d  t i |
 <| t
 i (n Wd  t i i   Xn g  } | o | g } n t | d | } t i | |	 | d | } n | } t i | d   } | p t i | j o t i } n
 t i } | d  j	 p | o; t |  | | |  } | o | | j o t | f Sqn t | f S(   Ns   ::i   i    t
   PythonPathR*   t   silent(   t   callablet   splitR   R   R    t   _path_cache_lockR~   t   _path_cacheRQ   R	   R<   R*   R   RS   t   resolve_objectt   _status_valuesR   t   DECLINEDt   OKR   R   Rh   (   R1   R   R3   R   t   defaultR   R   t   partsRH   t
   object_strt
   pathstringt   newpathR*   R'   R   t   expectedR   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   _process_target  s<    



	c         C   s  d } t  i } t   y zs | i i   } | i i   } t | | d
  } t d | d d
 d d
 d | i	 i
 d | d | d d	  \ } } Wd
 t |   t   XWn t  i j
 oq } t | i d d	   }	 zF | \ }
 } } |  i |
 | | d | d d d | i	 i
 d |	 } Wd
 d
 } Xnv t | i d d	   }	 zL t i   \ }
 } } |  i |
 | | d | d d d | i	 i
 d |	 } Wd
 d
 } Xn X| S(   s>        
    This is the dispatcher for connection handlers.
    t   connectionhandlerR1   R   R3   R   R   R   R   i    NR   t   connt   phaset   ConnectionHandlert   hnamet   debug(   R    t   HTTP_INTERNAL_SERVER_ERRORR   t   base_serverR6   R8   R4   R	   R   t   hlistR   R   t   PROG_TRACEBACKR   R   t   ReportErrorR<   R=   (   R_   R   t   default_handlerR   R1   R2   R   t   abortedt
   traceblockR   t   exc_typet	   exc_valuet   exc_traceback(    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   ConnectionDispatch  s<    	
c         C   s	  | i  o
 d } n d } t | i  yz| i } | i } | d j oI | i } x= | d j	 o+ | i d j	 o | i } Pn | i } qX Wn | d j o | i i   } n t	 |  t
 i j o~ | d  d j o. | d j	 o t i i | | d  } qEqI| d  d j o* | d j	 o t i i | |  } qEqIn | i i   } | i i   } t | | |  } t d | d | i d	 | d
 | d | d | d d  \ }	 }
 | i p | i   n Wd t |   XWn"t i j
 o } t | i d d   } | i   zS | \ } } } |  i | | | d | i d | d d | i d | i d | }
 Wd d } Xn t | i d d   } | i   zY t i   \ } } } |  i | | | d | i d | d d | i d | i d | }
 Wd d } Xn Xt i S(   s?        
    This is the dispatcher for input/output filters.
    t   inputfiltert   outputfilteri   s   ./i   s   ../R1   R   R3   R   R   R   R   i    NR   t   filterR   s   Filter (%s)R   R   s   Filter: (   t   is_inputR   R   t   dirR   R	   RA   R3   t   document_rootR   R   t
   StringTypeR.   R*   RF   R6   R8   R4   R   t   closedt   flushR    R   R   R   t   disableR   R(   R<   R=   R   (   R_   R   R   R3   R   RA   R1   R2   R   R   R   R   R   R   R   R   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   FilterDispatch&  sp    

			 	!!


c         C   s5  | i  } | t d  i   } t i } t |  | i   } | i   } yt | i	 } } | i
 }	 | i }
 x$ |
 d j	 o |
 i
 }	 |
 i }
 qr W|	 d j o | i   }	 n x| o| i d j	 opzTd } | i
 } | i } | d j oI | i }
 x= |
 d j	 o+ |
 i
 d j	 o |
 i
 } Pn |
 i }
 qWn t |  t i j o~ | d  d j o. | d j	 o t i i | | d  } qq| d  d j o* | d j	 o t i i | |  } qqn t | | |	  } t d | d | d | d	 | d
 | d | d | i  \ } } Wd t |   X| i   q WWn t i j
 on } t | i d d   } zC | \ } } } |  i | | | d | d | d | i d | } Wd d } Xns t | i d d   } zI t i   \ } } } |  i | | | d | d | d | i d | } Wd d } Xn X| S(   s9        
    This is the dispatcher for handler phases.
    t   pythoni   s   ./i   s   ../R1   R   R3   R   R   R   R   NR   i    R   R   R   (   R   R   t   lowerR    R   R   R6   R8   Rh   R   R3   RA   R	   R   R   R   R   R   R.   R*   RF   R4   R   R   t   nextR   R   R   R   R<   R=   (   R_   R   R   R   R   R1   R2   R   R   RI   RA   R   R3   R   R   R   R   R   R   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   HandlerDispatch  sx    		
		 	 			 	!!"c         B   s  e  | i  yzk| i i   } | i i   } e | | d   } e | i d d   } e | i d  p h  | i _	 n | | i i	 d <d d d     Y} | i i
 | i i	 d <| d  | i i
 d   | i i	 d <g  | i i	 d	 <| i d
 d  i   } | d j o= e | | i i	  }	 |	 d  j	 o | i e |	   qpn& | d j o | | i i	 f d  Un | i   Wd  d  | i i	 d <e |   XWnc zO e i   \ }
 } } |  i |
 | | d | d | i d | i i
 d | }	 Wd  d  } X  n Xe i S(   NR   i    t   ssi_globalsR   Ra   c           B   s   e  Z d    Z RS(   c         S   s(   | |  _  | |  _ | |  _ h  |  _ d  S(   N(   RZ   RJ   R   R"   (   R_   RZ   RJ   R   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR`   M  s    			(   R   R   R`   (    (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyRa   K  s   R   R   R!   s   
s   
RQ   t   execR   R   R   (    (   R   R   R6   R8   R4   R	   R   R   R   R  R)   t   replacet   rstripRQ   t   writet   strR   R<   R=   R   R(   R    R   (   R_   R   R   t   codeR1   R2   R   R   Ra   R   R   R   R   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   IncludeDispatch/  sD    c   
   
   C   s+  t  i i   } t | i d d   } | i d  oj t  i i   zH | d } t  i i |  p' t	 |  } d  t  i | <| t i (n Wd  t  i i   Xn | i d d  } | d } d  } t |  d j o | d } n z8 t   t | d | }	 | o t |	 |    n Wd  t   Xd  S(   NR   R   R   s   ::i   i    RV   (   R    R5   R6   R   R   R   R   R~   R   RQ   R	   R<   R*   R   R   R   R   RS   t   getattrR   (
   R_   R(   R1   R   R   R   t   lRH   t	   func_nameR'   (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyt   ImportDispatch{  s,    

s   N/Ac
   -      C   s  zyt  |  d j o! t  |  d  d j o
 d }	 n | o | o | i } n | o | i }
 n! | o | i }
 n t i i }
 t i   } t i } t i t i	 B} d | | f } | d | | f } | d } |
 | |  | o d  } d  } | i } | o7 x | i d  j o | i } qW| i } | i } n | i i } | i   } |
 d | |  |
 d	 | |  |
 d
 | i |  |
 d | |  |
 d | |  |
 d | i |  |
 d | i |  n t i | | |  } x | D] } |
 | d  |  qW|	 p | o t i Sn t i   } t i | _ d | _ | J| d IJ| d IJ| J| d | IJ| d | IJ| o~ | J| d | IJ| d | IJ| J| d | i IJ| d | IJ| d | IJ| d | i IJ| d | i IJn | J| d | IJ| d t i t |   IJ| Jx! | D] } | t i |  IJqVWt   } | i d j ot  i! t  i" | i   } | J| d IJ| J| d | IJ| d  | i# IJ| Jh  } | i$   } x% | D] } | | } | | | i% <qW| i$   } | i&   xs| D]g} | | } | | } | i' } | i% } | i( i) }  t  i! t  i" |  i   }! t  i! t  i" |  i*   }" t  i! t  i" |  i+   }# |  i, }$ |  i# }% |  i- }& |  i. }' | i/ }( | d! | IJ| d" | IJ| d# |$ I|$ d$ j o( |  i0 p |% | i# j o | d% IJn- |  i0 p |% | i# j o | d& IJn | J| d' |% I|  i0 o | d( IJn | J|  i* o | d) |" IJn |  i o | d* |! IJn |( o* d+ i1 t2 t |(   } | d, | IJn g  }) g  }* |  i0 o8 x | i( i3 D]# }+ | |+ i( i4 }, |* i5 |,  q+Wn x4 | i( i) i3 D]# }+ | |+ i( i4 }, |* i5 |,  qfWx | i( i3 D]x }+ |+ | i( i) i3 j o\ y! | |+ i( i4 }, |) i5 |,  Wqy# t i6 |+  i4 }, |) i5 |,  WqqXqXqqW|* i&   |) i&   |* o* d+ i1 t2 t |*   } | d- | IJn |) o* d+ i1 t2 t |)   } | d. | IJn | d/ IJ| Jq3Wn | d0 IJ| i7   } | o | i8 |  | i9   n | i8 |  t i: SWn t i;   t< i= i9   n XWd  d  } Xd  S(1   Ns   exceptions.IOErrori   t   Writei    s$   mod_python (pid=%d, interpreter=%s, s   phase=%s, handler=%s)s   : Application errors   ServerName: %ss   DocumentRoot: %ss   URI: %ss   Location: %ss   Directory: %ss   Filename: %ss   PathInfo: %sis	   text/htmls   <pre>s   MOD_PYTHON ERRORs   ProcessId:      %ss   Interpreter:    %ss   ServerName:     %ss   DocumentRoot:   %ss   URI:            %ss   Location:       %ss   Directory:      %ss   Filename:       %ss   PathInfo:       %ss   Phase:          %ss   Handler:        %ss   MODULE CACHE DETAILSs   Accessed:       %ss   Generation:     %ss   %s {s     FileName:     %ss     Instance:     %si   s   [IMPORT]s   [RELOAD]s     Generation:   %ss   [ERROR]s     Modified:     %ss     Imported:     %ss   ,
                s     ModulePath:   %ss     Children:     %ss     Friends:      %sR   s   </pre>(>   R	  R   Ro   R    R5   R.   Rk   Rl   Rm   Rw   R	   R   RA   t   locationR3   t   servert   server_hostnameR   t   uriR)   t	   path_infoRx   Ry   R   R   R   t   content_typet   cgit   escapet   reprR   R   R   R   R   R   R   R   t   sortR   R   R   R   R   R[   R   R    R!   R\   RF   t   mapR"   RJ   RP   R   R#   R  R   t   DONEt	   print_excR<   t   stderr(-   R_   Rz   R{   R|   R   R   R   R   R   R   Ro   Rq   t   inameRr   Rs   R  R3   t   contextt   hostnameRI   t   tbt   lineR%   R&   t   accessedt   labelsR   t   keyR'   RZ   R(   R)   R   R   R   R   R[   R   R   R    R*   t   friendsR"   R   t   entry(    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pyR     sL   
	
	 	 	

 	
 

 

							



   




(H   t
   mod_pythonR    R   R.   R<   R   R   R   R   R   R   t   stringR   Rx   R  R   t   dummy_threadingR   R   R   R	   R   R   R   R-   R0   R4   R7   R9   R:   RS   t   ximport_moduleRD   RK   RY   Ra   Rb   RR   R   R   R   R   R   R   t	   meta_patht   insertR   t
   page_cachet   xpage_cachet	   _callbackR   t   xConnectionDispatchR   t   xFilterDispatchR  t   xHandlerDispatchR  t   xIncludeDispatchR  t   xImportDispatchR   t   xReportErrorR	  R   R   R   R   R   R   R   t   instancemethodt   CallBack(    (    (    s7   /usr/lib/python2.5/site-packages/mod_python/importer.pys   <module>   s   		(										]	  		9		=	P	O	s		I	1	