
    qiG!                        d Z ddlZddlmZmZmZ ddlZddlmZ ddl	m
Z
 ddlmZ ddlmZmZ ddlmZmZmZmZ d	d
lmZmZmZmZ g dZ ej6                  e      Zdej<                  ddddddddddfdedeeee        ejB                  d      f   dededeeee        ejD                  d      f   deeee        ejD                  d      f   deee     ejD                  d      f   deee     ejD                  d      f   dee# ejD                  d      f   dee# ejD                  d      f   d ed!ee# ejD                  d"      f   d#ee$ ejD                  d$      f   d%dfd&Z%y)'a  Contains command to download files from the Hub with the CLI.

Usage:
    hf download --help

    # Download file
    hf download gpt2 config.json

    # Download entire repo
    hf download fffiloni/zeroscope --repo-type=space --revision=refs/pr/78

    # Download repo with filters
    hf download gpt2 --include="*.safetensors"

    # Download with token
    hf download Wauplin/private-model --token=hf_***

    # Download quietly (no progress bar, no warnings, only the returned path)
    hf download gpt2 config.json --quiet

    # Download to local dir
    hf download gpt2 --local-dir=./models/gpt2

    # Download a subfolder
    hf download HuggingFaceM4/FineVision art/ --repo-type=dataset
    N)	AnnotatedOptionalUnion)logging)snapshot_download)CLIError)DryRunFileInfohf_hub_download)_format_sizedisable_progress_barsenable_progress_barstabulate   )	RepoIdArgRepoTypeOptRevisionOptTokenOpt)z,hf download meta-llama/Llama-3.2-1B-InstructzGhf download meta-llama/Llama-3.2-1B-Instruct config.json tokenizer.jsonzXhf download meta-llama/Llama-3.2-1B-Instruct --include "*.safetensors" --exclude "*.bin"zGhf download meta-llama/Llama-3.2-1B-Instruct --local-dir ./models/llamaz=hf download HuggingFaceM4/FineVision art/ --repo-type datasetF   repo_id	filenamesz>Files to download (e.g. `config.json`, `data/metadata.jsonl`).)help	repo_typerevisionincludez;Glob patterns to include from files to download. eg: *.jsonexcludez0Glob patterns to exclude from files to download.	cache_dirzDirectory where to save files.	local_dirzIf set, the downloaded file will be placed under this directory. Check out https://huggingface.co/docs/huggingface_hub/guides/download#download-files-to-a-local-folder for more details.force_downloadzFIf True, the files will be downloaded even if they are already cached.dry_runzAIf True, perform a dry run without actually downloading the file.tokenquietzWIf True, progress bars are disabled and only the path to the download files is printed.max_workerszEMaximum number of workers to use for downloading files. Default is 8.returnc                    	
 dt         t        t        t        t           f   f	 
fd}dt         t        t        t        t           f   ddfd}|rTt	                t        j                         5  t        j                  d        | |              ddd       t                y | |              t        j                          y# 1 sw Y   t                yxY w)zDownload files from the Hub.r#   c                  n   

ng } | D cg c]  }|j                  d      s| }}|D cg c]  }|j                  d       d }}| D cg c]  }|j                  d      r| }}t        |      dkD  rP&t              dkD  rt        d|d    d|d    d      	&t        	      dkD  rt        d|d    d|d    d      t        |      dkD  rJ#t              dkD  rt	        j
                  d	       	#t        	      dkD  rt	        j
                  d
       t        |      dk(  r0t        |      dk(  r"t        j                  |d   d
      S t        |      dk(  rt        |      dk(  r}	}n||z   }d }t        j                  ||d      S c c}w c c}w c c}w )N/z/**r   z$Cannot combine subfolder argument ('z,') with `--include`. Please use `--include "z*"` instead.z,') with `--exclude`. Please use `--include "z*"` with `--exclude` instead.z?Ignoring `--include` since filenames have being explicitly set.z?Ignoring `--exclude` since filenames have being explicitly set.r   zhuggingface-cli)
r   r   r   filenamer   r   r    r   library_namer   )r   r   r   allow_patternsignore_patternsr   r   r    r   r(   r"   r   )	endswithrstriplenr   warningswarnr
   valuer   )filenames_listf
subfolderssubfolder_patternsregular_filenamesr)   r*   r   r   r   r   r   r   r   r"   r   r   r   r    s          N/opt/pipecat/venv/lib/python3.12/site-packages/huggingface_hub/cli/download.pyrun_downloadzdownload.<locals>.run_download   s   &/&; "0CA1::c?aC
C=GH#s3HH(6N1ajjoQNN !"Q&"s7|a'7::a=/ J..8m_LJ  "s7|a'7::a=/ J..8m_<Y[   !A%"s7|a'7_`"s7|a'7_`  !Q&3/A+Ba+G"#//!*1-#-#.   !Q&3/A+Ba+G$N%O /1CCN"O oo)+)*#
 	
e DHNs   F(F(F-F2%F2resultNc                    t        | t              rt        |        y t        | t              r| g} t        dt	        | D cg c]  }|j
                  s| c}       dt	        |        dt        t        d | D                     d       ddg}g }t        | d 	      D ]@  }|j                  |j                  |j
                  rt        |j                        nd
g       B t        t        ||             y c c}w )Nz[dry-run] Will download z files (out of z) totalling c              3   N   K   | ]  }|j                   s|j                    y wN)will_download	file_size).0rs     r6   	<genexpr>z2download.<locals>._print_result.<locals>.<genexpr>   sE       M}  ^_  mn  m|  m|  NO  NY  NY  M}s   %%.FilezBytes to downloadc                     | j                   S r;   )r'   )xs    r6   <lambda>z1download.<locals>._print_result.<locals>.<lambda>   s
         )key-)headers)
isinstancestrprintr	   r-   r<   r   sumsortedappendr'   r=   r   )r8   r?   columnsitemsinfos        r6   _print_resultzdownload.<locals>._print_result   s   fc"&M fn-XF&sv+Q!A+Q'R&SSbcfgmcnboo{  }I  JM  M}  ci  M}  J}  }~  |  @  A	
 ./-/6';< 	gDLL$--I[I[dnn)Eadef	ghug./ ,Rs   C9C9ignore)r   rK   r	   listr   r.   catch_warningssimplefilterr   r   set_verbosity_warning)r   r   r   r   r   r   r   r   r   r   r    r!   r"   r7   rS   s   ``````````` `  r6   downloadrY   D   s    |D
%^T.5I IJ D
 D
 D
L0eCn9M$MN 0SW 0" $$& 	*!!(+,.)	* 	ln%%%'	* 	s   #CC-)&__doc__r.   typingr   r   r   typerhuggingface_hubr   "huggingface_hub._snapshot_downloadr   huggingface_hub.errorsr   huggingface_hub.file_downloadr	   r
   huggingface_hub.utilsr   r   r   r   
_cli_utilsr   r   r   r   DOWNLOAD_EXAMPLES
get_logger__name__loggermodelrU   rK   ArgumentOptionboolintrY    rF   r6   <module>rm      se  6  - -  # @ + I e e E E  
		H	% 	(..  	 	 	 	 	 	 	 	
u](](cQ	
	]( ]( ]( cN	
	](  cC	
	!](, 1	
	-](8  M	
	9](D Y	
	E](P T	
	Q](\ ]](^ j	
	_](j X	
	k](v 
w](rF   