o
    Vh3&                     @  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mZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ errd dlmZ d dlmZ d dlm Z  dZ!dZ"G dd deZ#dS )    )annotationsN)urlsafe_b64encode)Path)TYPE_CHECKING)Builder)SdistBuilder)PackageInclude)WINDOWS)decode)getencoding)build_environment)is_dir_writable)pip_install)IO)Poetry)Envzu#!{python}
import sys
from {module} import {callable_holder}

if __name__ == '__main__':
    sys.exit({callable_}())
z,@echo off
"{python}" "%~dp0\{script}" %*

c                      sp   e Zd Zd% fd	d
Zd&d'ddZd(ddZd)ddZd*ddZd*ddZd+ddZ	d,d d!Z
d-d#d$Z  ZS ).EditableBuilderpoetryr   envr   ior   returnNonec                   s    |  t  | || _|| _d S N)super__init___env_io)selfr   r   r   	__class__ t/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/poetry/masonry/builders/editable.pyr   -   s   
zEditableBuilder.__init__N
target_dirPath | Noner   c                 C  s   |  d| jj d | jjr'| j r |  d |   | jS | | jj | jj	j
| jjdD ]}|  d|j d|j d q1g }||  7 }||  7 }| | | jS )Nz  - Building package <c1>z#</c1> in <info>editable</info> modez>  - <warning>Falling back on using a <b>setup.py</b></warning>)distribution_namez  - Removed <c2>z</c2> directory from <b></b>)_debug_packagenamebuild_scriptbuild_should_generate_setup_setup_build_path_run_build_scriptr   site_packagesremove_distribution_filesparent_add_pth_add_scripts_add_dist_info)r   r"   removedadded_filesr    r    r!   build4   s0   



zEditableBuilder.buildr)   strc                 C  sh   t | j| j| jd }| d| d |jdt| j|dd W d    d S 1 s-w   Y  d S )N)r   r   r   z  - Executing build script: <b>r%   pythonT)call)	r   _poetryr   r   r&   runr7   r,   joinpath)r   r)   r   r    r    r!   r-   S   s   "z!EditableBuilder._run_build_scriptc              	   C  s   t | j}| jd }| }|r| jd n |jddd}|t|	  W d    n1 s2w   Y  zt
| j| jddd W |sLt| d S d S |sVt| w w )Nzsetup.pyz<<warning>A setup.py file already exists. Using it.</warning>wutf-8encodingT)upgradeeditable)r   r:   r,   existsr   write_error_lineopenwriter
   build_setupr   r   osremove)r   buildersetup	has_setupfr    r    r!   r+   X   s"   

zEditableBuilder._setup_build
list[Path]c              	   C  s  dd | j jD }ddd |D }t| j jd}| jjj|ddD ]}| 	d	|j d
|j
 d| jjjj
  |jdd q%z#| jjj||t d}| 	d|j d|j
 d| jjjj
  |gW S  ty   | jd|j d| jjjj
  g  Y S w )Nc                 S  s4   h | ]}t |tr| s| r|j  qS r    )
isinstancer   	is_module
is_packagebaseresolveas_posix).0includer    r    r!   	<setcomp>l   s    z+EditableBuilder._add_pth.<locals>.<setcomp> c                 s  s    | ]
}t |tj V  qd S r   )r
   rH   linesep)rU   pathr    r    r!   	<genexpr>s   s    z+EditableBuilder._add_pth.<locals>.<genexpr>z.pthT)rZ   writable_onlyz  - Removing existing <c2>z</c2> from <b>z	</b> for )
missing_okr?   z  - Adding <c2>z</c2> to <b>z  - Failed to create <c2>z
</c2> for )_moduleincludesjoinr   r(   with_suffixr   r.   findr&   r0   r:   filerZ   unlink
write_textr   PermissionErrorr   rD   )r   pathscontentpth_filerc   r    r    r!   r1   k   s<   



zEditableBuilder._add_pthc                 C  s  g }|   }| jjD ]
}t|ddr nq
| jd| jjjj	  g S |
dg }|D ]}|d\}}|dd }z	|d\}	}
W n7 ty| } z+d	| d
| }dt|v rj|d| d| d7 }t|dt|v rt|d7 }t|d }~ww |
ddd }||}| d| d| d |jddd}|ttj| jj|	||
d W d    n1 sw   Y  |d || tr|d}tj| jj|d}| d|j d| d |jddd}|t| W d    n1 sw   Y  || q,|S )NT)rZ   createz@  - Failed to find a suitable script installation directory for console_scriptsz = [r   :zBad script (ze): script needs to specify a function within a module like: module(.submodule):function
Instead got: znot enough valueszx
Hint: If the script depends on module-level code, try wrapping it in a main() function and modifying your script like:
z = "z:main"ztoo many valuesz
Too many ":" found!.     - Adding the <c2>z</c2> script to <b>r%   r=   r>   r?   )r8   modulecallable_holder	callable_i  z.cmd)r8   scriptz</c2> script wrapper to <b>)convert_entry_pointsr   script_dirsr   r   rD   r:   rc   rZ   r0   getsplit
ValueErrorr7   r<   r&   rE   rF   r
   SCRIPT_TEMPLATEformatr8   chmodappendr	   ra   WINDOWS_CMD_TEMPLATEr(   )r   addedentry_pointsscripts_pathscriptsrt   r(   script_with_extrasscript_without_extrasrq   rs   excmsgrr   script_filerM   
cmd_scriptcmdr    r    r!   r2      s   






zEditableBuilder._add_scriptsr5   c                 C  s  ddl m} |d d  }|| j}| jjt|j}| d|j	 d|j
 d |djddd	}|| W d    n1 sCw   Y  ||d |d
jddd	}|d W d    n1 sjw   Y  ||d
 |  r|djddd	}|| W d    n1 sw   Y  ||d |d}|jtddi| jjjj
  ddd	 || |d}|jdddd0}t|}|D ]}	| |	}
|	 j}||	d|
 |f q||ddf W d    d S 1 sw   Y  d S )Nr   )WheelBuilderrp   z</c2> directory to <b>r%   METADATAr=   r>   r?   	INSTALLERr   zentry_points.txtzdirect_url.jsonrB   T)dir_infourlRECORDrX   )r@   newlinezsha256=)"poetry.core.masonry.builders.wheelr   r:   r   r.   mkdirr   	dist_infor&   r(   r0   r<   rE   _write_metadata_filer}   rF   ru   _write_entry_pointsre   jsondumpsrc   rZ   absoluteas_uricsvwriter_get_file_hashstatst_sizewriterow)r   r5   r   rJ   r   rM   direct_url_jsonrecord
csv_writerrZ   hashsizer    r    r!   r3      sX   




	



$zEditableBuilder._add_dist_infofilepathc                 C  sr   t  }|d}	 |d}|sn|| q|d W d    n1 s(w   Y  t| d	dS )NrbTi    r   ascii=)
hashlibsha256rE   readupdateseekr   digestr
   rstrip)r   r   hashsumsrcbufr    r    r!   r     s   

	zEditableBuilder._get_file_hashr   c                 C  s   | j  r| j | d S d S r   )r   is_debug
write_line)r   r   r    r    r!   r&     s   
zEditableBuilder._debug)r   r   r   r   r   r   r   r   r   )r"   r#   r   r   )r)   r7   r   r   )r   r   )r   rN   )r5   rN   r   r   )r   r   r   r7   )r   r7   r   r   )__name__
__module____qualname__r   r6   r-   r+   r1   r2   r3   r   r&   __classcell__r    r    r   r!   r   ,   s    



#
J
7r   )$
__future__r   r   r   r   rH   base64r   pathlibr   typingr   $poetry.core.masonry.builders.builderr   "poetry.core.masonry.builders.sdistr   )poetry.core.masonry.utils.package_includer   poetry.utils._compatr	   r
   r   poetry.utils.envr   poetry.utils.helpersr   poetry.utils.pipr   
cleo.io.ior   poetry.poetryr   r   rz   r~   r   r    r    r    r!   <module>   s0    	