o
    yÆ3gÜ  ã                   @  sü   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZ ddlmZ ddlmZ G dd	„ d	ƒZd&dd„Zd'dd„ZG dd„ deƒZddœd(dd„Zes|ddlmZ edƒdd „ ƒZedƒd!d"„ ƒZed#ƒd)d$d%„ƒZdS dS )*é    )ÚannotationsN)ÚPath)ÚIOÚTYPE_CHECKINGé   )ÚTarPath)ÚZipPathc                   @  s(   e Zd ZdZdZdZdZdZdZdZ	dS )	ÚExtz.xzz.zipz.lz4z.zstdz.zstz.tar.gzz.gzN)
Ú__name__Ú
__module__Ú__qualname__ÚxzÚzipÚlz4ÚzstdÚzstÚtargzÚgz© r   r   úI/home/garg/my-data/venv/lib/python3.10/site-packages/kompress/__init__.pyr	      s    r	   Úpú
Path | strÚreturnÚboolc              	   C  s>   t | tƒr| nt| ƒ}|j tjtjtjtjtj	tj
tjf¡S ©N)Ú
isinstancer   ÚnameÚendswithr	   r   r   r   r   r   r   r   )r   Úppr   r   r   Úis_compressed   s   (r   Úpathr   r   c                 O  sX   dd l }|  d¡}| ¡ }| |¡}| dd¡}|dkr|S | d¡ tj|fi |¤ŽS )Nr   ÚrbÚmodeÚrt)Ú	zstandardÚopenÚZstdDecompressorÚstream_readerÚgetÚpopÚioÚTextIOWrapper)r    ÚargsÚkwargsr$   ÚfhÚdctxÚreaderr"   r   r   r   Ú
_zstd_open#   s   


r1   c                      sP   e Zd ZdZejdd… dk rejdkrej	nej
Z‡ fdd„Zdd	„ Z‡  ZS )
ÚCPatha‰  
    Hacky way to support compressed files.
    If you can think of a better way to do this, please let me know! https://github.com/karlicoss/HPI/issues/20

    Ugh. So, can't override Path because of some _flavour thing.
    Path only has _accessor and _closed slots, so can't directly set .open method
    _accessor.open has to return file descriptor, doesn't work for compressed stuff.
    Né   )é   é   Úntc                   sV   t |Ž }|j tj¡r| ¡ rt|ƒS |j tj¡rt|ƒS t	ƒ j
| g|¢R i |¤ŽS r   )r   r   r   r	   r   Úexistsr   r   r   ÚsuperÚ__new__)Úclsr,   r-   r    ©Ú	__class__r   r   r9   A   s   zCPath.__new__c                 O  sL   i }|  d¡}|d ur||d< |  d¡}|d ur||d< tt| ƒfi |¤ŽS )Nr"   Úencoding)r(   Ú_cpath_openÚstr)Úselfr,   r-   Úkopen_kwargsr"   r=   r   r   r   r%   O   s   

z
CPath.open)r
   r   r   Ú__doc__ÚsysÚversion_infoÚosr   ÚpathlibÚ_windows_flavourÚ_posix_flavourÚ_flavourr9   r%   Ú__classcell__r   r   r;   r   r2   3   s    	r2   r#   ©r"   r"   r?   c                O  sª  |dv r|  dd¡}nd }||d< t| ƒ}|j}| tj¡r8dd l}|dkr(d}||d< |j|g|¢R i |¤ŽS | tj¡r\t	|ƒ}|\}	t
jd d… d	krT|dkrTd}||	 j|d
S | tj¡rvdd l}
|
jjt|ƒ|g|¢R i |¤ŽS | tjtjf¡rŽ||d< t|g|¢R i |¤ŽS | tj¡r¦t |¡}|j|Ž }|d us¤J ‚|S | tj¡rÉ|dkr²d}||d< d|v r½|d= tj|g|¢R i |¤ŽS |j|g|¢R i |¤ŽS )N>   Úrr#   r=   Úutf8r   rL   r#   r"   r3   )r4   é   rK   Úb)r(   r   r   r   r	   r   Úlzmar%   r   r   rC   rD   r   Ú	lz4.frameÚframer?   r   r   r1   r   ÚtarfileÚextractfiler   Úgzip)r    r"   r,   r-   r=   r   r   rP   ÚzpathÚsubpathr   ÚtfÚxr   r   r   r>   [   sL    

r>   )Ú
deprecatedzuse Cpath(...).open() insteadc                 O  s    t | ƒt|Ž  }|jdi |¤ŽS )Nr   )r2   r   r%   )r    r,   r-   Úcpathr   r   r   Úkopen©   s   r\   c                  O  s   t | i |¤ŽS r   )r\   )r,   r-   r   r   r   r%   ®   s   r%   zuse Cpath(...).exists() insteadc                 G  s   t | ƒt|Ž  }| ¡ S r   )r2   r   r7   )r    r,   r[   r   r   r   Úkexists²   s   r]   )r   r   r   r   )r    r   r   r   )r    r   r"   r?   r   r   )r   r   )Ú
__future__r   rU   r*   rE   rF   rC   rS   r   Útypingr   r   Útarr   r   r   r	   r   r1   r2   r>   ÚcompatrZ   r\   r%   r]   r   r   r   r   Ú<module>   s2    

(E

í