Ë
    åÿæi"  ã                   ó,  — d dl Z d dlZd dlmZmZmZmZ d dlZd dl	Z	d dl
mZmZmZmZmZ 	 ddeee	j                   f   deeeef      defd„Z	 ddeee	j                   f   deee j&                  f   deeeef      ddfd	„Zdd
ededeee	j                   f   fd„Z	 ddeee j&                  f   deee	j                   f   fd„Z	 ddeeej.                  f   dedeee	j                   f   fd„Zdeee	j                   f   deeej2                  f   fd„Ze	j6                  de	j8                  de	j:                  de	j<                  de	j>                  de	j@                  de	jB                  de	jD                  de	jF                  de	jH                  de	jJ                  de	jL                  de	jN                  diZ(e	jH                  e	j8                  e	j>                  e	j<                  e	j6                  e	j:                  e	j@                  e	jD                  e	jB                  e	jF                  e	jJ                  e	jL                  dœZ)e	j6                  ej6                  e	j8                  ej8                  e	j:                  ej:                  e	j<                  ej>                  e	j>                  ej>                  e	j@                  ej@                  e	jB                  ejB                  e	jD                  ejD                  e	jF                  e#e	jH                  ejH                  e	jJ                  ejB                  e	jL                  ejB                  iZ*dede	jV                  fd„Z,deee	j                   f   fd„Z-de	j                   dedefd„Z.deee	j                   f   deeeeef   f   fd„Z/y) é    N)ÚAnyÚDictÚOptionalÚUnion)ÚnumpyÚdeserializeÚ	safe_openÚ	serializeÚserialize_fileÚtensorsÚmetadataÚreturnc                 óH   — t        t        | «      |¬«      }t        |«      }|S )a)  
    Saves a dictionary of tensors into raw bytes in safetensors format.

    Args:
        tensors (`Dict[str, paddle.Tensor]`):
            The incoming tensors. Tensors need to be contiguous and dense.
        metadata (`Dict[str, str]`, *optional*, defaults to `None`):
            Optional text only metadata you might want to save in your header.
            For instance it can be useful to specify more about the underlying
            tensors. This is purely informative and does not affect tensor loading.

    Returns:
        `bytes`: The raw bytes representing the format

    Example:

    ```python
    from safetensors.paddle import save
    import paddle

    tensors = {"embedding": paddle.zeros((512, 1024)), "attention": paddle.zeros((256, 256))}
    byte_data = save(tensors)
    ```
    ©r   )r
   Ú_flattenÚbytes)r   r   Ú
serializedÚresults       úg/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/safetensors/paddle.pyÚsaver      s$   € ô6 œ8 GÓ,°xÔ@€JÜ�:Ó€FØ€Mó    Úfilenamec                 ó2   — t        t        | «      ||¬«       y)am  
    Saves a dictionary of tensors into raw bytes in safetensors format.

    Args:
        tensors (`Dict[str, paddle.Tensor]`):
            The incoming tensors. Tensors need to be contiguous and dense.
        filename (`str`, or `os.PathLike`)):
            The filename we're saving into.
        metadata (`Dict[str, str]`, *optional*, defaults to `None`):
            Optional text only metadata you might want to save in your header.
            For instance it can be useful to specify more about the underlying
            tensors. This is purely informative and does not affect tensor loading.

    Returns:
        `None`

    Example:

    ```python
    from safetensors.paddle import save_file
    import paddle

    tensors = {"embedding": paddle.zeros((512, 1024)), "attention": paddle.zeros((256, 256))}
    save_file(tensors, "model.safetensors")
    ```
    r   N)r   r   )r   r   r   s      r   Ú	save_filer   +   s   € ô> ”8˜GÓ$ h¸ÖBr   ÚdataÚdevicec                 ó˜   — t         j                  dk\  rt        | «      }t        ||«      S t	        j
                  | «      }t        ||«      S )aâ  
    Loads a safetensors file into paddle format from pure bytes.

    Args:
        data (`bytes`):
            The content of a safetensors file

    Returns:
        `Dict[str, paddle.Tensor]`: dictionary that contains name as key, value as `paddle.Tensor` on cpu

    Example:

    ```python
    from safetensors.paddle import load

    file_path = "./my_folder/bert.safetensors"
    with open(file_path, "rb") as f:
        data = f.read()

    loaded = load(data)
    ```
    ú3.2.0)ÚpaddleÚ__version__r   Ú_view2paddler   ÚloadÚ
_np2paddle)r   r   Úflats      r   r"   r"   M   sD   € ô. ×Ñ˜WÒ$Ü˜4Ó ˆÜ˜D &Ó)Ð)ä�z‰z˜$ÓˆÜ˜$ Ó'Ð'r   c                 ó  — i }t         j                  dk\  rCt        | d|¬«      5 }|j                  «       D ]  }|j	                  |«      ||<   Œ 	 ddd«       |S t        j                  | «      }t        ||«      }|S # 1 sw Y   |S xY w)a›  
    Loads a safetensors file into paddle format.

    Args:
        filename (`str`, or `os.PathLike`)):
            The name of the file which contains the tensors
        device (`Union[Dict[str, any], str]`, *optional*, defaults to `cpu`):
            The device where the tensors need to be located after load.
            available options are all regular paddle device locations

    Returns:
        `Dict[str, paddle.Tensor]`: dictionary that contains name as key, value as `paddle.Tensor`

    Example:

    ```python
    from safetensors.paddle import load_file

    file_path = "./my_folder/bert.safetensors"
    loaded = load_file(file_path)
    ```
    r   r   )Ú	frameworkr   N)r   r    r	   Úoffset_keysÚ
get_tensorr   Ú	load_filer#   )r   r   r   ÚfÚkr$   s         r   r)   r)   l   s‚   € ð2 €FÜ×Ñ˜WÒ$Ü�x¨8¸FÕCÀqØ—]‘]–_�ØŸL™L¨›O��q’	ñ %÷ Dð €Mô �‰˜xÓ(ˆÜ˜D &Ó)ˆØ€M÷ Dð €Mús   ¤*A<Á<BÚ
numpy_dictc                 ój   — | j                  «       D ]  \  }}t        j                  ||¬«      | |<   Œ! | S )N©Úplace)Úitemsr   Ú	to_tensor)r,   r   r+   Úvs       r   r#   r#   �   s7   € ð × Ñ Ö"‰ˆˆ1Ü×(Ñ(¨°&Ô9ˆ
�1Šð #àÐr   Úpaddle_dictc                 ó”   — | j                  «       D ]4  \  }}|j                  «       j                  «       j                  «       | |<   Œ6 | S ©N)r0   ÚdetachÚcpur   )r3   r+   r2   s      r   Ú
_paddle2npr8   ˜   s>   € Ø×!Ñ!Ö#‰ˆˆ1ØŸ™›Ÿ™Ó)×/Ñ/Ó1ˆ�AŠð $àÐr   é   é   é   é   )ÚF64ÚF32ÚF16ÚBF16ÚI64ÚI32ÚI16ÚI8ÚU8ÚBOOLÚF8_E4M3ÚF8_E5M2Ú	dtype_strc                 ó   — t         |    S r5   )Ú_TYPES)rI   s    r   Ú	_getdtyperL   Õ   s   € Ü�)ÑÐr   c                 ó  — i }| D ]ø  \  }}t        |d   «      }t        |d   «      dk(  r2t        d„ |d   D «       «      sJ ‚t        j                  |d   |¬«      }nUt        j
                  j                  j                  |d   |«      j                  |d   «      }|dk7  r|j                  |«      }t        j                  dk(  r5t        j                  |j                  «       j                  d	¬
«      |¬«      }|||<   Œú |S )NÚdtyper   r   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­w)r   N© )Ú.0Úxs     r   Ú	<genexpr>z_view2paddle.<locals>.<genexpr>ß   s   è ø€ Ð2¡z !�q˜A•v¡zùs   ‚Úshape)rN   r7   ÚbigF©Úinplacer.   )rL   ÚlenÚanyr   ÚemptyÚbaseÚcoreÚ
frombufferÚreshapeÚtoÚsysÚ	byteorderr1   r   Úbyteswap)Úsafeviewr   r   r+   r2   rN   Úarrs          r   r!   r!   Ù   sä   € Ø€FÛ‰ˆˆ1Ü˜!˜G™*Ó%ˆÜˆq�‰y‹>˜QÒäÑ2 q¨¢zÓ2Ô2Ð2Ð2Ü—,‘,˜q ™z°Ô7‰Cä—+‘+×"Ñ"×-Ñ-¨a°©i¸Ó?×GÑGÈÈ'É
ÓSˆCØ˜ŠØ—f‘f˜V“n�Ü�=‰=˜EÒ!Ü×"Ñ" 3§9¡9£;×#7Ñ#7ÀÐ#7Ó#FÈfÔUˆCØˆˆqŠ	ð ð €Mr   ÚtensorÚnamec                 ó¤  — | j                  «       st        d|› d�«      ‚| j                  j                  «       s| j	                  «       } dd l}dd l}t         |j                  | j                  «      j                  «       «      }t        | j                     }||z  }| j                  «       }|dk(  ry|j                  ||j                  |j                   «      «      }|j"                  j%                  ||f«      }	t&        j(                  dk(  r4t*        | j                     }
|	j-                  |
«      j/                  d¬«      }	|	j1                  «       S )Nz1You are trying to save a non contiguous tensor: `a  ` which is not allowed. It either means you are trying to save tensors which are reference of each other in which case it's recommended to save only the full tensors, and reslice at load time, or simply call `.contiguous()` on your tensor to pack it before saving.r   r   rU   FrV   )Úis_contiguousÚ
ValueErrorr/   Úis_cpu_placer7   Úctypesr   ÚintÚprodrT   ÚitemÚ_SIZErN   Údata_ptrÚcastÚPOINTERÚc_ubyteÚ	ctypeslibÚas_arrayr`   ra   ÚNPDTYPESÚviewrb   Útobytes)re   rf   rk   ÚnpÚlengthÚbytes_per_itemÚtotal_bytesÚptrÚnewptrr   Únpdtypes              r   Ú_tobytesr€   ì   s  € Ø×ÑÔ!ÜØ?À¸vð F&ð &ó
ð 	
ð �<‰<×$Ñ$Ô&à—‘“ˆããô ��—‘˜Ÿ™Ó&×+Ñ+Ó-Ó.€FÜ˜6Ÿ<™<Ñ(€Nà˜>Ñ)€Kà
�/‰/Ó
€CØ
ˆa‚xØØ�[‰[˜˜fŸn™n¨V¯^©^Ó<Ó=€FØ�<‰<× Ñ  ¨+¨Ó8€DÜ
‡}�}˜ÒÜ˜6Ÿ<™<Ñ(ˆà�y‰y˜Ó!×*Ñ*°5Ð*Ó9ˆØ�<‰<‹>Ðr   c                 ó¶  — t        | t        «      st        dt        | «      › �«      ‚| j	                  «       D ]9  \  }}t        |t
        j                  «      rŒ!t        d|› dt        |«      › �«      ‚ | j	                  «       D ��ci c]E  \  }}|t        |j                  «      j                  d«      d   |j                  t        ||«      dœ“ŒG c}}S c c}}w )Nz5Expected a dict of [str, paddle.Tensor] but received zKey `z2` is invalid, expected paddle.Tensor but received Ú.éÿÿÿÿ)rN   rT   r   )Ú
isinstanceÚdictri   Útyper0   r   ÚTensorÚstrrN   ÚsplitrT   r€   )r   r+   r2   s      r   r   r     sØ   € Ü�gœtÔ$ÜØCÄDÈÃMÀ?ÐSó
ð 	
ð —‘–‰ˆˆ1Ü˜!œVŸ]™]Õ+ÜØ˜�sÐLÌTÐRSËWÈIÐVóð ð  ð —M‘M”Oôñ $‰DˆAˆqð 	
Ü˜Ÿ™“\×'Ñ'¨Ó,¨RÑ0Ø—W‘WÜ˜Q “Nñ
ñ 	
ð
 $òð ùó s   ÂA
Cr5   )r7   )0Úosr`   Útypingr   r   r   r   r   ry   r   Úsafetensorsr   r	   r
   r   rˆ   r‡   r   r   ÚPathLiker   r"   r)   Úndarrayr#   Úarrayr8   Úint64Úfloat32Úint32Úbfloat16Úfloat16Úint16Úuint8Úint8ÚboolÚfloat64Úfloat8_e4m3fnÚfloat8_e5m2Ú	complex64ro   rK   rv   rN   rL   r!   r€   r   rP   r   r   Ú<module>r�      s’  ðÛ 	Û 
ß -Ó -ã Û ç PÕ Pð MQñØ�#�v—}‘}Ð$Ñ%ðØ19¸$¸sÀC¸x¹.Ñ1Iðà
óðF *.ñCØ�#�v—}‘}Ð$Ñ%ðCà�C˜Ÿ™Ð$Ñ%ðCð �t˜C ˜H‘~Ñ&ðCð 
ó	CñD(ˆuð (˜cð (¨d°3¸¿¹Ð3EÑ.Fó (ð@ /4ñ!Ø�C˜Ÿ™Ð$Ñ%ð!à	ˆ#ˆv�}‰}Ð
Ñó!ðJ 6;ñØ�S˜"Ÿ*™*�_Ñ%ðØ/2ðà	ˆ#ˆv�}‰}Ð
Ñóð˜D  f§m¡mÐ!3Ñ4ð ¸¸cÀ2Ç8Á8¸mÑ9Ló ð ‡L�L�!Ø
‡N�N�AØ
‡L�L�!Ø
‡O�O�QØ
‡N�N�AØ
‡L�L�!Ø
‡L�L�!Ø
‡K�K�Ø
‡K�K�Ø
‡N�N�AØ
×Ñ˜!Ø
×Ñ˜Ø
×Ñ�að	€ð. �>‰>Ø�>‰>Ø�>‰>Ø�O‰OØ�<‰<Ø�<‰<Ø�<‰<Ø
�+‰+Ø
�,‰,Ø�K‰KØ×#Ñ#Ø×!Ñ!ñ
€ð  ‡L�L�"—(‘(Ø
‡N�N�B—J‘JØ
‡L�L�"—(‘(à
‡O�O�R—Z‘ZØ
‡N�N�B—J‘JØ
‡L�L�"—(‘(Ø
‡L�L�"—(‘(Ø
‡K�K�—‘Ø
‡K�K�Ø
‡N�N�B—J‘Jà
×Ñ˜"Ÿ(™(Ø
×Ñ˜Ÿ™ð€ð$˜ð  §¡ó ð d¨3°·±Ð+=Ñ&>ó ð& �V—]‘]ð  ¨#ð  °%ó  ðF�d˜3 §¡Ð-Ñ.ð °4¸¸TÀ#ÀsÀ(¹^Ð8KÑ3Lô r   