o
    y3g                     @  sv   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZ ddlmZ eG d	d
 d
ejZdS )    )annotationsN)datetime)total_orderingPath)IteratorSequence   )
walk_pathsc                      sD  e Zd ZU ejZded< ded< dJdK fd	d
ZedLddZ	edLddZ
dMddZdMddZdN fddZdOddZdPddZdQd!d"ZedRd$d%ZedRd&d'ZedRd(d)ZdMd*d+ZdSd,d-ZedTd.d/Zed0d1 ZdNd2d3ZdNd4d5ZdUd7d8ZdVd:d;ZedWd=d>ZedTd?d@ZdAdBdCdDdXdHdIZ  ZS )YZipPathzzipfile.CompleteDirsrootstrat &str | Path | zipfile.ZipFile | ZipPathreturnNonec                   s2   t |tr|j}|j}n|}|}t || d S N)
isinstancer   r   r   super__init__)selfr   r   root_at_	__class__ D/home/garg/my-data/venv/lib/python3.10/site-packages/kompress/zip.pyr      s   
zZipPath.__init__r   c                 C  s*   | j j}|d us
J t|tsJ t|S r   )r   filenamer   r   r   )r   resr   r   r   filepath#   s   zZipPath.filepathc                 C  s
   t | jS r   )r   r   r   r   r   r   subpath*   s   
zZipPath.subpathc                 C     t | j | jS r   )r   r    absoluter   r!   r   r   r   r$   .      zZipPath.absolutec                 C  r#   r   )r   r    
expanduserr   r!   r   r   r   r&   1   r%   zZipPath.expanduserboolc                   s*   | j dkr
| j S t  p|   S )Nr   )r   r    existsr   _as_dirr!   r   r   r   r(   4   s   

zZipPath.existszipfile.Pathc                 C  s   t | j| jd S N/)zipfiler   r   r   r!   r   r   r   r)   =   s   zZipPath._as_dirglobIterator[ZipPath]c                   s<   fddj  D } fdd|D }fdd|D S )Nc                 3  s     | ]}|  jr|V  qd S r   )
startswithr   .0pr!   r   r   	<genexpr>D   s    z ZipPath.rglob.<locals>.<genexpr>c                 3  s"    | ]}t | r|V  qd S r   )r   matchr1   )r.   r   r   r4   E   s     c                 3  s    | ]	}t  j|V  qd S r   )r   r   r1   r!   r   r   r4   F   s    )r   namelist)r   r.   rpathsr   )r.   r   r   rglobA   s   zZipPath.rglobotherextrastr | os.PathLike[str]c                 G  s2   | j |j ksJ | j |j f| jj|jg|R  S r   )r    r"   relative_to)r   r9   r:   r   r   r   r<   I   s   zZipPath.relative_toSequence[str]c                 C     | j S r   _partsr!   r   r   r   partsM   s   zZipPath.partsc                 C  s   | j j| jj S r   )r    rA   r"   r!   r   r   r   r@   Q   s   zZipPath._partsc                 C  r>   r   r?   r!   r   r   r   
_raw_pathsW   s   zZipPath._raw_pathsc                 C  s:   t |trd|j}t| j| j | }t| j|jS r+   )r   r   joinrA   r-   r   r   r   )r   keytmpr   r   r   __truediv__\   s   
zZipPath.__truediv__c                 c  s(    |    D ]
}t|j|jV  qd S r   )r)   iterdirr   r   r   )r   sr   r   r   rG   d   s   zZipPath.iterdirc                 C  s   | j jS r   )r"   stemr!   r   r   r   rI   h   s   zZipPath.stemc                 C  s   t S r   r   r!   r   r   r   r   l   s   zZipPath.__class__c                 C  s&   t |tsdS | j| jf|j|jfkS NFr   r   r    r"   r   r9   r   r   r   __eq__p   s   
zZipPath.__eq__c                 C  s&   t |tsdS | j| jf|j|jfk S rJ   rK   rL   r   r   r   __lt__v   s   
zZipPath.__lt__intc                 C  s   t | j| jfS r   )hashr    r"   r!   r   r   r   __hash__{   s   zZipPath.__hash__os.stat_resultc                 C  sL   t | j| jj }t| }ddddddd|||d
}tt	|
 S )Nr   r	   i  )
st_modest_inost_devst_nlinkst_uidst_gidst_sizest_atimest_mtimest_ctime)r   r   getinfor   	date_timerO   	timestamposstat_resulttuplevalues)r   dttsparamsr   r   r   stat~   s   zZipPath.stat	list[str]c                 C     t | jd jS N)r   rA   suffixesr!   r   r   r   rl         zZipPath.suffixesc                 C  ri   rj   )r   rA   suffixr!   r   r   r   rn      rm   zZipPath.suffixTNF)top_downon_errorfollow_symlinksro   rq   .Iterator[tuple[ZipPath, list[str], list[str]]]c                c  s    |sJ d|d u sJ d| j }g }| j D ]}||s!q|t|d  }|dkr2|| q|  t|ddD ]\}}	}
|dkrH| n| | }||	|
fV  q=d S )Nz8specifying top_down isn't supported for zipfile.Path yetz-on_error isn't supported for zipfile.Path yetr   r,   )	separator.)r   r   r6   r0   lenappendsortr
   )r   ro   rp   rq   r   namesnrestrdirsfilesrrr   r   r   walk   s"   

zZipPath.walk)r   )r   r   r   r   r   r   )r   r   )r   r   )r   r'   )r   r*   )r.   r   r   r/   )r9   r   r:   r;   r   r   )r   r=   )r   r/   )r   r   )r   rO   )r   rR   )r   rh   )ro   r'   rq   r'   r   rr   ) __name__
__module____qualname__r`   path_flavour__annotations__r   propertyr    r"   r$   r&   r(   r)   r8   r<   rA   r@   rB   rF   rG   rI   r   rM   rN   rQ   rg   rl   rn   r   __classcell__r   r   r   r   r      sN   
 


	








r   )
__future__r   r`   r-   r   	functoolsr   pathlibr   typingr   r   utilsr
   r   r   r   r   r   <module>   s    