L idZddlmZddlZddlZddlZddlZddlmZddl m Z m Z m Z ddl mZddlmZmZddlmZmZe rdd l mZdd lmZdd lmZd d  ddZddZddZddZddZdZdedZ efddZ!y)z!Invasive patches for coverage.py.) annotationsN)Path) TYPE_CHECKINGAnyNoReturn)env) NoDebugging DevNullDebug) ConfigErrorCoverageException)Coverage)CoverageConfig) TDebugCtlT) make_pth_filec8|jdr|n t}tt|jD]\}|xdk(rt ||xdk(rt |||+xdk(r t|=dk(rt|||O td|y)z3Apply invasive patches requested by `[run] patch=`.patch_exitexecvfork subprocesszUnknown patch N) shouldr sortedsetr _patch__exit _patch_execv _patch_fork_patch_subprocessr )covconfigdebugrrs T/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/coverage/patch.py apply_patchesr"s\\'*E EFLL)*>S%(S&%0E"!&%?!N5)"<==>crjdtjdfd }|t_y)zPatch os._exit.zPatching _exitctjt5jddddtjt5j ddd|y#1swYDxYw#1swYxYw)NzUsing _exit patch with cov = ) contextlibsuppress Exceptionwritesave)statusrr old_exits r!coverage_os_exit_patchz,_patch__exit..coverage_os_exit_patch:sn   + < KK8#: ; <   +  HHJ   < <  sA3A?3A<?BN)r+intreturnr)r)osr)rr r-r,s`` @r!rr4s' KK !xxH&BHr#ctjr tdjddfd }|dtj t_|dtj t_y)z$Patch the execv family of functions.z+patch=execv isn't supported yet on Windows.zPatching execvc dfd }|S)Nc&tjt5jdddddtjt5j dddj drt|d}j |d<tjrLtjd|d<tjdx}||d<tjd|d<|i|y#1swYxYw#1swYxYw) NzUsing execv patch for z with cov = eCOVERAGE_PROCESS_CONFIG COVERAGE_COREPYTHONPYCACHEPREFIXPATH) r&r'r(r)r*endswith serializerTESTINGr0getenv) argskwargsnew_env cache_prefixrrr fname old_execvs r!coverage_execv_patchzD_patch_execv..make_execv_patch..coverage_execv_patchLs$$Y/ L 4UG=#JK L$$Y/   ~~c"r(5;5E5E5G12;;/1yy/IGO, )+ 2G(HH U9E 56')ii&7GFO t &v &- L L  sC;D;DD)r>rr?rr/r)rBrCrDrrr s`` r!make_execv_patchz&_patch_execv..make_execv_patchKs ' '2$#r#rexecveN)rBstrrCrr/r)rWINDOWSr r)r0rrG)rrr rFs``` r!rrDsN {{ MNN KK !$: 2BH 2995BIr#cddlm}tjr t d|j dt j|y)z/Ensure Coverage is properly reset after a fork.r)_after_fork_in_childz*patch=fork isn't supported yet on Windows.z Patching fork)after_in_childN)coverage.controlrKrrIr r)r0register_at_fork)r rKs r!rrls35 {{ LMM KK ';.delete_pth_files~s8 * =c!fZHID) *r#Nr6)r/None)r)create_pth_filesatexitregister config_filer;r0environ)rr rrUrTs ` @r!rrws[ KK%&$U+  * ()    )) ),2,<,<,>BJJ()r#zOtry: import coverage except: pass else: coverage.process_startup() zimport sys; exec(z) cPg}tjD]}}t|dtjdz } |j dr|j dt||jtd|j||S#t$rYwxYw)z-Create .pth files for measuring subprocesses. subcover_z.pthrzWriting subprocess .pth file: zutf-8)encoding) sitegetsitepackagesrr0getpidrr)rH write_textPTH_TEXTappendOSError)r rTpth_dirpth_files r!rWrWsI'') '=Yryy{m4#@@ '||G$ rss("  //4>!.( > > > >  >  >6 & %6P=?, xl# .)4 r#