0i ddlmZddlZddlmZddlmZddl m Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZdd lmZdd lmZ dd ZddZddZy)) annotationsN)Any)output)InvalidConfigError)InvalidManifestError) load_config) load_manifest)LOCAL)META)Store)rmtreec|dtk(ry|dtk(rP|dD]G}|jd}|j|j |d|t j fIy|d|df}|j|}|y ttjj|t j}|j||Dcic]}|d| } }|dD]N}|d| vr |jd| |dd}|j|j |d||dfPycc}w#t$rYywxYw)Nrepohooksadditional_dependenciesrevid) r r getdiscard db_repo_nameCLOCAL_REPO_VERSIONr ospathjoin MANIFEST_FILEr) store all_repos unused_reposrhookdepskeyrmanifestby_ids E/opt/hc_python/lib/python3.12/site-packages/pre_commit/commands/gc.py_mark_used_reposr&sm  F|t f MD8856D  ""4<6$$" "F|T%[)}}S! <  <$RWW\\$%HIH   %2:;($T$Z%(E;MDDz&88)d4j!";<D  ""4<6U " "< $   s 7E D; E  E c ,|j5|j5}|j||jdj }|Dcic] \}}}||f| }}}}t |}|jdj }|Dcgc]\}|} }g} | D]&} t | } | dD]}t||||(| Dcgc]}|f} }|jd| |jdt||D]}t||t|cdddcdddScc}}}wcc}w#t$r| j| YwxYwcc}w#1swYnxYwdddy#1swYyxYw)Nz!SELECT repo, ref, path FROM reposzSELECT path FROM configsreposz"DELETE FROM configs WHERE path = ?z,DELETE FROM repos WHERE repo = ? and ref = ?)exclusive_lockconnect_create_configs_tableexecutefetchallsetrr&rappend executemanysortedr len)rdbr(rrefrrr configs_rowsconfigs dead_configs config_pathconfigpathsks r%_gcr<=s    B ##B' >?HHJ>CDe?4ddC[$&e D9~ zz"<=FFH %12\ED4\2 "K K$[1 #7OD$UI|TJ,#&22\T$\2 ;UC  : <  A 9Q< < ?"1  E3 & ##K0 3+"1   sqF 7E5E )2E5 E & E50 E;E5 E0#AE51 F  E5E- *E5,E- -E55E> :F  FcFtjt|dy)Nz repo(s) removed.r)r write_liner<)rs r%gcr?`s U $567 ) rr rzdict[tuple[str, str], str]rzset[tuple[str, str]]rzdict[str, Any]returnNone)rr rAint) __future__ros.pathrtypingrpre_commit.constants constantsr pre_commitrpre_commit.clientlibrrrr r r pre_commit.storer pre_commit.utilr r&r<r?r@r%rNsk" 35,.&%""((-(+( (  (V !F r@