Current File : //usr/lib/python3/dist-packages/UpdateManager/backend/__pycache__/__init__.cpython-312.pyc
�

9q�f0B��B�dZddlZejdd�ejdd�ddlmZmZmZddlmZddl	Z	ddl
Z
ddlZddlZddl
Z
dd	lmZdd
lmZddlmZddlmZmZdd
lmZGd�de�Zej4j7d�rdej8vr	ddlmZej4j7d�rdej8vr	ddl m Z d�Z!yd�Z!y#e$re
j>d�Y�QwxYw#e$re
j>d�Yd�Z!ywxYw)z2Integration of package managers into UpdateManager�N�Gtkz3.0�Snapd�2)�GLibrr)�Cache)�gettext)�Thread)�MyCache)�
inhibit_sleep�get_dist_version)�Dialogc�^�eZdZdZdZdZd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Z	dd�Zy)�InstallBackendr��c�L�tj||�||_d|_y�N)r
�__init__�action�sleep_cookie)�self�window_mainrs   �@/usr/lib/python3/dist-packages/UpdateManager/backend/__init__.pyrzInstallBackend.__init__ s������k�*���� ���c��dtjd<t�|_|j|j
k(r�|jj}t|jjj��}g}g}|jjD]a}||}||}|jr|js|j|��7|js�D|js�Q|j|��c|j!||�y|j|j"k(�r5g}g}	g}
t|jjj��}|jjD]�}	|jrH||j$js/|j$}|j&r|dz
}|j|�n�|jr5||j$jr|	j|j$�n@|j(r4||j$jr|
j|j$���|j-||	|
�y|j/�y#t*$rY��wxYw)N�none�APT_LISTCHANGES_FRONTEND)�rootdirz#auto)�os�environrrr�ACTION_PRE_INSTALLr�cacherr�oem_metapackages�marked_install�is_installed�append�marked_upgrade�
is_upgradable�
commit_oem�ACTION_INSTALL�name�is_auto_installed�
marked_delete�KeyError�commit�update)r�
unfresh_cache�fresh_cache�pkgs_install_oem�pkgs_upgrade_oem�pkg�unfresh_pkg�	fresh_pkg�pkgs_install�pkgs_upgrade�pkgs_remove�pkgnames            r�startzInstallBackend.start%s��17��
�
�-�.�*�O����;�;�$�1�1�1� �,�,�2�2�M���(8�(8�(>�(>�(F�(F�G�K�!��!���'�'�8�8�
1��+�C�0��'��,�	��-�-�i�6L�6L�$�+�+�C�0� �/�/�I�4K�4K�$�+�+�C�0�
1�
�O�O�,�.>�?�
�[�[�D�/�/�
/��L��L��K� ��(8�(8�(>�(>�(F�(F�G�K��'�'�-�-�
����*�*� +�C�H�H� 5� B� B�"%�(�(���0�0�#�w�.�G�$�+�+�G�4��*�*�'����1�?�?�$�+�+�C�H�H�5��)�)�'����1�>�>�#�*�*�3�8�8�4��'
�.
�K�K��l�K�@��K�K�M�� ����s�1CI-�-	I:�9I:c��t�)z(Run a update to refresh the package list��NotImplementedError)rs rr0zInstallBackend.update]���!�!rc�F�|j|jddddd��y)zInstall these OEM packagesTN)�
authorized�success�error_string�
error_desc�trans_failed)�_action_doner!)rr3r4s   rr)zInstallBackend.commit_oemas-������#�#������
	�	
rc��t�)zCommit the cache changesr>)rr8r9r:s    rr/zInstallBackend.commitlr@rc��i}i}dt�z}|jj}	tdd�}t	j
|�}|j
�|dD]`}|d|}|jdd�}	|jd|�}
|jdd�}||vr�F|r||jdur�Z|	|
f||<�b|d	D]L}|d	|}|jd
|�}
jdd�}||vr�4|r||jdur�H|
||<�N	||fS#t$r%}tjd|z�Yd}~||fSd}~wwxYw)Nzstable/ubuntu-z0/usr/share/ubuntu-release-upgrader/deb2snap.json�r�seeded�deb�
to_channel�metapkgF�unseeded�from_channelz%error reading deb2snap.json file (%s))rrr"�open�json�load�close�getr%�	Exception�logging�debug)r�seeded_snaps�unseeded_snaps�curr_channelr"�d2s_file�d2s�snap�seedrLrMrN�unseedrP�es               r�get_snap_seedszInstallBackend.get_snap_seedsps�������'�*:�*<�<��� � �&�&��	G��B�C��H��)�)�H�%�C��N�N���H�
�	
7���8�}�T�*���h�h�u�d�+��!�X�X�l�L�A�
��(�(�9�d�3���%�'���u�W�~�:�:�e�C��&)�:�%6��T�"�	
7��J��
4���Z���.��%�z�z�.�,�G���(�(�9�d�3���%�'���u�W�~�:�:�e�C��'3��t�$�
4��^�+�+���	G��M�M�A�A�E�F�F��^�+�+��	G�s�C-D�	E	�$E�E	c��	|jj�td�|j_nI|jjjd�|jjj	�|jj}g}|j�\}}|j�D]�\}\}}||vs�||js�d}||j�|j�D],}	|	js�|	js�|	jr�*d}n|j�|s��|j!|���|S#t
$r$}t
jd|z�gcYd}~Sd}~wwxYw)Nzerror reading cache (%s)TF)rr"r
rQ�
_initDepCacherVrWrXrb�itemsr%�mark_delete�get_changesr-r,�clearr&)
rr"ra�
duplicatesrY�_r^rL�deb_is_autor5s
          r�get_deb2snap_dupsz InstallBackend.get_deb2snap_dups�s[��	����%�%�-�)0���� � �&�� � �&�&�+�+�D�1�� � �&�&�4�4�6��$�$�*�*�E��
��-�-�/���a�*�0�0�2�	+�N�D�(�3���e�|��c�
� 7� 7�"���c�
�&�&�(� �,�,�.��C��(�(��-�-� #� 5� 5�&+�������
���%�%�c�*�'	+�*���=�	�
�M�M�4�q�8�9��I��		�s�BE�	E>�E9�3E>�9E>c	��i}|j�\}}|j�D]�\}\}}i}tjdd|gdtj��j�}t
jd|dtj�rtjd|z���||jjvs��d|d	<||d
<|||<��|j�D�]�\}}	i}tjdd|gdtj��j�}t
jd|dtj�s�itjd|z�d}
t
jd|
z|dtj�stjd
|z���d|d	<tjdd|gdtj��j�}|djd�D]�}|j�}
t|
�dk7r�"|
d}|
d}|j|dz�s�A|jd�d}|dk7s�[||vs�`tjd|�d|�d��d|d	<d|d
<n|||<���|S)Nr^�infoT)�universal_newlines�stdoutz^installed: rzSnap %s is installed�install�command�channelz#stable/ubuntu-[0-9][0-9].[0-9][0-9]z^tracking:.*%sz+Snap %s is not tracking the release channel�remove�connections�
�rr�:�-zSnap z is being used by z. Switching it to stable track�refresh�stable)rbre�
subprocess�Popen�PIPE�communicate�re�search�	MULTILINErWrXr�duplicate_packages�split�len�
startswith)r�	snap_listrYrZr^rLrM�snap_object�	snap_inforP�
re_channel�conns�conn�	conn_cols�plug�slot�	plug_snaps                 r�get_snap_transitionsz#InstallBackend.get_snap_transitions�s����	�'+�':�':�'<�$��n�'3�'9�'9�';�	.�#�D�#�3�
��K�"�(�(����&�#'�!�����k�m�	
�
�y�y���1��r�|�|�D��
�
�4�t�;�<����(�(�;�;�;�)2��I�&�)3��I�&�"-�	�$��	.�"%3�$8�$8�$:�3	.� �D�<��K�"�(�(����&�#'�!�����k�m�	
�
�y�y���1��r�|�|�D��
�
�4�t�;�<�B�
��y�y�%�
�2�I�a�L�"�,�,���M�M�E��L���)1��I�&�#�(�(��]�D�1�'+�%�?�?���+�-�	�"�!�H�N�N�4�0�"�D� $�
�
��I��9�~��*� �$�Q�<�D�$�Q�<�D����t�c�z�2�$(�J�J�s�O�A�$6�	�%��,� )�� ?�#�M�M�$(��!4��
6?�K�	�2�5=�K�	�2�!�)"�,#.�	�$��g3	.�j�rc��|\}}}|syd}d}	|j�D](}
||
j�z
}|	|
j�z
}	�*|	|z}||z||zz}||j�kDr!t	j
|j|�yy)Nr)�	get_tasks�get_progress_total�get_progress_done�get_fractionr�idle_add�set_fraction)
r�client�changerj�	user_data�index�count�progress_bar�
task_total�	task_done�task�
task_fraction�total_fractions
             r�update_snap_cbzInstallBackend.update_snap_cb
s���%.�"��u�l����
��	��$�$�&�	2�D��$�1�1�3�3�J���/�/�1�1�I�	2�"�J�.�
�(�%�/�E�E�M�B���L�5�5�7�7��M�M�,�3�3�^�D�8rc	����fd�}d�}|td��d}d}�jj�}|r9t|dtj
�r|d}t
jd||�}�j�}|r&t
j|�|jd�	tj�}|j�d}t|�}	|j�D]�\}
}|d}|dk(r:|td|
z��|j!|
|d	�j"||	|f�
�nt|dk(r6|td|
z��|j%|
�j"||	|f�
�n9|td
|
z��|j'|
|d	�j"||	|f�
�|dz
}��	t
j.�j0j4�y#tj($r`}
t+j,d|
z�t
j.�j0j2dtd�td��Yd}
~
yd}
~
wwxYw)Nc�Z��tj�jj|�yr)rr��
label_details�	set_label)�statusrs �r�
update_statusz2InstallBackend.update_snaps.<locals>.update_status%s����M�M�$�,�,�6�6��?rc�$�|j�y)NT)�pulse)r�s r�update_progressz4InstallBackend.update_snaps.<locals>.update_progress(s����� �rzUpdating snapsr�drrrzzRefreshing %s snaprs)�progress_callback_datartzRemoving %s snapzInstalling %s snaprzerror updating snaps (%s)Fz!Upgrade only partially completed.zMAn error occurred while updating snaps. Please check your network connection.)rj�progressbar_slot�get_children�
isinstancer�ProgressBarr�timeout_addr��
source_remover�r�Client�connect_syncr�re�refresh_syncr��remove_sync�install_sync�ErrorrWrXr�r�start_error�start_available)rr�r�r��progress_timer�
progress_barsr�r�r�r�r^r�rrras`             r�update_snapszInstallBackend.update_snaps#sO���	@�	�	�a�(�)�*������-�-�:�:�<�
��Z�
�a�(8�#�/�/�J�(��+�L�!�-�-��_�l��N�
�-�-�/�	�����~�.��%�%�a�(�*	��\�\�^�F����!��E��	�N�E�%.�_�_�%6�
�!��k�%�i�0���i�'�!�!�$8�4�$?�"@�A��'�'��#�I�.��+�+�05�u�l�/K�	(����(�!�!�$6��$=�">�?��&�&���+�+�05�u�l�/K�'��"�!�$8�4�$?�"@�A��'�'��#�I�.��+�+�05�u�l�/K�	(����
��3
�P	
�
�
�d�&�&�6�6�7���z�z�	��M�M�5��9�:��M�M�� � �,�,���5�6��<��	
�
��	�s�-DG�I�1AI�Ic�F�||jk(r$|r"|j|_|j�y||jk(r�|rPtj
j
d�r1t|d�r%t|j��j�y|r|jj�y|r|jj|||�ytjd|jj�y|r|jjd||�y|retj
j
d�rFt|d�r:|j!�|j_|jj�y|}|jj|�y)Nz
/usr/bin/snap�pane_update_progress)�targetrT)r!r*rr<r�path�exists�hasattrr	r�rr�r�rr��exitrlr�)rrrBrCrDrErF�is_cancelled_updates        rrGzInstallBackend._action_doneos=��"�T�,�,�,���-�-�D�K��J�J�L�
�t�*�*�
*���G�G�N�N�?�3��D�"8�9��d�/�/�0�6�6�8��� � �0�0�2��� � �,�,� �,�
��� � ��D�$4�$4�$9�$9�:��� � �,�,�T�<��L���G�G�N�N�?�3��D�"8�9�6:�6L�6L�6N�� � �3�� � �0�0�2�*1�k�#�� � �0�0�1D�ErN)F)�__name__�
__module__�__qualname__�
ACTION_UPDATEr!r*rr<r0r)r/rbrlr�r�r�rG�rrrrsW���M����N�!�
6�p"�	
�"�%,�N'�RK�ZE�,J8�f�2Frr�/usr/sbin/aptd�%UPDATE_MANAGER_FORCE_BACKEND_SYNAPTICr)�InstallBackendAptdaemonzimporting aptdaemon�/usr/sbin/synaptic�&UPDATE_MANAGER_FORCE_BACKEND_APTDAEMON)�InstallBackendSynapticzimporting synapticc��tjjd�rdtjvr	t	|i|��Stjjd�rdtjvr	t|i|��Std��#t
$rt
jd�Y�hwxYw#t
$r
Ytd��wxYw)z,Select and return a package manager backend.r�r�zusing aptdaemon failedr�r�zENo working backend found, please try installing aptdaemon or synaptic)
rr�r�r r��	NameErrorrW�	exceptionr�rV)�args�kwargss  r�get_backendr��s���	�����'�(�3�2�:�:�E�	8�*�D�;�F�;�;�
	�����+�,�4�B�J�J�F�	�)�4�:�6�:�:��	 �����	8����6�7�	8���	��
�	 ���	�s#�
B�0
B*�B'�&B'�*	C�?C)"�__doc__�gi�require_version�
gi.repositoryrrr�aptrrRrWrr�r|rrj�	threadingr	�UpdateManager.Core.MyCacher
�UpdateManager.Core.utilsrr�UpdateManager.Dialogsr
rr�r�r r��ImportErrorr�r�r�r�rr�<module>r�s��9�
�����5�%� �����7�C� �*�*����	�	�� ��.�D�(�FF�V�FF�V�G�G�N�N�#�$�/�r�z�z�A�1�D�
�G�G�N�N�'�(�0��
�
�B�0�B�
���1�����/�0�1���0�����.�/��	0�s$�&C$�D�$C>�=C>�D�D