U o^@sddlmZddlmZmZmZmZmZmZm Z m Z ddl m Z m Z mZmZmZddlmZGdddeZeZGdddeZd S) ) Serialisable)AliasTypedStringFloatIntegerBoolNoneSetSet) ExtensionList HexBinaryGuidRelation Base64Binary) hash_passwordcs,eZdZd\ZZdZedZeddZ edZ eddZ e ddZ edZe ddZedZe ddZed ZeddZeddZeddZeddZeddZeddZeddZeddZd Zdd d ZdddZe ddZ!e!j"ddZ!dddZ#e ddZ$e$j"ddZ$e%fddZ&Z'S)WorkbookProtection)NNZ workbookPrworkbookPasswordT allow_nonerevisionsPassword lockStructure lockWindows lockRevisionrworkbookPasswordCharacterSetrrevisionsPasswordCharacterSetrrrrevisionsAlgorithmNamerevisionsHashValuerevisionsSaltValuerevisionsSpinCountworkbookAlgorithmNameworkbookHashValueworkbookSaltValueworkbookSpinCountNcCsn|dk r||_||_|dk r"||_||_||_||_||_||_| |_| |_ | |_ | |_ | |_ ||_ ||_dSNr)selfrrrrrrrrrrrr r!r"r#r&v/private/var/folders/sd/whlwsn6x1_qgglc0mjv25_695qk2gl/T/pip-install-4zq3fp6i/openpyxl/openpyxl/workbook/protection.py__init__7s"zWorkbookProtection.__init__FcCs|s t|}||_dS)z Set a password on this workbook.N)r_workbook_passwordr%valuealready_hashedr&r&r'set_workbook_passwordZsz(WorkbookProtection.set_workbook_passwordcCs|jS)z7Return the workbook password value, regardless of hash.)r*r%r&r&r'r`sz#WorkbookProtection.workbookPasswordcCs||dS)z6Set a workbook password directly, forcing a hash step.N)r.r%r,r&r&r'rescCs|s t|}||_dS)z)Set a revision password on this workbook.N)r_revisions_passwordr+r&r&r'set_revisions_passwordjsz)WorkbookProtection.set_revisions_passwordcCs|jS)z8Return the revisions password value, regardless of hash.)r1r/r&r&r'rpsz$WorkbookProtection.revisionsPasswordcCs||dS)z7Set a revisions password directly, forcing a hash step.N)r2r0r&r&r'ruscsHtt||}|jr*|j|ddd|jrD|j|ddd|S)z0Don't hash passwords when deserialising from XMLrT)r-r)superr from_treerr.getrr2)clsnoder% __class__r&r'r4zs zWorkbookProtection.from_tree)NNNNNNNNNNNNNNN)r)F)r)F)(__name__ __module__ __qualname__r*r1tagnamerZworkbook_passwordrrZrevision_passwordrrrZlock_structurerZ lock_windowsrZ lock_revisionrrrrrrr r!r"r# __attrs__r(r.propertyrsetterr2r classmethodr4 __classcell__r&r&r8r'rsb              #      rc@s`eZdZdZeddZeddZeddZ eddZ e ddZ e ddZ eddZdddZdS) FileSharingZ fileSharingTrNcCs.||_||_||_||_||_||_||_dSr$)readOnlyRecommendeduserNamereservationPassword algorithmName hashValue saltValue spinCount)r%rDrErFrGrHrIrJr&r&r'r(s zFileSharing.__init__)NNNNNNN)r:r;r<r=rrDrrEr rFrGrrHrIrrJr(r&r&r&r'rCs        rCN)Z!openpyxl.descriptors.serialisablerZopenpyxl.descriptorsrrrrrrr r Zopenpyxl.descriptors.excelr r r rrZopenpyxl.utils.protectionrrZDocumentSecurityrCr&r&r&r's (  m