ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ fPc@sdZy ddlZddlmZWnek rEd \ZZnXddlZddlZddlZddlZddl m Z ddl m Z ej dZde fdYZdS( s/This plugin will run tests using the hotshot profiler, which is part of the standard library. To turn it on, use the ``--with-profile`` option or set the NOSE_WITH_PROFILE environment variable. Profiler output can be controlled with the ``--profile-sort`` and ``--profile-restrict`` options, and the profiler output file may be changed with ``--profile-stats-file``. See the `hotshot documentation`_ in the standard library documentation for more details on the various output options. .. _hotshot documentation: http://docs.python.org/library/hotshot.html iN(tstats(tPlugin(ttolists nose.pluginstProfilecBsneZdZd ZeZdZdZe eZdZ dZ dZ dZ dZdZRS( sC Use this plugin to run tests using the hotshot profiler. c Cs|jsdStj||||jdddddd|jdd d d d d |jdddddd dd|jdd d|jdddddd dd|jdd ddS(s&Register commandline options. Ns--profile-sorttactiontstoretdestt profile_sorttdefaulttNOSE_PROFILE_SORTt cumulativetmetavartSORTthelps"Set sort order for profiler outputs--profile-stats-filetprofile_stats_filetFILEtNOSE_PROFILE_STATS_FILEs;Profiler stats file; default is a new temp file on each runs--profile-restricttappendtprofile_restricttRESTRICTtNOSE_PROFILE_RESTRICTs?Restrict profiler output. See help for pstats.Stats for details(t availableRtoptionst add_optiontget(tselftparsertenv((sB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pyR!s" cCs tdk S(N(thotshottNone(tcls((sB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pyR8scCs3|jsdS|jtj|j|_dS(s5Create profile stats file and load profiler. N(Rt _create_pfileRRtpfiletprof(R((sB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pytbegin<s  cCs|jst|_dStj|||||_|jrV|j|_t|_nd|_t |_d|_ |j |_ t|j|_dS(sConfigure plugin. N(RtFalsetenabledRt configuretconfRR tclean_stats_fileRtTruetfilenoRtsortRRtrestrict(RRR&((sB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pyR%Ds          cs=jsdStjd|j|fd}|S(s6Wrap entire test run in :func:`prof.runcall`. Nspreparing test %scsj|j||dS(N(Rtruncall(tresultR!ttest(R(sB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pytrun_and_profile\s (RtlogtdebugR!(RR.R/((RsB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pyt prepareTestVs  cCstjd|jjtj|j}|j|jt |d}|rf|j }||_ nt j }|t _ z=|j rtjd|j |j|j n |jWd|r||_ n |t _ XdS(s Output profiler report. sprinting profiler reporttstreams"setting profiler restriction to %sN(R0R1R!tcloseRtloadR t sort_statsR*thasattrR3tsyststdoutR+t print_stats(RR3t prof_statst compat_25ttmp((sB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pytreportas$        cCs|jsdSy|jjWntk r4nX|jr|jrrytj|jWqrtk rnqrXnytj|j Wqtk rqXndS(s5Clean up stats file, if configured to do so. N( RR!R4tAttributeErrorR'R)tostOSErrortunlinkR R(RR-((sB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pytfinalizes"      cCs1|js-tj\|_|_t|_ndS(N(R ttempfiletmkstempR)R(R'(R((sB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pyRs N(t__name__t __module__t__doc__RR R#R'RRt classmethodR"R%R2R>RCR(((sB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pyRs       (NN(RHRRt ImportErrorRtloggingR@R8RDtnose.plugins.baseRt nose.utilRt getLoggerR0R(((sB/opt/alt/python27/lib/python2.7/site-packages/nose/plugins/prof.pyt s