ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ iB^c@`sddlmZddlmZddlmZddlZddlZddlmZmZm Z ddl m Z ddl m Z ddlmZdd lmZd d lmZd d lmZmZmZdd l mZdeeefdYZdS(i(tabsolute_import(tprint_function(tdivisionN(tABCMetatabstractmethodtabstractproperty(t iteritems(tbyteify(twrite_file_via_tempfile(tutilsi(tBasePkgManager(tBaseSelectorErrortENABLED_STATUStDISABLED_STATUS(twith_metaclasstBaseSelectorConfigcB`seZdZdZedZedZedZ e dZ dZ dZ dZd Zd Zd Zd Ze d ZejdZdZdZdZedZRS(sW Base class that responsible for all interaction with CL selector config files cC`s&|j|_||_|jdS(N(t_get_config_objecttCfgtpkgtreload(tselfR((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyt__init__s cC`s tdS(s%Should return path to the config fileN(tNotImplementedError(R((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyt _config_file"scC`s tdS(s0Should create all needed directories for configsN(R(R((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyt_create_config_dirs'scC`sdddY}|S(s0Override this method to change config parametersRcB`seZdZdZdZRS(N(t__name__t __module__tNonetdefault_versiontselector_enabledtdisabled_versions(((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyR0s(((R((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyR,scC`stjj|jS(s6Check whether config file exists and is a regular file(tostpathtisfileR(R((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pytis_config_exists9scC`sVi}xIt|jjD]5\}}|jd r|dk r|||s cC`sLxEt|jjD]1\}}|jdst|j|dqqWdS(s Reset self.Cfg object to all None values before it will be loaded from file as a part of self.reload() R#N(RRR$R%tsetattrR(RR'R(((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyt _reset_cfgIscC`s|j}|sdSyttj|}Wn4ttfk re}tdj|j|nX|j x-t |D]\}}t |j ||q}WdS(Ns(Unable to parse json from {} ; Error: {}( t_read_file_dataRtjsontloadst ValueErrort TypeErrorR tformatRR+RR*R(RtdataR&teR'R(((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyRRs   cC`ss|js dSy+t|jd}|j}WdQXWn4ttfk rn}tdj|j|nX|S(s Should return: - whole file data for normal case - None if file doesn't exists - '' for empty file trbNs'Unable to read data from {} ; Error: {}( R"RtopenRtreadtIOErrortOSErrorR R1(RtfdR2R3((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyR,as  cC`s8|js|jntj|j}|j|S(N(R"RR t pretty_jsonR)t_write_file_data(RR2((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pytsavess  c C`s[y&td|d|jddddWn.ttfk rV}tdj|nXdS(Ntcontentt dest_pathtpermitsuffixt_tmps"Could not write system config ({})(RRR7R8R R1(RR2R3((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyR;zs  cC`s.||jjkr*tdj|ndS(NsVersion "{}" is not installed(Rtinstalled_versionsR R1(Rtversion((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyt_ensure_version_installeds cC`s2|jjdkrtS|jjo1t|jjS(s(Returns effective selector_enabled valueN(RRRtFalsetboolRRB(R((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyRscC`s2|r"|jj r"tdn||j_dS(NsEIt's not allowed to enable Selector when interpreter is not installed(RRBR RR(Rtvalue((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyRs cC`s |jjS(N(RR(R((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pytget_default_versionscC`s`|dkrd|j_dS||jjp.gkrCtdn|j|||j_dS(Ns;It's not allowed to set disabled version as the default one(RRRRR RD(RRC((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pytset_default_versions    cC`s|jj}|tkrd|dk r||kr|j|t|dkrad|j_qaqn|tkr||jkrtdn|dkr|g|j_q||kr|j |qntdj |dS(Nis5It's not allowed to disable currently default versionsUnknown version status: "{}"( RRR RtremovetlenR RHR tappendR1(RRCt new_statust disabled_list((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pytset_version_statuss       cC`s tdS(N(R(R((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pytavailable_versionss(RRt__doc__RRRRRt staticmethodRtpropertyR"R)R+RR,R<R;RDRtsetterRHRIRORP(((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyRs&        (t __future__RRRR-RtabcRRRt future.utilsRtclcommon.clfuncRtsecureioRtclselectR t pkgmanagerR tR R R RtobjectR(((sM/opt/alt/python27/lib/python2.7/site-packages/clselect/baseclselect/config.pyts