File: //opt/alt/python27/lib/python2.7/site-packages/paste/reloader.pyo
�
a�Nc           @   s�   d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d � Z d e	 f d �  �  YZ
 e j j d � r� y d d	 l
 m Z Wn e k
 r� q� Xd
 e
 f d �  �  YZ n  e
 j Z e
 j Z d S(   s�  
A file monitor and server restarter.
Use this like:
..code-block:: Python
    import reloader
    reloader.install()
Then make sure your server is installed with a shell script like::
    err=3
    while test "$err" -eq 3 ; do
        python server.py
        err="$?"
    done
or is run from this .bat file (if you use Windows)::
    @echo off
    :repeat
        python server.py
    if %errorlevel% == 3 goto repeat
or run a monitoring process in Python (``paster serve --reload`` does
this).  
Use the ``watch_file(filename)`` function to cause a reload/restart for
other other non-Python files (e.g., configuration files).  If you have
a dynamic set of files that grows over time you can use something like::
    def watch_config_files():
        return CONFIG_FILE_CACHE.keys()
    paste.reloader.add_file_callback(watch_config_files)
Then every time the reloader polls files it will call
``watch_config_files`` and check all the filenames it returns.
i����N(   t   classinstancemethodi   c         C   s?   t  d |  � } t j d | j � } | j t � | j �  d S(   s,  
    Install the reloading monitor.
    On some platforms server threads may not terminate when the main
    thread does, causing ports to remain open/locked.  The
    ``raise_keyboard_interrupt`` option creates a unignorable signal
    which causes the whole application to shut-down (rudely).
    t
   poll_intervalt   targetN(   t   Monitort	   threadingt   Threadt   periodic_reloadt	   setDaemont   Truet   start(   R   t   mont   t(    (    s?   /opt/alt/python27/lib/python2.7/site-packages/paste/reloader.pyt   install2   s    	
R   c           B   s_   e  Z g  Z g  Z g  Z d  �  Z d �  Z d �  Z d �  Z e	 e � Z d �  Z
 e	 e
 � Z
 RS(   c         C   sS   i  |  _  t |  _ | |  _ t |  j � |  _ |  j j |  � t |  j	 � |  _
 d  S(   N(   t
   module_mtimesR   t   keep_runningR   t   listt   global_extra_filest   extra_filest	   instancest   appendt   global_file_callbackst   file_callbacks(   t   selfR   (    (    s?   /opt/alt/python27/lib/python2.7/site-packages/paste/reloader.pyt   __init__F   s    			c         C   s>