ROOTPLOIT
Server: LiteSpeed
System: Linux server71.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
User: niphet (1079)
PHP: 5.3.29
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/dnf/__pycache__/transaction_sr.cpython-36.opt-1.pyc
3

gaf@sddlmZddlmZddlmZddlZddlZddlmZddlZ	ddl
Z
dZdZdeefZ
Gddde	jjZGd	d
d
e	jjZGdddeZd
dZddZGdddeZdS))absolute_import)print_function)unicode_literalsN)_z%s.%scseZdZfddZZS)TransactionErrorcstt|j|dS)N)superr__init__)selfmsg)	__class__$/usr/lib/python3.6/transaction_sr.pyr/szTransactionError.__init__)__name__
__module____qualname__r
__classcell__rr)rr
r.srcseZdZfddZZS)TransactionReplayErrorcsv||_t|ttfr||_n|g|_|r:tdj|d}ntd}x|jD]}|dt|7}qJWtt	|j
|dS)z
        :param filename: The name of the transaction file being replayed
        :param errors: a list of error classes or a string with an error description
        zWThe following problems occurred while replaying the transaction from file "{filename}":)filenamez<The following problems occurred while running a transaction:z
  N)r
isinstancelisttupleerrorsrformatstrrrr)r	rrr
error)rrr
r4szTransactionReplayError.__init__)rrrrrrr)rr
r3srcseZdZfddZZS)#IncompatibleTransactionVersionErrorcstt|j||dS)N)rrr)r	rr
)rrr
rMsz,IncompatibleTransactionVersionError.__init__)rrrrrrr)rr
rLsrc"Cs|jd\}}yt|}Wn8tk
rR}zt|tdj|dWYdd}~XnXyt|Wn8tk
r}zt|tdj|dWYdd}~XnX|tkrt|tdj|tddS)N.z1Invalid major version "{major}", number expected.)majorz1Invalid minor version "{minor}", number expected.)minorzPIncompatible major version "{major}", supported major version is "{major_supp}".)rZ
major_supp)splitint
ValueErrorrrr
VERSION_MAJORr)versionrrrerrr
_check_versionQs$$$r%cCsdti}g}g}g}|dkr |Sx0|jD]"}|jr`|j|j|jtjj|j	|j
dq,|jr|j}|j|j
gtjj|jd}x:|jD].}|dj|j|jtjj|jdqW|j|q,|jr,|j}	|j|	jgtjj|	jd}
x<|	jD]0}|
dj|j
|jtjj|jd	qW|j|
q,W|rb||d
<|rp||d<|r~||d<|S)z
    Serializes a transaction to a data structure that is equivalent to the stored JSON format.
    :param transaction: the transaction to serialize (an instance of dnf.db.history.TransactionWrapper)
    r#N)actionnevrareasonrepo_id)r&idpackages
package_typesr+)name	installedpackage_type)r&r*groupsr,r0)r*r.
group_typerpmsenvironments)VERSIONr+
is_packageappendZaction_namer'libdnftransactionZTransactionItemReasonToStringr(Z	from_repoZis_groupZ	get_groupZ
getGroupIdZcompsPackageTypeToStringZgetPackageTypesZgetPackagesZgetNameZgetInstalledZgetPackageTypeZis_environmentZget_environmentZgetEnvironmentIdZ	getGroupsZgetGroupType)r8datar2r0r3tsigroup
group_datapkgenvenv_datagrprrr
serialize_transactionlsXrAc@seZdZdZd/ddZddZd	d
ZddZd
dZddZ	ddZ
ddZddZddZ
ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.ZdS)0TransactionReplaya
    A class that encapsulates replaying a transaction. The transaction data are
    loaded and stored when the class is initialized. The transaction is run by
    calling the `run()` method, after the transaction is created (but before it is
    performed), the `post_transaction()` method needs to be called to verify no
    extra packages were pulled in and also to fix the reasons.
    NFcCsv||_||_||_||_||_|jjjs.d|_t|_i|_	g|_
|rX|rXttdn|rh|j
|n
|j|dS)a
        :param base: the dnf base
        :param filename: the filename to load the transaction from (conflicts with the 'data' argument)
        :param data: the dictionary to load the transaction from (conflicts with the 'filename' argument)
        :param ignore_extras: whether to ignore extra package pulled into the transaction
        :param ignore_installed: whether to ignore installed versions of packages
        :param skip_unavailable: whether to skip transaction packages that aren't available
        TzKConflicting TransactionReplay arguments have been specified: filename, dataN)_base	_filename_ignore_installed_ignore_extras_skip_unavailableconfstrictset_nevra_cache_nevra_reason_cache	_warningsr!r_load_from_file_load_from_data)r	baserr9Z
ignore_extrasZignore_installedZskip_unavailablerrr
rs
zTransactionReplay.__init__c%Cs||_t|dN}ytj|}Wn8tjjk
rX}zt|t|dWYdd}~XnXWdQRXy|j|Wn,t	k
r}zt||WYdd}~XnXdS)Nrr)
rEopenjsonloaddecoderZJSONDecodeErrorrrrPr)r	fnfreplay_datar$rrr
rOs.z!TransactionReplay._load_from_filecCs|||_|j|j|jjdg|_|j|jtdd|jjdg|_|j|jtdd|jjdg|_|j|jtdddS)Nr2Zarrayr0r3)_replay_data_verify_toplevel_jsonget_rpms_assert_typer_groups
_environments)r	r9rrr
rPsz!TransactionReplay._load_from_datacCs|r|jj|nt|dS)N)rNr6r)r	Z	warn_onlyr
rrr
_raise_or_warnsz TransactionReplay._raise_or_warncCs$t||s ttdj||ddS)Nz*Unexpected type of "{id}", {exp} expected.)r*Zexp)rrrr)r	valuetr*Zexpectedrrr
r^s
zTransactionReplay._assert_typecCsJ|j}d|kr$t|tdjdd|j|dtddt|d|dS)Nr#zMissing key "{key}".)keystring)rErrrr^rr%)r	rYrWrrr
r[s
z'TransactionReplay._verify_toplevel_jsoncCsDy,|d}|d}|d}tjj|d}Wnvtk
rh}z ttdj|jddWYdd}~Xn<tk
r}z ttdj|d|d	WYdd}~XnXt	j
|}|jt	jgd
}t
|dkrttdj|d
|d}	d|	j|	jf}
|jjjj|	j|	jd}|	jdk	r"|	jnd}|j||	j|	jd}
|r`|
j|d}|r`|j|
j}
|
s|j|jtdj|d
dS|dkr|jj||d(kr||j|<|d)kr.|dkr|jr|jj|r|j|jtdj|
|dt j!j"|jjj#|
d}|jj$j%||jj&j'dn|dkr|
j(}
|
sf|j|jtdj||ddSt j!j"|jjj#|
d}|jj$j%||jj&j'dn|d*kr
|
j}
|
s|j|jtd#j||ddS|js|dkr@xX|
D]}|jj$j)|d$d%qWn6|dkr*|jj*j+|
d|nttd&j||d'dS)+Nr&r'r)r(z%Missing object key "{key}" in an rpm.r)rdzFUnexpected value of package reason "{reason}" for rpm nevra "{nevra}".)r(r')Zformsz)Cannot parse NEVRA for package "{nevra}".)r'z%s.%s)r-arch)epochr#release)Zreponamez Cannot find rpm nevra "{nevra}".z
Reason ChangeInstallUpgrade	Downgrade	ReinstallRemovedz:Package "{na}" is already installed for action "{action}".)nar&)r=)ZselectZoptionalzLPackage nevra "{nevra}" not available in repositories for action "{action}".)r'r&Upgraded
DowngradedReinstalled	Obsoletedz<Package nevra "{nevra}" not installed for action "{action}".F)Z
clean_depszFUnexpected value of package action "{action}" for rpm nevra "{nevra}".)r&r')rjrkrlrmrn)rjrkrl)rprqrrrnrs),r7r8ZStringToTransactionItemReasonKeyErrorrrrargs
IndexErrorhawkeyZSubjectZget_nevra_possibilitiesZ
FORM_NEVRAlenr-rgrDZsackqueryfilterrhr#riunionr.rarHrLaddrMZ_get_installonly_queryrFdnfZselectorZSelectorrKZgoalinstallrIrJZ	availableZerasehistoryZ
set_reason)r	pkg_datar&r'r)r(r$ZsubjZ
parsed_nevrasZparsed_nevraroZquery_narhryZ
query_repoZsltrr=rrr
_replay_pkg_actionsz("





$



z$TransactionReplay._replay_pkg_actioncCs2|jjj|}|s,|j|jtd|dS|jjjj||j	|j
|}yx|D]}|d}|j|tdd|d}|j|t
dd|d}	|j|	td	dy|j||tjj|	WqNtjjk
r}
ztt|
WYdd}
~
XqNXqNWWn>tk
r,}
z ttd
j|
jddWYdd}
~
XnX|S)
NzGroup id '%s' is not available.r-zgroups.packages.namerer.zgroups.packages.installedbooleanr/zgroups.packages.package_typez.Missing object key "{key}" in groups.packages.r)rd)rDcompsZ_group_by_idrarHrrr;newr-ui_namer^rboolZ
addPackager7r8stringToCompsPackageTyperErrorrrtrru)r	group_id	pkg_typespkgsZcomps_group
swdb_groupr=r-r.r/r$rrr
_create_swdb_groupvs*
&*z$TransactionReplay._create_swdb_groupcCs*|j|||}|dk	r&|jjjj|dS)N)rrDrr;r~)r	rrrrrrr
_swdb_group_installsz%TransactionReplay._swdb_group_installcCsT|jjjj|s*|j|jtd|dS|j|||}|dk	rP|jjjj|dS)NzGroup id '%s' is not installed.)	rDrr;r\rarFrrupgrade)r	rrrrrrr
_swdb_group_upgradesz%TransactionReplay._swdb_group_upgradecCsT|jjjj|s*|j|jtd|dS|j|||}|dk	rP|jjjj|dS)NzGroup id '%s' is not installed.)	rDrr;r\rarFrr	downgrade)r	rrrrrrr
_swdb_group_downgradesz'TransactionReplay._swdb_group_downgradecCsT|jjjj|s*|j|jtd|dS|j|||}|dk	rP|jjjj|dS)NzGroup id '%s' is not installed.)	rDrr;r\rarFrrremove)r	rrrrrrr
_swdb_group_removesz$TransactionReplay._swdb_group_removecCsd|jjj|}|s,|j|jtd|dS|jjjj||j	|j
|}yx|D]}|d}|j|tdd|d}|j|t
dd|d}	|j|	td	dytjj|	}	Wn2tjjk
r}
ztt|
WYdd}
~
XnX|	tjjtjjfkrttd
j|dd|j|||	qNWWn>tk
r^}
z ttdj|
jd
dWYdd}
~
XnX|S)Nz%Environment id '%s' is not available.r*zenvironments.groups.idrer.zenvironments.groups.installedrr1zenvironments.groups.group_typezlInvalid value "{group_type}" of environments.groups.group_type, only "mandatory" or "optional" is supported.)r1z2Missing object key "{key}" in environments.groups.r)rd)rDrZ_environment_by_idrarHrrr>rr-rr^rrr7r8rrrrZCompsPackageType_MANDATORYZCompsPackageType_OPTIONALrZaddGrouprtru)r	env_idrr0Z	comps_envswdb_envr@r*r.r1r$rrr
_create_swdb_environments8
*z*TransactionReplay._create_swdb_environmentcCs*|j|||}|dk	r&|jjjj|dS)N)rrDrr>r~)r	rrr0rrrr
_swdb_environment_installsz+TransactionReplay._swdb_environment_installcCsT|jjjj|s*|j|jtd|dS|j|||}|dk	rP|jjjj|dS)Nz%Environment id '%s' is not installed.)	rDrr>r\rarFrrr)r	rrr0rrrr
_swdb_environment_upgradesz+TransactionReplay._swdb_environment_upgradecCsT|jjjj|s*|j|jtd|dS|j|||}|dk	rP|jjjj|dS)Nz%Environment id '%s' is not installed.)	rDrr>r\rarFrrr)r	rrr0rrrr
_swdb_environment_downgradesz-TransactionReplay._swdb_environment_downgradecCsT|jjjj|s*|j|jtd|dS|j|||}|dk	rP|jjjj|dS)Nz%Environment id '%s' is not installed.)	rDrr>r\rarFrrr)r	rrr0rrrr
_swdb_environment_removesz*TransactionReplay._swdb_environment_removecCs|jS)z>
        :returns: the loaded data of the transaction
        )rZ)r	rrr
get_dataszTransactionReplay.get_datacCs|jS)zW
        :returns: an array of warnings gathered during the transaction replay
        )rN)r	rrr
get_warnings
szTransactionReplay.get_warningscCs|j}g}xJ|jD]@}y|j|Wqtk
rP}z|j|WYdd}~XqXqWx|jD]}y
|d}|d}ytjj|d}Wn:tj	j
k
r}z|jtt|w`WYdd}~XnX|dkr|j|||dn|dkr|j
|||dnl|dks|d	kr,|j|||dnD|d
ks@|dkrT|j|||dn|jttdj||d
Wq`tk
r}z&|jttdj|jddWYdd}~Xq`tk
r}z|j|WYdd}~Xq`Xq`Wx|jD]}	y|	d}|	d}
ytjj|	d}Wn>tj	j
k
r^}z|jtt|wWYdd}~XnX|dkr~|j|
||	dn|dkr|j|
||	dnl|dks|d	kr|j|
||	dnD|d
ks|dkr|j|
||	dn|jttdj||
dWnptk
rN}z&|jttdj|jddWYdd}~Xn.tk
rz}z|j|WYdd}~XnXqW|rt||dS)z*
        Replays the transaction.
        Nr&r*r,rjr+rnrkrprlrqz@Unexpected value of group action "{action}" for group "{group}".)r&r;z&Missing object key "{key}" in a group.r)rdr0zJUnexpected value of environment action "{action}" for environment "{env}".)r&r>z-Missing object key "{key}" in an environment.)rEr]rrr6r_r7r8rrrrrrrrrrrtrur`rrrrr)r	rWrrr$r<r&rrr?rrrr
runsv 
* 

*"zTransactionReplay.runcCs8|jjsdSg}x|jjD]}y
|j}Wn$tk
rP}zwWYdd}~XnXt|}||jkr|js|jtjj	tjj
tjjfkrtdj
|d}|js|jt|n|jj|y>|j|}|jtjjtjjfkstjj||jdkr||_Wqtk
r}zWYdd}~XqXqW|r4t|j|dS)z
        Sets reasons in the transaction history to values from the stored transaction.

        Also serves to check whether additional packages were pulled in by the
        transaction, which results in an error (unless ignore_extras is True).
        NzgPackage nevra "{nevra}", which is not present in the transaction file, was pulled into the transaction.)r'r)rDr8r=rtrrLrFr&r7ZTransactionItemAction_UPGRADEDZ TransactionItemAction_DOWNGRADEDZ!TransactionItemAction_REINSTALLEDrrrGr6rrNrMZTransactionItemAction_INSTALLZTransactionItemAction_REMOVEZTransactionItemReasonComparer(rrE)r	rr:r=r$r'r
Z
replay_reasonrrr
post_transactionds<



z"TransactionReplay.post_transaction)rCNFFF)rrr__doc__rrOrPrar^r[rrrrrrrrrrrrrrrrrrr
rBs4
 


a


(


SrB)Z
__future__rrrr7rwZdnf.i18nrZdnf.exceptionsr}rTr"Z
VERSION_MINORr4
exceptionsrrrrr%rAobjectrBrrrr
<module>s K