
    !j;                       d Z ddlmZmZ ddl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 dd	lmZmZ dd
lmZmZmZmZmZ  G d d          Z e	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e          Z# e	dd          Z$ G d d          Z% e	dd          Z& G d de          Z' e	d d!          Z( G d" d!          Z)d#S )$z_
Request/response of PutBucketLifecycleConfiguration and
GetBucketLifecycleConfiguration APIs.
    )absolute_importannotations)ABCMeta)datetime)TypeTypeVarcast)ElementTree   )BaseRuleFiltercheck_status)from_iso8601utcto_iso8601utc)Element
SubElementfindfindallfindtextc                  p    e Zd ZdZeZdddZedd	            Zedd
            Z	e
dd            ZddZdS )DateDaysz<Base class holds date and days of Transition and Expiration.Ndatedatetime | Nonedays
int | Nonec                "    || _         || _        d S N)_date_days)selfr   r   s      _/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/minio/lifecycleconfig.py__init__zDateDays.__init__'   s    



    returnc                    | j         S )z	Get date.)r   r    s    r!   r   zDateDays.date+        zr#   c                    | j         S )z	Get days.)r   r&   s    r!   r   zDateDays.days0   r'   r#   element
ET.Element"tuple[datetime | None, int | None]c                    t          t          | d                    }t          | d          }||rt          |          ndfS )zParse XML to date and days.DateDaysN)r   r   int)r)   r   r   s      r!   parsexmlzDateDays.parsexml5   sD     x8899(($0SYYYD00r#   ET.Element | Nonec                    |t          d          | j        #t          |dt          | j                             | j        r#t          |dt          | j                             |S )Convert to XML.Nelement must be providedr-   r.   )
ValueErrorr   r   r   r   strr    r)   s     r!   toxmlzDateDays.toxml<   sl    ?7888:!tz!:!:   : 	9wDJ888r#   NN)r   r   r   r   )r$   r   r$   r   )r)   r*   r$   r+   r)   r1   r$   r*   )__name__
__module____qualname____doc__r   __metaclass__r"   propertyr   r   staticmethodr0   r8    r#   r!   r   r   #   s        FFM        X    X 1 1 1 \1
 
 
 
 
 
r#   r   A
Transition)boundc                  h     e Zd ZdZ	 	 	 dd fd	Zedd            Zedd            Zd fdZ	 xZ
S )rE   zTransition.Nr   r   r   r   storage_class
str | Nonec                Z    t                                          ||           || _        d S r   )superr"   _storage_class)r    r   r   rH   	__class__s       r!   r"   zTransition.__init__O   s-     	t$$$+r#   r$   c                    | j         S zGet storage class.rL   r&   s    r!   rH   zTransition.storage_classX        ""r#   clsType[A]r)   r*   rD   c                    t          t          j        t          |dd                    }|                     |          \  }} | ||t          |d                    S )/Create new object with values from XML element.rE   TStorageClass)r	   ETr   r   r0   r   )rR   r)   r   r   s       r!   fromxmlzTransition.fromxml]   sT     rz4t#D#DEE\\'**
ds4x@@AAAr#   r1   c                    |t          d          t          |d          }t                                          |           | j        rt          |d| j                   |S )r3   Nr4   rE   rV   )r5   r   rK   r8   rL   r    r)   rM   s     r!   r8   zTransition.toxmld   sb    ?7888Wl33g 	Ew0CDDDr#   NNN)r   r   r   r   rH   rI   r$   rI   )rR   rS   r)   r*   r$   rD   r;   )r<   r=   r>   r?   r"   rA   rH   classmethodrX   r8   __classcell__rM   s   @r!   rE   rE   L   s         %)#(,	, , , , , , , # # # X# B B B [B         r#   BNoncurrentVersionTransitionc                  p    e Zd ZdZ	 	 dddZedd	            Zedd
            Zedd            Z	ddZ
dS )ra   zNoncurrent version transition.Nnoncurrent_daysr   rH   rI   c                "    || _         || _        d S r   )_noncurrent_daysrL   )r    rc   rH   s      r!   r"   z$NoncurrentVersionTransition.__init__u   s    
 !0+r#   r$   c                    | j         S zGet Noncurrent days.re   r&   s    r!   rc   z+NoncurrentVersionTransition.noncurrent_days}        $$r#   c                    | j         S rO   rP   r&   s    r!   rH   z)NoncurrentVersionTransition.storage_class   rQ   r#   rR   Type[B]r)   r*   r`   c                    t          t          j        t          |dd                    }t	          |d          } | |rt          |          ndt	          |d                    S )rU   ra   TNoncurrentDaysNrV   r	   rW   r   r   r   r/   rR   r)   rc   s      r!   rX   z#NoncurrentVersionTransition.fromxml   sp     J7>>
 
 #7,<==s$3=C   Wn--
 
 	
r#   r1   c                    |t          d          t          |d          }| j        r#t          |dt          | j                             | j        rt          |d| j                   |S )r3   Nr4   ra   rm   rV   )r5   r   re   r6   rL   r7   s     r!   r8   z!NoncurrentVersionTransition.toxml   sv    ?7888W&CDD  	Nw 0#d6K2L2LMMM 	Ew0CDDDr#   r9   )rc   r   rH   rI   r:   r\   )rR   rk   r)   r*   r$   r`   r;   )r<   r=   r>   r?   r"   rA   rc   rH   r]   rX   r8   rC   r#   r!   ra   ra   r   s        (( +/(,, , , , , % % % X% # # # X# 

 

 

 [

	 	 	 	 	 	r#   CNoncurrentVersionExpirationc                  T    e Zd ZdZdddZedd            Zedd            ZddZ	dS )rr   zNoncurrent version expiration.Nrc   r   c                    || _         d S r   rh   )r    rc   s     r!   r"   z$NoncurrentVersionExpiration.__init__   s     /r#   r$   c                    | j         S rg   rh   r&   s    r!   rc   z+NoncurrentVersionExpiration.noncurrent_days   ri   r#   rR   Type[C]r)   r*   rq   c                    t          t          j        t          |dd                    }t	          |d          } | |rt          |          nd          S )rU   rr   Trm   Nrn   ro   s      r!   rX   z#NoncurrentVersionExpiration.fromxml   s\     J7>>
 
 #7,<==s?D3'''EEEr#   r1   c                    |t          d          t          |d          }| j        r#t          |dt          | j                             |S )r3   Nr4   rr   rm   )r5   r   re   r6   r7   s     r!   r8   z!NoncurrentVersionExpiration.toxml   sU    ?7888W&CDD  	Nw 0#d6K2L2LMMMr#   r   )rc   r   r:   )rR   rv   r)   r*   r$   rq   r;   )
r<   r=   r>   r?   r"   rA   rc   r]   rX   r8   rC   r#   r!   rr   rr      s        ((0 0 0 0 0 % % % X% F F F [F     r#   D
Expirationc                  h     e Zd ZdZ	 	 	 dd fd	Zedd            Zedd            Zd fdZ	 xZ
S )rz   zExpiration.Nr   r   r   r   expired_object_delete_markerbool | Nonec                Z    t                                          ||           || _        d S r   )rK   r"   _expired_object_delete_marker)r    r   r   r|   rM   s       r!   r"   zExpiration.__init__   s-     	t$$$-I***r#   r$   c                    | j         S )z!Get expired object delete marker.)r   r&   s    r!   r|   z'Expiration.expired_object_delete_marker   s     11r#   rR   Type[D]r)   r*   ry   c                R   t          t          j        t          |dd                    }|                     |          \  }}t          |d          }| | ||d          S |                                dvrt          d           | |||                                dk              S )rU   rz   TExpiredObjectDeleteMarkerN)FalseTruez<value of ExpiredObjectDeleteMarker must be 'True' or 'False'r   )r	   rW   r   r   r0   r   titler5   )rR   r)   r   r   r|   s        r!   rX   zExpiration.fromxml   s     rz4t#D#DEE\\'**
d'/0(
 (
$ (/3tT4((('--//7HHH$   s4;AACCvMNNNr#   r1   c                   |t          d          t          |d          }t                                          |           | j        5t          |dt          | j                                                             |S )r3   Nr4   rz   r   )r5   r   rK   r8   r   r6   lowerrZ   s     r!   r8   zExpiration.toxml   s~    ?7888Wl33g-9+D677==??  
 r#   r[   )r   r   r   r   r|   r}   )r$   r}   )rR   r   r)   r*   r$   ry   r;   )r<   r=   r>   r?   r"   rA   r|   r]   rX   r8   r^   r_   s   @r!   rz   rz      s         %)#8<	J J J J J J J 2 2 2 X2 O O O [O"         r#   EAbortIncompleteMultipartUploadc                  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"Abort incomplete multipart upload.Ndays_after_initiationr   c                    || _         d S r   _days_after_initiation)r    r   s     r!   r"   z'AbortIncompleteMultipartUpload.__init__   s    &;###r#   r$   c                    | j         S )zGet days after initiation.r   r&   s    r!   r   z4AbortIncompleteMultipartUpload.days_after_initiation   s     **r#   rR   Type[E]r)   r*   r   c                    t          t          j        t          |dd                    }t	          |d          } | |rt          |          nd          S )rU   r   TDaysAfterInitiationNrn   )rR   r)   r   s      r!   rX   z&AbortIncompleteMultipartUpload.fromxml  se     J:DAA
 
 !)2G H Hs*?IC%&&&T
 
 	
r#   r1   c                    |t          d          t          |d          }| j        r#t          |dt          | j                             |S )r3   Nr4   r   r   )r5   r   r   r6   r7   s     r!   r8   z$AbortIncompleteMultipartUpload.toxml  s^    ?7888W&FGG& 	%D/00  
 r#   r   )r   r   r:   )rR   r   r)   r*   r$   r   r;   )
r<   r=   r>   r?   r"   rA   r   r]   rX   r8   rC   r#   r!   r   r      s        ,,< < < < < + + + X+ 	
 	
 	
 [	
     r#   F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d, fd"Z xZS )-r   zLifecycle rule. Nstatusr6   !abort_incomplete_multipart_upload%AbortIncompleteMultipartUpload | None
expirationExpiration | Nonerule_filterFilter | Nonerule_idrI   noncurrent_version_expiration"NoncurrentVersionExpiration | Nonenoncurrent_version_transition"NoncurrentVersionTransition | None
transitionTransition | Nonec	                   t          |           |s|s|s|s|st          d          |st          d          t                                          ||           || _        || _        || _        || _        || _        || _	        d S )Nzat least one of action (AbortIncompleteMultipartUpload, Expiration, NoncurrentVersionExpiration, NoncurrentVersionTransition or Transition) must be specified in a rulezRule filter must be provided)
r   r5   rK   r"   _status"_abort_incomplete_multipart_upload_expiration_noncurrent_version_expiration_noncurrent_version_transition_transition)
r    r   r   r   r   r   r   r   r   rM   s
            r!   r"   zRule.__init__%  s     	V1 	* 	1	1	 #	   
  	=;<<<g...- 	/ &.K+.K+%r#   r$   c                    | j         S )zGet status.)r   r&   s    r!   r   zRule.statusK  s     |r#   c                    | j         S )z&Get abort incomplete multipart upload.)r   r&   s    r!   r   z&Rule.abort_incomplete_multipart_uploadP  s    
 66r#   c                    | j         S )zGet expiration.)r   r&   s    r!   r   zRule.expirationW       r#   c                    | j         S )z"Get noncurrent version expiration.)r   r&   s    r!   r   z"Rule.noncurrent_version_expiration\      
 22r#   c                    | j         S )z"Get noncurrent version transition.)r   r&   s    r!   r   z"Rule.noncurrent_version_transitionc  r   r#   c                    | j         S )zGet transition.)r   r&   s    r!   r   zRule.transitionj  r   r#   rR   Type[F]r)   r*   r   c           
     X   t          t          t          |dd                    }t          |d          dnt                              |          }t          |d          dnt                              |          }|                     |          \  }}t          |d          dnt                              |          }t          |d          dnt                              |          }t          |d          dnt                              |          }	 | ||||||||		          S )
rU   StatusTr   Nrz   rr   ra   rE   )r   r   r   r   r   r   r   )r	   r6   r   r   r   rX   rz   r0   rr   ra   rE   )
rR   r)   r   r   r   r   r   r   r   r   s
             r!   rX   zRule.fromxmlo  sE    c8GXt<<=="BCCKDD/77@@ 	*
 ,//7DD##G,, 	  #||G44W"?@@HDD,44W== 	&
 "?@@HDD,44W== 	&
 ,//7DD##G,, 	
 s1!#*G*G!
 
 
 	
r#   r1   c                   |t          d          t          |d          }t          |d| j                   | j        r| j                            |           | j        r| j                            |           t                                          |           | j        r| j                            |           | j        r| j                            |           | j	        r| j	                            |           |S )r3   Nr4   r   r   )
r5   r   r   r   r8   r   rK   r   r   r   rZ   s     r!   r8   z
Rule.toxml  s    ?7888Wf--7Hdl3332 	C399'BBB 	,""7+++g. 	?/55g>>>. 	?/55g>>> 	,""7+++r#   )NNNNNNN)r   r6   r   r   r   r   r   r   r   rI   r   r   r   r   r   r   r\   )r$   r   )r$   r   )r$   r   )r$   r   )r$   r   )rR   r   r)   r*   r$   r   r;   )r<   r=   r>   r?   r"   rA   r   r   r   r   r   r   r]   rX   r8   r^   r_   s   @r!   r   r   "  s_        9=,0)-"&5959,0$& $& $& $& $& $& $&L    X 7 7 7 X7       X  3 3 3 X3 3 3 3 X3       X  $
 $
 $
 [$
L         r#   GLifecycleConfigc                  R    e Zd ZdZddZedd            Zedd            ZddZ	dS )r   zLifecycle configuration.rules
list[Rule]c                6    |st          d          || _        d S )Nzrules must be provided)r5   _rules)r    r   s     r!   r"   zLifecycleConfig.__init__  s$     	75666r#   r$   c                    | j         S )z
Get rules.)r   r&   s    r!   r   zLifecycleConfig.rules  s     {r#   rR   Type[G]r)   r*   r   c                    t          |d          }g }|D ]/}|                    t                              |                     0 | |          S )rU   r   )r   appendr   rX   )rR   r)   elementsr   tags        r!   rX   zLifecycleConfig.fromxml  sV     7F++ 	, 	,CLLc**++++s5zzr#   r1   c                b    t          d          }| j        D ]}|                    |           |S )r3   LifecycleConfiguration)r   r   r8   )r    r)   rules      r!   r8   zLifecycleConfig.toxml  s;    233K 	  	 DJJwr#   N)r   r   )r$   r   )rR   r   r)   r*   r$   r   r;   )
r<   r=   r>   r?   r"   rA   r   r]   rX   r8   rC   r#   r!   r   r     s        ""   
    X    [     r#   N)*r?   
__future__r   r   abcr   r   typingr   r   r	   	xml.etreer
   rW   commonconfigr   r   r   timer   r   xmlr   r   r   r   r   r   rD   rE   r`   ra   rq   rr   ry   rz   r   r   r   r   r   r   rC   r#   r!   <module>r      s  "  4 3 3 3 3 3 3 3             & & & & & & & & & & ' ' ' ' ' ' 8 8 8 8 8 8 8 8 8 8 0 0 0 0 0 0 0 0 = = = = = = = = = = = = = =# # # # # # # #L GC|$$$               F GC4555+ + + + + + + +\ GC4555       > GC|$$$/ / / / / / / /d GC7888" " " " " " " "J GCvE E E E E8 E E EP GC()))         r#   