σ Ύ[/\c@@sͺdZddlmZddlmZddlmZddlZddlZddl Zddl Z ddl Z ddl Z e j dƒZde jfd„ƒYZdS( u! Contains the dnf.Package class. i(tabsolute_import(tunicode_literals(t_NudnftPackagecB@sΝeZdZd„Zed„ƒZejd„ƒZed„ƒZed„ƒZed„ƒZ ed„ƒZ ed„ƒZ ed „ƒZ e jd „ƒZ ed „ƒZ ed „ƒZed „ƒZed„ƒZed„ƒZed„ƒZed„ƒZejd„ƒZed„ƒZed„ƒZed„ƒZed„ƒZed„ƒZed„ƒZd„Zd„Zd„Zd„Zd„Zd&d"„Zd#„Z d$„Z!d%„Z"RS('u Represents a package. #:api cC@s>tt|ƒj|ƒ||_d|_d|_d|_dS(N(tsuperRt__init__tbasetNonet _priv_chksumt_repot _priv_size(tselft initobjectR((s//usr/lib/python2.7/site-packages/dnf/package.pyR)s    cC@sr|jr|jS|jrbtjjjƒ}tjjj||jƒ}tj |ƒt j |ƒfSt t |ƒjS(N(Rt _from_cmdlinetdnftyumtmisctget_default_chksum_typetchecksumtlocationthawkeyt chksum_typetbinasciit unhexlifyRRtchksum(R Rt chksum_val((s//usr/lib/python2.7/site-packages/dnf/package.pyt_chksum0s   cC@s ||_dS(N(R(R tval((s//usr/lib/python2.7/site-packages/dnf/package.pyR;scC@sdj|jƒS(uu returns name of debuginfo package for given package e.g. kernel-PAE -> kernel-PAE-debuginfo u {}-debuginfo(tformattname(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyt debug_name?scC@s|jtjkS(N(treponameRtCMDLINE_REPO_NAME(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyR HscC@s|jtjkS(N(RRtSYSTEM_REPO_NAME(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyt _from_systemLscC@sBd}|jr'|jjj|ƒ}ni}|r;d|S|jS(Nu@(RR"RthistorytrepoR(R tpkgrepo((s//usr/lib/python2.7/site-packages/dnf/package.pyt _from_repoPs cC@stjj|jƒƒS(N(Rtrpmt_headertlocalPkg(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyR([scC@s |jr|jStt|ƒjS(N(R RRtsize(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyt_size_s cC@s ||_dS(N(R (R R((s//usr/lib/python2.7/site-packages/dnf/package.pyR+escC@sdj|jƒS(u€ returns name of debuginfo package for source package of given package e.g. krb5-libs -> krb5-debuginfo u {}-debuginfo(Rt source_name(R ((s//usr/lib/python2.7/site-packages/dnf/package.pytsource_debug_nameiscC@sJ|jdk r@tjj|jdƒ}|jddƒd}nd}|S(uO returns name of source package e.g. krb5-libs -> krb5 u.src.rpmu-iiN(t sourcerpmRRtutiltrtrimtrsplit(R tsrcname((s//usr/lib/python2.7/site-packages/dnf/package.pyR,rs cC@s/|jdkrdS|j\}}tj|ƒS(N(t hdr_chksumRRthexlify(R RR((s//usr/lib/python2.7/site-packages/dnf/package.pyt_pkgid†scC@s t|jƒS(u: Always type it to int, rpm bindings expect it like that. (tinttrpmdbid(R ((s//usr/lib/python2.7/site-packages/dnf/package.pytidxscC@s|jS(N(R(R ((s//usr/lib/python2.7/site-packages/dnf/package.pytrepoid’scC@s(|j|jt|jƒ|j|jfS(N(Rtarchtstrtetvtr(R ((s//usr/lib/python2.7/site-packages/dnf/package.pytpkgtup–scC@s!|jr|jS|jj|jS(N(R RtreposR(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyR$šs cC@s ||_dS(N(R (R R((s//usr/lib/python2.7/site-packages/dnf/package.pyR$ scC@s|jS(N(R(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyt relativepath€scC@s|jS(N(R:(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyta¨scC@s|jS(N(tepoch(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyR<¬scC@s|jS(N(tversion(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyR=°scC@s|jS(N(trelease(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyR>΄scC@s|jS(N(R(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyt ui_from_repoΈscC@s|j|ƒdkS(Ni(tevr_cmp(R tpkg((s//usr/lib/python2.7/site-packages/dnf/package.pytevr_eq½scC@s|j|ƒdkS(Ni(RG(R RH((s//usr/lib/python2.7/site-packages/dnf/package.pytevr_gtΑscC@s|j|ƒdkS(Ni(RG(R RH((s//usr/lib/python2.7/site-packages/dnf/package.pytevr_ltΕscC@s|jS(N(tmedianr(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyt getDiscNumΙscC@s |jr|jS|j}|jjjƒs@tjj|ƒ}n>|jr~|jj dƒr~tjj |j|j dƒƒdStjj |jj |j dƒƒS(u› Package's location in the filesystem. For packages in remote repo returns where the package will be/has been downloaded. ufile://u/i( R RR$R tisLocaltostpathtbasenametbaseurlt startswithtjointlstriptpkgdir(R tloc((s//usr/lib/python2.7/site-packages/dnf/package.pyR)Νs  #uhttpuftpufileuhttpsc@sa‡‡fd†}ˆjsdSˆjjjƒ}|rA||ƒSˆjjr]|ˆjjƒSdS(uΧ The location from where the package can be downloaded from :param schemes: list of allowed protocols. Default is ('http', 'ftp', 'file', 'https') :return: location (string) or None c@sxz|D]r}ˆrZtjjj|ƒd}|ˆkrytjj|ˆjjdƒƒSqtjj|ˆjjdƒƒSqWdS(Niu/( RtpycompturlparseRORPRTRRUR(turl_listturlts(tschemesR (s//usr/lib/python2.7/site-packages/dnf/package.pytschemes_filterδs  "#N(RRR$R t getMirrorsRR(R R]R^tmirrors((R]R s//usr/lib/python2.7/site-packages/dnf/package.pytremote_locationάs   cC@sH|jdkrtS|jpG|jjjƒoG|j pG|jjdƒS(Nu@Systemufile://(R9tTrueR R$R RNRRRS(R ((s//usr/lib/python2.7/site-packages/dnf/package.pyt _is_local_pkgχs cC@sD|jdkrdS|j\}}tj|ƒtj|ƒjƒfS(u] Return the chksum type and chksum string how the legacy yum expects it. N(NN(RRRt chksum_nameRR4tdecode(R RR((s//usr/lib/python2.7/site-packages/dnf/package.pyt returnIdSumώscC@s‘|jrtdƒ‚n|jr%tS|jƒ\}}tjjj||j ƒd|j ƒ}||krt j t dƒ||||ƒtStS(Nu$Can not verify an installed package.tdatasizeu%s: %s check failed: %s vs %s(R"t ValueErrorR RbRfRRRRR)R+tloggertdebugRtFalse(R RRtreal_sum((s//usr/lib/python2.7/site-packages/dnf/package.pytverifyLocalPkgs    (uhttpuftpufileuhttps(#t__name__t __module__t__doc__RtpropertyRtsetterRR R"R&R(R+R-R,R5R8R9R?R$RARBR<R=R>RFRIRJRKRMR)RaRcRfRm(((s//usr/lib/python2.7/site-packages/dnf/package.pyR&sD             (Rpt __future__RRtdnf.i18nRRtdnf.rpmRt dnf.yum.miscRtloggingROt getLoggerRiR(((s//usr/lib/python2.7/site-packages/dnf/package.pyts