o
    VhP                     @  s   d dl m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 erld 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dZ G dd deeZ!dS )    )annotationsN)TYPE_CHECKING)ClassVar)argument)option)canonicalize_name)
EnvCommand)GroupCommand)Argument)Option)IO)Rows)NormalizedName)
Dependency)Package)ProjectPackage)
Repositorypkgr   repor   returndict[str, str]c                 C  s>   i }|j D ]}dd |jD }| j|v r|| j ||j< q|S )Nc                 S  s   i | ]}|j |jqS  )namepretty_constraint).0dr   r   p/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/poetry/console/commands/show.py
<dictcomp>    s    z reverse_deps.<locals>.<dictcomp>)packagesrequiresr   pretty_name)r   r   required_bylockeddependenciesr   r   r   reverse_deps   s   

r$   c                   @  s"  e Zd ZU dZdZeddddgZded< g e	 e
d	d
de
ddde
ddde
ddde
ddde
ddde
dddZded< dZg d Zd!ed"< dRd%d&ZdSd*d+ZdTd.d/ZdTd0d1Z	dUdVd:d;Z	<	=dWdXdDdEZdYdGdHZdZdIdJZd[dKdLZd\dMdNZd]dPdQZdS )^ShowCommandshowz!Shows information about packages.packagezThe package to inspectT)optionalzClassVar[list[Argument]]	argumentstreetz List the dependencies as a tree.whyNzWhen showing the full list, or a <info>--tree</info> for a single package, display whether they are a direct dependency or required by other packageslatestlzShow the latest version.outdatedoz@Show the latest version but only for packages that are outdated.allazBShow all packages (even those not compatible with current system).	top-levelTz!Show only top-level dependencies.no-truncatez7Do not truncate the output based on the terminal width.zClassVar[list[Option]]optionsz`The show command displays detailed information about a package, or
lists all packages available.)cyanyellowgreenmagentabluezClassVar[list[str]]colorsr   intc                 C  s  |  d}| dr| | j | dr,| dr!| d dS |d ur,| d dS | drO| drA|d u rA| d dS | dsO|rO| d	 dS | d
r\| jjdd | jj	 si| d dS | jj
 }|rw| ||S |  }| dr| ||S | ||S )Nr'   r*   r3   zI<error>Error: Cannot use --tree and --top-level at the same time.</error>   zN<error>Error: Cannot use --top-level when displaying a single package.</error>r,   zI<error>Error: --why requires a package when combined with --tree.</error>z[<error>Error: --why cannot be used without --tree when displaying a single package.</error>r/   r-   TzL<error>Error: poetry.lock not found. Run `poetry lock` to create it.</error>)r   r   init_stylesio
line_errorinput
set_optionpoetrylocker	is_lockedlocked_repository#_display_single_package_information"project_with_activated_groups_only"_display_packages_tree_information_display_packages_information)selfr'   locked_reporootr   r   r   handleQ   sN   






zShowCommand.handlestrrG   r   c                   s  |j }t|}d }|D ]}|j|kr|} nq|s!td| dt|| | drd| drZ|g} r? fdd|D }n
| jd| d |D ]}| j| j|||d qKd	S | | j|| d	S d
d|j	 dgdd|j
 dgdd|j gg}	| j|	dd  |jr| d | d |jD ]}
| d|
j	 d|
j d q r| d | d   D ]\}}| d| d| d qd	S )NzPackage z
 not foundr*   r,   c                   s$   g | ]} D ]	}|j |kr|qqS r   r   )r   prr!   r   r   
<listcomp>   s    zCShowCommand._display_single_package_information.<locals>.<listcomp>z is a direct dependency.why_packager   z<info>name</>z : <c1></>z<info>version</>z : <b></b>z<info>description</>z : compact)rowsstyle z<info>dependencies</info>z - <c1>z	</c1> <b>z<info>required by</info>z</c1> requires <b>)r   r   r   
ValueErrorr$   r   r@   
write_linedisplay_package_treer    pretty_versiondescriptiontablerenderr   liner   items)rL   r'   rG   locked_packagescanonicalized_packager   r"   r   rR   r[   
dependencyparentrequires_versionr   rT   r   rH      s\   











z/ShowCommand._display_single_package_informationrN   r   c           ,   	     s  dd l }ddlm} ddlm} ddlm} ddlm} ddl	m
} |j}	||	| jj}
|||
g |	| d}|jd || j |  }W d    n1 sTw   Y  d	d
 |D }| d}| d}| d}| drwtjn| j}d } } }}i }i }|| j}|	D ]  |vr|sqt j}| jj s|   |j}|dkr|d7 }|r| ! |}|s }|| j< | "|  }| j< | dr|dkrt#||}t#|t| | jj$j%j&d}t#|t||| jj$j%j&d}| drt' |}t#|tdd(|)  }qt#||}t#|t| | jj$j%j&d}| drDt' |}t#|tdd(|)  }q|| d |k}|| | d |k}|| | | } | doj| d |k}!| d |k}"|j*}#|	D ]
 d}$ j}%d}&|rt+ fdd|#D sqv |vr|sqvd}$n|   |j}|dkrd}$| jj sd}&|r| dr| j dkrȐqvd |$ d!|%|t|&  |& d"}'|r| | jj$j%j&d}(|'d#|(| d$7 }'|r(| j }| j }|r(d%}$|d&kr
d}$n|d'krd(}$||| jj$j%j&d}(|'d)|$ d!|(| d"7 }'|!rLt' |}|rFd(|) })|'d|)|d*  7 }'n|'d+| 7 }'|"r{ j,}*|| | | d }+|rc|+|8 }+t j,|+kru|*d |+d  d, }*|'d+|* 7 }'| -|' qvdS )-Nr   NullIO)Solver)InstalledRepository)RepositoryPool)"get_package_version_display_string)pool	installedr"   r@   Fc                 S  s   h | ]}|j s|jqS r   )skippedr'   )r   opr   r   r   	<setcomp>   s    z<ShowCommand._display_packages_information.<locals>.<setcomp>r-   r1   r3   r5   not-installed   r/   
up-to-date)rN   r,   z from ,      r7   r]   c                 3  s    | ]}  |V  qd S N)	satisfies)r   rS   r"   r   r   	<genexpr>K  s    z<ShowCommand._display_packages_information.<locals>.<genexpr>zblack;options=boldredz (!)z<fg=>rX    <b>rY   r9   semver-safe-updateupdate-possibler8   z <fg=    z...).shutilcleo.io.null_iorm   poetry.puzzle.solverrn   (poetry.repositories.installed_repositoryro   #poetry.repositories.repository_poolrp   poetry.utils.helpersrq   r   from_packagesrD   configproviderload_deferreduse_environmentenvsolvecalculate_operationsr   sysmaxsizeget_terminal_sizecolumnsloadlenr    r@   outputis_decoratedget_installed_statusfind_latest_packageget_update_statusmaxfilepathrj   r$   joinkeysall_requiresanyrb   re   ),rL   rG   rN   r   rm   rn   ro   rp   rq   rg   rr   solveropsrequired_locked_packagesshow_latestshow_allshow_top_levelwidthname_lengthversion_lengthlatest_lengthrequired_by_lengthlatest_packageslatest_statusesinstalled_repocurrent_lengthinstalled_statusr-   update_statusr!   write_versionwrite_latestwhy_end_column	write_whywrite_descriptionr   colorr   install_markerre   versioncontentrb   	remainingr   r   r   rK      s>  






	

	








z)ShowCommand._display_packages_informationc                 C  s@   |j }|D ]}|jD ]}|j|jkr| | j||  nq
qdS )Nr   )r   r   r   r`   r@   )rL   rG   rN   r   rR   requirer   r   r   rJ     s   
z.ShowCommand._display_packages_tree_informationr@   r   r   installed_packageslist[Package]rW   Package | NoneNonec              
     s  | d|j d d}|jrd|j }|d|j d|   d ur/ fdd|jD }n|j}t|d	d
 d}d}t|}t|dD ]A\}	}
|	|krOd}d}| j	| }| d| d|
j
 d| d|
j 	}| || |dd}|j
|
j
g}| ||
||||d  qEd S )Nz<c1>z</c1>r]   r   r   rY   c                   s   g | ]
}|j  j kr|qS r   rQ   )r   rR   rV   r   r   rU     s    z4ShowCommand.display_package_tree.<locals>.<listcomp>c                 S     | j S r}   rQ   xr   r   r   <lambda>      z2ShowCommand.display_package_tree.<locals>.<lambda>key   ├r>      └   ── <r   </> )writer    rb   r_   ra   r   sortedr   	enumerater<   r   r   _write_tree_linereplace_display_tree)rL   r@   r'   r   rW   rb   r#   tree_bartotaliri   levelr   infopackages_in_treer   rV   r   r`     sF   

z ShowCommand.display_package_treer   r>   ri   r   r   list[NormalizedName]previous_tree_barr   c                 C  s  | dd}g }|D ]}|j|jkr|j} nq
t|dd d}|d }	t|}
t|dD ][\}}|}||
kr;|d }	|t| j }| j| }d	}|j|v rPd
}|	 d| d|j d| d|j d| }| || |	 dd}	|j|vr|	|j | 
|||||	|d  q-d S )Nr      │c                 S  r   r}   rQ   r   r   r   r   r     r   z+ShowCommand._display_tree.<locals>.<lambda>r   u      ├r>   u      └r]   z"(circular dependency aborted here)r   r   r   r   r   r   )r   r   r   r   r   r   r<   r   r   appendr   )rL   r@   ri   r   r   r   r   r#   r'   r   r   r   current_treecolor_identr   circular_warnr   r   r   r   r     sT   	


zShowCommand._display_treere   c                 C  sH   |j  s|dd}|dd}|dd}|dd}|| d S )	Nr   z`-r   z|-u   ──-r   |)r   supports_utf8r   r_   )rL   r@   re   r   r   r   r     s   
zShowCommand._write_tree_linec                 C  sD   ddl m} | jD ]}||}|jj|| |jj|| q	d S )Nr   )Style)cleo.formatters.styler   r<   r   	formatter	set_styleerror_output)rL   r@   r   r   r\   r   r   r   r?     s   
zShowCommand.init_stylesc                 C  s   ddl m} ddlm} ddlm} |j}| r:|D ]}|j|jkr9|j	|j	kr9||| j
j| }||  S qd }	|D ]}|j|jkrL| }	 nq>|j}
|| j
j}||
d|j |	S )Nr   rl   )Provider)VersionSelectorz>=)r   rm   poetry.puzzle.providerr   poetry.version.version_selectorr   r   is_direct_originr   source_typerD   rr   #search_for_direct_origin_dependencyallows_prereleasesfind_best_candidatera   )rL   r'   rN   rm   r   r   r   depr   allow_prereleasesr   selectorr   r   r   r      s*   zShowCommand.find_latest_packagec                 C  s>   ddl m} |j|jkrdS |d|j }||jrdS dS )Nr   )parse_constraintry   ^r   r   )poetry.core.constraints.versionr   full_pretty_versionra   allowsr   )rL   r-   r'   r   
constraintr   r   r   r   =  s   zShowCommand.get_update_statusr"   c                 C  s    |D ]}|j |j kr dS qdS )Nrs   rw   rQ   )rL   r"   r   r'   r   r   r   r   L  s
   z ShowCommand.get_installed_status)r   r=   )r'   rP   rG   r   r   r=   )rG   r   rN   r   r   r=   r}   )
r@   r   r'   r   r   r   rW   r   r   r   )r   r>   )r@   r   ri   r   r   r   r   r   r   rP   r   r=   r   r   )r@   r   re   rP   r   r   )r@   r   r   r   )r'   r   rN   r   r   r   )r-   r   r'   r   r   rP   )r"   r   r   r   r   rP   )__name__
__module____qualname__r   rb   r   r)   __annotations__r	   _group_dependency_optionsr   r6   helpr<   rO   rH   rK   rJ   r`   r   r   r?   r   r   r   r   r   r   r   r%   (   sn   
 





<
D 
I7
8
	

r%   )r   r   r   r   r   r   )"
__future__r   r   typingr   r   cleo.helpersr   r   packaging.utilsr   #poetry.console.commands.env_commandr   %poetry.console.commands.group_commandr	   cleo.io.inputs.argumentr
   cleo.io.inputs.optionr   
cleo.io.ior   cleo.ui.tabler   r   poetry.core.packages.dependencyr   poetry.core.packages.packager   $poetry.core.packages.project_packager   poetry.repositories.repositoryr   r$   r%   r   r   r   r   <module>   s*    
