Ë
    Z²j0e  ã            $       óü
  — d Z ddlZddlZddlmZ ddlZddlmZ ddlm	Z	m
Z
mZmZmZ ddlmZmZmZ ddlmZ d	d
lmZmZmZmZ d	dlmZmZ d	dlmZmZ  ej>                  e «      Z! ed¬«      Z"e"jG                  dg d¢¬«      	 	 	 	 ddee$ ejJ                  d¬«      f   dee& ejN                  dd¬«      f   deedz   ejN                  dd¬«      f   dee& ejN                  dd¬«      f   deddfd„«       Z(d e$de&fd!„Z)e"jG                  d"g d#¢¬«      	 	 	 	 	 	 d€d ee$dz   ejJ                  d$¬«      f   d%ee& ejN                  d&d'd(¬«      f   d)ee& ejN                  d*d+¬«      f   d,ee& ejN                  d-d.d/¬«      f   d0ededdfd1„«       Z*d2e$dz  d0e$dz  d%e&d)e&d,e&de$dz  ddfd3„Z+d e$d%e&d)e&d,e&de$dz  ddfd4„Z,e"jG                  d5d6d7g¬«      	 d�dee$ ejJ                  d8¬«      f   deddfd9„«       Z-e"jG                  d:g d;¢¬«      	 	 	 d‚dee$ ejJ                  d8¬«      f   d<ee& ejN                  d=d>d?¬«      f   d@ee& ejN                  dAdB¬«      f   deddf
dC„«       Z.e"jG                  dDg dE¢¬«      	 	 	 	 	 	 dƒd ee$ ejJ                  dF¬«      f   d,ee& ejN                  d-d.dG¬«      f   d<ee& ejN                  d=d>d?¬«      f   dHee& ejN                  dIdJ¬«      f   dKee/e$   dz   ejN                  dL¬«      f   dMee/e$   dz   ejN                  dN¬«      f   deddfdO„«       Z0e"jG                  dPg dQ¢¬«      	 d�dRee$ ejJ                  dS¬«      f   dTee$ ejJ                  dU¬«      f   deddfdV„«       Z1e"jG                  dWg dX¢¬«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d„dYee$dz   ejJ                  dZ¬«      f   d[ee$dz   ejJ                  d\¬«      f   d:ee& ejN                  d]¬«      f   d^ee& ejN                  d_d`¬«      f   daee& ejN                  dbdc¬«      f   ddee$dz   ejN                  de¬«      f   dfee$dz   ejN                  dg¬«      f   dHee& ejN                  dIdh¬«      f   dKee/e$   dz   ejN                  di¬«      f   dMee/e$   dz   ejN                  dj¬«      f   dkee$dz   ejN                  dl¬«      f   dmee& ejN                  dndo¬«      f   dpee& ejN                  dqdr¬«      f   dsee& ejN                  dtdudv¬«      f   deddf dw„«       Z2e"jG                  dxg dy¢¬«      	 	 d…dzee$ ejJ                  d{¬«      f   d|ee$dz   ejJ                  d}¬«      f   deddfd~„«       Z3y)†z7Contains commands to interact with buckets via the CLI.é    N)Ú	Annotated)Úlogging)ÚBUCKET_PREFIXÚ
BucketFileÚFilterMatcherÚ_is_bucket_pathÚ_parse_bucket_uri)ÚSoftTemporaryDirectoryÚdisable_progress_barsÚ	is_hf_urié   )ÚREPO_REGIONSé   )Ú	SearchOptÚTokenOptÚ
get_hf_apiÚtyper_factory)Úformat_sizeÚprint_file_listing)ÚOutputFormatWithAutoÚoutz"Commands to interact with buckets.)ÚhelpÚcreate)zhf buckets create my-bucketz hf buckets create user/my-bucketz-hf buckets create hf://buckets/user/my-bucketz*hf buckets create user/my-bucket --privatez+hf buckets create user/my-bucket --exist-okz,hf buckets create user/my-bucket --region us)ÚnameÚexamplesÚ	bucket_idzTBucket ID: bucket_name, namespace/bucket_name, or hf://buckets/namespace/bucket_nameÚprivatez	--privatezCreate a private bucket.Úregionz--regionzdCloud region in which to create the bucket. Can be one of 'us' or 'eu'. Requires Team plan or above.Úexist_okz
--exist-okz3Do not raise an error if the bucket already exists.ÚtokenÚreturnc                 ór  — t        |¬«      }| j                  t        «      rCt        | «      }|j                  r t        j                  d| › dt        › d�«      ‚|j                  } |j                  | |r|nd||¬«      }t        j                  d|j                  j                  «       |j                  ¬«       y)	zCreate a new bucket.©r    z-Cannot specify a prefix for bucket creation: ú. Use namespace/bucket_name or únamespace/bucket_name.N)r   r   r   zBucket created)ÚuriÚurl)r   Ú
startswithr   r	   Úpath_in_repoÚtyperÚBadParameterÚidÚcreate_bucketr   Úresultr&   Úto_urir'   )r   r   r   r   r    ÚapiÚparsedÚ
bucket_urls           úZ/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/huggingface_hub/cli/buckets.pyr   r   1   s²   € ôT ˜5Ô
!€Cà×ÑœMÔ*Ü" 9Ó-ˆØ×ÒÜ×$Ñ$Ø?À	¸{ð K1Ü1>°Ð?UðWóð ð —I‘Iˆ	à×"Ñ"ØÙ"‘¨ØØð	 #ó €Jô ‡J�JÐ Z§^¡^×%:Ñ%:Ó%<À*Ç.Á.ÖQó    Úargumentc                 ód   — | j                  t        «      r| t        t        «      d }d|v S | }d|v S )zFCheck if argument is a bucket ID (namespace/name) vs just a namespace.Nú/)r(   r   Úlen)r5   Úpaths     r3   Ú_is_bucket_idr:   o   s?   € à×Ñœ=Ô)ØœœMÓ*Ð,Ð-ˆð �$ˆ;Ðð ˆØ�$ˆ;Ðr4   z	list | ls)
zhf buckets listzhf buckets list huggingfacez$hf buckets list --search "my-prefix"zhf buckets list user/my-bucketz!hf buckets list user/my-bucket -Rz!hf buckets list user/my-bucket -hz%hf buckets list user/my-bucket --treez(hf buckets list user/my-bucket --tree -hz+hf buckets list hf://buckets/user/my-bucketz%hf buckets list user/my-bucket/sub -RzyNamespace (user or org) to list buckets, or bucket ID (namespace/bucket_name(/prefix) or hf://buckets/...) to list files.Úhuman_readablez--human-readablez-hz$Show sizes in human readable format.Úas_treez--treez3List files in tree format (only for listing files).Ú	recursivez--recursivez-Rz0List files recursively (only for listing files).Úsearchc                 óœ   — | duxr t        | «      }|r(|�t        j                  d«      ‚t        | ||||¬«       yt	        | |||||¬«       y)z½List buckets or files in a bucket.

    When called with no argument or a namespace, lists buckets.
    When called with a bucket ID (namespace/bucket_name), lists files in the bucket.
    Nz'Cannot use --search when listing files.)r5   r;   r<   r=   r    )Ú	namespacer>   r;   r<   r=   r    )r:   r*   r+   Ú_list_filesÚ_list_buckets)r5   r;   r<   r=   r>   r    Úis_file_modes          r3   Úlist_cmdrD   x   sg   € ðr  4Ð'ÒC¬M¸(Ó,C€LáØÐÜ×$Ñ$Ð%NÓOÐOÜØØ)ØØØö	
ô 	ØØØ)ØØØö	
r4   r@   c           	      ó
  — |rt        j                  d«      ‚|rt        j                  d«      ‚| �8| j                  t        «      r#| t	        t        «      d } | j                  d«      } t        |¬«      }|j                  | |¬«      D �cg c]T  }|j                  |j                  |rt        |j                  |«      n|j                  |j                  |j                  dœ‘ŒV }}t        j                  |ddd	œ¬
«       yc c}w )zList buckets in a namespace.z'Cannot use --tree when listing buckets.z,Cannot use --recursive when listing buckets.Nr7   r#   )r@   r>   )r,   r   ÚsizeÚtotal_filesÚ
created_atÚright)rF   rG   )Ú
alignments)r*   r+   r(   r   r8   Úrstripr   Úlist_bucketsr,   r   r   rF   rG   rH   r   Útable)	r@   r>   r;   r<   r=   r    r0   ÚbucketÚitemss	            r3   rB   rB   È   sõ   € ñ Ü× Ñ Ð!JÓKÐKÙÜ× Ñ Ð!OÓPÐPð Ð ×!5Ñ!5´mÔ!DØœc¤-Ó0Ð2Ð3ˆ	à×$Ñ$ SÓ)ˆ	ä
˜5Ô
!€Cð ×&Ñ&°À6Ð&ÓJö	ð ð —)‘)Ø—~‘~Ù@N”K §¡¨^Ô<ÐTZ×T_ÑT_Ø!×-Ñ-Ø ×+Ñ+ó	
ð	€Eð 	ô ‡I�Iˆe¨ÀÑ IÖJùò	s   Â
AD c                 ó*  — |r6t         j                  t        j                  k(  rt	        j
                  d«      ‚t        |¬«      }t        | «      }t        |j                  |j                  |j                  xs d|¬«      «      }t        ||||¬«       y)zList files in a bucket.z%Cannot use --tree with --format json.r#   N©Úprefixr=   )r;   r<   r=   )r   Úmoder   Újsonr*   r+   r   r	   ÚlistÚlist_bucket_treer,   r)   r   )r5   r;   r<   r=   r    r0   r1   rO   s           r3   rA   rA   ë   s…   € ñ ”3—8‘8Ô3×8Ñ8Ò8Ü× Ñ Ð!HÓIÐIä
˜5Ô
!€CÜ˜xÓ(€FÜØ×ÑØ�I‰IØ×&Ñ&Ò.¨$Øð 	ó 	
ó€Eô �u¨^ÀWÐXaÖbr4   Úinfozhf buckets info user/my-bucketz+hf buckets info hf://buckets/user/my-bucketzFBucket ID: namespace/bucket_name or hf://buckets/namespace/bucket_namec                 ó–   — t        |¬«      }t        | «      }|j                  |j                  «      }t	        j
                  |d¬«       y)zGet info about a bucket.r#   r,   )Úid_keyN)r   r	   Úbucket_infor,   r   Údict)r   r    r0   r1   rN   s        r3   rW   rW     s8   € ô" ˜5Ô
!€CÜ˜yÓ)€FØ�_‰_˜VŸY™YÓ'€FÜ‡H�HˆV˜DÖ!r4   Údelete)z hf buckets delete user/my-bucketz-hf buckets delete hf://buckets/user/my-bucketz&hf buckets delete user/my-bucket --yesz-hf buckets delete user/my-bucket --missing-okÚyesz--yesz-yzSkip confirmation prompt.Ú
missing_okz--missing-okz3Do not raise an error if the bucket does not exist.c                 ó   — | j                  t        «      rDt        | «      }|j                  r t	        j
                  d| › dt        › d�«      ‚|j                  } n$d| vr t	        j
                  d| › dt        › d�«      ‚t        j                  d| › d�|¬	«       t        |¬
«      }|j                  | |¬«       t        j                  d| ¬«       y)zDelete a bucket.

    This deletes the entire bucket and all its contents. Use `hf buckets rm` to remove individual files.
    z-Cannot specify a prefix for bucket deletion: r$   r%   r7   zInvalid bucket ID: z-. Must be in format namespace/bucket_name or z(Are you sure you want to delete bucket 'ú'?©r]   r#   )r^   zBucket deleted)r   N)r(   r   r	   r)   r*   r+   r,   r   Úconfirmr   Údelete_bucketr.   )r   r]   r^   r    r1   r0   s         r3   r\   r\     sÚ   € ðJ ×ÑœMÔ*Ü" 9Ó-ˆØ×ÒÜ×$Ñ$Ø?À	¸{ð K1Ü1>°Ð?UðWóð ð —I‘I‰	Ø	�IÑ	Ü× Ñ Ø! ) ð -;Ü;H¸/ÐI_ðaó
ð 	
ô
 ‡K�KÐ:¸9¸+ÀRÐHÈcÕRä
˜5Ô
!€CØ×Ñ�i¨JÐÔ7Ü‡J�JÐ¨9Ö5r4   zremove | rm)z)hf buckets remove user/my-bucket/file.txtz2hf buckets rm hf://buckets/user/my-bucket/file.txtz.hf buckets rm user/my-bucket/logs/ --recursivez:hf buckets rm user/my-bucket --recursive --include "*.tmp"z8hf buckets rm user/my-bucket/data/ --recursive --dry-runz¡Bucket path: namespace/bucket_name/path or hf://buckets/namespace/bucket_name/path. With --recursive, namespace/bucket_name is also accepted to target all files.z0Remove files recursively under the given prefix.Údry_runz	--dry-runz8Preview what would be deleted without actually deleting.ÚincludezQInclude only files matching pattern (can specify multiple). Requires --recursive.ÚexcludezLExclude files matching pattern (can specify multiple). Requires --recursive.c                 ó:  ‡— t        | «      }|j                  Š|j                  }|dk(  r|st        j                  d‰› d‰› d�«      ‚|s|r|st        j                  d«      ‚t        |¬«      }	|�rt        j                  d«      }
g }|	j                  ‰|xs dd	¬
«      D ]B  }t        |t        «      sŒ|j                  |«       |
j                  dt        |«      › d�«       ŒD |
j                  dt        |«      › d�«       |s|r9t        ||¬«      }|D �cg c]   }|j!                  |j"                  «      sŒ|‘Œ" }}n|}|D �cg c]  }|j"                  ‘Œ }}t%        d„ |D «       «      }t'        |d	¬«      }|st        j(                  d«       yt        |«      › d|› �}|sK|sIt        j(                  dj+                  d„ |D «       «      «       t        j,                  d|› d‰› d�d¬«       |rGt        j(                  dj+                  ˆfd„|D «       «      «       t        j(                  d|› d�«       y|	j/                  ‰|¬«       t        j0                  d|› d‰› d�‰t        |«      |¬«       y|}|st        j                  d «      ‚|r7t        j(                  d!t2        › ‰› d"|› �«       t        j(                  d#«       yt        j,                  d$|› d%‰› d�|¬«       |	j/                  ‰|g¬«       t        j0                  d&|‰¬'«       yc c}w c c}w )(zbRemove files from a bucket.

    To delete an entire bucket, use `hf buckets delete` instead.
    Ú z?No file path specified. To remove files, provide a path (e.g. 'zd/FILE') or use --recursive to remove all files. To delete the entire bucket, use `hf buckets delete z`.z,--include and --exclude require --recursive.r#   zListing files from remoteNTrQ   zListing files from remote (z files))Úinclude_patternsÚexclude_patternsc              3   ó4   K  — | ]  }|j                   –— Œ y ­w©N)rF   )Ú.0Úfs     r3   ú	<genexpr>zremove.<locals>.<genexpr>¶  s   è ø€ Ò7 A˜Ÿ�Ñ7ùs   ‚)r;   zNo files to remove.z file(s) totaling ú
c              3   ó&   K  — | ]	  }d |› �–— Œ y­w)z  N© )rm   r9   s     r3   ro   zremove.<locals>.<genexpr>À  s   è ø€ ÒB¨t  D 6œ{ÑBùs   ‚zRemove z from 'r`   Fra   c              3   ó:   •K  — | ]  }d t         › ‰› d|› �–— Œ y­w)údelete: r7   N)r   )rm   r9   r   s     €r3   ro   zremove.<locals>.<genexpr>Ä  s#   øè ø€ ÒcÐPT ¬-¨¸¸À1ÀTÀFÔKÑcùs   ƒz
(dry run) z would be removed.)r\   zRemoved ú')r   Úfiles_deletedrF   zFile path cannot be empty.rt   r7   z"(dry run) 1 file would be removed.zRemove 'z' from 'zFile removed)r9   r   )r	   r,   r)   r*   r+   r   r   ÚstatusrV   Ú
isinstancer   ÚappendÚupdater8   Údoner   Úmatchesr9   Úsumr   ÚtextÚjoinrb   Úbatch_bucket_filesr.   r   )r5   r=   r]   rd   re   rf   r    r1   rR   r0   rw   Ú	all_filesÚitemÚmatcherrn   Úmatched_filesÚ
file_pathsÚ
total_sizeÚsize_strÚcount_labelÚ	file_pathr   s                        @r3   ÚremoverŠ   T  sú  ø€ ôz ˜xÓ(€FØ—	‘	€IØ× Ñ €Fà�‚|™IÜ× Ñ ðØ �kð "DØDMÀ;ÈbðRó
ð 	
ñ 	‘7¡IÜ× Ñ Ð!OÓPÐPä
˜5Ô
!€CâÜ—‘Ð7Ó8ˆà&(ˆ	Ø×(Ñ(ØØ’>˜TØð )ó 
ò 	UˆDô
 ˜$¤
Õ+Ø× Ñ  Ô&Ø—‘Ð ;¼CÀ	»NÐ;KÈ7ÐSÕTð	Uð 	�‰Ð1´#°i³.Ð1AÀÐIÔJá‘gÜ#°WÈwÔWˆGØ(1ÖM 1°W·_±_ÀQÇVÁVÕ5LšQÐMˆMÑMà%ˆMà&3Ö4 �a—f“fÐ4ˆ
Ð4ÜÑ7¨Ô7Ó7ˆ
Ü˜z¸$Ô?ˆáÜ�H‰HÐ*Ô+Øä˜Z›Ð)Ð);¸H¸:ÐFˆá™7Ü�H‰H�T—Y‘YÑB°zÔBÓBÔCÜ�K‰K˜' + ¨g°i°[ÀÐCÈÕOáÜ�H‰H�T—Y‘YÓcÐXbÔcÓcÔdÜ�H‰H�z + Ð.@ÐAÔBØà×Ñ˜y°ÐÔ<Ü�
‰
Ø�{�m 7¨9¨+°QÐ7ØÜ˜j›/Øö		
ð ˆ	ÙÜ×$Ñ$Ð%AÓBÐBáÜ�H‰H�x¤˜¨y¨k¸¸9¸+ÐFÔGÜ�H‰HÐ9Ô:Øä�‰�h˜y˜k¨°)°¸BÐ?ÀSÕIà×Ñ˜y°)°ÐÔ=Ü�
‰
�>¨	¸YÖGùòY Nùò 5s   Ä LÄ:LÅLÚmove)z/hf buckets move user/old-bucket user/new-bucketz/hf buckets move user/my-bucket my-org/my-bucketzIhf buckets move hf://buckets/user/old-bucket hf://buckets/user/new-bucketÚfrom_idzMSource bucket ID: namespace/bucket_name or hf://buckets/namespace/bucket_nameÚto_idzRDestination bucket ID: namespace/bucket_name or hf://buckets/namespace/bucket_namec                 óž  — t        | «      }|j                  r t        j                  d| › dt        › d�«      ‚t        |«      }|j                  r t        j                  d|› dt        › d�«      ‚t        |¬«      }|j                  |j                  |j                  ¬«       t        j                  d|j                  |j                  ¬«       y)z2Move (rename) a bucket to a new name or namespace.z)Cannot specify a prefix for bucket move: r$   r%   r#   )rŒ   r�   zBucket movedN)
r	   r)   r*   r+   r   r   Úmove_bucketr,   r   r.   )rŒ   r�   r    Úparsed_fromÚ	parsed_tor0   s         r3   r‹   r‹   à  sÃ   € ô2 $ GÓ,€KØ×ÒÜ× Ñ Ø7¸°yð A-Ü-:¨OÐ;QðSó
ð 	
ô " %Ó(€IØ×ÒÜ× Ñ Ø7¸°wð ?-Ü-:¨OÐ;QðSó
ð 	
ô
 ˜5Ô
!€CØ‡O�O˜KŸN™N°)·,±,€OÔ?Ü‡J�Jˆ~ {§~¡~¸Y¿\¹\ÖJr4   Úsync)z2hf buckets sync ./data hf://buckets/user/my-bucketz2hf buckets sync hf://buckets/user/my-bucket ./dataz;hf buckets sync ./data hf://buckets/user/my-bucket --deletez^hf buckets sync hf://buckets/user/my-bucket ./data --include "*.safetensors" --exclude "*.tmp"zIhf buckets sync ./data hf://buckets/user/my-bucket --plan sync-plan.jsonlz'hf buckets sync --apply sync-plan.jsonlz<hf buckets sync ./data hf://buckets/user/my-bucket --dry-runzChf buckets sync ./data hf://buckets/user/my-bucket --dry-run | jq .ÚsourcezKSource path: local directory or hf://buckets/namespace/bucket_name(/prefix)ÚdestzPDestination path: local directory or hf://buckets/namespace/bucket_name(/prefix)z/Delete destination files not present in source.Úignore_timesz--ignore-timesz;Skip files only based on size, ignoring modification times.Úignore_sizesz--ignore-sizesz<Skip files only based on modification times, ignoring sizes.Úplanz=Save sync plan to JSONL file for review instead of executing.Úapplyz#Apply a previously saved plan file.z5Print sync plan to stdout as JSONL without executing.z6Include files matching pattern (can specify multiple).z6Exclude files matching pattern (can specify multiple).Úfilter_fromz(Read include/exclude patterns from file.Úexistingz
--existingzASkip creating new files on receiver (only update existing files).Úignore_existingz--ignore-existingzCSkip updating files that exist on receiver (only create new files).Úverbosez	--verbosez-vz%Show detailed logging with reasoning.c                 óâ   — t        |¬«      }|j                  | ||||||||	|
||||t        j                  «       ¬«       |r/t        j                  «       st        j                  d|› d�«       yyy)z0Sync files between local directory and a bucket.r#   )r“   r”   r\   r•   r–   rš   r›   re   rf   r™   r—   r˜   rd   rœ   ÚquietzRun `hf buckets sync --apply z` to execute this plan.N)r   Úsync_bucketr   Úis_quietÚhint)r“   r”   r\   r•   r–   r—   r˜   rd   re   rf   r™   rš   r›   rœ   r    r0   s                   r3   r’   r’     s~   € ôX ˜5Ô
!€CØ‡O�OØØØØ!Ø!ØØ'ØØØØØØØÜ�l‰l‹nð ô ñ" ”C—L‘L”NÜ�‰Ð0°°Ð6MÐNÕOð #€tr4   Úcp)z5hf buckets cp hf://buckets/user/my-bucket/config.jsonz=hf buckets cp hf://buckets/user/my-bucket/config.json ./data/zDhf buckets cp hf://buckets/user/my-bucket/config.json my-config.jsonz7hf buckets cp hf://buckets/user/my-bucket/config.json -z8hf buckets cp my-config.json hf://buckets/user/my-bucketz>hf buckets cp my-config.json hf://buckets/user/my-bucket/logs/zKhf buckets cp my-config.json hf://buckets/user/my-bucket/remote-config.jsonz7hf buckets cp - hf://buckets/user/my-bucket/config.jsonzchf buckets cp hf://buckets/user/my-bucket/logs hf://buckets/user/archive-bucket/  # nests logs/ dirzihf buckets cp hf://buckets/user/my-bucket/logs/ hf://buckets/user/archive-bucket/  # copies contents onlyzehf buckets cp hf://datasets/user/my-dataset/processed/ hf://buckets/user/my-bucket/dataset/processed/ÚsrczJSource: local file, any hf:// URI (model, dataset, bucket), or - for stdinÚdstz=Destination: local path, bucket hf://... URI, or - for stdoutc                 óH
  — t        |¬«      }t        | «      }|duxr t        |«      }t        | «      }|duxr t        |«      }| dk(  }|dk(  }	|r.|r,	 |j                  | |«       t        j                  d| |¬«       y|s0|s.|s,|€t        j                  d«      ‚t        j                  d«      ‚|r|st        j                  d«      ‚|rB|r@t        |«      }|j                  d	k(  s|j                  d
«      rt        j                  d«      ‚|	r|st        j                  d«      ‚|s6|s4t        j                  j                  | «      rt        j                  d«      ‚|�rt        | «      }|j                   |j                  }}|d	k(  s| j                  d
«      rt        j                  d«      ‚|j#                  d
d«      d   }|	rÁt%        «       5  t'        «       5 }t        j                  j)                  ||«      }|j+                  |||fg«       t-        |d«      5 }|j/                  d«      x}r=t0        j2                  j4                  j7                  |«       |j/                  d«      x}rŒ=ddd«       ddd«       ddd«       y|€|}nrt        j                  j                  |«      s0|j                  t        j8                  «      s|j                  d
«      r!t        j                  j)                  ||«      }n|}t        j                  j;                  |«      }|rt        j<                  |d¬«       |j+                  |||fg«       t        j                  d| |¬«       y|rvt        |«      }t0        j>                  j4                  j/                  «       }|jA                  |j                   ||j                  fg¬«       t        j                  dd|¬«       yt        j                  jC                  | «      st        j                  d| › �«      ‚t        |«      }|j                   |j                  }}|d	k(  r t        j                  jE                  | «      }n9|j                  d
«      r&|d
z   t        j                  jE                  | «      z   }n|}|jA                  || |fg¬«       t        j                  d| tF        › |› d
|› �¬«       y# t        $ r#}
t        j                  t        |
«      «      ‚d}
~
ww xY w# 1 sw Y   �Œ‘xY w# 1 sw Y   �Œ–xY w# 1 sw Y   yxY w)zCopy files to or from buckets.r#   Nú-ÚCopied)r£   r¤   z2Missing destination. Provide a bucket path as DST.z;One of SRC or DST must be a bucket path (hf://buckets/...).z+Stdin upload requires a bucket destination.rh   r7   zAStdin upload requires a full destination path including filename.z"Cannot pipe to stdout for uploads.zNSource must be a file, not a directory. Use `hf buckets sync` for directories.zJSource path must include a file name, not just a bucket or directory path.r   éÿÿÿÿÚrbi HèT)r   Ú
Downloaded)ÚaddÚUploadedÚstdinzSource file not found: )$r   r   r   Ú
copy_filesÚ
ValueErrorr*   r+   Ústrr   r.   r	   r)   ÚendswithÚosr9   Úisdirr,   Úrsplitr   r
   r   Údownload_bucket_filesÚopenÚreadÚsysÚstdoutÚbufferÚwriteÚsepÚdirnameÚmakedirsr­   r€   ÚisfileÚbasenamer   )r£   r¤   r    r0   Ú	src_is_hfÚ	dst_is_hfÚsrc_is_bucketÚdst_is_bucketÚsrc_is_stdinÚdst_is_stdoutÚer1   r   rR   ÚfilenameÚtmp_dirÚtmp_pathrn   ÚchunkÚ
local_pathÚ
parent_dirÚdataÚremote_paths                          r3   r¢   r¢   ™  s]  € ô4 ˜5Ô
!€Cä˜#“€IØ˜4�Ò2¤I¨c£N€IÜ# CÓ(€MØ˜t�OÒ<¬¸Ó(<€MØ˜#‘:€LØ˜3‘J€Mñ ‘Yð	-Ø�N‰N˜3 Ô$ô 	�
‰
�8 ¨#Õ.Øñ ¡±|Øˆ;Ü×$Ñ$Ð%YÓZÐZÜ× Ñ Ð!^Ó_Ð_á™MÜ× Ñ Ð!NÓOÐOá™Ü" 3Ó'ˆØ×Ñ "Ò$¨¯©°SÔ(9Ü×$Ñ$Ð%hÓiÐiá™]Ü× Ñ Ð!EÓFÐFá¡´"·'±'·-±-ÀÔ2DÜ× Ñ Ð!qÓrÐrò ä" 3Ó'ˆØ"ŸI™I v×':Ñ':�6ˆ	Ø�RŠ<˜3Ÿ<™<¨Ô,Ü×$Ñ$Ð%qÓrÐrØ—=‘=  aÓ(¨Ñ,ˆáô 'Ó(ñ ;Ü+Ó-ð ;°Ü!Ÿw™wŸ|™|¨G°XÓ>�HØ×-Ñ-¨i¸6À8Ð:LÐ9MÔNÜ˜h¨Ó-ð ;°Ø'(§v¡v¨jÓ'9Ð9˜eÐ9ÜŸJ™J×-Ñ-×3Ñ3°EÔ:ð ()§v¡v¨jÓ'9Ð9˜eÑ9÷;÷;÷;ð ;ð ˆ{Ø%‘
Ü—‘—‘˜sÔ# s§|¡|´B·F±FÔ';¸s¿|¹|ÈCÔ?PÜŸW™WŸ\™\¨#¨xÓ8‘
à �
ô Ÿ™Ÿ™¨Ó4ˆJÙÜ—‘˜J°Õ6à×%Ñ% i°6¸:Ð2FÐ1GÔHÜ�J‰J�|¨°*Ö=á	ä" 3Ó'ˆÜ�y‰y×Ñ×$Ñ$Ó&ˆà×Ñ˜vŸy™y°°f×6IÑ6IÐ/JÐ.KÐÔLÜ�
‰
�: 7°Ö4ô �w‰w�~‰~˜cÔ"Ü×$Ñ$Ð'>¸s¸eÐ%DÓEÐEä" 3Ó'ˆØ"ŸI™I v×':Ñ':�6ˆ	à�RŠ<ÜŸ'™'×*Ñ*¨3Ó/‰KØ�\‰\˜#ÔØ  3™,¬¯©×)9Ñ)9¸#Ó)>Ñ>‰Kà ˆKà×Ñ˜y°°[Ð/AÐ.BÐÔCÜ�
‰
�: 3¬}¨o¸i¸[ÈÈ+ÈÐ,WÖXøôo ò 	-Ü×$Ñ$¤S¨£VÓ,Ð,ûð	-ú÷V;ñ ;ú÷;ñ ;ú÷;ð ;úsV   ÁS ÇTÇATÈAS>É/TÉ7TÓ	S;ÓS6Ó6S;Ó>TÔTÔT	ÔTÔT!)FNFN)NFFFNNrl   )FFN)FFFNNN)NNFFFNNFNNNFFFN)NN)4Ú__doc__r²   r¸   Útypingr   r*   Úhuggingface_hubr   Úhuggingface_hub._bucketsr   r   r   r   r	   Úhuggingface_hub.utilsr
   r   r   Úhf_apir   Ú
_cli_utilsr   r   r   r   Ú_file_listingr   r   Ú_outputr   r   Ú
get_loggerÚ__name__ÚloggerÚbuckets_cliÚcommandr°   ÚArgumentÚboolÚOptionr   r:   rD   rB   rA   rW   r\   rU   rŠ   r‹   r’   r¢   rr   r4   r3   ú<module>rá      sn
  ðñ >ã 	Û 
Ý ã å #÷õ ÷ [Ñ Zå !÷ó ÷ ;ß .ð 
ˆ×	Ñ	˜HÓ	%€ñ Ð!EÔF€ð ×ÑØ	òð ó 
ð0 	ð 	ð 	Øñ90RØØØˆ�‰Øgô	
ð	ñð0Rð ØØˆ�‰ØØ+ô	
ð	ñð0Rð Ø�tÑØˆ�‰ØØwô	
ð	ñð0Rð* ØØˆ�‰ØØFô	
ð	ñð+0Rð8 ð90Rð: 
ò;0Ró
ð0Rðf˜Cð  Dó ð ×ÑØ	òð ó ð0 	ð 	ð 	ð 	ØØñE>
ØØˆd‰
Øˆ�‰ðWô	
ð	ñð>
ð ØØˆ�‰ØØØ7ô	
ð	ñð>
ð$ ØØˆ�‰ØØFô	
ð	ñð%>
ð2 ØØˆ�‰ØØØCô	
ð	ñð3>
ðB ðC>
ðD ðE>
ðF 
òG>
óð>
ðB KØ�T‰zð Kà�$‰Jð Kð ð Kð ð	 Kð
 ð Kð �‰:ð Kð 
ó KðFcØðcàðcð ðcð ð	cð
 �‰:ðcð 
ócð0 ×ÑØ	à(Ø5ðð ó ð ñ"ØØØˆ�‰ØYô	
ð	ñð"ð ð"ð 
ò"óð"ð  ×ÑØ	òð ó ð. 	ð 	Øñ-.6ØØØˆ�‰ØYô	
ð	ñð.6ð 
ØØˆ�‰ØØØ,ô	
ð	ñ
ð.6ð ØØˆ�‰ØØFô	
ð	ñð.6ð, ð-.6ð. 
ò/.6óð.6ðb ×ÑØ	òð ó 	ð6 	ð 	ð 	ð 	ð 	Øñ[HØØØˆ�‰ðaô	
ð	ñðHð ØØˆ�‰ØØØCô	
ð	ñðHð$ 
ØØˆ�‰ØØØ,ô	
ð	ñ
ð%Hð4 ØØˆ�‰ØØKô	
ð	ñð5HðB ØˆS‰	�DÑØˆ�‰Ødô	
ð	ñðCHðN ØˆS‰	�DÑØˆ�‰Ø_ô	
ð	ñðOHðZ ð[Hð\ 
ò]Hó	ðHðD ×ÑØ	òð ó ð* ñ"KØØØˆ�‰Ø`ô	
ð	ñð"Kð ØØˆ�‰Øeô	
ð	ñð"Kð ð"Kð 
ò"Kóð"KðT ×ÑØ	ò	ð ó ð& 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ØñyrPØØˆd‰
Øˆ�‰Ø^ô	
ð	ñðrPð Øˆd‰
Øˆ�‰Øcô	
ð	ñðrPð ØØˆ�‰ØBô	
ð	ñðrPð& ØØˆ�‰ØØNô	
ð	ñð'rPð4 ØØˆ�‰ØØOô	
ð	ñð5rPðB Øˆd‰
Øˆ�‰ØPô	
ð	ñðCrPðN Øˆd‰
Øˆ�‰Ø6ô	
ð	ñðOrPðZ ØØˆ�‰ØØHô	
ð	ñð[rPðh ØˆS‰	�DÑØˆ�‰ØIô	
ð	ñðirPðt ØˆS‰	�DÑØˆ�‰ØIô	
ð	ñðurPð@ Øˆd‰
Øˆ�‰Ø;ô	
ð	ñðArPðL ØØˆ�‰ØØTô	
ð	ñðMrPðZ ØØˆ�‰ØØVô	
ð	ñð[rPðh ØØˆ�‰ØØØ8ô	
ð	ñðirPðx ðyrPðz 
ò{rPóðrPðt ×ÑØ	òð ó ð, 	ØñnYØ	Øˆ^ˆU�^‰^Ð!mÔnÐnñ
ðnYð 
Øˆd‰
�N�E—N‘NÐ(gÔhÐhñ
ð	nYð ðnYð 
ònYó!ñ nYr4   