a &c@sVddlmZddlmZddlmZddlZGdddejZGdddej j Z dS) )absolute_import)unicode_literals)_Ncs eZdZdZfddZZS) RepoClosure repoclosurecs,tt||||durdS|tdSN)superr__init__Zregister_commandRepoClosureCommand)selfbasecli __class__;/usr/lib/python3.9/site-packages/dnf-plugins/repoclosure.pyr !szRepoClosure.__init__)__name__ __module__ __qualname__namer __classcell__rrrrrsrc@s>eZdZdZedZddZddZd dd Ze d d Z dS) r )rz:Display a list of unresolved dependencies for repositoriescCs`|jj}d|_d|_|jjr\|jjD]2}|j |jjvrR|j |jj vrR| q(| q(dS)NT) r demandsZsack_activationZavailable_reposoptsrepor reposallidcheckdisableenable)r rrrrr configure,s zRepoClosureCommand.configurecCsd}|jjr||jj}n|}t|D]\}tdt||jtdt |||t ||7}||D]}td|qxq0t |dkrt d|t |}t j |dS)Nrzpackage: {} from {}z unresolved deps ({}):z {}zGRepoclosure ended with unresolved dependencies ({}) across {} packages.)rarches_get_unresolvedsortedkeysprintformatstrreponamelenrdnf exceptionsError)r Z total_missing unresolvedpkgZdepmsgrrrrun7s"  zRepoClosureCommand.runNc s<i}t}|jjr|jjjdd|jjjdd}|jjD]D} |jjj|j d | |jjj|j d }qFn |jj |jj }|jj rF|jjjdd}g}|jj D]H}tj|} || j|jjdddd} | r| | }q||q|rBtjtdd||}|jjr`|j|jjd|durv|j|d|jjjrjdd ||D]Z}t||<|jD]B} t| } | d s| d rސq| | || | qqtfd d |Dfdd|!D} dd| !DS)NT)empty)r(F)Z with_nevraZ with_providesZwith_filenameszno package matched: %sz, )arch)Zlatest_per_archz solvable:zrpmlib(c3s|]}j|ds|VqdS))ZprovidesN)filter.0x) availablerr z5RepoClosureCommand._get_unresolved..cs(i|] \}}|tfdd|DqS)c3s|]}|vr|VqdSrrr4unresolved_depsrrr8r9z@RepoClosureCommand._get_unresolved...)setr5kvr:rr sz6RepoClosureCommand._get_unresolved..cSsi|]\}}|r||qSrrr=rrrr@r9)"r<rZnewestr Zsackqueryr3rZ iter_enabledunionrZlatestr7pkglistr*ZsubjectZSubject intersectionZget_best_queryappendr+r,rjoinrZfiltermZconfZbestZapplyZrequiresr' startswithadditems)r r2r-ZdepsZto_checkrZ pkglist_qerrorsr.ZsubjZpkg_qZreqZreqnameZunresolved_transitionr)r7r;rr"Ksj                z"RepoClosureCommand._get_unresolvedcCs`|jdgddtdd|jdgdtdd|jd d d td d |jdgdtddddS)Nz--archrEr!zBcheck packages of the given archs, can be specified multiple times)defaultactiondesthelpz--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_argparsers    z RepoClosureCommand.set_argparser)N) rrraliasesrZsummaryr r0r" staticmethodrRrrrrr (s  Qr ) Z __future__rrZdnfpluginscorerZdnf.clir*ZPluginrr ZCommandr rrrrs