
    df                     v    d dl Z d dlZd dlZddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ d Zd	 Z G d
 de      Zy)    N   )Abort)can_retrieveretrive_from_urluri_is_zipfile)root_exclude   )Localc                     t        j                  t        | d      j                               }t	        j
                  |      }|r|}nd}t        j                  |      |fS )Nrb )ioBytesIOopenreadzipfileZipFilepathlibPurePosixPath)sourcezip_sub_pathcontentzipobjpaths        `/home/api-vastappli/venv/lib/python3.12/site-packages/make/make_project/data_medium/zipsource.pymake_zipobjr      sQ    jjfd+0023G__W%F  &..    c                 &    | j                   d   dk(  S )z2Return True if this archive member is a directory./)filename)r   s    r   	_z_is_dirr"      s    }}R C''r   c                   V    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)LocalTargetAndZipSourcer    z//c                      || _         || _        y N)
zip_sourcer   )selfr'   r   s      r   __init__z LocalTargetAndZipSource.__init__   s    $(r   c                     dj                  |j                        }|| j                  j                         v }|r|S |dz   | j                  j                         v }|S Nr    )joinpartszipnamelist)r(   r   path_str	foundfilefounddirs        r   existszLocalTargetAndZipSource.exists"   sT    88DJJ' 1 1 33	c>TXX%6%6%88r   c                     dj                  |j                        }| j                  j                  |      j	                         S r+   )r,   r-   r.   r   decoder(   r   zippaths      r   	read_textz!LocalTargetAndZipSource.read_text*   s0    ((6<<(xx}}W%,,..r   c                 n    dj                  |j                        }| j                  j                  |      S r+   )r,   r-   r.   r   r6   s      r   
read_bytesz"LocalTargetAndZipSource.read_bytes.   s'    ((6<<(xx}}W%%r   c                     dj                  |j                        }| j                  j                  |t	        |             y r+   )r,   r-   r.   extractstr)r(   r   targetr7   s       r   copyzLocalTargetAndZipSource.copy2   s,    ((6<<(#f+.r   c                     t        | j                        r%t        | j                  d| j                        \  }}n| j                  }| j                  }t	        ||      \  | _        | _        y )Nr   )r   r'   r   r   r   rootr.   )r(   
local_pathsub_paths      r   acquirezLocalTargetAndZipSource.acquire6   sY    (#3T%6%6$ J J((H)*h?	48r   c                      y r&    )r(   s    r   releasezLocalTargetAndZipSource.releaseB   s    r   c                     dj                  | j                  j                        }|j                  d      s|dz  }|| j                  j                         vr|dk(  st        d|z        y y )Nr    z Error: Source %s does not existsr,   rA   r-   endswithr.   r/   r   )r(   r   s     r   ensure_source_rootz*LocalTargetAndZipSource.ensure_source_rootG   sb    $))//*s#cMF**,,Vs]:VCDD 6C,r   c                     dj                  | j                  j                        }|j                  d      s|dz  }|| j                  j                         v rt        d| j                  z        y )Nr    Error: Target %s already existsrI   r(   r>   s     r   ensure_target_rootz*LocalTargetAndZipSource.ensure_target_rootN   s\    $))//*s#cMFTXX&&((9DIIEFF )r   c                 B    | j                  |      rt        d|z        y )NrM   )r3   r   rN   s     r   ensure_targetz%LocalTargetAndZipSource.ensure_targetU   s$    ;;v9FBCC r   c              #     K   | j                   }dj                  |j                        }|dk(  rd}nt        |      dz   }g }|j                  D ]  }|j
                  }|j                  |      s!||d }d}	|D ]  }
|j                  |
      sd}	 |	rFt        |      rd|j                  d      df h|j                  d      \  }}}d||f  yw)	z
            Walk through all files and yield one of the following:

            * (1, rootdir, dirname, None)
            * (2, rootdir, dirname, filename)

        r    r   r   r	   NFT   )
r.   r,   r-   lenfilelistr!   
startswithr"   strip
rpartition)r(   r   	zipobject
source_str
root_indexexcluder   	full_rootrA   skipexcparent_sepfns                 r   iter_filenamesz&LocalTargetAndZipSource.iter_filenamesY   s      HH	XXfll+
JZ1,J && 	$DI''
3Z[)DD  '',D  C$..#'??3#7 bm#)	$s   B
CACN)__name__
__module____qualname__os_sep
os_sep_dblr)   r3   r8   r:   r?   rD   rG   rK   rO   rQ   rc   rF   r   r   r$   r$      sG    FJ)/&/
@
EGD($r   r$   )r   r   r   errorsr   make_get.make_getr   r   r   templater   localr
   r   r"   r$   rF   r   r   <module>rm      s5    	    O O $ 	/(g$e g$r   