U å€C^jã@s`ddlmZmZmZddlmZddlmZddlZddgZGdd„de ƒZ Gdd„deƒZ dS) é)ÚEventÚThreadÚcurrent_thread)Útime)ÚwarnNÚTMonitorÚTqdmSynchronisationWarningc@seZdZdZdS)rzhtqdm multi-thread/-process errors which may cause incorrect nesting but otherwise no adverse effectsN)Ú__name__Ú __module__Ú __qualname__Ú__doc__©r r ú//tmp/pip-install-6_kvzl1k/tqdm/tqdm/_monitor.pyrsc@s@eZdZdZdZdZdd„Zdd„Zdd„Zd d „Z d d „Z dS) ra^ Monitoring thread for tqdm bars. Monitors if tqdm bars are taking too much time to display and readjusts miniters automatically if necessary. Parameters ---------- tqdm_cls : class tqdm class to use (can be core tqdm or a submodule). sleep_interval : fload Time to sleep between monitoring checks. NcCsvt |¡d|_tƒ|_d|_||_||_tj dk r>tj |_ nt |_ tj dk rXtj |_ nt|_ t   |j¡| ¡dS)NTr)rÚ__init__ÚdaemonrÚ was_killedÚwokenÚtqdm_clsÚsleep_intervalrÚ_timerÚ_eventÚatexitÚregisterÚexitÚstart)Úselfrrr r rr s      zTMonitor.__init__cCs$|j ¡|tƒk r| ¡| ¡S©N)rÚsetrÚjoinÚreport©rr r rr2s  z TMonitor.exitcCsdd„|jj ¡DƒS)NcSsg|]}t|dƒr|‘qS)Zstart_t)Úhasattr)Ú.0Úir r rÚ :s þz*TMonitor.get_instances..)rZ _instancesÚcopyr r r rÚ get_instances8szTMonitor.get_instancesc CsÀ| ¡}||_|j |j¡|j ¡r*dS|j ¡€| ¡}| ¡}|D]J}|j ¡rhW5QR£dS|j dkrJ||j |j krJd|_ |j ddqJ|| ¡kr°t dtddW5QRXqdS)NéT)ZnolockzOSet changed size during iteration (see https://github.com/tqdm/tqdm/issues/481)é)Ú stacklevel)rrrÚwaitrÚis_setrZget_lockr&ZminitersZ last_print_tZ maxintervalZrefreshrr)rZcur_tZ instancesÚinstancer r rÚrun>s.    ÿÿ þz TMonitor.runcCs |j ¡ Sr)rr+r r r rrbszTMonitor.report) r r r r rrrrr&r-rr r r rrs$) Ú threadingrrrrÚwarningsrrÚ__all__ÚRuntimeWarningrrr r r rÚs