wL i= ~dZddlZddlZddlmZmZddlmZddlm Z ddl m Z m Z m Z mZmZmZmZddlmZmZmZmZmZd d lmZd d lmZmZ dd lmZdd lm Z ddl!m"Z"dZ#edZ%dZ&de de fdZ'GddeZ(dddede)de*fdZ+d1dedee%fdZ,e' d1dedee*dee%dee*fd Z-e'd2d!e*d"e.de.fd#Z/ d1d$e edee*dee%defd%Z0 d1dedee*dee%dee*fd&Z1d2d!e*d"e.de.fd'Z2ded(ee*de*fd)Z3d*e*dee*fd+Z4d,e&d-e&d.jkZ6d/ede fd0Z7y#e$$rdZ#YwxYw)3zKContains the 'hf cache' command group with 'scan' and 'delete' subcommands.N) Namespace_SubParsersActionwraps)mkstemp)AnyCallableIterableListLiteralOptionalUnion)CachedRepoInfoCachedRevisionInfo CacheNotFound HFCacheInfoscan_cache_dir)BaseHuggingfaceCLICommand)ANSItabulate)inquirer)Choice) SeparatorTF alphabetical lastUpdatedlastUsedsizeCANCEL_DELETIONfnreturnc.tfd}|S)Nc6ts td|i|S)NzThe 'cache delete' command requires extra dependencies for the TUI. Please run 'pip install "huggingface_hub[cli]"' to install them. Otherwise, disable TUI using the '--disable-tui' flag.)_inquirer_py_available ImportError)argskwargsr"s _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/huggingface_hub/cli/cache.py_innerz#require_inquirer_py.._inner,s+%I  4"6""r)r"r+s` r*require_inquirer_pyr-+s  2Y## Mr,cDeZdZedefdZdeddfdZdZdZ d Z y) CacheCommandparserc |jddjdd}jfd|jd d }|jd tdd |jddddd|jt d |jdd}|jd tdd |jddd|jddgdd |jt dy)!NcachezManage local cache directory.)help cache_commandzCache subcommands)destr3c$jSN) print_help)r( cache_parsers r*z2CacheCommand.register_subcommand..@sL4K4K4Mr,)funcscanzScan cache directory.z--dirzMcache directory to scan (optional). Default to the default HuggingFace cache.)typedefaultr3z-vz --verbosecountrzshow a more verbose output)actionr>r3)r;r4deletez*Delete revisions from the cache directory.zEcache directory (optional). Default to the default HuggingFace cache.z --disable-tui store_truezrDisable Terminal User Interface (TUI) mode. Useful if your platform/terminal doesn't support the multiselect menu.)r@r3z--sort?rzSort repositories by the specified criteria. Options: 'alphabetical' (A-Z), 'lastUpdated' (newest first), 'lastUsed' (most recent first), 'size' (largest first).)nargschoicesr3) add_parseradd_subparsers set_defaults add_argumentstrr/)r0cache_subparsers scan_parser delete_parserr9s @r*register_subcommandz CacheCommand.register_subcommand:sB((7V(W '66ORe6f !!'M!N'11&?V1W   ` !    - !    l& I(33HCo3p "" X # "" E #  "" G* #  "" H"Mr,r(r#Nc||_t|dd|_t|dd|_t|dd|_t|dd|_t|dd|_y)Nverboserdir disable_tuiFsortr4)r(getattr verbosity cache_dirrRsort_byr4)selfr(s r*__init__zCacheCommand.__init__os[ %dIq9(/eT(B!(}e!D29$2M ,3D/4,Pr,c|jdk(r|jy|jdk(r|jytdy)Nr<rAzDPlease specify a cache subcommand (scan or delete). Use -h for help.)r4 _run_scan _run_deleteprint)rXs r*runzCacheCommand.runws=    ' NN    8 +     X Yr,c 6 tj}t|j}tj}t t ||j t dt||z ddt|jdtj|jdt|jdkDrd t|jd }|j d k\rWt tj||jD])}t tjt|+yt tj|d zyy#t$r$}|j}t d|Yd}~yd}~wwxYw) NzCache directory not found: rUz Done in rz s. Scanned z repo(s) for a total of .rzGot z warning(s) while scanning.z Use -vvv to print details.)timerrVrr] get_tablerUroundlenreposrredsize_on_disk_strwarningsgrayrJ)rXt0 hf_cache_infot1excrVmessagewarnings r*r[zCacheCommand._run_scansS B*4>>:MB i @A rBw*+;s=;N;N7O6PQ#xx (F(FGH K  }%% & *S!7!7899TUG~~"dii(),553G$))CL123dii*G GHI +  I / {; <  s=E++ F4FFc 2t|j}|jrt|g|j}nt |g|j}t |dkDrt|vrt||dz}|jr t|}n t|}|rp|j|}td|jtdt |jdt |jd|j dytd y) N) preselectedrWrz Confirm deletion ?zStart deletion.zDone. Deleted z repo(s) and z revision(s) for a total of raz"Deletion is cancelled. Do nothing.)rrVrR_manual_review_no_tuirW_manual_review_tuirf_CANCEL_DELETION_STR_get_expectations_str_ask_for_confirmation_no_tui_ask_for_confirmation_tuidelete_revisionsr]executerg snapshotsexpected_freed_size_str)rXrmselected_hashesconfirm_message confirmedstrategys r*r\zCacheCommand._run_deletes&t~~6   3Mr[_[g[ghO0BX\XdXdeO  ! #(. r,keyz{:>12}, )REPO ID REPO TYPE SIZE ON DISKNB FILES LAST_ACCESSED LAST_MODIFIEDREFS LOCAL PATH)rowsheadersc|jSr7rrs r*r:zget_table..rr,c|jSr7) commit_hashrevisions r*r:zget_table..s HL`L`r,)rrREVISIONrrrrr)rsortedrgrepo_id repo_typeformatrinb_fileslast_accessed_strlast_modified_strjoinrefsrJr revisionsr snapshot_path)rmrUrrs r*rdrdshA~#=#6#6%%..IIfX]]34../       3 4 s BF!B.F rrWc|dk(r&|j|jjfS|dk(rtd|jD S|dk(r |j S|dk(r |j S|j|jfS)Nrrc34K|]}|jywr7 last_modified).0revs r* z(_get_repo_sorting_key..s@#C%%@srr )rrlowermaxr last_accessed size_on_diskrrWs r*_get_repo_sorting_keyrs.  2 2 455 M !@@@@@ J """" F !!!! --r,rsctj||}tjd|ddt |Dcgc],}t |t s|js!|j.c}ddfd }jd jd |i jScc}w#t$rgcYSwxYw) N)rgrsrWzSelect revisions to delete:Fdr~zWPress to select, to validate and to quit without modification.ct|dS)Nz revision(s) selected.)rf)results r*r:z$_manual_review_tui..sc&k]2H#Ir,)rprEcycleheight instructionlong_instruction transformerctjjDcgc] }|ds |dc}_ycc}w)Nenabledvaluer)rwcontent_controlrE _instruction)_choicecheckboxrms r*_update_expectationsz0_manual_review_tui.._update_expectationss= 5 ;C;S;S;[;[q_efo_pVG_q! qs A A toggler;) _get_tui_choices_from_scanrgrrrw isinstancerrrkb_func_lookupappendr{KeyboardInterrupt)rmrsrWrEcrrs` @r*rurus)}/B/BP[elmG  -) W+l STV\H]bcbkbkAGG+l sI H  H%,,f6J-KL!!,m  s#B0 B0B0 B55 CCrpr>cLtj||jS)Nr>)rconfirmr{)rpr>s r*ryrys   GW 5 = = ??r,rgcfg}|jttddt|fd}|D]}|jt d|j j d|jd|jd |jd t|jtD]z}|jt|j|jdd d d jt|jxsdd|j|j|v||S)Nz=None of the following (if selected, nothing will be deleted).F)namerct|Sr7rrs r*r:z,_get_tui_choices_from_scan.. s2Gg2Vr,r   (, used )z: r (detached) # modified )rrrvrrr capitalizerrirr_revision_sorting_orderrrrr)rgrsrWrE sorted_reposrrs ` r*rrs<35G NN 'fpu  %%VWL T^^..014<<.4CXCXBYY`aeawaw`xxyz  t~~3JK H NN((#//34Btyy AV7W7g[g6hhtu}vPvPuQR$00K?     Nr,c 0td\}}tj|g}t|jfd}|D]}|j d|j jd|jd|jd|jd t|jtD]h}|j |j|vrd nd d |jd djt|jxsdd|j jt#|d5} | j%t&| j%dj|ddddt)j*|d} t-djd| j/j1dD t3|} t5t7|| dzdrn'tj8|t| S#1swYxYw)Nz.txt)suffixct|Sr7rrs r*r:z'_manual_review_no_tui..:s@UVZ\c@dr,rz # rrrr#z z # Refs: rrrwra* TUI is disabled. In order to select which revisions you want to delete, please edit the following file using the text editor of your choice. Instructions for manual editing are located at the beginning of the file. Edit the file, save it and confirm to continue. File to edit: z c3<K|]}|jywr7)strip)rlines r*rz(_manual_review_no_tui..MsNTDJJLNsz Continue ?Fr)roscloserrgrrrrrirrrrrrropenwrite"_MANUAL_REVIEW_NO_TUI_INSTRUCTIONSrboldr]rsplit_read_manual_review_tmp_filerxrwremove) rmrsrWfdtmp_pathlinesrrrf instructionsr~s ` r*rtrt4s+&)LBHHRL E---3deL 4>>,,./qbAVAV@WW^_c_u_u^vvw x t~~3JK H LL!--<2#Fc(J^J^I__himirirsy{C{H{HtIjJjZNZi[[ghphBhBgCD    h " 23  % !" 99X&'( L $))N\-?-?-A-G-G-MN NO 6x@ ' !- AM Q[`    IIh / ""%""s /6H  Hcd}d}d}||z|fz}||rdndz} t|j}||k(r|S||vry||vrytd|9) N)yyes1)nno0rz (Y/n) z (y/N) TFzInvalid input. Must be one of )inputrr])rpr>YESNODEFAULTALL full_messageanswers r*rxrxXs{ C BG (gZ C7i BL |$**, W N S= R< .se45 r,r~cht|vry|j|}t|d|jdS)NzNothing will be deleted.z! revisions selected counting for ra)rvrzrfr})rmr~rs r*rwrwisA.)-}--?H/" ##DXEeEeDffg hhr,rct|5}|j}dddjdDcgc]}|j}}|Dcgc]}|j dr|}}|Dcgc]$}|jddj&}}|Dcgc]}t |dkDs|c}S#1swYxYwcc}wcc}wcc}wcc}w)Nrrr)rreadrr startswithrf)rrcontentrrselected_linesr~hashs r*rrps h1&&(&-mmD&9 :dTZZ\ :E :',ItDOOC4HdINI>LMdtzz#q)//1MOM, >TD A D >>  :IM >s.CC C,C6)C%C9CC a # INSTRUCTIONS # ------------ # This is a temporary file created by running `hf cache delete --disable-tui`. It contains a set of revisions that can be deleted from your local cache directory. # # Please manually review the revisions you want to delete: # - Revision hashes can be commented out with '#'. # - Only non-commented revisions in this file will be deleted. # - Revision hashes that are removed from this file are ignored as well. # - If `aY` line is uncommented, the all cache deletion is cancelled and no changes will be applied. # # Once you've manually reviewed this file, please confirm deletion in the terminal. This file will be automatically removed once done. # ------------ # KILL SWITCH # ------------ # Un-comment following line to completely cancel the deletion process # z, # ------------ # REVISIONS # ------------ rc|jSr7rrs r*rrs  ! !!r,r7)T)8__doc__rrcargparserr functoolsrtempfilertypingrr r r r r rutilsrrrrrrr _cli_utilsrr InquirerPyrInquirerPy.base.controlrInquirerPy.separatorrr&r'SortingOption_Trvr-r/intrJrdrruboolryrrtrxrwrrrrrr,r*rsJR 1JJJbb'&##..!KL( H  s4,s4l?@5 [5 5 C5 p . ./9R .]a-1#YAI/AZ #Y:@s@T@T@@ cg N #26s)FNF_ <^b!#!#-1#Y!#AI/AZ!# #Y!#H6#666"iitCyiUXi?3?49? *  !#&, EG-#2"&8"S"] #"#sD22D<;D<