0iddlmZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddl m Z ddl mZddl mZddlmZdd lmZdd lmZdd lmZdd lmZed ZedZddZdddZddZddZGddeZ d ddZ ejBd dZ"dded d!dZ#y)") annotationsN)Callable) Generator)Iterable)MutableMapping)Sequence)Any)TypeVar) parse_shebang) cmd_output_b) cmd_output_pTArgTRetc ttjdS#t$rYnwxYw t j S#t $rYywxYw)Nr)lenossched_getaffinityAttributeErrormultiprocessing cpu_countNotImplementedError?/opt/hc_python/lib/python3.12/site-packages/pre_commit/xargs.pyrrsW 2''*++    ((** s ,,A AAc||nttdtj}dt|z}|j D]"\}}|t|t|zdzz }$|S)Nenvironb)getattrrenvironritems)_envr!sizekvs r _environ_sizer')s]&dGB BJJ,OG s7| D 1 AQ!## Krctjdk(r;tjddz tz }t t |dd}|Stjdk(ryy)Nposix SC_ARG_MAXiiintix)rnamesysconfr'maxmin)maximums r_get_platform_max_lengthr11sS ww'**\*T1MOCc'7+W5 Drcdj|}tjdk(rt|j ddzSt|j tj S)N win32zutf-16ler)joinsysplatformrencodegetfilesystemencoding)cmdfull_cmds r_command_lengthr<=sSxx}H ||w8??:./1448??3#<#<#>?@@rc eZdZy)ArgumentTooLongErrorN)__name__ __module__ __qualname__rrrr>r>Hsrr>cP|xs t}tdtjt ||z }t |}g}g}t t|}t|dz}|r|j}t|dz} || z|kr%t ||kr|j||| z }nH|s t||j|t |zg}t|dz}|j||r|j|t |zt |S)Nr) r1r.mathceilrtuplelistreversedr<popappendr>) r:varargstarget_concurrency _max_lengthmax_argsretret_cmd total_lengtharg arg_lengths r partitionrTLs ;!9!;K1diiG /A ABCH *C CG8G$%G"C(1,L kkm$S)A- z)[8G x' NN3  J &L&s+ + JJsU7^+ ,G*C014L NN3 # &JJsU7^#$ :rc#K|dk(r tytjj|5}|jdddy#1swYyxYww)Nr)map concurrentfuturesThreadPoolExecutor)maxsizeexs r_thread_mapperr\xs>!|    2 27 ;r&&L< ; ;s.AA AA AFr)colorrLrMc |rtntd}d} tj|}t jdk(rT|djjdr2tjd} dt| z td z d z }t||||} d fd } tt| |} t| 5} | | | }|D]$\}}}t|t|kDr|}||z }& ddd||fS#tj$r}|j ddcYd}~Sd}~wwxYw#1swY||fSxYw) zA simplified implementation of xargs. color: Make a pty if on a platform that supports it target_concurrency: Target number of partitions to run concurrently rrNrr4)z.batz.cmdzcmd.exei z /c ic6|dtjdS)NF)checkstderr) subprocessSTDOUT)run_cmdcmd_fnkwargss rrun_cmd_partitionz xargs..run_cmd_partitions' E**;*; ?E  r)rdtuple[str, ...]returnztuple[int, bytes, bytes | None])r r r normalize_cmdExecutableNotFoundError to_outputr6r7lowerendswithfind_executablerrTr/r\abs)r:rKr]rLrMrfretcodestdoutecmd_exe partitionsrgthreads thread_mapresults proc_retcodeproc_out_res ` @rxargsr|sT#\ FG F!))#. LLG # FLLN # #$4 5 // :S\)CK7$> 3);[IJ $ ( #j/#56G  J. ;)0 %L(A< 3w</& h F*1 ! F?C  0 0!{{}Ra  !2 ! F?s)D 3D> D;D60D;6D;>E )riint)N)r#zMutableMapping[str, str] | Nonerir})r:strrir}) r: Sequence[str]rKrrLr}rMz int | Noneriztuple[tuple[str, ...], ...])rZr}rizNGenerator[Callable[[Callable[[TArg], TRet], Iterable[TArg]], Iterable[TRet]],])r:rhrKrr]boolrLr}rMr}rfr riztuple[int, bytes])$ __future__rconcurrent.futuresrW contextlibrDrrrbr6collections.abcrrrrrtypingr r pre_commitr pre_commit.utilr r rrrr'r1r< RuntimeErrorr>rTcontextmanagerr\r|rrrrs"   $%$*$$((vv  A < #' ) )) ) ) ! )X "#35 5 55 5  5  555r