jgddlmZddlmZddlmZddlZddlZddlmZmZm Z ddl m Z ddl m Z ddlmZd d lmZd d lmZmZmZdd l mZGd deeeZdS))absolute_import)print_function)divisionN)ABCMetaabstractmethodabstractproperty) iteritems)write_file_via_tempfile)utils)BasePkgManager)BaseSelectorErrorENABLED_STATUSDISABLED_STATUS)with_metaclassceZdZdZdZedZedZe dZ e dZ dZ dZd Zd Zd Zd Zd Ze dZejdZdZdZdZedZdS)BaseSelectorConfigzW Base class that responsible for all interaction with CL selector config files cn||_||_|dSN)_get_config_objectCfgpkgreload)selfrs S/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/baseclselect/config.py__init__zBaseSelectorConfig.__init__s-**,, ct)z%Should return path to the config fileNotImplementedErrorrs r _config_filezBaseSelectorConfig._config_file!"###rct)z0Should create all needed directories for configsrr!s r_create_config_dirsz&BaseSelectorConfig._create_config_dirs&r#rc Gdd}|S)z0Override this method to change config parametersceZdZdZdZdZdS)2BaseSelectorConfig._get_config_object..CfgN)__name__ __module__ __qualname__default_versionselector_enableddisabled_versionsrrrr(/s##O#  $   rrr/)rs rrz%BaseSelectorConfig._get_config_object+s1 % % % % % % % % rcJtj|jS)z6Check whether config file exists and is a regular file)ospathisfiler"r!s ris_config_existsz#BaseSelectorConfig.is_config_exists8sw~~d/000rci}t|jjD]!\}}|ds||||<"|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)rtmpkvs r_dumpzBaseSelectorConfig._dump=sP dh/00  DAq<<%% !-A rct|jjD]0\}}|dst |j|d1dS)z Reset self.Cfg object to all None values before it will be loaded from file as a part of self.reload() r6N)r rr7r8setattr)rr:r;s r _reset_cfgzBaseSelectorConfig._reset_cfgHsW dh/00 + +DAq<<%% +!T*** + +rcb|}|sdS tj|}nA#ttf$r-}t d|j|d}~wwxYw|t|D]\}}t|j ||dS)Nz(Unable to parse json from {} ; Error: {}) _read_file_datajsonloads ValueError TypeErrorrformatr"r?r r>r)rdatar9er:r;s rrzBaseSelectorConfig.reloadQs##%%  F C*T""CCI& C C C#$N%+VD,=q%A%ACC C C cNN $ $DAq DHa # # # # $ $s/A-(A((A-c |jsdS t|jd5}|}dddn #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 Nrbz'Unable to read data from {} ; Error: {})r4openr"readIOErrorOSErrorrrF)rfdrGrHs rrAz"BaseSelectorConfig._read_file_data`s$ 4 Cd'.. !"wwyy ! ! ! ! ! ! ! ! ! ! ! ! ! ! !! C C C#$M%+VD,=q%A%ACC C C s9A A A AA A A B (BB c|js|tj|}||Sr)r4r%r pretty_jsonr<_write_file_data)rrGs rsavezBaseSelectorConfig.saversK$ '  $ $ & & & ..$$T***rc t||jdddS#ttf$r'}t d|d}~wwxYw)Ni_tmp)content dest_pathpermsuffixz"Could not write system config ({}))r r"rMrNrrF)rrGrHs rrRz#BaseSelectorConfig._write_file_datays T #+        ! T T T#$H$O$OPQ$R$RSS S TsA"AAcf||jjvr"td|dS)NzVersion "{}" is not installed)rinstalled_versionsrrFrversions r_ensure_version_installedz,BaseSelectorConfig._ensure_version_installeds: $(5 5 5#$C%+VG__66 6 6 5rch|jjdS|jjot|jjS)z(Returns effective selector_enabled valueNF)rr-boolrr[r!s rr-z#BaseSelectorConfig.selector_enableds1 8 $ ,5x(NT$(2M-N-NNrcX|r|jjstd||j_dS)NzEIt's not allowed to enable Selector when interpreter is not installed)rr[rrr-)rvalues rr-z#BaseSelectorConfig.selector_enableds?  04 0#/00 0%*!!!rc|jjSr)rr,r!s rget_default_versionz&BaseSelectorConfig.get_default_versionsx''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 rset_default_versionz&BaseSelectorConfig.set_default_versionsg ?'+DH $ F tx17R 8 8#MOO 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.rremovelenrrdrappendrF)rr] new_status disabled_lists rset_version_statusz%BaseSelectorConfig.set_version_statuss2  ' '(W -E-E$$W---}%%**15DH...)(-E-E**? * *$224444'):;;; $.5Y***-//!((111110/$$B%+VJ%7%799 9rctrrr!s ravailable_versionsz%BaseSelectorConfig.available_versionss!###rN)r)r*r+__doc__rrr"rr% staticmethodrpropertyr4r<r?rrArSrRr^r-setterrdrfrmror/rrrrs $$$$$^$  \ 11X1   +++ $ $ $$+++ T T T666 OOXO***((( + + +9996$$$$$rr) __future__rrrrBr1abcrrr future.utilsr secureior clselectr pkgmanagerr rrrrobjectrr/rrr|s/'&&&&&%%%%%% 9999999999"""""",,,,,,&&&&&&@@@@@@@@@@''''''q$q$q$q$q$88q$q$q$q$q$r