File: //proc/1233/cwd/usr/lib/python3/dist-packages/DistUpgrade/__pycache__/utils.cpython-310.pyc
o
$c�c�G � @ s4 d dl mZ d dlmZ d dlmZ d dlmZmZmZ d dl m
Z
d dlZd dlZe�
� d dlZd dlZd dlZd dlZd dlZd dlZd dlZzd dlmZmZmZmZmZ d dlmZ W n ey} d dlmZmZmZmZmZ d dlmZ Y nw d d l m Z G d
d� de!�Z"dd
� Z#dd� Z$dKdd�Z%dd� Z&dLdd�Z'dd� Z(dd� Z)dd� Z*dd� Z+d d!� Z,d"d#� Z-G d$d%� d%e�Z.dKd&d'�Z/dKd(d)�Z0d*d+� Z1d,d-� Z2d.d/� Z3d0d1� Z4dKd2d3�Z5d4d5� Z6dKd6d7�Z7dKd8d9�Z8d:d;� Z9d<d=� Z:d>d?� Z;d@dA� Z<dBdC� Z=dDdE� Z>dFdG� Z?e@dHk�re9ddIdJ� dS dS )M� )�print_function)�gettext)�ngettext)�S_IMODE�ST_MODE�S_IXUSR)�ceilN)�ProxyHandler�Request�build_opener�install_opener�urlopen)�urlsplit)�copyc @ s* e Zd ZdZd
dd�Zdd� Zdd� Zd S )�
ExecutionTimez�
Helper that can be used in with statements to have a simple
measure of the timing of a particular block of code, e.g.
with ExecutionTime("db flush"):
db.flush()
� c C s
|| _ d S �N)�info)�selfr � r �3/usr/lib/python3/dist-packages/DistUpgrade/utils.py�__init__G s
zExecutionTime.__init__c C s t � � | _d S r )�time�now�r r r r � __enter__J s zExecutionTime.__enter__c C s t d| jt�� | j f � d S )Nz%s: %s)�printr r r )r �type�value�stackr r r �__exit__M s zExecutionTime.__exit__N)r )�__name__�
__module__�__qualname__�__doc__r r r r r r r r @ s
r c C sJ t | �}t|j�}|jr|j�|jd�|_|jr!|j�|jd�|_t|�S )Nzhidden-uzhidden-p)r r �uri�username�replace�password�str)�entry�tmp� url_partsr r r �)get_string_with_no_auth_from_source_entryQ s
r- c C sD d} zddl }|�� }|�d�} W | S ty! t�d� Y | S w )z+ return True if Unity is currently running Fr Nzcom.canonical.Unityz&could not check for Unity dbus service)�dbus�
SessionBus�name_has_owner� Exception�logging� exception)�
unity_runningr. �busr r r �is_unity_running[ s ��r6 c C s� |st �� }|dkrId| }t|��}|�� }W d � n1 s!w Y |�d�d �d�d }|| kr8dS t|�d�d �� d �}|dks
dS ) Nr z
/proc/%s/stat�(� �)T� F)�os�getpid�open�read� partition�
rpartition�int�split)�processname�pid� stat_file�stat_f�stat�commandr r r �is_child_of_process_nameg s
��
rI c C s0 t j�d�rt j�d�sdS t �d�t �d�kS )z, returns True if we are inside a chroot
z/procz/proc/1T�/z/proc/1/root)r; �path�existsrG r r r r �
inside_chrootw s rM �F r c C sL d}| � � D ]}t|�|�d� t|� |kr|d| 7 }||d 7 }q|S )z� helpers inspired after textwrap - unfortunately
we can not use textwrap directly because it break
packagenames with "-" in them into new lines
r �
� )rB �len�rfind)�t�width�subsequent_indent�out�sr r r �wrap� s rX c K s8 d}| � d�}|D ]}t|fi |��} || d 7 }q |S )Nr rO )rB rX )rW �kwargs�msg�paras�parr r r �twrap� s
r] c C sd g } t j�d�s
g S tjdgtjdd�}|�� d �d�}|d= |D ]
}|r/| �|�� d � q"| S )z= return list of loaded modules (or [] if lsmod is not found) z/sbin/lsmodT��stdout�universal_newlinesr rO ) r; rK rL �
subprocess�Popen�PIPE�communicaterB �append)�modules�p�lines�liner r r �lsmod� s ��rj c C sF t j�| �sdS tt �| �t �}|t@ tks!t �| |tB � dS dS )zB check if a given binary has the executable bit and if not, add itN)r; rK rL r rG r r �chmod)rK �moder r r �check_and_fix_xbit� s �rm c C s� ddi} dt jvrdS t jd �� }|dd� | v r"| |dd� S d|v rA|�d�d �d�d }d
|v r=|�d
�d }|d S |dd� d S )z: helper to get the country mirror from the current locale �cr �LANGN� �_�.r r: �@r8 )r; �environ�lowerrB )�lang_mirror�lang�countryr r r �country_mirror� s
ry c C � t j�d�} | rt�d| � | S ddlm}m} |g d�|dd�}|�� }|dkr4t j
�d| � d S |j�
� �� } |j�� | S )
z2 return the codename of the current runing distro �META_RELEASE_FAKE_CODENAMEzQusing fake release name '%s' (because of META_RELEASE_FAKE_CODENAME environment) r �rb rc )�lsb_releasez-c�-sTr^ �"lsb_release returned exitcode: %i
�unknown distribution�r; rt �getr2 �warningra rb rc �wait�sys�stderr�writer_ �readline�strip�close)�distrb rc rg �resr r r �get_dist� �"