§
    }ŠtjÄ(  ã            
       óª  — d Z ddlZddlZddlmZ ddlmZmZ ddlZddl	m
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 dd
lmZ ddlmZ g d¢Zed         Zd"dedz  fd„Zdedz  dededz  ddfd„Zdededz  dedz  ddfd„Zde
deddfd„Z de
dededz  ddfd„Z!de
dededdfd„Z"dededefd„Z#de
dedede$ddf
d„Z%de
dedee&z  d eddf
d!„Z'dS )#aÒ  Shared ``cp`` command to copy files between local paths, repositories and buckets.

This single command backs three identical CLI entry points: ``hf cp`` (top-level),
``hf repos cp`` and ``hf buckets cp``. It supports any source/destination combination
of local file, repo/bucket ``hf://`` URI, and ``-`` (stdin/stdout), with two exceptions:
- bucket-to-repo copies are not supported (server limitation), and
- local-to-local copies (use a regular ``cp`` for that).
é    N)Úreplace)Ú	AnnotatedÚLiteral)ÚHfApi)ÚCLIError)ÚHfUriÚSoftTemporaryDirectoryÚdisable_progress_barsÚ	is_hf_uriÚparse_hf_urié   )ÚTokenOptÚ
get_hf_api)ÚArgument)Úout)
z(hf cp hf://username/my-model/config.jsonz6hf cp hf://username/my-model/config.json ./config.jsonz8hf cp hf://datasets/username/my-dataset/data.csv ./data/z3hf cp hf://buckets/username/my-bucket/config.json -zBhf cp ./model.safetensors hf://username/my-model/model.safetensorsz9hf cp ./config.json hf://buckets/username/my-bucket/logs/z3hf cp - hf://buckets/username/my-bucket/config.jsonz;hf cp hf://username/source-model/ hf://username/dest-model/z]hf cp hf://datasets/username/my-dataset/processed/ hf://buckets/username/my-bucket/processed/zihf cp hf://buckets/username/my-bucket/logs/ hf://buckets/username/archive-bucket/  # copies contents only)ÚreposÚbucketsÚcontextc           	      óº   ‡ — 	 	 d
dt           t          t          d¬¦  «        f         dt           t          dz  t          d¬¦  «        f         dt          ddfˆ fd	„}|S )zõBuild the ``cp`` command function for a given alias.

    The three entry points (`hf cp`, `hf repos cp`, `hf buckets cp`) share the exact same logic;
    'context' only adds a guardrail on the remote endpoint type (see `_enforce_context`).
    NÚsrcz?Source: local file, hf:// URI (repo or bucket), or - for stdin.)ÚhelpÚdstzEDestination: local path, hf:// URI (repo or bucket), or - for stdout.ÚtokenÚreturnc                 óL   •— t          ‰| |¦  «         t          | ||¦  «         dS )a  Copy files between local paths, repositories, and buckets.

        Handles uploads (local/stdin -> repo/bucket), downloads (repo/bucket -> local/stdout) and
        remote-to-remote copies (repo/bucket -> repo/bucket). Bucket-to-repo and local-to-local
        copies are not supported. For directories, use `hf upload`/`hf download` (repos) or
        `hf buckets sync` (buckets). Remote-to-remote copies only work within the same storage
        region (https://huggingface.co/docs/hub/storage-regions).
        N)Ú_enforce_contextÚ_run_cp)r   r   r   r   s      €úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/huggingface_hub/cli/_cp.pyÚcpzmake_cp.<locals>.cpC   s/   ø€ õ& 	˜ # sÑ+Ô+Ð+Ý��S˜%Ñ Ô Ð Ð Ð ó    )NN)r   Ústrr   r   )r   r   s   ` r   Úmake_cpr"   <   s™   ø€ ð Øð!ð !ÝÝÝÐ[Ð\Ñ\Ô\ð^ô
ð!õ
 Ý�$‰JÝÐaÐbÑbÔbðdô
ð!õ ð!ð 
ð!ð !ð !ð !ð !ð !ð, €Ir    r   r   r   c                 ó  — | €dS |�t          |¦  «        r|n|}t          |¦  «        sdS | dk    r#t          |¦  «        j        rt          d¦  «        ‚| dk    r#t          |¦  «        j        st          d¦  «        ‚dS dS )a«  Guardrail for the `hf repos cp` / `hf buckets cp` aliases.

    These aliases are exact duplicates of `hf cp`, so a bare `hf repos cp` could otherwise touch a
    bucket (and vice versa). We validate the type of the remote side: the destination for uploads and
    remote-to-remote copies, or the source when downloading to a local path / stdout. The top-level
    `hf cp` (i.e. 'context' is None) accepts any combination.
    Nr   zW`hf repos cp` only works with repositories. Use `hf cp` or `hf buckets cp` for buckets.r   zW`hf buckets cp` only works with buckets. Use `hf cp` or `hf repos cp` for repositories.)r   r   Ú	is_bucketr   )r   r   r   Úremotes       r   r   r   \   sœ   € ð €Øˆà�_­°3©¬�_ˆSˆS¸c€FÝ�VÑÔð ØˆØ�'ÒÐ�l¨6Ñ2Ô2Ô<ÐÝÐpÑqÔqÐqØ�)ÒÐ¥L°Ñ$8Ô$8Ô$BÐÝÐpÑqÔqÐqð ÐÐÐr    r   c                 óÌ  — t          |¬¦  «        }| dk    }|dk    }t          | ¦  «        }|d uot          |¦  «        }|r5|r3|€J ‚|                     | |¦  «         t          j        d| |¬¦  «         d S |s,|s*|€t          j        d¦  «        ‚t          j        d¦  «        ‚|r'|rt          || ¦  «         d S t          || |¦  «         d S |€J ‚t          || ||¬¦  «         d S )N)r   ú-ÚCopied©r   r   z?Missing destination. Provide a repo or bucket hf:// URI as DST.zVOne of SRC or DST must be a repo (hf://username/...) or bucket (hf://buckets/...) URI.)Úsrc_is_stdin)
r   r   Ú
copy_filesr   ÚresultÚclickÚBadParameterÚ_download_file_to_stdoutÚ_download_file_to_localÚ_upload_file_to_remote)r   r   r   Úapir*   Údst_is_stdoutÚ	src_is_hfÚ	dst_is_hfs           r   r   r   p   s3  € Ý
˜5Ð
!Ñ
!Ô
!€Cà˜#’:€LØ˜3’J€MÝ˜#‘”€IØ˜4�Ð2¥I¨c¡N¤N€Ið ð �Yð ØˆˆˆØ�Š�s˜CÑ Ô Ð ÝŒ
�8 ¨#Ð.Ñ.Ô.Ð.Øˆð ð 
˜Yð 
Øˆ;ÝÔ$Ð%fÑgÔgÐgÝÔ Ødñ
ô 
ð 	
ð
 ð Øð 	Ý$ S¨#Ñ.Ô.Ð.ØˆFÝ  S¨#Ñ.Ô.Ð.Øˆð ˆ?ˆ?ˆ?Ý˜3  S°|ÐDÑDÔDÐDÐDÐDr    r2   c                 ó4  — t          |¦  «        }t          ||¦  «        }t          ¦   «         5  t          ¦   «         5 }t          j                             ||¦  «        }t          | ||¦  «         t          |d¦  «        5 }| 	                    d¦  «        x}r;t          j        j                             |¦  «         | 	                    d¦  «        x}°;d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NÚrbi Hè)r   Ú_source_filenamer
   r	   ÚosÚpathÚjoinÚ_download_singleÚopenÚreadÚsysÚstdoutÚbufferÚwrite)r2   r   ÚuriÚfilenameÚtmp_dirÚtmp_pathÚfÚchunks           r   r/   r/   ”   sÂ  € Ý
�sÑ
Ô
€CÝ  SÑ)Ô)€Hå	Ñ	 Ô	 ð 3ð 3Ý#Ñ%Ô%ð 	3¨Ý”w—|’| G¨XÑ6Ô6ˆHÝ˜S # xÑ0Ô0Ð0Ý�h Ñ%Ô%ð 3¨Ø Ÿvšv jÑ1Ô1Ð1�eð 3Ý”JÔ%×+Ò+¨EÑ2Ô2Ð2ð  !Ÿvšv jÑ1Ô1Ð1�eð 3ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3sZ   ®D½AC5Á?ACÃC5ÃC"Ã"C5Ã%C"Ã&C5Ã)DÃ5C9	Ã9DÃ<C9	Ã=DÄDÄDc                 óø  — t          |¦  «        }t          ||¦  «        }|€|}nvt          j                             |¦  «        s4|                     t          j        ¦  «        s|                     d¦  «        r!t          j                             ||¦  «        }n|}t          j                             |¦  «        }|rt          j	        |d¬¦  «         t          | ||¦  «         t          j        d||¬¦  «         d S )Nú/T)Úexist_okÚ
Downloadedr)   )r   r8   r9   r:   ÚisdirÚendswithÚsepr;   ÚdirnameÚmakedirsr<   r   r,   )r2   r   r   rC   rD   Ú
local_pathÚ
parent_dirs          r   r0   r0   ¡   sã   € Ý
�sÑ
Ô
€CÝ  SÑ)Ô)€Hà
€{Øˆ
ˆ
Ý	Œ�Š�sÑ	Ô	ð ˜sŸ|š|­B¬FÑ3Ô3ð °s·|²|ÀCÑ7HÔ7Hð Ý”W—\’\ # xÑ0Ô0ˆ
ˆ
àˆ
å”—’ Ñ,Ô,€JØð /Ý
Œ�J¨Ð.Ñ.Ô.Ð.å�S˜#˜zÑ*Ô*Ð*Ý„Jˆ| ¨*Ð5Ñ5Ô5Ð5Ð5Ð5r    rC   rR   c                 ó~  — |j         r'|                      |j        |j        |fgd¬¦  «         dS t          j                             |¦  «        pd}t          d|¬¦  «        5 }|                      |j        |j	        |j        |j
        |¬¦  «        }t	          j        ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z†Download a single file (repo or bucket) to ``local_path``.

    Used by `_download_file_to_local` and `_download_file_to_stdout`.
    T)Úraise_on_missing_filesú.z.tmp)ÚprefixÚdir)Úrepo_idÚ	repo_typerD   ÚrevisionÚ	local_dirN)r$   Údownload_bucket_filesÚidÚpath_in_repor9   r:   rP   r	   Úhf_hub_downloadÚtyper[   r   )r2   rC   rR   rS   rE   Údownloaded_paths         r   r<   r<   ´   s  € ð
 „}ð 4Ø×!Ò! #¤&¨CÔ,<¸jÐ+IÐ*JÐcgÐ!ÑhÔhÐhÐhÐhõ
 ”W—_’_ ZÑ0Ô0Ð7°Cˆ
Ý#¨6°zÐBÑBÔBð 	4ÀgØ!×1Ò1ØœØœ(ØÔ)ØœØ!ð 2ñ ô ˆOõ ŒJ�¨
Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   Á!AB2Â2B6Â9B6c                 ó¬   — | j         dk    s|                     d¦  «        rt          j        d¦  «        ‚| j                              dd¦  «        d         S )NÚ rJ   z‹Source path must include a file name, not just a repo/bucket or directory path. Use `hf download` or `hf buckets sync` to copy directories.r   éÿÿÿÿ)r_   rN   r-   r.   Úrsplit)rC   r   s     r   r8   r8   Ë   s\   € Ø
Ô˜2ÒÐ §¢¨cÑ!2Ô!2ÐÝÔ ðKñ
ô 
ð 	
ð Ô×"Ò" 3¨Ñ*Ô*¨2Ô.Ð.r    r*   c                ó”  — t          |¦  «        }|r™|j        dk    s|                     d¦  «        rt          j        d¦  «        ‚t
          j        j                             ¦   «         }t          | |||j        ¦  «         t          j        dd|                     ¦   «         ¬¦  «         d S t          j                             |¦  «        rt          j        d¦  «        ‚t          j                             |¦  «        st          j        d|› �¦  «        ‚|j        }|dk    r t          j                             |¦  «        }n=|                     d¦  «        r&|dz   t          j                             |¦  «        z   }n|}t          | |||¦  «         t          j        d|t%          ||¬	¦  «                             ¦   «         ¬¦  «         d S )
Nrd   rJ   zAStdin upload requires a full destination path including filename.ÚUploadedÚstdinr)   z]Source must be a file, not a directory. Use `hf upload` or `hf buckets sync` for directories.zSource file not found: )r_   )r   r_   rN   r-   r.   r?   ri   rA   r>   Ú_upload_singler   r,   Úto_urir9   r:   rM   ÚisfileÚbasenamer   )r2   r   r   r*   rC   ÚdatarW   Úremote_paths           r   r1   r1   Ô   s¥  € Ý
�sÑ
Ô
€Càð ØÔ˜rÒ!Ð! S§\¢\°#Ñ%6Ô%6Ð!ÝÔ$Ð%hÑiÔiÐiÝŒyÔ×$Ò$Ñ&Ô&ˆÝ�s˜C  sÔ'7Ñ8Ô8Ð8ÝŒ
�: 7°·
²
±´Ð=Ñ=Ô=Ð=Øˆå	„w‡}‚}�SÑÔð 
ÝÔ Økñ
ô 
ð 	
õ Œ7�>Š>˜#ÑÔð BÝÔ Ð!@¸3Ð!@Ð!@ÑAÔAÐAàÔ€FØ�‚|€|Ý”g×&Ò& sÑ+Ô+ˆˆØ	�Š�cÑ	Ô	ð Ø˜s‘l¥R¤W×%5Ò%5°cÑ%:Ô%:Ñ:ˆˆàˆå�3˜˜S +Ñ.Ô.Ð.Ý„Jˆz˜s­°À+Ð(NÑ(NÔ(N×(UÒ(UÑ(WÔ(WÐXÑXÔXÐXÐXÐXr    Úsourcero   c                 ó¨   — |j         r!|                      |j        ||fg¬¦  «         dS |                      |||j        |j        |j        ¬¦  «         dS )z4Upload a single file or bytes (to a repo or bucket).)Úadd)Úpath_or_fileobjr_   rY   rZ   r[   N)r$   Úbatch_bucket_filesr^   Úupload_filera   r[   )r2   rC   rp   ro   s       r   rj   rj   ò   so   € à
„}ð 	
Ø×Ò˜sœv¨V°[Ð,AÐ+BÐÑCÔCÐCÐCÐCà�ŠØ"Ø$Ø”FØ”hØ”\ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r    )N)(Ú__doc__r9   r?   Údataclassesr   Útypingr   r   r-   Úhuggingface_hubr   Úhuggingface_hub.errorsr   Úhuggingface_hub.utilsr   r	   r
   r   r   Ú
_cli_utilsr   r   Ú
_frameworkr   Ú_outputr   ÚCP_EXAMPLESÚ	CpContextr"   r!   r   r   r/   r0   r<   r8   Úboolr1   Úbytesrj   © r    r   ú<module>r„      sã  ððð ð 
€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€à !Ð !Ð !Ð !Ð !Ð !Ø +Ð +Ð +Ð +Ð +Ð +Ø oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oà ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð ðð ð €ð$ Ð&Ô'€	ðð �Y Ñ%ð ð ð ð ð@r˜i¨$Ñ.ð r°Sð r¸sÀT¹zð rÈdð rð rð rð rð(!E�ð !E˜3 ™:ð !E¨c°D©jð !E¸Tð !Eð !Eð !Eð !EðH
3 %ð 
3¨cð 
3°dð 
3ð 
3ð 
3ð 
3ð6 ð 6¨Sð 6°s¸T±zð 6Àdð 6ð 6ð 6ð 6ð&4˜%ð 4 eð 4¸ð 4Àð 4ð 4ð 4ð 4ð./˜%ð / cð /¨cð /ð /ð /ð /ðY ð Y¨Cð Y°cð YÈDð YÐUYð Yð Yð Yð Yð<
˜ð 
 Eð 
°3¸±;ð 
ÈSð 
ÐUYð 
ð 
ð 
ð 
ð 
ð 
r    