+\h&dZddlmZddlZddlZddlZddlZddlZddlm Z m Z ddl m Z ddl mZddlmZdZGd d ZGd d ZeZdd ZddZddZy)z-Run a target function on a background thread.) annotationsN)AnyOptional)_csot) create_task) _create_lockFcjeZdZ d d dZd dZddZd ddZd ddZddZddZ dd Z dd Z y)AsyncPeriodicExecutorNctd|_||_||_||_d|_d|_||_d|_y)aRun a target function periodically on a background task. If the target's return value is false, the executor stops. :param interval: Seconds between calls to `target`. :param min_interval: Minimum seconds between calls if `wake` is called very often. :param target: A function. :param name: A name to give the underlying task. FN)_event _interval _min_interval_target_stopped_task_name _skip_sleepselfinterval min_intervaltargetnames \/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pymongo/periodic_executor.py__init__zAsyncPeriodicExecutor.__init__"s>" !)  -1   cjd|jjd|jdt|ddSN __class____name__ridrs r__repr__zAsyncPeriodicExecutor.__repr__<44>>**+6$**^BtHUV>+dnn<--DNN,rErJr-rrr r !s\ # !!! !  !4ZC >&  rr creZdZ d d dZddZddZd ddZd ddZddZddZ dd Z dd Z dd Z y)PeriodicExecutorNcd|_||_||_||_d|_d|_||_d|_d|_t|_ y)aRun a target function periodically on a background thread. If the target's return value is false, the executor stops. :param interval: Seconds between calls to `target`. :param min_interval: Minimum seconds between calls if `wake` is called very often. :param target: A function. :param name: A name to give the underlying thread. FN) r r rrr_threadrr_thread_will_exitr_lockrs rrzPeriodicExecutor.__init__|sO* !)  37   !&!^ rcjd|jjd|jdt|ddSrr"r&s rr'zPeriodicExecutor.__repr__r(rc|j5|jr) |jJ|jjd|_d|_dddd} |jxr|jj }|sitj|j|j}d|_ tj||_t| |jyy#t$rYwxYw#1swYxYw#t$rYwxYw#t $r3}dt#|vst%j&r d|_Yd}~yd}~wwxYw)zgStart. Multiple calls have no effect. Not safe to call from multiple threads at once. NF)rrTzinterpreter shutdown)rirhrgr:ReferenceErrorris_alive threadingThreadr-rdaemonweakrefproxy_register_executorstart RuntimeErrorrZsys is_finalizing)rstartedthreades rr.zPeriodicExecutor.opens3 ZZ "%% <<333LL%%'&+D "!DM " ll>t||'<'<'>G %%TYYTZZHF FM"==0DL t $  & " ""     )SV3s7H7H7J#'DL  s^ C?(C0C?(D D0 C<9C?;C<<C??D DD E#(EEEcd|_yr0)rr2s rr4zPeriodicExecutor.closes  rc|j |jj|yy#ttf$rYywxYwrA)rgr:rlrur9s rr:zPeriodicExecutor.joinsA << #  !!'* $#L1  s +==cd|_yr<r=r&s rr>zPeriodicExecutor.waker?rc||_yrArBrCs rrEz PeriodicExecutor.update_intervalrFrcd|_yrHrIr&s rrJzPeriodicExecutor.skip_sleeprKrc|j5|jrd|_ dddy dddy#1swYyxYwrM)rirrhr&s r _should_stopzPeriodicExecutor._should_stops? ZZ }})-&      s 55>cT|js |jsd|_y |j rd|_ntj|jz}|jsgtj|krPtj|j|jrn$|jstj|krPd|_ |jsyy#t$r1|j5d|_d|_ddd#1swYxYwwxYwrM) rrrrPrirhrrQrRr rSrr rTs rr-zPeriodicExecutor._runs##% ||~$(DM&#( >>+dnn<--DNN,rErJrr-rcrrrere{sb # $$$ $  $@Z'R&  rrecbtj|t}tj |yrA)rqref_on_executor_deleted _EXECUTORSadd)executorrs rrsrs s ++h 4 5CNN3rc.tj|yrA)rremove)rs rrrscrctytt}|D]}|}|s |j|D]}|}|s |jdd}y)N)rlistr4r:) executorsrrs r_shutdown_executorsrsjZ I5  NN  5  MM!  Hr)rrerYr\)rz'weakref.ReferenceType[PeriodicExecutor]rYr\r[)__doc__ __future__rr7rvrnrQrqtypingrrpymongorpymongo._asyncio_taskr pymongo.lockr_IS_SYNCr resetrrsrrrcrrrs_4"   -% W W tE E \U  r