§ À•¿j°ãóΗddlmZddlmZddlmZddlZddlZddlmZmZm Z ddl m Z ddl m Z ddlmZd d lmZd d lmZmZmZdd l mZGd „deee¦«¦«ZdS)é)Úabsolute_import)Úprint_function)ÚdivisionN)ÚABCMetaÚabstractmethodÚabstractproperty)Ú iteritems)Úwrite_file_via_tempfile)Úutilsé)ÚBasePkgManager)ÚBaseSelectorErrorÚENABLED_STATUSÚDISABLED_STATUS)Úwith_metaclasscóø—eZdZdZd„Zed„¦«Zed„¦«Ze d„¦«Z e d„¦«Z d„Z d„Zd „Zd „Zd „Zd „Zd „Ze d„¦«Zejd„¦«Zd„Zd„Zd„Zed„¦«ZdS)ÚBaseSelectorConfigzW Base class that responsible for all interaction with CL selector config files cón—| ¦«|_||_| ¦«dS©N)Ú_get_config_objectÚCfgÚpkgÚreload)Úselfrs úS/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/baseclselect/config.pyÚ__init__zBaseSelectorConfig.__init__s-€Ø×*Ò*Ñ,Ô,ˆŒØˆŒà � Š ‰ Œ ˆ ˆ ˆ ócó—t¦«‚)z%Should return path to the config file©ÚNotImplementedError©rs rÚ _config_filezBaseSelectorConfig._config_file!ó€õ"Ñ#Ô#Ð#rcó—t¦«‚)z0Should create all needed directories for configsrr!s rÚ_create_config_dirsz&BaseSelectorConfig._create_config_dirs&r#rcó —Gd„d¦«}|S)z0Override this method to change config parameterscó—eZdZdZdZdZdS)ú2BaseSelectorConfig._get_config_object..CfgN)Ú__name__Ú __module__Ú __qualname__Údefault_versionÚselector_enabledÚdisabled_versions©rrrr(/s#€€€€€ð#ˆOØ#Ð Ø $Ð Ð Ð rrr/)rs rrz%BaseSelectorConfig._get_config_object+s1€ð %ð %ð %ð %ð %ñ %ô %ð %ðˆ rcóJ—tj |j¦«S)z6Check whether config file exists and is a regular file)ÚosÚpathÚisfiler"r!s rÚis_config_existsz#BaseSelectorConfig.is_config_exists8s€õŒw�~Š~˜dÔ/Ñ0Ô0Ð0rcó€—i}t|jj¦«D]!\}}| d¦«s|�|||<Œ"|S)z› Returns underlying config as a plain dict. It will contain only explicitly configured options (e.g. no elements with None values) Ú__)r rÚ__dict__Ú startswith)rÚtmpÚkÚvs rÚ_dumpzBaseSelectorConfig._dump=sP€ð ˆÝ˜dœhÔ/Ñ0Ô0ð ð ‰DˆAˆqØ—<’< Ñ%Ô%ð ¨!¨-Ø��A‘øØˆ rcóš—t|jj¦«D]0\}}| d¦«st |j|d¦«Œ1dS)z€ Reset self.Cfg object to all None values before it will be loaded from file as a part of self.reload() r6N)r rr7r8Úsetattr)rr:r;s rÚ _reset_cfgzBaseSelectorConfig._reset_cfgHsW€õ ˜dœhÔ/Ñ0Ô0ð +ð +‰DˆAˆqØ—<’< Ñ%Ô%ð +ݘœ ! TÑ*Ô*Ð*øð +ð +rcób—| ¦«}|sdS tj|¦«}nA#ttf$r-}t d |j|¦«¦«‚d}~wwxYw| ¦«t|¦«D]\}}t|j ||¦«ŒdS)Nz(Unable to parse json from {} ; Error: {}) Ú_read_file_dataÚjsonÚloadsÚ ValueErrorÚ TypeErrorrÚformatr"r?r r>r)rÚdatar9Úer:r;s rrzBaseSelectorConfig.reloadQsÕ€Ø×#Ò#Ñ%Ô%ˆØð Ø ˆFð CÝ”*˜TÑ"Ô"ˆCˆCøÝ�IÐ&ð Cð Cð CÝ#Ð$Nß%+¢V¨DÔ,=¸qÑ%AÔ%AñCôCð Cøøøøð Cøøøð �ŠÑÔÐݘc‘N”Nð $ð $‰DˆAˆqÝ �D”H˜a Ñ #Ô #Ð #Ð #ð $ð $sš/¯A-Á(A(Á(A-có —|jsdS t|jd¦«5}| ¦«}ddd¦«n #1swxYwYnA#tt f$r-}t d |j|¦«¦«‚d}~wwxYw|S)z˜ Should return: - whole file data for normal case - None if file doesn't exists - '' for empty file NÚrbz'Unable to read data from {} ; Error: {})r4Úopenr"ÚreadÚIOErrorÚOSErrorrrF)rÚfdrGrHs rrAz"BaseSelectorConfig._read_file_data`sæ€ðÔ$ð Ø�4ð CÝ�dÔ'¨Ñ.Ô.ð !°"Ø—w’w‘y”y�ð !ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !øøå�Ð!ð Cð Cð CÝ#Ð$Mß%+¢V¨DÔ,=¸qÑ%AÔ%AñCôCð Cøøøøð Cøøøðˆ s9‹A  Aµ A ÁAÁA ÁAÁ A Á B Á(BÂB có®—|js| ¦«tj| ¦«¦«}| |¦«Sr)r4r%r Ú pretty_jsonr<Ú_write_file_data)rrGs rÚsavezBaseSelectorConfig.saversK€ØÔ$ð 'Ø × $Ò $Ñ &Ô &Ð &åÔ  §¢¡¤Ñ.Ô.ˆØ×$Ò$ TÑ*Ô*Ð*rcó®— t||jdd¬¦«dS#ttf$r'}t d |¦«¦«‚d}~wwxYw)Ni¤Ú_tmp)ÚcontentÚ dest_pathÚpermÚsuffixz"Could not write system config ({}))r r"rMrNrrF)rrGrHs rrRz#BaseSelectorConfig._write_file_datays€€ð TÝ #ØØÔ+ØØð  ñ ô ð ð ð øõ �Ð!ð Tð Tð TÝ#Ð$H×$OÒ$OÐPQÑ$RÔ$RÑSÔSÐ Søøøøð Tøøøs‚œA­"AÁAcóf—||jjvr"td |¦«¦«‚dS)NzVersion "{}" is not installed)rÚinstalled_versionsrrF©rÚversions rÚ_ensure_version_installedz,BaseSelectorConfig._ensure_version_installed„s:€Ø ˜$œ(Ô5Ð 5Ð 5Ý#Ð$Cß%+¢V¨G¡_¤_ñ6ô6ð 6ð 6Ð 5rcóh—|jj€dS|jjot|jj¦«S)z(Returns effective selector_enabled valueNF)rr-Úboolrr[r!s rr-z#BaseSelectorConfig.selector_enabled‰s1€ð Œ8Ô $Ð ,à�5ØŒxÔ(ÐN­T°$´(Ô2MÑ-NÔ-NÐNrcóX—|r|jjstd¦«‚||j_dS)NzEIt's not allowed to enable Selector when interpreter is not installed)rr[rrr-)rÚvalues rr-z#BaseSelectorConfig.selector_enabled‘s?€à ð 0˜œÔ4ð 0Ý#ð/ñ0ô0ð 0ð%*ˆŒÔ!Ð!Ð!rcó—|jjSr)rr,r!s rÚget_default_versionz&BaseSelectorConfig.get_default_version™s€ðŒxÔ'Ð'rcó¦—|€d|j_dS||jjpgvrtd¦«‚| |¦«||j_dS)Nz;It's not allowed to set disabled version as the default one)rr,r.rr^r\s rÚset_default_versionz&BaseSelectorConfig.set_default_versionžsg€Ø ˆ?à'+ˆDŒHÔ $Ø ˆFà �t”xÔ1Ð7°RÐ 8Ð 8Ý#ØMñOôOð Oà ×&Ò& wÑ/Ô/Ð/Ø#*ˆŒÔ Ð Ð rcó¸—|jj}|tkrB|�:||vr8| |¦«t |¦«dkrd|j_dSdSdSdS|t krU|| ¦«krtd¦«‚|€|g|j_dS||vr| |¦«dSdStd  |¦«¦«‚)Nrz5It's not allowed to disable currently default versionzUnknown version status: "{}") rr.rÚremoveÚlenrrdrÚappendrF)rr]Ú new_statusÚ disabled_lists rÚset_version_statusz%BaseSelectorConfig.set_version_statusªs€ØœÔ2ˆ Ø �Ò 'Ð 'àÐ(¨W¸ Ð-EÐ-EØ×$Ò$ WÑ-Ô-Ð-Ý�}Ñ%Ô%¨Ò*Ð*Ø15�D”HÔ.Ð.Ð.ð)Ð(Ð-EÐ-Eà*Ð*ð�?Ò *Ð *à˜$×2Ò2Ñ4Ô4Ò4Ð4Ý'ð):ñ;ô;ð;ð Ð$Ø.5¨Y�”Ô*Ð*Ð*à -Ð/Ð/Ø!×(Ò(¨Ñ1Ô1Ð1Ð1Ð1ð0Ð/õ$Ð$Bß%+¢V¨JÑ%7Ô%7ñ9ô9ð 9rcó—t¦«‚rrr!s rÚavailable_versionsz%BaseSelectorConfig.available_versionsÅs€å!Ñ#Ô#Ð#rN)r)r*r+Ú__doc__rrr"rr%Ú staticmethodrÚpropertyr4r<r?rrArSrRr^r-Úsetterrdrfrmror/rrrrsŒ€€€€€ðððððð ð$ð$ñÔð$ðð$ð$ñ„^ð$ðð ð ñ„\ð ðð1ð1ñ„Xð1ð ð ð ð+ð+ð+ð $ð $ð $ðððð$+ð+ð+ð Tð Tð Tð6ð6ð6ð ðOðOñ„XðOðÔð*ð*ñÔð*ð(ð(ð(ð +ð +ð +ð9ð9ð9ð6ð$ð$ñÔð$ð$ð$rr)Ú __future__rrrrBr1ÚabcrrrÚ future.utilsr Úsecureior Úclselectr Ú pkgmanagerr ÚrrrrÚobjectrr/rrúr|s/ðð'Ð&Ð&Ð&Ð&Ð&Ø%Ð%Ð%Ð%Ð%Ð%ØÐÐÐÐÐØ € € € Ø € € € Ø9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø"Ð"Ð"Ð"Ð"Ð"Ø,Ð,Ð,Ð,Ð,Ð,àÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø'Ð'Ð'Ð'Ð'Ð'ðq$ðq$ðq$ðq$ðq$˜˜¨°Ñ8Ô8ñq$ôq$ðq$ðq$ðq$r