Lc@s6dZddkZyddkZWn ej oeie=nXddkZddkl Z ddk l Z l Z ddklZddklZddd d d d d ddddddddddgZeiZeiZeiZeiZ[eiddeddddeZde fdYZ!e"a#e"a$d Z%d!Z&eZ'd"Z(d#e!fd$YZ)d%Z*d&e!fd'YZ+d(Z,d)e!fd*YZ-d+Z.d,e-fd-YZ/d.Z0d/e!fd0YZ1d1a2d2d3Z3ea4hZ5hZ6de!fd4YZ7d5Z8d6e7fd7YZ9d8e7fd9YZ:d:Z;d;e7fd<YZ<d=Z=e=Z>d>Z?e?Z@d?ZAd@ZBddAklCZCe:iDZEyddBklFZGWn#ej oddCkHlGZGnXdDZIdEZJedFjo eJndS(Gs;Thread module emulating a subset of Java's threading model.iN(twraps(ttimetsleep(t format_exc(tdequet activeCountt active_countt Conditiont currentThreadtcurrent_threadt enumeratetEventtLocktRLockt SemaphoretBoundedSemaphoretThreadtTimert setprofiletsettracetlocalt stack_sizetignoretcategorytmodulet threadingtmessages sys.exc_cleart_VerbosecBseZddZdZRS(cCs$|djo t}n||_dS(N(tNonet_VERBOSEt_Verbose__verbose(tselftverbose((s!/usr/lib64/python2.6/threading.pyt__init__;s  cGsB|io4||}dti|f}tii|ndS(Ns%s: %s (RR tnamet_syststderrtwrite(Rtformattargs((s!/usr/lib64/python2.6/threading.pyt_note@s   N(t__name__t __module__RR!R((((s!/usr/lib64/python2.6/threading.pyR9s cCs |adS(N(t _profile_hook(tfunc((s!/usr/lib64/python2.6/threading.pyRTscCs |adS(N(t _trace_hook(R,((s!/usr/lib64/python2.6/threading.pyRXscOs t||S(N(t_RLock(R'tkwargs((s!/usr/lib64/python2.6/threading.pyR `sR.cBs\eZd dZdZddZeZdZdZdZ dZ dZ RS( cCs2ti||t|_d|_d|_dS(Ni(RR!t_allocate_lockt _RLock__blockRt _RLock__ownert _RLock__count(RR ((s!/usr/lib64/python2.6/threading.pyR!es  cCsJ|i}yt|i}Wntj onXd|ii||ifS(Ns<%s owner=%r count=%d>(R2t_activeR"tKeyErrort __class__R)R3(Rtowner((s!/usr/lib64/python2.6/threading.pyt__repr__ks icCst}|i|jo(|id|_|id||dS|ii|}|o)||_d|_|id||n|id|||S(Nis!%s.acquire(%s): recursive successs%s.acquire(%s): initial successs%s.acquire(%s): failure(t _get_identR2R3R(R1tacquire(Rtblockingtmetrc((s!/usr/lib64/python2.6/threading.pyR:ts   cCs||itjotdn|id|_}|p*d|_|ii|id|n|id|dS(Nscannot release un-acquired lockis%s.release(): final releases%s.release(): non-final release(R2R9t RuntimeErrorR3RR1treleaseR((Rtcount((s!/usr/lib64/python2.6/threading.pyR?s  cCs|idS(N(R?(Rtttvttb((s!/usr/lib64/python2.6/threading.pyt__exit__scCs?|\}}|ii||_||_|id|dS(Ns%s._acquire_restore()(R1R:R3R2R((Rt count_ownerR@R7((s!/usr/lib64/python2.6/threading.pyt_acquire_restores     cCsK|id||i}d|_|i}d|_|ii||fS(Ns%s._release_save()i(R(R3R2RR1R?(RR@R7((s!/usr/lib64/python2.6/threading.pyt _release_saves     cCs|itjS(N(R2R9(R((s!/usr/lib64/python2.6/threading.pyt _is_ownedsN( R)R*RR!R8R:t __enter__R?RDRFRGRH(((s!/usr/lib64/python2.6/threading.pyR.cs     cOs t||S(N(t _Condition(R'R/((s!/usr/lib64/python2.6/threading.pyRsRJcBsteZd d dZdZdZdZdZdZdZ d dZ dd Z d Z e Z RS( c Csti|||djo t}n||_|i|_|i|_y|i|_Wntj onXy|i |_ Wntj onXy|i |_ Wntj onXg|_ dS(N( RR!RR t_Condition__lockR:R?RGtAttributeErrorRFRHt_Condition__waiters(RtlockR ((s!/usr/lib64/python2.6/threading.pyR!s&     cCs |iiS(N(RKRI(R((s!/usr/lib64/python2.6/threading.pyRIscGs|ii|S(N(RKRD(RR'((s!/usr/lib64/python2.6/threading.pyRDscCsd|it|ifS(Ns(RKtlenRM(R((s!/usr/lib64/python2.6/threading.pyR8scCs|iidS(N(RKR?(R((s!/usr/lib64/python2.6/threading.pyRGscCs|iidS(N(RKR:(Rtx((s!/usr/lib64/python2.6/threading.pyRFscCs-|iido|iitStSdS(Ni(RKR:R?tFalsetTrue(R((s!/usr/lib64/python2.6/threading.pyRHs c Csg|iptdnt}|i|ii||i}z|djo|i|id|nt |}d}xft o^|id}|oPn|t }|djoPnt |d|d}t |qW|pA|id||y|ii |WqQtj oqQXn|id||Wd|i|XdS( Nscannot wait on un-acquired locks%s.wait(): got itgMb@?iig?s%s.wait(%s): timed outs%s.wait(%s): got it(RHR>R0R:RMtappendRGRR(t_timeRRtmint_sleeptremovet ValueErrorRF(Rttimeouttwaitert saved_statetendtimetdelaytgotitt remaining((s!/usr/lib64/python2.6/threading.pytwaits<          icCs|iptdn|i}|| }|p|id|dS|id|||djodpdx?|D]7}|iy|i|Wq}tj oq}Xq}WdS(Ns!cannot notify on un-acquired locks%s.notify(): no waiterss"%s.notify(): notifying %d waiter%sitst(RHR>RMR(R?RWRX(RtnRMtwaitersRZ((s!/usr/lib64/python2.6/threading.pytnotifys     cCs|it|idS(N(ReRORM(R((s!/usr/lib64/python2.6/threading.pyt notifyAll"sN(R)R*RR!RIRDR8RGRFRHR`ReRft notify_all(((s!/usr/lib64/python2.6/threading.pyRJs      *  cOs t||S(N(t _Semaphore(R'R/((s!/usr/lib64/python2.6/threading.pyR(sRhcBs;eZdddZddZeZdZdZRS(icCsL|djotdnti||tt|_||_dS(Nis$semaphore initial value must be >= 0(RXRR!RR t_Semaphore__condt_Semaphore__value(RtvalueR ((s!/usr/lib64/python2.6/threading.pyR!/s  cCst}|iixs|idjo6|pPn|id|||i|iiqW|id|_|id||it}|ii|S(Nis)%s.acquire(%s): blocked waiting, value=%sis%s.acquire: success, value=%s(RQRiR:RjR(R`RRR?(RR;R=((s!/usr/lib64/python2.6/threading.pyR:6s     cCsQ|ii|id|_|id||i|ii|iidS(Nis%s.release: success, value=%s(RiR:RjR(ReR?(R((s!/usr/lib64/python2.6/threading.pyR?Ks     cCs|idS(N(R?(RRARBRC((s!/usr/lib64/python2.6/threading.pyRDTsN(R)R*RR!R:RIR?RD(((s!/usr/lib64/python2.6/threading.pyRh+s   cOs t||S(N(t_BoundedSemaphore(R'R/((s!/usr/lib64/python2.6/threading.pyRXsRlcBs&eZdZdddZdZRS(s6Semaphore that checks that # releases is <= # acquiresicCs ti|||||_dS(N(RhR!t_initial_value(RRkR ((s!/usr/lib64/python2.6/threading.pyR!]scCs-|i|ijo tdnti|S(Ns!Semaphore released too many times(RjRmRXRhR?(R((s!/usr/lib64/python2.6/threading.pyR?as N(R)R*t__doc__RR!R?(((s!/usr/lib64/python2.6/threading.pyRl[scOs t||S(N(t_Event(R'R/((s!/usr/lib64/python2.6/threading.pyR gsRocBsAeZddZdZeZdZdZddZRS(cCs/ti||tt|_t|_dS(N(RR!RR t _Event__condRQt _Event__flag(RR ((s!/usr/lib64/python2.6/threading.pyR!nscCs|iS(N(Rq(R((s!/usr/lib64/python2.6/threading.pytisSetsscCs<|iizt|_|iiWd|iiXdS(N(RpR:RRRqRgR?(R((s!/usr/lib64/python2.6/threading.pytsetxs   cCs/|iiz t|_Wd|iiXdS(N(RpR:RQRqR?(R((s!/usr/lib64/python2.6/threading.pytclears  cCsD|iiz"|ip|ii|nWd|iiXdS(N(RpR:RqR`R?(RRY((s!/usr/lib64/python2.6/threading.pyR`s   N( R)R*RR!Rrtis_setRsRtR`(((s!/usr/lib64/python2.6/threading.pyRojs     is Thread-%dcCstda|tS(Ni(t_counter(ttemplate((s!/usr/lib64/python2.6/threading.pyt_newnames cBseZeZeiZeiZdddddddZ dZ dZ dZ dZdZdZdZdZd Zdd Zed Zeid Zed ZdZeZedZeidZdZdZdZdZRS(cCs|djp tdti|||djo h}n||_t|pt|_||_||_ |i |_ d|_ t |_t|_tt|_t|_ti|_dS(Ns#group argument must be None for now(RtAssertionErrorRR!t_Thread__targettstrRxt _Thread__namet _Thread__argst_Thread__kwargst _set_daemont_Thread__daemonict_Thread__identR t_Thread__startedRQt_Thread__stoppedRR t_Thread__blockRRt_Thread__initializedR#R$t_Thread__stderr(RtgroupttargetR"R'R/R ((s!/usr/lib64/python2.6/threading.pyR!s         cCs tiS(N(R tdaemon(R((s!/usr/lib64/python2.6/threading.pyRscCs|ip tdd}|iio d}n|io d}n|io|d7}n|idj o|d|i7}nd|ii |i |fS(Ns Thread.__init__() was not calledtinitialtstartedtstoppeds daemons %ss <%s(%s, %s)>( RRyRRuRRRRR6R)R|(Rtstatus((s!/usr/lib64/python2.6/threading.pyR8s    cCs|iptdn|iiotdn|id|ti|t|RRuR(t_active_limbo_lockR:t_limboR?t_start_new_threadt_Thread__bootstrapt ExceptionRDRIR`(R((s!/usr/lib64/python2.6/threading.pytstarts     cCsBz(|io|i|i|inWd|`|`|`XdS(N(RzR}R~(R((s!/usr/lib64/python2.6/threading.pytruns cCs;y|iWn&|iotdjodSnXdS(N(t_Thread__bootstrap_innerRR#R(R((s!/usr/lib64/python2.6/threading.pyt __bootstraps cCst|_dS(N(R9R(R((s!/usr/lib64/python2.6/threading.pyt _set_identscCs%z|i|iiti|t|iRRuR RR(RR:RR`RTR?(RRYtdeadlineR]((s!/usr/lib64/python2.6/threading.pytjoinus2         cCs|ip td|iS(NsThread.__init__() not called(RRyR|(R((s!/usr/lib64/python2.6/threading.pyR"scCs'|ip tdt||_dS(NsThread.__init__() not called(RRyR{R|(RR"((s!/usr/lib64/python2.6/threading.pyR"scCs|ip td|iS(NsThread.__init__() not called(RRyR(R((s!/usr/lib64/python2.6/threading.pytidentscCs,|ip td|iio|i S(NsThread.__init__() not called(RRyRRuR(R((s!/usr/lib64/python2.6/threading.pytisAlivescCs|ip td|iS(NsThread.__init__() not called(RRyR(R((s!/usr/lib64/python2.6/threading.pyRscCsG|iptdn|iiotdn||_dS(NsThread.__init__() not calleds)cannot set daemon status of active thread(RR>RRuR(Rtdaemonic((s!/usr/lib64/python2.6/threading.pyRs  cCs|iS(N(R(R((s!/usr/lib64/python2.6/threading.pytisDaemonscCs ||_dS(N(R(RR((s!/usr/lib64/python2.6/threading.pyt setDaemonscCs|iS(N(R"(R((s!/usr/lib64/python2.6/threading.pytgetNamescCs ||_dS(N(R"(RR"((s!/usr/lib64/python2.6/threading.pytsetNamesN(( R)R*RQRR#texc_infoRt exc_clearRRR!RR8RRRRRRt_Thread__deleteRtpropertyR"tsetterRRtis_aliveRRRRR(((s!/usr/lib64/python2.6/threading.pyRs4        K  # !    cOs t||S(N(t_Timer(R'R/((s!/usr/lib64/python2.6/threading.pyRsRcBs/eZdZghdZdZdZRS(sCall a function after a specified number of seconds: t = Timer(30.0, f, args=[], kwargs={}) t.start() t.cancel() # stop the timer's action if it's still waiting cCsAti|||_||_||_||_t|_dS(N(RR!tintervaltfunctionR'R/R tfinished(RRRR'R/((s!/usr/lib64/python2.6/threading.pyR!s      cCs|iidS(s(Stop the timer if it hasn't finished yetN(RRs(R((s!/usr/lib64/python2.6/threading.pytcancelscCsN|ii|i|iip|i|i|in|iidS(N(RR`RRuRR'R/Rs(R((s!/usr/lib64/python2.6/threading.pyRs(R)R*RnR!RR(((s!/usr/lib64/python2.6/threading.pyRs t _MainThreadcBs#eZdZdZdZRS(cCsOti|dd|ii|iti|tt(RRRRR"RV(RRtcounter((s!/usr/lib64/python2.6/threading.pyRs (R)R*R!R(((s!/usr/lib64/python2.6/threading.pyRs tConsumerThreadcBseZdZdZRS(cSs)ti|dd||_||_dS(NR"tConsumer(RR!RR@(RRR@((s!/usr/lib64/python2.6/threading.pyR!s cSs@x9|idjo(|ii}|GH|id|_qWdS(Nii(R@RR(RR((s!/usr/lib64/python2.6/threading.pyRs (R)R*R!R(((s!/usr/lib64/python2.6/threading.pyRs iiis Producer-%digư>(RRtrangeR"RSRRVR( RRRtNPtQLtNItQtPtiRAtC((s!/usr/lib64/python2.6/threading.pyt_testxs.      t__main__(KRntsysR#Rt ImportErrorRR)twarningst functoolsRRRTRRVt tracebackRRt collectionsRt__all__tstart_new_threadRt allocate_lockR0t get_identR9terrort ThreadErrortfilterwarningstDeprecationWarningRQRtobjectRRR+R-RRR R R.RRJRRhRRlR RoRvRxRR4RRRRRRRRR RRRR RRt _shutdownRRt_threading_localRR(((s!/usr/lib64/python2.6/threading.pyts             M u -  &  )        $ R