
    !jH                       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dlmZmZmZmZmZ  ed	d
          Z G d d
          Z G d de          Z edd          Z G d d          Z G d de          Z G d de          Z edd          Z G d d          Z  G d de           Z! edd          Z" G d d          Z# G d de           Z$ ed d!          Z% G d" d!          Z& ed#d$          Z' G d% d$          Z( ed&d'          Z) G d( d'          Z* ed)d*          Z+ G d+ d*          Z, ed,d-          Z- G d. d-e          Z. ed/d0          Z/ G d1 d0          Z0d2S )3zGRequest/response of PutBucketReplication and GetBucketReplication APIs.    )absolute_importannotations)ABCMeta)TypeTypeVarcast)ElementTree   )DISABLEDBaseRuleFiltercheck_status)Element
SubElementfindfindallfindtextAStatus)boundc                  V    e Zd ZdZeZddZedd            Ze	dd            Z
ddZdS )r   zStatus.statusstrc                2    t          |           || _        d S N)r   _status)selfr   s     a/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/minio/replicationconfig.py__init__zStatus.__init__#   s    V    returnc                    | j         S zGet status.r   r   s    r   r   zStatus.status'        |r    clsType[A]element
ET.Elementr   c                    t          t          j        t          || j        d                    }t          t
          t          |dd                    } | |          S )/Create new object with values from XML element.Tr   )r   ETr   r   __name__r   r   )r'   r)   r   s      r   fromxmlzStatus.fromxml,   sL     rz4t#D#DEEc8GXt<<==s6{{r    ET.Element | Nonec                    |t          d          t          || j        j                  }t          |d| j                   |S )Convert to XML.Nelement must be providedr   )
ValueErrorr   	__class__r.   r   r   r)   s     r   toxmlzStatus.toxml3   sC    ?7888Wdn&=>>7Hdl333r    N)r   r   r!   r   )r'   r(   r)   r*   r!   r   r)   r0   r!   r*   )r.   
__module____qualname____doc__r   __metaclass__r   propertyr   classmethodr/   r7    r    r   r   r      s        MM       X    [     r    c                      e Zd ZdZdS )SseKmsEncryptedObjectszSSE KMS encrypted objects.Nr.   r:   r;   r<   r@   r    r   rB   rB   <   s        $$$$r    rB   BSourceSelectionCriteriac                  V    e Zd ZdZ	 dddZedd            Zedd            ZddZ	dS )rE   zSource selection criteria.Nsse_kms_encrypted_objectsSseKmsEncryptedObjects | Nonec                    || _         d S r   _sse_kms_encrypted_objects)r   rG   s     r   r   z SourceSelectionCriteria.__init__F   s     +D'''r    r!   c                    | j         S )zGet SSE KMS encrypted objects.rJ   r%   s    r   rG   z1SourceSelectionCriteria.sse_kms_encrypted_objectsL        ..r    r'   Type[B]r)   r*   rD   c                    t          t          j        t          |dd                    } | t          |d          dnt                              |                    S )r,   rE   TrB   N)r   r-   r   r   rB   r/   r'   r)   s     r   r/   zSourceSelectionCriteria.fromxmlQ   sd     J3T::
 
 s":;;CDD'//88
 
 	
r    r0   c                    |t          d          t          |d          }| j        r| j                            |           |S )r2   Nr3   rE   )r4   r   rK   r7   r6   s     r   r7   zSourceSelectionCriteria.toxml]   sM    ?7888W&?@@* 	;+11':::r    r   )rG   rH   )r!   rH   )r'   rN   r)   r*   r!   rD   r9   )
r.   r:   r;   r<   r   r>   rG   r?   r/   r7   r@   r    r   rE   rE   C   s        $$ HLD D D D D / / / X/ 	
 	
 	
 [	
     r    c                      e Zd ZdZdS )ExistingObjectReplicationzExisting object replication.NrC   r@   r    r   rS   rS   g   s        &&&&r    rS   c                  &     e Zd ZdZef fd	Z xZS )DeleteMarkerReplicationzDelete marker replication.c                J    t                                          |           d S r   )superr   )r   r   r5   s     r   r   z DeleteMarkerReplication.__init__n   s!         r    )r.   r:   r;   r<   r   r   __classcell__r5   s   @r   rU   rU   k   sF        $$& ! ! ! ! ! ! ! ! ! !r    rU   CReplicationTimeValuec                  X    e Zd ZdZeZdddZedd            Ze	dd            Z
ddZdS )r[   zReplication time value.   minutes
None | intc                    || _         d S r   _minutes)r   r^   s     r   r   zReplicationTimeValue.__init__y   s    r    r!   
int | Nonec                    | j         S )zGet minutes.ra   r%   s    r   r^   zReplicationTimeValue.minutes|        }r    r'   Type[C]r)   r*   rZ   c                    t          t          j        t          || j        d                    }t          |d          } | |rt          |          nd          S )r,   TMinutesN)r   r-   r   r   r.   r   int)r'   r)   r^   s      r   r/   zReplicationTimeValue.fromxml   sQ     rz4t#D#DEE7I..s743w<<<555r    r0   c                    |t          d          t          || j        j                  }| j        #t          |dt          | j                             |S )r2   Nr3   rh   )r4   r   r5   r.   rb   r   r6   s     r   r7   zReplicationTimeValue.toxml   sS    ?7888Wdn&=>>=$w	3t}+=+=>>>r    N)r]   )r^   r_   r!   rc   )r'   rf   r)   r*   r!   rZ   r9   )r.   r:   r;   r<   r   r=   r   r>   r^   r?   r/   r7   r@   r    r   r[   r[   u   s        !!M             X 6 6 6 [6     r    c                      e Zd ZdZdS )TimezTime.NrC   r@   r    r   rm   rm      s        KKKr    rm   DReplicationTimec                  j    e Zd ZdZddZedd            Zedd	            Zedd            Z	ddZ
dS )ro   zReplication time.timerm   r   r   c                b    |st          d          t          |           || _        || _        d S )Nztime must be provided)r4   r   _timer   )r   rq   r   s      r   r   zReplicationTime.__init__   s9     	64555V
r    r!   c                    | j         S )zGet time value.)rs   r%   s    r   rq   zReplicationTime.time        zr    c                    | j         S r#   r$   r%   s    r   r   zReplicationTime.status   r&   r    r'   Type[D]r)   r*   rn   c                    t          t          j        t          |dd                    }t                              |          }t          t          t          |dd                    } | ||          S )r,   ro   Tr   )r   r-   r   r   rm   r/   r   r   )r'   r)   rq   r   s       r   r/   zReplicationTime.fromxml   s`     rz41BD#I#IJJ||G$$c8GXt<<==s4   r    r0   c                    |t          d          t          |d          }| j                            |           t          |d| j                   |S )r2   Nr3   ro   r   )r4   r   rs   r7   r   r6   s     r   r7   zReplicationTime.toxml   sU    ?7888W&788
!!!7Hdl333r    N)rq   rm   r   r   )r!   rm   r8   )r'   rw   r)   r*   r!   rn   r9   )r.   r:   r;   r<   r   r>   rq   r   r?   r/   r7   r@   r    r   ro   ro      s               X    X ! ! ! [!     r    c                      e Zd ZdZdS )EventThresholdzEvent threshold.NrC   r@   r    r   r{   r{      s        r    r{   EMetricsc                  j    e Zd ZdZddZedd            Zedd	            Zedd            Z	ddZ
dS )r}   zMetrics.event_thresholdr{   r   r   c                b    |st          d          t          |           || _        || _        d S )Nz event threshold must be provided)r4   r   _event_thresholdr   )r   r   r   s      r   r   zMetrics.__init__   s;     	A?@@@V /r    r!   c                    | j         S )zGet event threshold.)r   r%   s    r   r   zMetrics.event_threshold   s     $$r    c                    | j         S r#   r$   r%   s    r   r   zMetrics.status   r&   r    r'   Type[E]r)   r*   r|   c                    t          t          j        t          |dd                    }t                              |          }t          t          t          |dd                    } | ||          S )r,   r}   Tr   )r   r-   r   r   r{   r/   r   r   )r'   r)   r   r   s       r   r/   zMetrics.fromxml   sa     rz4D#A#ABB(0099c8GXt<<==s?F+++r    r0   c                    |t          d          t          |d          }| j                            |           t          |d| j                   |S )r2   Nr3   r}   r   )r4   r   r   r7   r   r6   s     r   r7   zMetrics.toxml   sU    ?7888Wi00##G,,,7Hdl333r    N)r   r{   r   r   )r!   r{   r8   )r'   r   r)   r*   r!   r|   r9   )r.   r:   r;   r<   r   r>   r   r   r?   r/   r7   r@   r    r   r}   r}      s        N    % % % X%    X , , , [,     r    FEncryptionConfigc                  T    e Zd ZdZdddZedd            Zedd            ZddZ	dS )r   zEncryption configuration.Nreplica_kms_key_id
str | Nonec                    || _         d S r   _replica_kms_key_id)r   r   s     r   r   zEncryptionConfig.__init__   s    #5   r    r!   c                    | j         S )zGet replica KMS key ID.r   r%   s    r   r   z#EncryptionConfig.replica_kms_key_id   s     ''r    r'   Type[F]r)   r*   r   c                    t          t          j        t          |dd                    } | t	          |d                    S )r,   EncryptionConfigurationTReplicaKmsKeyID)r   r-   r   r   r   rP   s     r   r/   zEncryptionConfig.fromxml   sE     J3T::
 
 s8G%677888r    r0   c                t    |t          d          t          |d          }t          |d| j                   |S )r2   Nr3   r   r   )r4   r   r   r6   s     r   r7   zEncryptionConfig.toxml  sA    ?7888W&?@@7-t/GHHHr    r   )r   r   r!   r   )r'   r   r)   r*   r!   r   r9   )
r.   r:   r;   r<   r   r>   r   r?   r/   r7   r@   r    r   r   r      s        ##6 6 6 6 6 ( ( ( X( 9 9 9 [9     r    GAccessControlTranslationc                  T    e Zd ZdZdddZedd            Zedd            ZddZ	dS )r   zAccess control translation.Destinationownerr   c                6    |st          d          || _        d S )Nzowner must be provided)r4   _owner)r   r   s     r   r   z!AccessControlTranslation.__init__  s$     	75666r    r!   c                    | j         S )z
Get owner.)r   r%   s    r   r   zAccessControlTranslation.owner       {r    r'   Type[G]r)   r*   r   c                    t          t          j        t          |dd                    }t          t          t          |dd                    } | |          S )r,   r   TOwner)r   r-   r   r   r   r   )r'   r)   r   s      r   r/   z AccessControlTranslation.fromxml  sR     JW&@$GG
 
 S(7GT::;;s5zzr    r0   c                t    |t          d          t          |d          }t          |d| j                   |S )r2   Nr3   r   r   )r4   r   r   r6   s     r   r7   zAccessControlTranslation.toxml%  s?    ?7888W&@AA7GT[111r    N)r   )r   r   r8   )r'   r   r)   r*   r!   r   r9   )
r.   r:   r;   r<   r   r>   r   r?   r/   r7   r@   r    r   r   r     s        %%    
    X    [     r    Hr   c                      e Zd ZdZ	 	 	 	 	 	 d!d"dZed#d            Zed$d            Zed%d            Zed&d            Z	ed'd            Z
ed(d            Zed%d            Zed)d            Zd*d ZdS )+r   zReplication destination.N
bucket_arnr   access_control_translationAccessControlTranslation | Noneaccountr   encryption_configEncryptionConfig | NonemetricsMetrics | Nonereplication_timeReplicationTime | Nonestorage_classc                    |st          d          || _        || _        || _        || _        || _        || _        || _        d S )Nzbucket ARN must be provided)r4   _bucket_arn_access_control_translation_account_encryption_config_metrics_replication_time_storage_class)r   r   r   r   r   r   r   r   s           r   r   zDestination.__init__4  sW      	<:;;;%+E("3!1+r    r!   c                    | j         S )zGet bucket ARN.)r   r%   s    r   r   zDestination.bucket_arnH  s     r    c                    | j         S )z Get access control translation. )r   r%   s    r   r   z&Destination.access_control_translationM  s     //r    c                    | j         S )zGet account.)r   r%   s    r   r   zDestination.accountR  re   r    c                    | j         S )zGet encryption configuration.)r   r%   s    r   r   zDestination.encryption_configW  s     &&r    c                    | j         S )zGet metrics.)r   r%   s    r   r   zDestination.metrics\  re   r    c                    | j         S )zGet replication time.)r   r%   s    r   r   zDestination.replication_timea  s     %%r    c                    | j         S )zGet storage class.)r   r%   s    r   r   zDestination.storage_classf  s     ""r    r'   Type[H]r)   r*   r   c           	     ^   t          t          j        t          |dd                    }t          |d          dnt                              |          }t          |d          }t          t          t          |dd                    }t          |d          dnt                              |          }t          |d          dnt                              |          }t          |d	          dnt                              |          }t          |d
          } | |||||||          S )r,   r   Tr   NAccountBucketr   r}   ro   StorageClass)r   r-   r   r   r   r/   r   r   r   r}   ro   )	r'   r)   r   r   r   r   r   r   r   s	            r   r/   zDestination.fromxmlk  s3    rz4#E#EFF"<==EDD)11':: 	# 7I..#x4@@AA
";<<DDD!))'22 	
 ),,4DD)) 	
 "344<DD ((11 	 !.99s:97$g/?P P 	Pr    r0   c                   |t          d          t          |d          }| j        r| j                            |           | j        t          |d| j                   t          |d| j                   | j        r| j                            |           | j        r| j                            |           | j        r| j                            |           | j	        rt          |d| j	                   |S )r2   Nr3   r   r   r   r   )
r4   r   r   r7   r   r   r   r   r   r   r6   s     r   r7   zDestination.toxml  s   ?7888Wm44+ 	<,227;;;=$w	4=9997Hd&6777" 	3#))'222= 	)M(((! 	2"((111 	Ew0CDDDr    )NNNNNN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   )r!   r   r   )r!   r   )r!   r   )r!   r   )r'   r   r)   r*   r!   r   r9   )r.   r:   r;   r<   r   r>   r   r   r   r   r   r   r   r?   r/   r7   r@   r    r   r   r   1  sa       ""
 KO"&9=&*7;(,, , , , ,(       X  0 0 0 X0    X ' ' ' X'    X & & & X& # # # X# P P P [P2     r    IRulec                       e Zd ZdZ	 	 	 	 	 	 	 d%d& fdZed'd            Zed(d            Zed)d            Zed*d            Z	ed+d            Z
ed,d            Zed-d            Zed.d"            Zd/ fd$Z xZS )0r   zReplication rule. Ndestinationr   r   r   delete_marker_replicationDeleteMarkerReplication | Noneexisting_object_replication ExistingObjectReplication | Nonerule_filterFilter | Nonerule_idr   prefixpriorityrc   source_selection_criteriaSourceSelectionCriteria | Nonec
                   |st          d          t          |           t                                          ||           || _        || _        |r|st                      }|| _        || _        || _	        || _
        |	| _        d S )Nzdestination must be provided)r4   r   rW   r   _destinationr   rU   _delete_marker_replication_existing_object_replication_prefix	_priority_source_selection_criteria)r   r   r   r   r   r   r   r   r   r   r5   s             r   r   zRule.__init__  s      	=;<<<Vg...' 	B8 	B(?(A(A%*C',G)!*C'''r    r!   c                    | j         S )zGet destination.)r   r%   s    r   r   zRule.destination  s       r    c                    | j         S r#   r$   r%   s    r   r   zRule.status  r&   r    c                    | j         S )zGet delete marker replication.)r   r%   s    r   r   zRule.delete_marker_replication  rM   r    c                    | j         S )z Get existing object replication.)r   r%   s    r   r   z Rule.existing_object_replication  s     00r    c                    | j         S )zGet prefix.)r   r%   s    r   r   zRule.prefix  r&   r    c                    | j         S )zGet priority.)r   r%   s    r   r   zRule.priority  s     ~r    c                    | j         S )zGet source selection criteria.)r   r%   s    r   r   zRule.source_selection_criteria  rM   r    r'   Type[I]r)   r*   r   c                >   t          |d          dnt                              |          }t                              |          }t          |d          dnt                              |          }|                     |          \  }}t          |d          }t          |d          }t          |d          dnt                              |          }	t          t          t          |dd                    }
 | ||
||||||rt          |          nd|		  	        S )	r,   rU   NrS   PrefixPriorityrE   r   T)r   rU   r/   r   rS   parsexmlr   rE   r   r   ri   )r'   r)   r   r   r   r   r   r   r   r   r   s              r   r/   zRule.fromxml  s+    ";<<DDD(0099 	" "))'22"=>>FDD*227;; 	$  #||G44W'8,,GZ00";<<DDD(0099 	" c8GXt<<==s%'%/CMMM4%

 

 
	
r    r0   c                @   |t          d          t          |d          }| j        r| j                            |           | j                            |           | j        r| j                            |           t                                          |           | j        t          |d| j                   | j        #t          |dt          | j                             | j
        r| j
                            |           t          |d| j                   |S )r2   Nr3   r   r   r   r   )r4   r   r   r7   r   r   rW   r   r   r   r   r   )r   r)   r5   s     r   r7   z
Rule.toxml  s   ?7888Wf--* 	;+11':::(((, 	=-33G<<<g<#w$,777>%w
C,?,?@@@* 	;+11':::7Hdl333r    )NNNNNNN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   r   r   )r!   r   r8   )r!   r   )r!   r   r   rk   )r!   r   )r'   r   r)   r*   r!   r   r9   )r.   r:   r;   r<   r   r>   r   r   r   r   r   r   r   r?   r/   r7   rX   rY   s   @r   r   r     s        IM37)-"&!%#'HLD D D D D D D< ! ! ! X!    X / / / X/ 1 1 1 X1    X    X / / / X/ 
 
 
 [
@         r    JReplicationConfigc                  j    e Zd ZdZddZedd            Zedd	            Zedd            Z	ddZ
dS )r   zReplication configuration.roler   rules
list[Rule]c                    |st          d          t          |          dk    rt          d          || _        || _        d S )Nzrules must be providedi  z&more than 1000 rules are not supported)r4   len_role_rules)r   r   r   s      r   r   zReplicationConfig.__init__  sK     	75666u::EFFF
r    r!   c                    | j         S )z	Get role.)r   r%   s    r   r   zReplicationConfig.role%  ru   r    c                    | j         S )z
Get rules.)r   r%   s    r   r   zReplicationConfig.rules*  r   r    r'   Type[J]r)   r*   r   c                    t          t          t          |dd                    }t          |d          }g }|D ]/}|                    t
                              |                     0 | ||          S )r,   RoleTr   )r   r   r   r   appendr   r/   )r'   r)   r   elementsr   tags         r   r/   zReplicationConfig.fromxml/  su     C'6488997F++ 	, 	,CLLc**++++s4r    r0   c                    t          d          }t          |d| j                   | j        D ]}|                    |           |S )r2   ReplicationConfigurationr   )r   r   r   r   r7   )r   r)   rules      r   r7   zReplicationConfig.toxml9  sO    4557FDJ///K 	  	 DJJwr    N)r   r   r   r   r8   )r!   r   )r'   r   r)   r*   r!   r   r9   )r.   r:   r;   r<   r   r>   r   r   r?   r/   r7   r@   r    r   r   r     s        $$       X    X       [      r    N)1r<   
__future__r   r   abcr   typingr   r   r   	xml.etreer	   r-   commonconfigr   r   r   r   xmlr   r   r   r   r   r   r   rB   rD   rE   rS   rU   rZ   r[   rm   rn   ro   r{   r|   r}   r   r   r   r   r   r   r   r   r   r   r@   r    r   <module>r     s  " N M 3 3 3 3 3 3 3 3       & & & & & & & & & & ' ' ' ' ' ' B B B B B B B B B B B B = = = = = = = = = = = = = =GCx          :% % % % %V % % % GC0111! ! ! ! ! ! ! !H' ' ' ' ' ' ' '! ! ! ! !f ! ! ! GC-...       :        GC()))# # # # # # # #L    )    GCy!!!# # # # # # # #L GC)***       : GC1222       > GC}%%%f f f f f f f fR GCvw w w w w8 w w wt GC*+++% % % % % % % % % %r    