a #h4@sddlmZddlmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl mZgdZejZejZejZejZejZejZdeeefZejZejZejZejZejZejZejZejZejZej Z ej!Z!ej"Z"ej#Z#ej$Z$ej%Z%ej&Z&ej'Z'ej(Z(ej)Z)ej*Z*ej+Z+ej,Z,ej-Z-ej.Z.ej/Z/ej0Z0ej1Z1ej2Z2ej3Z3ej4Z4ej5Z5ej6Z6ej7Z7ej8Z8ej9Z9ej:Z:ej;Z;ejZ>ej?Z?dd Z@ejAZAejBZBejCZCejDZDejEZEejFZFejGZGejHZHejIZIejJZJejKZKejLZLejMZMejNZNejOZOejPZPejQZQejRZRejSZSejTZTejUZUejVZVejWZWejXZXejYZYejZZZej[Z[ej\Z\ej]Z]ej^Z^ej_Z_ej`d kZaebd Zcd d ZdGdddejeZeGdddejfZfddZgddZhGdddejiZiGdddejjZjdS))absolute_import) version_infoN)_hawkey)9VERSION VERSION_MAJOR VERSION_MINOR VERSION_PATCHtest CHKSUM_MD5 CHKSUM_SHA1 CHKSUM_SHA256 CHKSUM_SHA384 CHKSUM_SHA512ICASECMDLINE_REPO_NAMEMODULE_FAIL_SAFE_REPO_NAMESYSTEM_REPO_NAME REASON_DEP REASON_USER REASON_CLEANREASON_WEAKDEP FORM_NEVRA FORM_NEVRFORM_NEVFORM_NA FORM_NAMEZFORM_ALLMODULE_FORM_NSVCAPMODULE_FORM_NSVCAMODULE_FORM_NSVAPMODULE_FORM_NSVAMODULE_FORM_NSAPMODULE_FORM_NSAMODULE_FORM_NSVCPMODULE_FORM_NSVPMODULE_FORM_NSVCMODULE_FORM_NSVMODULE_FORM_NSPMODULE_FORM_NSMODULE_FORM_NAPMODULE_FORM_NAMODULE_FORM_NPZMODULE_FORM_NArchException ExceptionQueryExceptionRuntimeExceptionValueException chksum_name chksum_type split_nevraconvert_hawkey_reasonGoalNEVRANSVCAPPackageQueryRepoSackSelectorSubjectz%d.%d.%dcCsH|tkrtjjS|tkr tjjS|tkr0tjjS|tkr@tjj Stjj SN) rlibdnf transactionZTransactionItemReason_USERrZ TransactionItemReason_DEPENDENCYrZTransactionItemReason_CLEANrZ%TransactionItemReason_WEAK_DEPENDENCYTransactionItemReason_UNKNOWN)Z hawkey_reasonrA5/usr/lib64/python3.9/site-packages/hawkey/__init__.pyr3rsr3ZdnfcCst|}t|Sr=)rr2r5)strArArBr2s r2c@s,eZdZgdZddZddZddZdS) r6)namestreamversioncontextarchprofilecCs&|jo$|j o$|j o$|j o$|j Sr=)rFrGrHrJrKselfrArArB_has_just_names zNSVCAP._has_just_namecsHfddjD}ddtj|D}ddd|D}d|S)Ncsg|]}t|qSrA)getattr).0irLrArB z#NSVCAP.__repr__..cSs g|]\}}|dur||fqSr=rArPfieldvaluerArArBrRrSz, cSsg|]\}}d||qS)z{}={})formatrTrArArBrRrSz ) NSVCAP_FIELDSzipjoinrW)rMvaluesitemsZ items_strrArLrB__repr__szNSVCAP.__repr__cCs4d}|jD]$}t||}t||}|||kM}q |S)NT)rXrO)rMotherresultrUZ value_selfZ value_otherrArArB__eq__s    z NSVCAP.__eq__N)__name__ __module__ __qualname__rXrNr]r`rArArArBr6sr6csJeZdZeeeeeee hZ fddZ fddZ ddZ ddZZS) r4cstt||t|_dSr=)superr4__init__set group_members)rMsack __class__rArBresz Goal.__init__cs4tt||}|tkr,|j|jvr,tjjSt |Sr=) rdr4 get_reasonrrFrgr>r?TransactionItemReason_GROUPr3)rMpkgcoderirArBrkszGoal.get_reasoncCs$|tjjkr |j|jvr tjjS|Sr=)r>r?r@rFrgrl)rMrmZcurrent_reasonrArArB group_reasonszGoal.group_reasoncCs(d}t|||j}||dS)Nz*--> Finding unneeded leftover dependencies)loggerdebugZ userinstalledZswdb)rMqueryhistorymsgZuser_installedrArArBpush_userinstalleds  zGoal.push_userinstalled)rarbrcERASE DISTUPGRADEDISTUPGRADE_ALL DOWNGRADEINSTALLUPGRADE UPGRADE_ALLZ _goal_actionsrerkroru __classcell__rArArirBr4s  r4cCstst|tr|ddS|S)a Identity, except when obj is unicode then return a UTF-8 string. This assumes UTF-8 is good enough for libsolv and always will be. Else we'll have to deal with some encoding configuration. Since we use this to match string queries, we have to enforce 'strict' and potentially face exceptions rather than bizarre results. (Except that as long as we stick to UTF-8 it never fails.) utf8strict)PY3 isinstanceZunicodeencode)objrArArB_encodes  rcCs>tst|tstr"t|tr"|g}t|torSz"is_glob_pattern..)rrZ basestringstrlistany)patternrArArBis_glob_patternsrcsjeZdZdfdd ZfddZeddZdd Zdfd d ZdddZ ddZ e ddZ Z S)r<Fcstt|j||ddS)N) ignore_case)rdr<re)rMZpkg_specrrirArBreszSubject.__init__c/s0tt|j|i|}|D]}t|dVqdS)N)nsvcap)rdr<nsvcap_possibilitiesr6)rMargskwargsZpossrrirArBrszSubject.nsvcap_possibilitiescCs|jdp|jdS)N/z*/)r startswithrLrArArB_filename_patternszSubject._filename_patterncCs$|dr |djr t|djSdS)NnevraF)rJr)rMsolutionrArArB_is_arch_specified szSubject._is_arch_specifiedNc#sDtdtd}t|ttt|j|dD]}t|dVq.dS)NalwayszThe function 'nevra_possibilities' is deprecated. Please use 'get_nevra_possibilities' instead. The function will be removed on 2018-01-01)forms)r)warnings simplefilterDeprecationWarningwarnrdr<Zget_nevra_possibilitiesr5)rMZformrtrrirArBnevra_possibilitiess   zSubject.nevra_possibilitiesTcCs|dur|j|j|dd}|d}t|dkr2gS|||}|sFgS|}|js^t|jsx|drX|djdurXd} |r|dr|d rd} |r|j |d}| } |j dd | Dd } |r| | | | }g} |D]d\} }| r>|jj|d }|s$|jdd ||jj |d }| ||j|q| S|r|dr|d r|r| |jj |d }n | |jj |j dd d }|}|r| ||r|j |d |}|sgS||j|gSdS)NF)rZwith_srcrrrrT)reponamecSsg|] }|jqSrArF)rPrmrArArBrR1rSz/Subject._get_best_selectors..rrm)Zlatest_per_arch_by_priority) obsoletes)Zget_best_solutionrhlen_apply_security_filtersZ installedrrrrFZ has_just_namefilterZ availableZ_report_already_installedunionZ _name_dictr\rrZfiltermrunappend_list_or_query_to_selector)rMbaserrrZreportsrqZinstalled_queryZwith_obsoletesZavailable_queryZinstalled_relevant_queryZsltrsrFZ pkgs_listZobsoletes_queryrArArB_get_best_selectorssb             zSubject._get_best_selectorscCs(|j|dd}|s$td|j|S)NF)warningz%No security updates for argument "{}")Z_merge_update_filtersrprrWr)rMrrrrArArBrUszSubject._apply_security_filterscCst|}|j|dS)Nr)r;rf)rhZ list_or_queryZsltrrArArBr[sz"Subject._list_or_query_to_selector)F)N)NTNFN)rarbrcrerpropertyrrrrr staticmethodrr}rArArirBr<s    =r<cseZdZfddZZS)r9cs0tdtd}t|ttt||dS)NrzoThe class hawkey.Repo is deprecated. Please use dnf.repo.Repo instead. The class will be removed on 2019-12-31.)rrrrrdr9re)rMrFrtrirArBrecs  z Repo.__init__)rarbrcrer}rArArirBr9asr9)kZ __future__rsysrZpython_version collections functoolsZloggingoperatortimerZlibdnf.transactionr>r__all__r5r8r;rrr rrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+Z MODULE_FORM_NrZEQZLTZGTZAPPLY_EXCLUDESZIGNORE_MODULAR_EXCLUDESZIGNORE_REGULAR_EXCLUDESZIGNORE_EXCLUDESr r r rrrrrrr3ZADVISORY_UNKNOWNZADVISORY_SECURITYZADVISORY_BUGFIXZADVISORY_ENHANCEMENTZADVISORY_NEWPACKAGEZREFERENCE_UNKNOWNZREFERENCE_BUGZILLAZ REFERENCE_CVEZREFERENCE_VENDORr7ZReldepr:r,r-r/Z ArchExceptionr.r0r1Z detect_archrvrwrxryrzr{r|ZALLOW_UNINSTALLZ FORCE_BESTZVERIFYZIGNORE_WEAK_DEPSmajorrZ getLoggerrpr2r6r4rrr<r9rArArArBs      #e