[/\c@@s/ddlmZddlmZddlmZmZddlZddlZddl Zddl Zddl Zddl Zddl ZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZdZdZ ej!ej"dZ#dej$e#ej%fZ&id e&e fd 6d e&efd6d d 6Z'ej(dZ)dZ*dZ+dZ,dZ-de.fdYZ/de0fdYZ1dej2j3fdYZ4de.fdYZ5dej6j7fdYZ8dej2j9fdYZ:de:fd YZ;d!e:fd"YZ<d#ej2j9fd$YZ=ej6j>j?Z@ej6j>jAZBej6j>jCZDd%ej6jEfd&YZFd'ejGjHfd(YZ>dS()i(tabsolute_import(tunicode_literals(tucdt_Nupackagesu mirrorlistu-_.:u(?P[%s]+)\-[%s]{16}u2^%s\/.*(xml(\.gz|\.xz|\.bz2)?|asc|cachecookie|%s)$umetadatau^%s\/%s\/.+rpm$u^.+(solv|solvx)$udbcacheudnfcC@s)tjjj|}|dkr%dS|S(uAReturn index of an invalid character in the repo ID (if present).iN(tlibdnftrepotRepotverifyIdtNone(trepo_idt first_invalid((s,/usr/lib/python2.7/site-packages/dnf/repo.pytrepo_id_invalidGscG@sJx-|D]%}|||}|dk r|SqWttd|dS(Nu"no matching payload factory for %s(Rt ValueErrorR(tpkgtprogresst factoriestfntpload((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt _pkg2payloadNs   c C@sYd}|jjgt|d|D]}|j^q)}t}y&tjjjtjj |t Wn"t k r}t ||_ nX|j|jj|_x|D]}|j}|dks|jdrqn|j} | j} | j} |tdkr1|jj| qn| jjj|g|j| (R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR%scC@s ||_dS(N(R>(R@tnew_dct((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR%scC@s|j|jkrdS|jS(Ni(R R*R7(R@R((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt_bandwidth_useds(t__name__t __module__RAtpropertyR.R%tsetterRC(((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRs  t_DetailedLibrepoErrorcB@seZdZRS(cC@s:tj||jd|_|jd|_||_dS(Nii(t ExceptionRAtargst librepo_codet librepo_msgt source_url(R@t librepo_errRM((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRAs (RDRERA(((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRHst_NullKeyImportcB@seZdZRS(cC@stS(N(R(R@tidtuseridt fingerprintturlt timestamp((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt_confirms(RDRERU(((s,/usr/lib/python2.7/site-packages/dnf/repo.pyROstMetadatacB@s eZdZedZRS(cC@s ||_dS(N(R,(R@R((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRAscC@s |jjS(N(R,tfresh(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRWs(RDRERARFRW(((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRVs tPackageTargetCallbackscB@s,eZdZdZdZdZRS(cC@s tt|j||_dS(N(tsuperRXRAR)(R@R)((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRAscC@s|jjd||dS(Ni(R)t_end_cbR(R@tstatustmsg((s,/usr/lib/python2.7/site-packages/dnf/repo.pytendscC@s|jjd||dS(Ni(R)t _progress_cbR(R@ttotalToDownloadt downloaded((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRscC@s|jjd||dS(Ni(R)t_mirrorfail_cbR(R@R\RS((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt mirrorFailures(RDRERAR]RRb(((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRXs   tPackagePayloadcB@sDeZdZdZdZdZedZdZRS(cC@s2tt|j|t||_||_dS(N(RYRcRARXR5R (R@R R((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRAscC@sxtjj}|dkr'tjj}n7|jdr:dS|tjjj kr^tjj }n|j j |||dS(u"End callback to librepo operation.u Not finishedN( tdnftcallbackt STATUS_FAILEDRt STATUS_OKR'RRtPackageTargetCBtTransferStatus_ALREADYEXISTStSTATUS_ALREADY_EXISTSRR](R@tcbdatat lr_statusR\R[((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRZs  cC@s |jj|tjj|dS(N(RR]RdRet STATUS_MIRROR(R@RkRRS((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRascC@soy|jj||WnQtk rjtj\}}}tj|||}tjdj|nXdS(Nu( RRItsystexc_infot tracebacktformat_exceptiontloggertcriticaltjoin(R@Rkttotaltdonetexc_typet exc_valuet exc_tracebackt except_list((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR^s  cC@s|jS(N(R7(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR8sc C@s|j}|jj}tjj|i|d6td6|d6|jd6|jd6|j d6}|j |j t jj |jj|d|d|d|d |d |d |dd d |j S( Nudesturesumeucbdatau progresscbuendcbumirrorfailurecbu relative_urlu checksum_typeuchecksumu expectedsizeubase_urli(R RtpkgdirRdtutilt ensure_dirRR^RZRatupdatet_target_paramsRRR,R5(R@R R{t target_dct((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRs"       ( RDRERARZRaR^RFR8R(((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRcs    t RPMPayloadcB@s)eZdZdZedZRS(cC@stjj|jjS(N(tostpathtbasenameR tlocation(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt__str__scC@s|j}|j\}}tjjj|}|tjjjkr^tjt d|ni|j d6|d6|d6|j d6|j d6S(Nuunsupported checksum type: %su relative_urlu checksum_typeuchecksumu expectedsizeubase_url( R t returnIdSumRRRt checksumTypetChecksumType_UNKNOWNRrtwarningRRt downloadsizetbaseurl(R@R tctypetcsumt ctype_code((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRs   cC@s |jjS(uTotal size of the download.(R R(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR7s(RDRERRRFR7(((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRs  tRemoteRPMPayloadcB@s;eZdZdZdZdZedZRS(cC@stt|jd|||_d|_||_|jjpCd|jjjd}t j |j dj d }d|}t jj|jj|d|_tjj|jt jj|j|jjd |_dS( Nu unused_objectiuubasearchuutf8iu commandline-upackagesu/(RYRRAtremote_locationt remote_sizetconft releasevert substitutionstgetthashlibtsha256tencodet hexdigestRRRttcachedirR{RdR|R}Rtlstript local_path(R@RRRtstdigesttrepodir((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRAs   %" !cC@stjj|jS(N(RRRR(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR+scC@sx||_y|jj||WnQtk rstj\}}}tj|||}tjdj |nXdS(Nu( RRRIRnRoRpRqRrRsRt(R@RkRuRvRwRxRyRz((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR^.s  c C@sXtjj|jjtjj|j|j dddtjj |jt dd|j S(Ni(RRRRt_configRRRRR{RtdirnameRR5(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR7s !cC@s|jS(uTotal size of the download.(R(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR7=s(RDRERARR^RRFR7(((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRs   t MDPayloadcB@seZdZdZdZdZdZdZedZ edZ e j dZ d Z d Z RS( cC@s5tt|j|d|_d|_t|_dS(Nui(RYRRAt_textt_download_sizetFalsetfastest_mirror_running(R@R((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRAEs  cC@s'tjjr|jS|jjdSdS(Nuutf-8(RdtpycomptPY3RR(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRKs cC@s|jS(N(R(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt __unicode__QscC@s ||_|jj||dS(N(RR(R@RkRuRv((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR^Ts cC@s|tjjjkr1td|}t|_n;|tjjjkrh|jrh|r_d|nd}ndS|jj |dS(Nu,determining the fastest mirror (%s hosts).. u error: %s udone. ( RRtRepoCBtFastestMirrorStage_DETECTIONRRRtFastestMirrorStage_STATUSRtmessage(R@RktstagetdataR\((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt_fastestmirror_cbXs cC@s!d||f}tj|dS(Nuerror: %s (%s).(Rrtdebug(R@RkR\RStmetadata((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt_mirror_failure_cbdscC@s|jS(N(R(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR7hscC@s|jS(N(t _progress(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRlscC@s+|dkrtjj}n||_dS(N(RRdRetNullDownloadProgressR(R@R((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRps cC@s ||_|jjdddS(Nii(RRtstart(R@ttext((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRvs cC@s#d|_|jj|dddS(Ni(RRR]R(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR]zs (RDRERARRR^RRRFR7RRGRR](((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRCs      t RepoCallbackscB@sGeZdZdZdZdZdZdZdZRS(cC@s,tt|j||_|j|_dS(N(RYRRAR,t _md_pload(R@R((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRAs cC@s|jj|dS(N(RR(R@twhat((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRscC@s|jjdS(N(RR](R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR]scC@s|jjd||dS(Ni(RR^R(R@R_R`((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRscC@s|jjd||dS(N(RRR(R@Rtptr((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt fastestMirrorscC@s|jjd|||dS(Ni(RRR(R@R\RSR((s,/usr/lib/python2.7/site-packages/dnf/repo.pythandleMirrorFailurescC@s|jjj|||||S(N(R,t _key_importRU(R@RPRQRRRSRT((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt repokeyImports( RDRERARR]RRRR(((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRs      RcB@s%eZeZdddZedZedZej dZedZ e j dZ edZ edZ e j dZ d Z d Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZRS(cC@s'tt|jd|d||jjjtjj||j|_t t j j |_ t||_|jjj|jj|jd|_t|_d|_|jj|j|r|jj|jnt jjj|_|j|_|dk r|jnt |_!dS(Ntsectiontparent("RYRRARtthistdisownRRR,RRdReRRRt _callbackst setCallbacksRt_pkgdirRORRtsetSyncStrategyt DEFAULT_SYNCtsetSubstitutionsRRt Substitutionst_substitutionst_init_hawkey_repot _hawkey_repotcheck_config_file_ageRt_check_config_file_age(R@tnamet parent_conf((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRAs    cC@s |jjS(N(R,tgetId(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRPscC@s |jjS(N(R,tgetRepoFilePath(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pytrepofilescC@s|jj|dS(N(R,tsetRepoFilePath(R@tvalue((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRscC@s[|jjr)tjj|jddS|jdk r?|jStj j |jj t S(Niufile://( R,tisLocalRdR|t strip_prefixRRRRRRtt getCachedirt_PACKAGES_RELATIVE_DIR(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR{s cC@s ||_dS(N(R(R@tval((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR{scC@stjj|jjdS(Nupubring(RRRtR,R(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt _pubring_dirscC@s |jjS(N(R,tgetLoadMetadataOther(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pytload_metadata_otherscC@s|jj|dS(N(R,tsetLoadMetadataOther(R@R((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRscC@s|j|jkS(N(RP(R@tother((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt__lt__scC@sd|jj|jfS(Nu<%s %s>(t __class__RDRP(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt__repr__scC@sYtt|j|||dkr7|j|j_n|dkrU|j|j_ndS(Nucostupriority(RYRt __setattr__tcostRtpriority(R@RR((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRs   cC@s.tj|j}|j|_|j|_|S(N(thawkeyRRPRR(R@threpo((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRs  cC@s|jjdS(N(R,tdisable(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRscC@s|jjdS(N(R,tenable(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRscC@s|jj|dS(u/Ask for additional repository metadata type to download. Given metadata_type is appended to the default metadata set when repository is downloaded. Parameters ---------- metadata_type: string Example: add_metadata_type_to_download("productid") N(R,taddMetadataTypeToDownload(R@t metadata_type((s,/usr/lib/python2.7/site-packages/dnf/repo.pytadd_metadata_type_to_downloads cC@s|jj|S(uReturn path to the file with downloaded repository metadata of given type. Parameters ---------- metadata_type: string (R,tgetMetadataPath(R@R((s,/usr/lib/python2.7/site-packages/dnf/repo.pytget_metadata_pathscC@s|jj|S(uReturn content of the file with downloaded repository metadata of given type. Content of compressed metadata file is returned uncompressed. Parameters ---------- metadata_type: string (R,tgetMetadataContent(R@R((s,/usr/lib/python2.7/site-packages/dnf/repo.pytget_metadata_contents cC@s]t}y|jj}Wn+tk rF}tjjt|nXt|j|_ |S(uLoad the metadata for this repo. Depending on the configuration and the age and consistence of data available on the disk cache, either loads the metadata from the cache or downloads them from the mirror, baseurl or metalink. This method will by default not try to refresh already loaded data if called repeatedly. Returns True if this call to load() caused a fresh metadata download. ( RR,tloadR Rdt exceptionst RepoErrorR!RVR(R@tretR3((s,/usr/lib/python2.7/site-packages/dnf/repo.pyR&scC@s|js|jjtn|jrx|jdkr>tdfS|jj}|jjrnt d|}nt|fStdfS(u)Get the number of seconds after which the cached metadata will expire. Returns a tuple, boolean whether there even is cached metadata and the number of seconds it will expire in. Negative number means the metadata has expired already, None that it never expires. iiN( RR,t loadCacheRtmetadata_expireRRt getExpiresInt isExpiredtmin(R@t expiration((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt_metadata_expire_in<s    cC@s ||_dS(N(R(R@t key_import((s,/usr/lib/python2.7/site-packages/dnf/repo.pyt_set_key_importOscC@s||j_dS(N(RR(R@R((s,/usr/lib/python2.7/site-packages/dnf/repo.pytset_progress_barRscC@s |jjS(uoReturns user defined http headers. Returns ------- headers : tuple of strings (R,tgetHttpHeaders(R@((s,/usr/lib/python2.7/site-packages/dnf/repo.pytget_http_headersVscC@s|jj|dS(uSets http headers. Sets new http headers and rewrites existing ones. Parameters ---------- headers : tuple or list of strings Example: set_http_headers(["User-Agent: Agent007", "MyFieldName: MyFieldValue"]) N(R,tsetHttpHeaders(R@theaders((s,/usr/lib/python2.7/site-packages/dnf/repo.pytset_http_headers`s N(RDREtSYNC_TRY_CACHERRRARFRPRRGR{RRRRRRRRRRRRRRRRR(((s,/usr/lib/python2.7/site-packages/dnf/repo.pyRs2             (It __future__RRtdnf.i18nRRt dnf.callbackRdtdnf.conftdnf.conf.substitutionst dnf.constt dnf.cryptotdnf.exceptionst dnf.loggingt dnf.pycomptdnf.utilt dnf.yum.misct libdnf.repoRt functoolsRRtloggingtoperatorRtretshutiltstringRnttimeRpRt_MIRRORLIST_FILENAMEt ascii_letterstdigitst _REPOID_CHARStescapet hexdigitst _CACHEDIR_REt CACHE_FILESt getLoggerRrR RR6R<tobjectRRIRHRet KeyImportRORVRRhRXtPayloadRcRRRRtSyncStrategy_LAZYt SYNC_LAZYtSyncStrategy_ONLY_CACHEtSYNC_ONLY_CACHEtSyncStrategy_TRY_CACHERRRRtRepoConf(((s,/usr/lib/python2.7/site-packages/dnf/repo.pytsl                            !  8&=