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@sdZddlZddlZddlZddlZddlZddlmZddZde fdYZ ej j drydd l mZWnek rqXd e fd YZne jZe jZdS( 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. iN(tclassinstancemethodicCs?td|}tjd|j}|jt|jdS(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_intervalttargetN(tMonitort threadingtThreadtperiodic_reloadt setDaemontTruetstart(Rtmontt((s2/usr/lib/python2.7/site-packages/paste/reloader.pytinstall2s  RcBs_eZgZgZgZdZdZdZdZe eZdZ e e Z RS(cCsSi|_t|_||_t|j|_|jj|t|j |_ dS(N( t module_mtimesRt keep_runningRtlisttglobal_extra_filest extra_filest instancestappendtglobal_file_callbackstfile_callbacks(tselfR((s2/usr/lib/python2.7/site-packages/paste/reloader.pyt__init__Fs    cCs>x7tr9|js&tjdPntj|jqWdS(Ni(Rt check_reloadtost_exitttimetsleepR(R((s2/usr/lib/python2.7/site-packages/paste/reloader.pyRNs    cCst|j}xJ|jD]?}y|j|Wqtjd|IJtjqXqWx_tjj D]N}y |j }Wnt t fk r}qlnX|dk rl|j|qlqlWx6|D].}y+tj|}|r|j}nd}Wnttfk rqnX|jdrZtjj|d rZttj|d j|}nO|jdrtjj|d drttj|d dj|}n|jj|s||j|R?t__doc__R(((s2/usr/lib/python2.7/site-packages/paste/reloader.pyRBs (RCRRRRR tpaste.util.classinstanceRR tobjectRtplatformt startswitht_systemrestartRAR&RBR9R<(((s2/usr/lib/python2.7/site-packages/paste/reloader.pyt)s       W