HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/clwizard/modules/__pycache__/python.cpython-37.pyc
B

VJ�� ���@s�ddlmZddlZddlmZddlmZmZmZddl	m
Z
ddlmZm
Z
ddlmZmZddlmZd	d
lmZGdd�de�ZdS)
�)�absolute_importN)�Feature)�ExternalProgramFailed�get_passenger_package_name�is_litespeed_running)�
get_ui_config)�CL_SELECTOR_BIN�MODULES_LOGS_DIR)�InstallationFailedException�PackageMissingError)�installed_interpreters_list�)�WizardInstallercsxeZdZej�ed�Zej	Z
�fdd�Zdd�Zdd�Z
edd	��Zd
d�Zdd
�Zdd�Zdd�Zedd��Z�ZS)�PythonInstallerz
python.logcstt|���dS)N)�superr�__init__)�self)�	__class__��py/clwizard/modules/python.pyrszPythonInstaller.__init__c
Cs~g}x&|D]}d|�dd�}|�|�q
W|j�dd�|��y|j|�Wn*tk
rx}zt�|�Wdd}~XYnXdS)zd
        Install given python versions
        :param versions: versions of python packages
        z
alt-python�.�z/Try to install Python package with versions: %s�,N)�replace�append�
app_logger�info�joinZ_install_groupsrr
)r�versions�groups�vZpackage_name�errr�_install_python_versionss
z(PythonInstaller._install_python_versionsc
CsVd}tj�|�sdSy|�d|g�Wn*tk
rP}zt�|�Wdd}~XYnXdS)a
        In order to make python apps work on Litespeed server
        we need to do run extra script
        see docs for details:
        https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cloudlinux:enable_passenger
        :return:
        z9/usr/local/lsws/admin/misc/enable_ruby_python_selector.shNZsh)�os�path�isfile�_run_commandrr
)rZlitespeed_scriptr!rrr�_configure_for_litespeed_server-sz/PythonInstaller._configure_for_litespeed_serverc
CsFyddlm}Wn,tk
r<}ztd�|�Wdd}~XYnX|d�S)Nr)�get_default_versionZ
lvemanager�python)Zclselect.clselectctlr(�ImportErrorr)r(r!rrr�_get_python_default_version?s
z+PythonInstaller._get_python_default_versionc
CsZ|j�d|�y|�tdddd|dg�Wn*tk
rT}zt�|�Wdd}~XYnXdS)Nz,trying to set default python version as '%s'�setz
--interpreterr)z--default-versionz--json)rrr&rrr
)r�versionr!rrr�_set_python_default_versionHsz+PythonInstaller._set_python_default_versioncCs*|�t��o(t�p(t��di��d�S)a�
        Check that python selector is ready to work
        All configurations were done:
        - passenger package is installed
        We always have python27 installed,
        so we do not need to check if at least one interpreter is installed
        If the config file does not exist, we ignore the uiSettings
        :return: already_configured status
        :rtype: bool
        Z
uiSettingsZ
hidePythonApp)Z_is_package_installedrr�get)rrrr�_is_already_configuredZsz&PythonInstaller._is_already_configuredcCsLg}td�}x|D]}|jr|�|j�qW|��||�d�|��d�d�S)Nr))Zinstalled_versionsZavailable_versions�default_version)Zalready_configured�options)rZ	installedrr-r0Z_get_available_versionsr+)rZinstalled_python_versionsZinterpreters_listZinterpreterrrr�initial_statusis
zPythonInstaller.initial_statusc
Cs�|�dg�}|�d�}|r6||kr6|j�d|�t��|��|�|�t�rV|��y|�ddddg�Wn*t	k
r�}zt�|�Wdd}~XYnX|r�|�
|�dS)Nrr1zSVersion %s that specified to be set as default must be included in install_versionszcloudlinux-configr,z--jsonz<--data={"options": {"uiSettings": {"hidePythonApp": false}}})r/r�errorr
Z_install_passengerr"rr'r&rr.)rr2Zinstall_versionsr1r!rrr�run_installationxs*

z PythonInstaller.run_installationcCsddhS)Nrr1r)�clsrrr�supported_options�sz!PythonInstaller.supported_options)�__name__�
__module__�__qualname__r#r$rr	ZLOG_FILErZPYTHON_SELECTORZ_REQUIRED_CL_COMPONENT_SUPPORTrr"r'�staticmethodr+r.r0r3r5�classmethodr7�
__classcell__rr)rrrs	!r)Z
__future__rr#Zclcommon.constrZclcommon.utilsrrrZclconfig.ui_config_librZclwizard.constantsrr	Zclwizard.exceptionsr
rZclwizard.utilsr�baserrrrrr�<module>	s