
    Mwgx                         d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZmZmZmZmZ d dlmZ  G d de      ZeZ G d de      Zy	)
    )Serialisable)AliasTypedStringFloatIntegerBoolNoneSetSet)ExtensionList	HexBinaryGuidRelationBase64Binary)hash_passwordc                       e Zd Zd\  ZZdZ ed      Z ed      Z	 ed      Z
 ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed	      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Zd
Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZe d        Z!e!jD                  d        Z!ddZ#e d        Z$e$jD                  d        Z$e% fd       Z& xZ'S )WorkbookProtection)NN
workbookPrworkbookPasswordT
allow_nonerevisionsPasswordlockStructurelockWindowslockRevisionr   workbookPasswordCharacterSetr   revisionsPasswordCharacterSetr   r   r   revisionsAlgorithmNamerevisionsHashValuerevisionsSaltValuerevisionsSpinCountworkbookAlgorithmNameworkbookHashValueworkbookSaltValueworkbookSpinCountc                     ||| _         || _        ||| _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        y Nr   )selfr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   s                   S/var/www/horilla/myenv/lib/python3.12/site-packages/openpyxl/workbook/protection.py__init__zWorkbookProtection.__init__7   s    " '$4D!,H)(%6D"-J**&(&<#"4"4"4%:"!2!2!2    c                 ,    |st        |      }|| _        y)z Set a password on this workbook.N)r   _workbook_passwordr)   valuealready_hasheds      r*   set_workbook_passwordz(WorkbookProtection.set_workbook_passwordZ   s    !%(E"'r,   c                     | j                   S )z7Return the workbook password value, regardless of hash.)r.   r)   s    r*   r   z#WorkbookProtection.workbookPassword`   s     &&&r,   c                 &    | j                  |       y)z6Set a workbook password directly, forcing a hash step.N)r2   r)   r0   s     r*   r   z#WorkbookProtection.workbookPassworde   s     	""5)r,   c                 ,    |st        |      }|| _        y)z)Set a revision password on this workbook.N)r   _revisions_passwordr/   s      r*   set_revisions_passwordz)WorkbookProtection.set_revisions_passwordj   s    !%(E#( r,   c                     | j                   S )z8Return the revisions password value, regardless of hash.)r8   r4   s    r*   r   z$WorkbookProtection.revisionsPasswordp   s     '''r,   c                 &    | j                  |       y)z7Set a revisions password directly, forcing a hash step.N)r9   r6   s     r*   r   z$WorkbookProtection.revisionsPasswordu   s     	##E*r,   c                     t         |   |      }|j                  r"|j                  |j	                  d      d       |j
                  r"|j                  |j	                  d      d       |S )z0Don't hash passwords when deserialising from XMLr   T)r1   r   )super	from_treer   r2   getr   r9   )clsnoder)   	__class__s      r*   r>   zWorkbookProtection.from_treez   sg     w &  &&txx0B'CTX&Y!!''1D(EVZ'[r,   )NNNNNNNNNNNNNNN) F)(__name__
__module____qualname__r.   r8   tagnamer   workbook_passwordr   r   revision_passwordr   r	   r   lock_structurer   lock_windowsr   lock_revisionr   r   r    r!   r   r"   r#   r$   r%   r&   	__attrs__r+   r2   propertyr   setterr9   r   classmethodr>   __classcell__)rB   s   @r*   r   r      s   .8++G01#)T#: 12$*d$;!D)M?+N$'K'L4(L.)M#t4%6%6 D1"d3$5$540;I #'.2#'/3#!"(,$($($('+#'#'#'!3F( ' ' * *) ( ( + +  r,   r   c                       e Zd ZdZ ed      Z ed      Z ed      Z	 ed      Z
 ed      Z ed      Z ed      Z	 	 	 	 	 	 	 ddZy)FileSharingfileSharingTr   Nc                 f    || _         || _        || _        || _        || _        || _        || _        y r(   )readOnlyRecommendeduserNamereservationPasswordalgorithmName	hashValue	saltValue	spinCount)r)   rV   rW   rX   rY   rZ   r[   r\   s           r*   r+   zFileSharing.__init__   s8     $7  #6 *"""r,   )NNNNNNN)rD   rE   rF   rG   r	   rV   r   rW   r   rX   rY   r   rZ   r[   r   r\   r+    r,   r*   rS   rS      sk    G$/&H#t4d+M-I-I4(I &*%)##r,   rS   N)!openpyxl.descriptors.serialisabler   openpyxl.descriptorsr   r   r   r   r   r	   r
   r   openpyxl.descriptors.excelr   r   r   r   r   openpyxl.utils.protectionr   r   DocumentSecurityrS   r]   r,   r*   <module>rc      sK    ;	 	 	  4j jZ & #, #r,   