
    !j#                        d Z ddlmZmZ ddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZmZmZmZ dZd	Z ed
d          Z G d d          Z edd          Z G d d          ZdS )zERequest/response of PutBucketEncryption and GetBucketEncryption APIs.    )absolute_importannotations)ABCMeta)TypeTypeVarcast)ElementTree   )Element
SubElementfindfindtextAES256zaws:kmsARule)boundc                      e Zd ZdZeZ	 dddZedd	            Zedd
            Z	e
dd            Ze
	 ddd            Ze
dd            ZddZdS )r   zServer-side encryption rule. Nsse_algorithmstrkms_master_key_id
str | Nonec                "    || _         || _        d S N)_sse_algorithm_kms_master_key_id)selfr   r   s      Y/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/minio/sseconfig.py__init__zRule.__init__%   s    
 ,"3    returnc                    | j         S )zGet SSE algorithm.)r   r   s    r   r   zRule.sse_algorithm-   s     ""r   c                    | j         S )zGet KMS master key ID.)r   r"   s    r   r   zRule.kms_master_key_id2   s     &&r   clsType[A]r   c                "     | t                     S )zCreate SSE-S3 rule.)r   )r$   s    r   new_sse_s3_rulezRule.new_sse_s3_rule7   s     s6{{r   c                $     | t           |          S )zCreate new SSE-KMS rule.)AWS_KMS)r$   r   s     r   new_sse_kms_rulezRule.new_sse_kms_rule<   s     s7-...r   element
ET.Elementc           
         t          t          j        t          |dd                    } | t          t          t          |dd                    t          |d                    S )/Create new object with values from XML element."ApplyServerSideEncryptionByDefaultTSSEAlgorithmKMSMasterKeyID)r   ETr   r   r   r   r$   r+   s     r   fromxmlzRule.fromxmlD   se     J>EE
 
 shw==>>W.//
 
 	
r   ET.Element | Nonec                    |t          d          t          |d          }t          |d          }t          |d| j                   | j        t          |d| j                   |S )Convert to XML.Nzelement must be providedr   r/   r0   r1   )
ValueErrorr   r   r   )r   r+   tags      r   toxmlz
Rule.toxmlP   sn    ?7888Wf--"FGG3(;<<<".s,d.EFFFr   r   )r   r   r   r   )r    r   )r    r   )r$   r%   r    r   )r$   r%   r   r   r    r   )r$   r%   r+   r,   r    r   r+   r5   r    r,   )__name__
__module____qualname____doc__r   __metaclass__r   propertyr   r   classmethodr'   r*   r4   r:    r   r   r   r   !   s        ''M
 -14 4 4 4 4 # # # X# ' ' ' X'    [  -1/ / / / [/ 	
 	
 	
 [	
	 	 	 	 	 	r   B	SSEConfigc                  R    e Zd ZdZddZedd            Zedd            ZddZ	dS )rE   z%server-side encryption configuration.ruler   c                6    |st          d          || _        d S )Nzrule must be provided)r8   _rule)r   rG   s     r   r   zSSEConfig.__init__b   s$     	64555


r   r    c                    | j         S )z	Get rule.)rI   r"   s    r   rG   zSSEConfig.ruleg   s     zr   r$   Type[B]r+   r,   rD   c                    t          t          j        t          |dd                    } | t                              |                    S )r.   r   T)r   r2   r   r   r   r4   r3   s     r   r4   zSSEConfig.fromxmll   s=     rz4#>#>??s4<<(()))r   r5   c                X    t          d          }| j                            |           |S )r7   !ServerSideEncryptionConfiguration)r   rI   r:   )r   r+   s     r   r:   zSSEConfig.toxmlr   s+    =>>
!!!r   N)rG   r   )r    r   )r$   rK   r+   r,   r    rD   r;   )
r<   r=   r>   r?   r   rA   rG   rB   r4   r:   rC   r   r   rE   rE   _   s        //   
    X * * * [*
     r   N)r?   
__future__r   r   abcr   typingr   r   r   	xml.etreer	   r2   xmlr   r   r   r   r   r)   r   r   rD   rE   rC   r   r   <module>rT      s  " L K 3 3 3 3 3 3 3 3       & & & & & & & & & & ' ' ' ' ' ' 4 4 4 4 4 4 4 4 4 4 4 4	
GCv8 8 8 8 8 8 8 8v GC{###         r   