%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/duplicity/backends/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/duplicity/backends/__pycache__/pydrivebackend.cpython-312.pyc

�

�2e�1��d�ddlZddlZddlmZddlmZGd�dejj�Zejjde�	ejjde�	ejjde�ejjjgd	��y)
�N)�log)�BackendExceptionc�F�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zy)�PyDriveBackendz)Connect to remote store using PyDrive APIc��	��tjjj||�	ddl}ddlm}i|_
d|_d|jvr-|jdd|_d|jddd�|_
	ddl
m}dd	lm}dd
lm}m}	ddlm}	d|_dt8j:vr�t8j:d}|j,r&	|j<dz|j>z|d��}
n@j@jC|�}
|j<dz|j>z|d��}
|
jE|jG��|d��}|
|_$�n'dt8j:vr,|t8j:dd��}|jK�n�dt8j:vr�dt8j:vr�|d��}|jMt8j:d�|jOt8j:d�|jH�|jK�n-|jPr|jS�n|jU�|jWt8j:d�ntd��||�|_,|jr
|j}n�|jXj[ddi�j]�}|r|dddd}nH|jXj_dd i�}|ja�|ddd}|jc�|jdjgd!�}|D]���s�dd"|�d#�i}|ji|j�|jXj[|�j]�}tk�fd$�|D�d�}|���d%d|igd&�}|ddji|j�|ji|j�|jXj_|�}|jr|jad'di�(�n|ja�|d}��||_6i|_7y#t$r}tdt|�����d}~wwxYw#t$r}tdt|�����d}~wwxYw#t.$r}dd
lm}
ddlm}d|_Yd}~��9d}~wwxYw))Nr)�buildz|PyDrive backend requires PyDrive2 and Google API client installation.
Please read the manpage for setup details.
Exception: �driveID�	teamDriveT)�corpora�teamDriveId�includeTeamDriveItems�supportsTeamDrives)�
GoogleAuth)�GoogleDrive��ApiRequestError�FileNotUploadedErrorzfPyDrive backend requires PyDrive2 installation.
Please read the manpage for setup details.
Exception: )�SignedJwtAssertionCredentials)�ServiceAccountCredentials)�cryptF�GOOGLE_DRIVE_ACCOUNT_KEY�@z%https://www.googleapis.com/auth/drive)�scopes�<)�http_timeout�GOOGLE_DRIVE_SETTINGS)�
settings_filer�GOOGLE_SECRETS_FILE�GOOGLE_CREDENTIALS_FILEzoGOOGLE_DRIVE_ACCOUNT_KEY or GOOGLE_DRIVE_SETTINGS environment variable not set. Please read the manpage to fix.�qz#'Root' in parents and trashed=false�parents�id�title�i_am_in_root�/�'�' in parents and trashed=falsec3�B�K�|]}|d�k(r|ddk(r|���y�w)r#�mimeType�"application/vnd.google-apps.folderN�)�.0�item�folder_names  ��C/usr/lib/python3/dist-packages/duplicity/backends/pydrivebackend.py�	<genexpr>z*PyDriveBackend.__init__.<locals>.<genexpr>�s2��������G�}��3��Z�8H�Lp�8p���s�r*)r#r)r!r��param)8�	duplicity�backend�Backend�__init__�httplib2�apiclient.discoveryr�ImportErrorr�str�
api_params�shared_drive_id�
query_args�
pydrive2.authr�pydrive2.driver�pydrive2.filesrr�oauth2client.clientr�	oldClient�	Exception�oauth2client.service_accountr�oauth2clientr�os�environ�username�hostname�Signer�from_string�	authorize�Http�credentials�CommandLineAuth�LoadClientConfigFile�LoadCredentialsFile�access_token_expired�Refresh�	Authorize�SaveCredentialsFile�drive�ListFile�GetList�
CreateFile�Upload�Delete�path�split�update�next�folder�id_cache)�self�
parsed_urlr7r�errrrrrr�account_keyrN�signer�gauth�parent_folder_id�	file_list�file_in_root�folder_names�list_file_argsr`�create_file_argsr.s                       @r/r6zPyDriveBackend.__init__s�������!�!�*�*�4��<�	��1����#����
�-�-�-�#-�#8�#8��#C�A�#F�D� �&�#�3�3�)-�&*�	�D�O�	�0�2�
�	#�I�!�D�N�&����3��*�*�%?�@�K��~�~�;��'�'�#�-�
�0C�0C�C��B������1�1�+�>��7��'�'�#�-�
�0C�0C�C��B���

�!�!�(�-�-�/�2��B�/�E� +�E��
$��
�
�
2��R�Z�Z�8O�-P�_a�b�E��!�!�#�
"�b�j�j�
0�5N�RT�R\�R\�5\��B�/�E��&�&�r�z�z�2G�'H�I��%�%�b�j�j�1J�&K�L�� � �(��%�%�'��+�+��
�
�����!��%�%�b�j�j�1J�&K�L�"�D��
�!��'��
����#�3�3���
�
�+�+�S�2W�,X�Y�a�a�c�I��#,�Q�<�	�#:�1�#=�d�#C� �#�z�z�4�4�g�~�5N�O���#�#�%�#/�	�#:�1�#=�d�#C� ��#�#�%�"���,�,�S�1��'�	,�K���!�Q�'7�&8�8V�#W�X�N��!�!�$�/�/�2��
�
�+�+�N�;�C�C�E�I��� )��
�
�F��~�(� D�!%�'7� 8�9�$� �
!��+�A�.�5�5�d�o�o�F� �'�'����8����.�.�/?�@���'�'��M�M�)=�t�(D�M�E��M�M�O�%�d�|��7	,�8'�����
��A�	�"����F�8���
��	��6�	�"��!�!�f�X�'��
��	���	#�N�*�"�D�N�N��		#�sG�
Q*�R�
R:�*	R�3R
�
R�	R7�R2�2R7�:	S!�S�S!c���ddlm}tj|�}||jvr�|j|}|j
j
d|i�}	|d|k(rD|dds<|dD]4}|d|jk(s�tjd|�d	|�d
��|cStjd|�d
|�d��|j|=d|�d|j�d�}d}||d�}	|	j|j�|j
j|	�j!�}
t#|
�dkDr#tj$t'd�|fz�n@|
r>|
dd}|
dd|j|<tjd|�d	|�d��|
dStjd|�d��y#|$r2}|jdjjdk7r�Yd}~��Dd}~wwxYw)Nr)rr"r#�labels�trashedr!zPyDrive backend: found file 'z
' with id z in ID cachei�zPyDrive backend: invalidating 'z' (previously ID z) from ID cacheztitle='z' and 'r'z>items(title,id,fileSize,downloadUrl,exportLinks),nextPageToken�r �fields�z,PyDrive backend: multiple files called '%s'.z on server, adding to cachezPyDrive backend: file 'z!' not found in cache or on server)r@rrF�fsdecoderarVrYr`r�Info�args�resp�statusr^r;rWrX�len�
FatalError�_)rb�filenamer�file_id�
drive_file�parent�errorr rrrl�flists           r/�file_by_namezPyDriveBackend.file_by_name�s���2��;�;�x�(���t�}�}�$��m�m�H�-�G����.�.��g��?�J�	
��g�&�(�2�:�h�;O�PY�;Z�",�Y�"7�.��!�$�<�4�;�;�6��H�H�'D�X�J�j�Y`�Xa�am�%n�o�#-�-�.�
�H�H�6�x�j�@Q�RY�QZ�Zi�j�k��
�
�h�'��h�Z�w�t�{�{�m�3Q�R��Q�� �F�3�����d�o�o�.��
�
�#�#�N�3�;�;�=���u�:��>��N�N�1�K�L�PX�{�Z�[�
��A�h�t�n�G�&+�A�h�t�n�D�M�M�(�#��H�H�4�X�J�j��	�Ql�m�n���8�O����*�8�*�4U�V�W���/#�
��:�:�a�=�%�%�,�,��3��4��
�s$�*F5�F5�"F5�5G,�:'G'�'G,c�4�|j|�}|�y|dS)N�r")r�)rbr|r~s   r/�
id_by_namezPyDriveBackend.id_by_name�s&���&�&�x�0�
�����d�#�#�c�F�tj|�}|j|�}|�i|d|jd�gd�}|ddj	|j
�|jj|�}tjd|�d��ntjd|�d	|d
�d��|jtj|j��|jr|jddi�
�n|j�|d
|j|<y)Nzdrive#fileLink)�kindr")r#r!r!rz$PyDrive backend: creating new file 'r&z*PyDrive backend: replacing existing file 'z' with id 'r"rTr1)rFrtr�r`r^r;rVrYrru�SetContentFile�namer<rZra)rb�source_path�remote_filenamer~rms     r/�_putzPyDriveBackend._put�s���+�+�o�6���&�&��7�
���)�%5�T�[�[�I�J� ��
�Y�'��*�1�1�$�/�/�B����.�.�/?�@�J��H�H�;�O�;L�A�N�O��H�H�A�/�AR�R]�^h�im�^n�]o�op�q�r��!�!�"�+�+�k�.>�.>�"?�@�������%9�4�$@��A�����)3�D�)9��
�
�o�&r�c��|j|�}|jtj|j��y)N)r��GetContentFilerFrtr�)rbr��
local_pathr~s    r/�_getzPyDriveBackend._get�s-���&�&��7�
��!�!�"�+�+�j�o�o�">�?r�c��d|j�d�dd�}|j|j�|jj	|�j�}t
d�|D��}t|jj��D]*}||vs�|j|���|j|��,t|�S)Nr&r'zitems(title,id),nextPageTokenrqc3�&K�|]	}|d���y�w)r#Nr+)r,r-s  r/r0z'PyDriveBackend._list.<locals>.<genexpr>�s����>�$��W�
�>�s�)r`r^r;rVrWrX�set�listra�keysr��add)rbrl�drive_files�	filenamesr|s     r/�_listzPyDriveBackend._list�s����T�[�[�M�!?�@�5�
��	���d�o�o�.��j�j�)�)�.�9�A�A�C���>�+�>�>�	�
�T�]�]�/�/�1�2�	(�H��	�)��0A�0A�(�0K�0W��
�
�h�'�	(��I��r�c���|j|�}|dk(r-tjdtj|��d��y|j
rP|jjjj�j|ddi��j�y|jjjj�j|��j�y)Nr�zFile 'z*' does not exist while trying to delete itrT)�fileIdr2)r�)r�r�WarnrFrtr<rV�auth�service�files�delete�execute)rbr|r}s   r/�_deletezPyDriveBackend._delete�s����/�/�(�+���b�=��H�H�v�b�k�k�(�3�4�4^�_�`�
�
!�
!��J�J�O�O�#�#�)�)�+�2�2�'�J^�`d�Ie�2�f�n�n�p��J�J�O�O�#�#�)�)�+�2�2�'�2�B�J�J�Lr�c�X�|j|�}|�d}d|iSt|d�}d|iS)N����fileSize�size)r��int)rbr|r~r�s    r/�_queryzPyDriveBackend._querysD���&�&�x�0�
����D���~���z�*�-�.�D���~�r�c���ddlm}m}t||�rtj
jSt||�rtj
jStj
jS)Nrr)	r@rr�
isinstancer�	ErrorCode�backend_not_found�backend_permission_denied�
backend_error)rb�	operationr�rrs     r/�_error_codezPyDriveBackend._error_codesN��	
�
�e�1�2��=�=�2�2�2�
���
/��=�=�:�:�:��}�}�*�*�*r�N)
�__name__�
__module__�__qualname__�__doc__r6r�r�r�r�r�r�r�r�r+r�r/rrs7��3�E�N'�R$�:�*@��"M��
+r�r�pydrive�
pydrive+gdocs�gdocs)r�r�r�)rF�duplicity.backendr3r�duplicity.errorsrr4r5r�register_backend�uses_netloc�extendr+r�r/�<module>r�s���(
���-�+�Y�&�&�.�.�+�D
���"�"�9�n�=�3�	���"�"�?�N�C�;�	���"�"�7�N�;�	�����$�$�%J�Kr�

Zerion Mini Shell 1.0