§
    !xÅje  ã                   óZ   — d dl mZ d dlmZ d dlmZmZmZmZm	Z	  G d„ d¦  «        Z
d„ ZdS )é    )Úsuppress)ÚLock)Ú	ZstdErrorÚ
_check_intÚ_DictionaryTypeÚ_ffiÚ_libc                   óª   — e Zd ZdZddœd„Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	ed	„ ¦   «         Z
ed
„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ ZdS )ÚZstdDictaÇ  Represents a Zstandard dictionary.

  dict_content
    The content of a Zstandard dictionary as a bytes-like object.
  is_raw
    If true, perform no checks on *dict_content*, useful for some
    advanced cases. Otherwise, check that the content represents
    a Zstandard dictionary created by the zstd library or CLI.

The dictionary can be used for compression or decompression, and can be
shared by multiple ZstdCompressor or ZstdDecompressor objects.F)Úis_rawc                ó˜  — t          |¦  «        dk     rt          d¦  «        ‚t          j        | _        d| _        t          ¦   «         | _        i | _        t          |¦  «        | _
        t          j        t          j        | j
        ¦  «        t          | j
        ¦  «        ¦  «        | _        |s| j        dk    rt          d¦  «        ‚d S d S )Né   zGZstandard dictionary content too short (must have at least eight bytes)r   zinvalid Zstandard dictionary)ÚlenÚ
ValueErrorr   ÚNULLÚ_d_dictÚ_dict_idr   Ú_lockÚ_c_dictsÚbytesÚ_dict_contentr	   ÚZSTD_getDictID_fromDictÚfrom_bufferÚdict_id)ÚselfÚdict_contentr   s      úNC:\Projects\Historical\venv\Lib\site-packages\backports/zstd/_cffi/zstddict.pyÚ__init__zZstdDict.__init__   sË   € åˆ|ÑÔ˜qÒ Ð Ýð3ñô ð õ
 ”yˆŒØˆŒÝ‘V”VˆŒ
ð ˆŒå" <Ñ0Ô0ˆÔõ Ô4ÝÔ˜TÔ/Ñ0Ô0µ#°dÔ6HÑ2IÔ2Iñ
ô 
ˆŒð
 ð 	=˜$œ,¨!Ò+Ð+ÝÐ;Ñ<Ô<Ð<ð	=ð 	=Ð+Ð+ó    c                 ó>   — d| j         t          | j        ¦  «        fz  S )Nz"<ZstdDict dict_id=%u dict_size=%d>)r   r   r   ©r   s    r   Ú__repr__zZstdDict.__repr__4   s'   € Ø3ØŒMÝ�Ô"Ñ#Ô#ð7
ñ 
ð 	
r   c                 ó*   — t          | j        ¦  «        S ©N)r   r   r!   s    r   Ú__len__zZstdDict.__len__:   s   € Ý�4Ô%Ñ&Ô&Ð&r   c                 ó   — | j         S )z9The content of a Zstandard dictionary, as a bytes object.)r   r!   s    r   r   zZstdDict.dict_content=   s   € ð Ô!Ð!r   c                 ó   — | j         S )a  The Zstandard dictionary, an int between 0 and 2**32.

A non-zero value represents an ordinary Zstandard dictionary,
conforming to the standardised format.

A value of zero indicates a 'raw content' dictionary,
without any restrictions on format or content.)r   r!   s    r   r   zZstdDict.dict_idB   s   € ð Œ}Ðr   c                 ó   — | t           j        fS )aÈ  Load as a digested dictionary to compressor.

Pass this attribute as zstd_dict argument:
compress(dat, zstd_dict=zd.as_digested_dict)

1. Some advanced compression parameters of compressor may be
   overridden by parameters of digested dictionary.
2. ZstdDict has a digested dictionaries cache for each compression
   level.  It's faster when loading again a digested dictionary with
   the same compression level.
3. No need to use this for decompression.)r   ÚDICT_TYPE_DIGESTEDr!   s    r   Úas_digested_dictzZstdDict.as_digested_dictM   s   € ð •_Ô7Ð7Ð7r   c                 ó   — | t           j        fS )aŽ  Load as an undigested dictionary to compressor.

Pass this attribute as zstd_dict argument:
compress(dat, zstd_dict=zd.as_undigested_dict)

1. The advanced compression parameters of compressor will not be
   overridden.
2. Loading an undigested dictionary is costly. If load an undigested
   dictionary multiple times, consider reusing a compressor object.
3. No need to use this for decompression.)r   ÚDICT_TYPE_UNDIGESTEDr!   s    r   Úas_undigested_dictzZstdDict.as_undigested_dict\   s   € ð •_Ô9Ð9Ð9r   c                 ó   — | t           j        fS )a  Load as a prefix to compressor/decompressor.

Pass this attribute as zstd_dict argument:
compress(dat, zstd_dict=zd.as_prefix)

1. Prefix is compatible with long distance matching, while
   dictionary is not.
2. It only works for the first frame, then the
   compressor/decompressor will return to no prefix state.
3. When decompressing, must use the same prefix as when compressing.)r   ÚDICT_TYPE_PREFIXr!   s    r   Ú	as_prefixzZstdDict.as_prefixj   s   € ð •_Ô5Ð5Ð5r   c                 ó(  — | j         5  | j                             |¦  «        }|€Vt          j        | j        t          | j        ¦  «        |¦  «        }|t          j        k    rt          d¦  «        ‚|| j        |<   d d d ¦  «         n# 1 swxY w Y   |S )NzIFailed to create a ZSTD_CDict instance from Zstandard dictionary content.)
r   r   Úgetr	   ÚZSTD_createCDictr   r   r   r   r   )r   Úcompression_levelÚcdicts      r   Ú
_get_cdictzZstdDict._get_cdictx   sÞ   € ØŒZð 	9ð 	9Ø”M×%Ò%Ð&7Ñ8Ô8ˆEØˆ}ÝÔ-ØÔ&­¨DÔ,>Ñ(?Ô(?ÐARñô �ð �DœIÒ%Ð%Ý#ð8ñô ð ð 49�”Ð/Ñ0ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð ˆs   ˆA3BÂBÂBc                 ó&  — | j         5  | j        t          j        k    rUt	          j        | j        t          | j        ¦  «        ¦  «        | _        | j        t          j        k    rt          d¦  «        ‚| j        cd d d ¦  «         S # 1 swxY w Y   d S )NzIFailed to create a ZSTD_DDict instance from Zstandard dictionary content.)	r   r   r   r   r	   ÚZSTD_createDDictr   r   r   r!   s    r   Ú
_get_ddictzZstdDict._get_ddictˆ   sÓ   € ØŒZð 	 ð 	 ØŒ|�tœyÒ(Ð(å#Ô4ØÔ&­¨DÔ,>Ñ(?Ô(?ñ ô  �”ð ”<¥4¤9Ò,Ð,Ý#ð8ñô ð ð
 ”<ð	 ð 	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ˆA1BÂB
ÂB
c                 óÆ  — t          t          ¦  «        5  | j                             ¦   «         D ]-\  }}t	          j        |¦  «         t          j        | j        |<   Œ.	 d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  | j        t          j        k    r*t	          j	        | j        ¦  «         t          j        | _        d d d ¦  «         d S # 1 swxY w Y   d S r$   )
r   ÚAttributeErrorr   Úitemsr	   ÚZSTD_freeCDictr   r   r   ÚZSTD_freeDDict)r   Úlevelr5   s      r   Ú__del__zZstdDict.__del__—   sL  € Ý•nÑ%Ô%ð 	1ð 	1Ø $¤× 3Ò 3Ñ 5Ô 5ð 1ð 1‘��uÝÔ# EÑ*Ô*Ð*Ý'+¤y�”˜eÑ$Ð$ð1ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1õ
 •nÑ%Ô%ð 	)ð 	)ØŒ|�tœyÒ(Ð(ÝÔ# D¤LÑ1Ô1Ð1Ý#œy�”ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s%   •AA*Á*A.Á1A.Â	A CÃCÃCN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   r%   Úpropertyr   r   r*   r-   r0   r6   r9   r@   © r   r   r   r      s  € € € € € ð
Bð 
Bð 05ð =ð =ð =ð =ð =ð4
ð 
ð 
ð'ð 'ð 'ð ð"ð "ñ „Xð"ð ðð ñ „Xðð ð8ð 8ñ „Xð8ð ð:ð :ñ „Xð:ð ð6ð 6ñ „Xð6ðð ð ð  ð  ð  ð	)ð 	)ð 	)ð 	)ð 	)r   r   c                 óp  — t          | t          ¦  «        r| |fS t          | t          ¦  «        rzt          | ¦  «        dk    rg| \  } }t          | t          ¦  «        rMt          |t          ¦  «        r8t          |¦  «         |t          j        t          j        t          j	        fv r| |fS t          d¦  «        ‚)Né   z/zstd_dict argument should be a ZstdDict object.)Ú
isinstancer   Útupler   Úintr   r   r)   r,   r/   Ú	TypeError)ÚzdÚdefault_typeÚtype_s      r   Ú_Py_parse_zstd_dictrP   £   s¼   € å�"•hÑÔð  Ø�<ÐÐõ �"•eÑÔð 	!¥ R¡¤¨A¢ Ø‰	ˆˆEÝ�b�(Ñ#Ô#ð 	!­
°5½#Ñ(>Ô(>ð 	!Ý�uÑÔÐØÝÔ2ÝÔ4ÝÔ0ðð ð ð
 ˜5�yÐ õ ÐEÑ
FÔ
FÐFr   N)Ú
contextlibr   Ú	threadingr   Úbackports.zstd._cffi._commonr   r   r   r   r	   r   rP   rF   r   r   ú<module>rT      s¾   ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ðS)ð S)ð S)ð S)ð S)ñ S)ô S)ð S)ðlGð Gð Gð Gð Gr   