ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
ft`O                 @   s<  d dl mZ d dl mZ d dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZejjjZejjjZejjjZejjj Z!ejjj"Z#ejjj$Z%ejjj&Z'ejjj(Z)ejjj*Z+ej,dZ-G dd	 d	e.Z/G d
d de/Z0G dd de/Z1dS )    )absolute_import)unicode_literals)misc)ucd_)
basestringurlparseNdnfc                   s~   e Zd ZdZdddZdd Z fddZd	d
 Zdd Zdd Z	dd Z
efddZefddZdd Zedd Z  ZS )
BaseConfigzlBase class for storing configuration definitions.

       Subclass when creating your own definitions.

    Nc             C   s   || j d< || _d S )N_config)__dict___section)selfconfigsectionparser r   /usr/lib/python3.6/config.py__init__<   s    
zBaseConfig.__init__c             C   sz   d| j krtdj| j|t| j|}|d kr4d S y| j }W n  tk
rb } zd S d }~X nX t|t	rvt
|S |S )Nr   z!'{}' object has no attribute '{}')r   AttributeErrorformat	__class__getattrr   getValue	Exception
isinstancestrr   )r   nameoptionvalueZexr   r   r   __getattr__@   s    

zBaseConfig.__getattr__c                s:   t | j|d }|d kr(tt| j||S | j||t d S )N)r   r   superr
   __setattr__
_set_valuePRIO_RUNTIME)r   r   r   r   )r   r   r   r"   N   s    zBaseConfig.__setattr__c             C   st   g }|j d| j  | jrjxN| jj D ]@}y|jj }W n tk
rP   d}Y nX |j d|j|f  q&W dj|S )Nz[%s] z%s: %s
)	appendr   r   optBindssecondgetValueStringRuntimeErrorfirstjoin)r   outoptBindr   r   r   r   __str__U   s    
zBaseConfig.__str__c             C   s   t | j|d }|d k	S )N)r   r   )r   r   methodr   r   r   _has_optiona   s    zBaseConfig._has_optionc             C   s$   t | j|d }|d krd S | j S )N)r   r   r   )r   r   r1   r   r   r   
_get_valuee   s    zBaseConfig._get_valuec             C   s$   t | j|d }|d krd S | j S )N)r   r   ZgetPriority)r   r   r1   r   r   r   _get_priorityk   s    zBaseConfig._get_priorityc             C   s  t | j|d}|dkr&td| d | }|dkr\y|j|| W n tk
rX   Y nX nyrt|tsrt|tr|j|tjj	| nDt|tjj
st|tjjrt|tr|j|t| n|j|| W nH tk
r } z*tjjtd|t|f t|dW Y dd}~X nX dS )zSSet option's value if priority is equal or higher
           than current priority.NzOption "z" does not existszError parsing '%s': %s)	raw_error)r   r   r   setr   listtuplelibdnfconfVectorStringZ
OptionBoolZOptionChildBoolintboolr+   r	   
exceptionsConfigErrorr   r   )r   r   r   priorityr1   r   er   r   r   r#   q   s*    
zBaseConfig._set_valuec             C   s   |j |rx|j|D ]}|j||}| s4|dkr8d}t| j|ry| jj j|j|| W q tk
r } z,t	j
tdt|t|t|t| W Y dd}~X qX q|dkrt| |rt| || qt	jtdt|t|t| qW dS )z+Set option values from an INI file section.Noner%   z,Invalid configuration value: %s=%s in %s; %sNarchz+Unknown configuration option: %s = %s in %s)
hasSectionZoptionsZgetSubstitutedValuehasattrr   r(   at	newStringr+   loggererrorr   r   r   setattrdebug)r   r   r   filenamer@   r   r   rA   r   r   r   	_populate   s     

0zBaseConfig._populatec             C   sh   d| j  g}| jrZxF| jj D ]8}y|jd|j|jj f  W q tk
rT   Y qX qW dj|d S )z]Return a string representing the values of all the
           configuration options.
        z[%s]z%s = %sr&   )	r   r   r(   r'   r,   r)   r*   r+   r-   )r   outputr/   r   r   r   dump   s    
zBaseConfig.dumpc             C   s   t jj }|j|  |j|sHx(|j D ]}t jjj|||kr(|}q(W x6|j D ]*\}}t|t	rndj
|}|j||| qRW |j| d dS )z
        filename   - name of config file (.conf or .repo)
        section_id - id of modified section (e.g. main, fedora, updates)
        substitutions - instance of base.conf.substitutions
        modify     - dict of modified options
         FN)r9   r:   ConfigParserreadrD   ZgetData
substituteitemsr   r7   r-   ZsetValuewrite)rL   Z
section_idsubstitutionsZmodifyr   Zsectr   r   r   r   r   write_raw_configfile   s    	




zBaseConfig.write_raw_configfile)NNN)__name__
__module____qualname____doc__r   r    r"   r0   r2   r3   r4   r$   r#   PRIO_DEFAULTrM   rO   staticmethodrW   __classcell__r   r   )r   r   r
   5   s   
r
   c                   s   e Zd ZdZd% fdd	Zdd Zedd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zedd Zejdd Zedd Zejdd Zedd Zejd d Zdefd!d"Zed#d$ Z  ZS )&MainConfz?Configuration option definitions for dnf.conf's [main] section.mainNc                s  t jj }tt| j||| | jdtjj	gt
 | jdtjjgt
 tjjj | _tj | _| jj jt
tjj tjj rtjj}d}nVytj  }}W nD ttfk
r } z$tdjt|}tjj|W Y d d }~X nX | jj  jt
| | jj! jt
| g | _"d S )NZ
pluginpathZpluginconfpathz/var/logzCould not set cachedir: {})#r9   r:   
ConfigMainr!   r_   r   r#   r	   constZ
PLUGINPATHr\   ZPLUGINCONFPATHrV   ZSubstitutionshawkeyZdetect_archrC   r   Zsystem_cachedirr6   ZSYSTEM_CACHEDIRutilZ	am_i_rootr   ZgetCacheDirIOErrorOSErrorr   r   r   r>   Errorcachedirlogdir	tempfiles)r   r   r   r   rh   ri   rA   msg)r   r   r   r      s$    


zMainConf.__init__c             C   s   x| j D ]}tj| qW d S )N)rj   osunlink)r   	file_namer   r   r   __del__   s    zMainConf.__del__c             C   sL   d}x$| j dD ]}tjj|r|}P qW |sH| j dd }tjj| |S )zReturns the value of reposdirNZreposdirr   )r3   rl   pathexistsr	   rd   Z
ensure_dir)r   Z	myrepodirZrdirr   r   r   get_reposdir   s    zMainConf.get_reposdirc       	      C   s   | j |}| j|}t|trtj|}|d dkrF| j||j| ntjj	 }t
jdd\}}| jj| zdy|jd|| W n> tk
r } z"tjjtdj|t|W Y dd}~X nX | j||| W dtj| X dS )	z
        In case the option value is a remote URL, download it to the temporary location
        and use this temporary file instead.
        r   filer%   zdnf-downloaded-config-)prefixNz9Configuration file URL "{}" could not be downloaded:
  {})rs   r%   )r4   r3   r   r   r   r#   rp   r9   ZrepoZ
DownloadertempfileZmkstemprj   r'   ZdownloadURLr+   r	   r>   r?   r   r   r   rl   close)	r   optnamepriovallocationZ
downloaderZtemp_fdZ	temp_pathrA   r   r   r   _check_remote_file   s"    




 zMainConf._check_remote_filec                s   j d  dkr S j|}|tkr, S j |}t|tst fdd|D rj|tjj	fdd|D |  S n4t
jjt
jj |jdrj|j||  S dS )z
        Return root used as prefix for option (installroot or "/"). When specified from commandline
        it returns value from conf.installroot
        installroot/c             3   s*   | ]"}t jjt jj |jd V  qdS )r}   N)rl   rp   rq   r-   lstrip).0p)r|   r   r   	<genexpr>*  s    z6MainConf._search_inside_installroot.<locals>.<genexpr>c                s   g | ]} j |qS r   )_prepend_installroot_path)r   r   )r   r   r   
<listcomp>-  s    z7MainConf._search_inside_installroot.<locals>.<listcomp>)r3   r4   PRIO_COMMANDLINEr   r   anyr#   r9   r:   r;   rl   rp   rq   r-   r~   r   )r   rw   rx   ry   r   )r|   r   r   _search_inside_installroot  s$    



z#MainConf._search_inside_installrootc             C   s,   | j |}| j| j|}| j||| d S )N)r4   r   r3   r#   )r   rw   rx   new_pathr   r   r   prepend_installroot6  s    
zMainConf.prepend_installrootc             C   s,   t jj| jd|jd}tjjj|| j	S )Nr|   r}   )
rl   rp   r-   r3   r~   r9   r:   rQ   rS   rV   )r   rp   Z	root_pathr   r   r   r   <  s    z"MainConf._prepend_installroot_pathc             C   s`  ddddddddd	d
dddddddddddddddddg}x|D ]}t ||d}|dk	ob|g krB| j|r$d}| jry| jj j|j }W n tk
r   Y nX |rtjj	}|| j
|k r| j
|}xR|D ]6}|r| j|| j||g | q| j|g tjj	 qW n| j||tjj	 qBt| |r>t| || qBtjtdt|t| qBW t |dddkr| jddtjj	 t|dr\x|jj D ]\}}x|D ]}	t| j|r"y| jj j|jt	|	 W nJ tk
r }
 z,tjjtd ||	t|
f t|
d!W Y dd}
~
X nX n.t| |r<t| ||	 ntd"}tj|| qW qW dS )#z%Configure parts of CLI from the opts Zpluginsversionconfig_file_path
debuglevelZ
errorlevelr|   ZbestZ	assumeyesZassumenoZclean_requirements_on_removegpgcheckZshowdupesfromreposZ
ip_resolveZrpmverbosityZdisable_excludesZcolorZdownloadonlyexcludeexcludepkgsskip_brokenZtsflagsrC   basearchZ
ignorearchZ	cacheonlyZcommentNFz%Unknown configuration option: %s = %sZlocalpkg_gpgcheckmain_setoptsz4Error parsing --setopt with key '%s', value '%s': %s)r5   z1Main config did not have a %s attr. before setopt)r   r2   r   r(   rF   ZgetAddValuer+   r	   r:   r   r4   r#   r3   rE   rJ   rH   warningr   r   r   rT   rG   r>   r?   r   )r   optsZconfig_argsr   r   ZappendValueZadd_priorityitemvaluesry   rA   rk   r   r   r   _configure_from_options@  s\    




.z MainConf._configure_from_optionsc             C   sP   d}|d k	rL|g krL| j |r2| j||tjj ntjtdt|t| d S )Nr   z%Unknown configuration option: %s = %s)	r2   r#   r	   r:   r   rH   r   r   r   )r   Zpkgsr   r   r   r   exclude_pkgs  s    

zMainConf.exclude_pkgsc             C   s(   | j d}|r$| jd| | jd dS )z Adjust conf options interactionsr   strictN)r3   r#   r4   )r   Zskip_broken_valr   r   r   _adjust_conf_options  s    
zMainConf._adjust_conf_optionsc             C   s   | j jdS )N
releasever)rV   get)r   r   r   r   r     s    zMainConf.releaseverc             C   s,   |d kr| j jdd  d S t|| j d< d S )Nr   )rV   popr   )r   ry   r   r   r   r     s    c             C   s   | j jdS )NrC   )rV   r   )r   r   r   r   rC     s    zMainConf.archc             C   sb   |d kr| j jdd  d S |tjjj krFtd}tjj|j	d||| j d< tjj
|| _
d S )NrC   zIncorrect or unknown "{}": {})rV   r   r	   rpm_BASEARCH_MAPkeysr   r>   rg   r   r   )r   ry   rk   r   r   r   rC     s    
c             C   s   | j jdS )Nr   )rV   r   )r   r   r   r   r     s    zMainConf.basearchc             C   sT   |d kr| j jdd  d S |tjjj krFtd}tjj|j	d||| j d< d S )Nr   zIncorrect or unknown "{}": {})
rV   r   r	   r   r   r   r   r>   rg   r   )r   ry   rk   r   r   r   r     s    c             C   s   |d kr| j d}tjj }y|j| W nd tk
rd } ztjjt	d||f W Y d d }~X n, t
k
r } ztj| W Y d d }~X nX | j|| j|| | jd|| d S )Nr   zParsing file "%s" failed: %s)r3   r9   r:   rQ   rR   r+   r	   r>   r?   r   re   rH   r   rM   r   r#   )r   rL   r@   r   rA   r   r   r   rR     s    

(zMainConf.readc             C   s   | j dtjjkS )Nr   )r3   r	   rb   ZVERBOSE_LEVEL)r   r   r   r   verbose  s    zMainConf.verbose)r`   N)rX   rY   rZ   r[   r   ro   propertyrr   r{   r   r   r   r   r   r   r   setterrC   r   r\   rR   r   r^   r   r   )r   r   r_      s&   ?r_   c                   s*   e Zd ZdZd fdd	Zdd Z  ZS )RepoConfz4Option definitions for repository INI file sections.Nc                sP   |r
|j ntjj }tt| jtjj||| || _|rL| j j	 j
t| d S )N)r   r9   r:   ra   r!   r   r   Z
ConfigRepoZ_mainConfigRefHolderr   r6   r\   )r   parentr   r   Z
mainConfig)r   r   r   r     s
    zRepoConf.__init__c             C   s  t |dddkr0xd	D ]}| j|dtjj qW t |di }x|j D ]\}}tj| j|s^qFx|j D ]\}}x|D ]}t| j	|ry| j	j
 j|jt| W nL tk
r }	 z0tjjtd| j||t|	f t|	dW Y dd}	~	X nX qvtd}
tj|
| j| qvW qhW qFW dS )
zConfigure repos from the opts. r   NFrepo_gpgcheckrepo_setoptsz7Error parsing --setopt with key '%s.%s', value '%s': %s)r5   z-Repo %s did not have a %s attr. before setopt)r   r   )r   r#   r	   r:   r   rT   fnmatchr   rE   r   r(   rF   rG   r+   r>   r?   r   r   rH   r   )r   r   rw   r   ZrepoidZsetoptsr   r   ry   rA   rk   r   r   r   r     s$    

2z RepoConf._configure_from_options)NN)rX   rY   rZ   r[   r   r   r^   r   r   )r   r   r     s   	r   )2Z
__future__r   r   Zdnf.yumr   Zdnf.i18nr   r   Z
dnf.pycompr   r   r   Zdnf.conf.substitutionsr	   Z	dnf.constZdnf.exceptionsZdnf.utilrc   Zloggingrl   Zlibdnf.confr9   Zlibdnf.reporu   r:   ZOptionZPriority_EMPTYZ
PRIO_EMPTYZPriority_DEFAULTr\   ZPriority_MAINCONFIGZPRIO_MAINCONFIGZPriority_AUTOMATICCONFIGZPRIO_AUTOMATICCONFIGZPriority_REPOCONFIGZPRIO_REPOCONFIGZPriority_PLUGINDEFAULTZPRIO_PLUGINDEFAULTZPriority_PLUGINCONFIGZPRIO_PLUGINCONFIGZPriority_COMMANDLINEr   ZPriority_RUNTIMEr$   Z	getLoggerrH   objectr
   r_   r   r   r   r   r   <module>   s@   









   