o
    Vh2                     @  s  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rd 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( G dd dZ)dS )    )annotations)TYPE_CHECKING)cast)NullIOcanonicalize_name)Executor)Transaction)
Repository)RepositoryPool)InstalledRepository)LockfileRepository)Iterable)IO)NormalizedName)Package)PathDependency)ProjectPackage)Config)	Operation)Locker)TransitivePackageInfo)Envc                   @  s  e Zd Z			dXdYddZedZddZd[ddZd\ddZd]d!d"Zd^d_d%d&Z	d`d'd(Z
	#d^dad*d+Zd^dbd-d.Zd`d/d0Zdcd3d4Zd^ddd6d7Zdedfd9d:Zd^ddd;d<Zd`d=d>Zd^dgd@dAZdhdCdDZdidGdHZd]dIdJZd]dKdLZ	dedjdOdPZdkdSdTZdldVdWZdS )m	InstallerNFior   envr   packager   lockerr   poolr   configr   	installedInstalledRepository | NoneexecutorExecutor | Nonedisable_cacheboolreturnNonec
           
      C  s   || _ || _|| _|| _|| _|| _d| _d| _d| _d| _	d | _
d| _d| _g | _g | _|d u r=t| j| j|| j |	d}|| _|d u rH|  }|| _d S )NF)r$   )_io_env_package_locker_pool_config_dry_run_requires_synchronization_update_verbose_groups_skip_directory_lock
_whitelist_extrasr   	_executor_get_installed_installed_repository)
selfr   r   r   r   r   r   r    r"   r$    r;   q/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/poetry/installation/installer.py__init__"   s.   
zInstaller.__init__r   c                 C     | j S N)r7   r:   r;   r;   r<   r"   M   s   zInstaller.executorc                 C  
   || _ | S r?   )r*   )r:   r   r;   r;   r<   set_packageQ      zInstaller.set_packagec                 C  rA   r?   )r+   )r:   r   r;   r;   r<   
set_lockerV   rC   zInstaller.set_lockerintc                 C  sN   | j s| jr| j r|  S | j s| j sd| _ |  r#| d |  S )NT)r0   r4   r+   	is_locked_do_refresh
is_dry_runverbose_do_installr@   r;   r;   r<   run[   s   
zInstaller.runTdry_runc                 C     || _ | j| | S r?   )r.   r7   rL   )r:   rL   r;   r;   r<   rL   i      zInstaller.dry_runc                 C  r>   r?   )r.   r@   r;   r;   r<   rH   o      zInstaller.is_dry_runrequires_synchronizationc                 C  rA   r?   )r/   )r:   rP   r;   r;   r<   rP   r   s   z"Installer.requires_synchronizationrI   c                 C  rM   r?   )r1   r7   rI   )r:   rI   r;   r;   r<   rI   y   rN   zInstaller.verbosec                 C  r>   r?   )r1   r@   r;   r;   r<   
is_verbose   rO   zInstaller.is_verbosegroupsIterable[str]c                 C  rA   r?   )r2   )r:   rR   r;   r;   r<   only_groups   rC   zInstaller.only_groupsupdatec                 C  rA   r?   r0   r:   rU   r;   r;   r<   rU      rC   zInstaller.updateskip_directoryc                 C  rA   r?   )r3   )r:   rX   r;   r;   r<   rX      rC   zInstaller.skip_directoryc                 C  s    | j |d | d d| _| S )z9
        Prepare the installer for locking only.
        )rU   FT)rU   execute_operationsr4   rW   r;   r;   r<   lock   s   
zInstaller.lockc                 C  r>   r?   rV   r@   r;   r;   r<   is_updating   rO   zInstaller.is_updatingexecutec                 C  s   |s| j   | S r?   )r7   disable)r:   r\   r;   r;   r<   rY      s   
zInstaller.execute_operationspackagesc                 C     dd |D | _ | S )Nc                 S     g | ]}t |qS r;   r   .0pr;   r;   r<   
<listcomp>       z'Installer.whitelist.<locals>.<listcomp>)r5   )r:   r^   r;   r;   r<   	whitelist      zInstaller.whitelistextras	list[str]c                 C  r_   )Nc                 S  r`   r;   r   rb   extrar;   r;   r<   rd      re   z$Installer.extras.<locals>.<listcomp>)r6   )r:   rh   r;   r;   r<   rh      rg   zInstaller.extrasc                 C  s   ddl m} | jD ]}|| jjvrtd| dq	| j }|| j| j|j	|j	| j
}dd |j	D }|jj| jjdd |j|d	 }W d    n1 sSw   Y  | j|d
d dS )Nr   SolverExtra [] is not specified.c                 S  s   g | ]
}|j d kr|jqS )	directory)source_typenamera   r;   r;   r<   rd      s    z)Installer._do_refresh.<locals>.<listcomp>srcsource_root
use_latestT)force)poetry.puzzle.solverrm   r6   r*   rh   
ValueErrorr+   locked_repositoryr,   r^   r(   provideruse_source_rootr)   pathjoinpathsolveget_solved_packages_write_lock_file)r:   rm   rk   r{   solverrw   solved_packagesr;   r;   r<   rG      s.   


zInstaller._do_refreshc                 C  s  ddl m} td}| jdd}i }t }| jr| js6| j	 r6| j
 }| js6|jD ]	}| j|j q,| jD ]}|| jjvrItd| dq9| jd || j| j| jj|j| j}|jj| jjd	d
 |j| jd }W d    n1 s~w   Y  | jjs|  | dS |D ]}	|!|	s|"|	 qnQ| jd | j# std|s| j$ s| j% r| jd d}dd | jj&di D }
| jD ]}||
vrtd| dq| j
 }|r|}n| j' }| j% r| jd | jd |r\| j(d ur| jj)t*| j(dd}n| j+ }|j|j }t,-|| j}|||| jj|jt. | jd}|j/d |0| j |j| jd}W d    n	1 sVw   Y  n | j(d u rh| j1 }nt2| j(}t3|j|| jj| j| jj4|}|j5| j6p| jo| | j6| j7t2| jdd | jj8D d}|r| j6st3|j|j| jj|d}dd |j5ddD | }|D ]}|j9: }|; s|< rt=d|}|j>|j? d q| @|}|dkr| jr|  | |S )Nr   rl   zpoetry-lockedzinstaller.re-resolveTrn   ro   z<info>Updating dependencies</>rs   rt   rv   z/<info>Installing dependencies from lock file</>zrpyproject.toml changed significantly since poetry.lock was last generated. Run `poetry lock` to fix the lock file.z^<info>Cannot install without re-resolving because the lock file is not at least version 2.1</>c                 S  s   h | ]}t |qS r;   r   rj   r;   r;   r<   	<setcomp>  s    z(Installer._do_install.<locals>.<setcomp>rh    z><info>Finding the necessary packages for the current system</>)only)active_root_extrasFc                 S  s   h | ]}|j qS r;   )rr   ra   r;   r;   r<   r   R  s    )with_uninstallssynchronizerX   rh   system_site_packages)installed_packagesroot_packagec                 S  s   g | ]	}|j d kr|qS )	uninstall)job_type)rb   opr;   r;   r<   rd   `  s
    
z)Installer._do_install.<locals>.<listcomp>)r   r   )raise_error)Ary   rm   r
   r-   getr   r0   r4   r+   rF   r{   r5   r^   appendrr   r6   r*   rh   rz   r(   
write_liner,   r9   r|   r}   r)   r~   r   r   r   r"   enabledr   has_packageadd_packageis_freshis_locked_groups_and_markersrQ   	lock_datalocked_packagesr2   with_dependency_groupslist"without_optional_dependency_groupsr   from_packagesr   load_deferreduse_environmentdependency_group_namessetr	   
marker_envcalculate_operationsr/   r3   r   r   to_dependencyis_fileis_directoryr   validateskipped_execute)r:   rm   r{   	reresolver   lockfile_repopkgrk   r   r   locker_extrasrootr^   r   transactionrR   opsr   depstatusr;   r;   r<   rJ      s  














	




zInstaller._do_install$dict[Package, TransitivePackageInfo]rx   c                 C  sN   |   s!|s	| jr%| j| j|}|r#| jd | jd d S d S d S d S )Nr   z<info>Writing lock file</>)rH   r0   r+   set_lock_datar*   r(   r   )r:   r^   rx   updated_lockr;   r;   r<   r   v  s   zInstaller._write_lock_file
operationslist[Operation]c                 C  s   | j |S r?   )r7   r\   )r:   r   r;   r;   r<   r        zInstaller._executer   c                 C  s   t | jS r?   )r   loadr)   r@   r;   r;   r<   r8     r   zInstaller._get_installed)NNF)r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   )r&   r   )r   r   r&   r   )r   r   r&   r   )r&   rE   )T)rL   r%   r&   r   )r&   r%   )rP   r%   r&   r   )rI   r%   r&   r   )rR   rS   r&   r   )rU   r%   r&   r   )F)rX   r%   r&   r   )r\   r%   r&   r   )r^   rS   r&   r   )rh   ri   r&   r   )r^   r   rx   r%   r&   r'   )r   r   r&   rE   )r&   r   )__name__
__module____qualname__r=   propertyr"   rB   rD   rK   rL   rH   rP   rI   rQ   rT   rU   rX   rZ   r[   rY   rf   rh   rG   rJ   r   r   r8   r;   r;   r;   r<   r   !   s>    	+











  ,
r   N)*
__future__r   typingr   r   cleo.io.null_ior   packaging.utilsr   poetry.installation.executorr   poetry.puzzle.transactionr	   poetry.repositoriesr
   r   (poetry.repositories.installed_repositoryr   'poetry.repositories.lockfile_repositoryr   collections.abcr   
cleo.io.ior   r   poetry.core.packages.packager   $poetry.core.packages.path_dependencyr   $poetry.core.packages.project_packager   poetry.config.configr   (poetry.installation.operations.operationr   poetry.packagesr   'poetry.packages.transitive_package_infor   poetry.utils.envr   r   r;   r;   r;   r<   <module>   s0    