Current File : //lib/python3.9/site-packages/dnf-plugins/__pycache__/repoclosure.cpython-39.pyc
a

�&c��@sVddlmZddlmZddlmZddlZGdd�dej�ZGdd�dej	j
�ZdS)	�)�absolute_import)�unicode_literals)�_Ncs eZdZdZ�fdd�Z�ZS)�RepoClosure�repoclosurecs,tt|��||�|durdS|�t�dS�N)�superr�__init__Zregister_command�RepoClosureCommand)�self�base�cli��	__class__��;/usr/lib/python3.9/site-packages/dnf-plugins/repoclosure.pyr	!szRepoClosure.__init__)�__name__�
__module__�__qualname__�namer	�
__classcell__rrrrrsrc@s>eZdZdZed�Zdd�Zdd�Zddd	�Ze	d
d��Z
dS)
r
)rz:Display a list of unresolved dependencies for repositoriescCs`|jj}d|_d|_|jjr\|jj��D]2}|j	|jjvrR|j	|jj
vrR|��q(|��q(dS)NT)
r
�demandsZsack_activationZavailable_repos�opts�repor�repos�all�id�check�disable�enable)rrrrrr�	configure,s
zRepoClosureCommand.configurecCs�d}|jjr|�|jj�}n|��}t|���D]\}td�t|�|j��td�t	||���|t	||�7}||D]}td�|��qxq0t	|�dkr�t
d�|t	|���}tj�
|��dS)Nrzpackage: {} from {}z  unresolved deps ({}):z    {}zGRepoclosure ended with unresolved dependencies ({}) across {} packages.)r�arches�_get_unresolved�sorted�keys�print�format�str�reponame�lenr�dnf�
exceptions�Error)rZ
total_missing�
unresolved�pkgZdep�msgrrr�run7s"��zRepoClosureCommand.runNc	s<i}t�}|jjr�|jj��jdd��|jj��jdd�}|jj��D]D}��	|jj��j|j
d�����|�	|jj��j|j
d����}qFn |jj�����|jj����}|jj
�rF|jj��jdd�}g}|jj
D]H}tj�|�}	|�|	j|jjdddd��}
|
�r|�	|
�}q�|�|�q�|�rBtj�td�d�|���|}|jj�r`|j|jjd�|du�rv|j|d�|jjj�r��jdd	����|��|D]Z}t�||<|jD]B}t|�}|�d
��s�|�d��rސq�|� |�||� |��q��q�t�fdd
�|D����fdd�|�!�D�}
dd�|
�!�D�S)NT)�empty)r(F)Z
with_nevraZ
with_providesZwith_filenameszno package matched: %sz, )�arch)Zlatest_per_archz	solvable:zrpmlib(c3s|]}�j|d�s|VqdS))ZprovidesN)�filter��.0�x)�	availablerr�	<genexpr>��z5RepoClosureCommand._get_unresolved.<locals>.<genexpr>cs(i|] \}}|t�fdd�|D���qS)c3s|]}|�vr|VqdSrrr4��unresolved_depsrrr8�r9z@RepoClosureCommand._get_unresolved.<locals>.<dictcomp>.<genexpr>)�set�r5�k�vr:rr�
<dictcomp>�s�z6RepoClosureCommand._get_unresolved.<locals>.<dictcomp>cSsi|]\}}|r||�qSrrr=rrrr@�r9)"r<rZnewestrZsack�queryr3rZiter_enabled�unionrZlatestr7�pkglistr*ZsubjectZSubject�intersectionZget_best_query�appendr+r,r�joinrZfiltermZconfZbestZapplyZrequiresr'�
startswith�add�items)rr2r-ZdepsZto_checkrZ	pkglist_q�errorsr.ZsubjZpkg_qZreqZreqnameZunresolved_transitionr)r7r;rr"Ksj��
���



�

�z"RepoClosureCommand._get_unresolvedcCs`|jdgddtd�d�|jdgdtd�d�|jd	d
dtd�d
�|jdgdtd�dd�dS)Nz--archrEr!zBcheck packages of the given archs, can be specified multiple times)�default�action�dest�helpz--checkzSpecify repositories to check)rKrLrNz-nz--newest�
store_truez+Check only the newest packages in the repos)rLrNz--pkgz#Check closure for this package onlyrC)rKrLrNrM)�add_argumentr)�parserrrr�
set_argparser�s�
�
�
�z RepoClosureCommand.set_argparser)N)rrr�aliasesrZsummaryr r0r"�staticmethodrRrrrrr
(s
Qr
)Z
__future__rrZdnfpluginscorerZdnf.clir*ZPluginrr
ZCommandr
rrrr�<module>s