
    !j                        d Z ddlmZ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mZmZ dZd	Z ed
d          Z G d d          ZdS )zU
Request/response of PutObjectLockConfiguration and GetObjectLockConfiguration
APIs.
    )absolute_importannotations)TypeTypeVarcast)ElementTree   )
COMPLIANCEENABLED
GOVERNANCE)Element
SubElementfindfindtextDaysYearsAObjectLockConfig)boundc                  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Object lock configuration.mode
str | Noneduration
int | Noneduration_unitc                r   |d u|d uz  r |t          d          t          d          |/|t          t          fvrt          dt           dt                     |r|                                }|/|t          t
          fvrt          dt           dt
                     || _        || _        || _        d S )Nzmode must be providedzduration must be providedzmode must be z or zduration unit must be )	
ValueErrorr   r
   titleDAYSYEARS_mode	_duration_duration_unit)selfr   r   r   s       `/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/minio/objectlockconfig.py__init__zObjectLockConfig.__init__'   s     !56 	:| !89998999Z,D D DIZIIZIIJJJ 	2)//11MM$$F$FGdGGGGHHH
!+    returnc                    | j         S )z	Get mode.)r!   r$   s    r%   r   zObjectLockConfig.mode;   s     zr'   tuple[int | None, str | None]c                    | j         | j        fS )zGet duration and it's unit.)r"   r#   r*   s    r%   r   zObjectLockConfig.duration@   s     ~t222r'   clsType[A]element
ET.Elementr   c                   t          |d          }| | ddd          S t          t          j        t          |dd                    }t	          |d          }t
          }t	          ||          }|st          }t	          ||          }|s t          dt
           dt           d           | |t          |          |          S )	z/Create new object with values from XML element.RuleNDefaultRetentionTModezXML element <z> or <z> not found)	r   r   ETr   r   r   r    r   int)r-   r/   elemr   r   r   s         r%   fromxmlzObjectLockConfig.fromxmlE   s     GV$$<3tT4(((BJT+=t D DEEf%%D-00 	5!Mm44H 	MKTKKKKKLLLs4X666r'   ET.Element | Nonec                F   t          d          }t          |dt                     | j        rtt          |d          }t          |d          }t          |d| j                   | j        st          d          t          || j        t          | j                             |S )zConvert to XML.ObjectLockConfigurationObjectLockEnabledr2   r3   r4   zduration unit must be provided)r   r   r   r!   r#   r   strr"   )r$   r/   rule	retentions       r%   toxmlzObjectLockConfig.toxmlV   s    3447/999: 	Lgv..D"4);<<Iy&$*555& C !ABBBy$"5s4>7J7JKKKr'   N)r   r   r   r   r   r   )r(   r   )r(   r+   )r-   r.   r/   r0   r(   r   )r/   r9   r(   r0   )__name__
__module____qualname____doc__r&   propertyr   r   classmethodr8   r@    r'   r%   r   r   $   s        $$, , , ,(    X 3 3 3 X3 7 7 7 [7      r'   N)rD   
__future__r   r   typingr   r   r   	xml.etreer   r5   commonconfigr
   r   r   xmlr   r   r   r   r   r    r   r   rG   r'   r%   <module>rM      s   " 
 4 3 3 3 3 3 3 3 & & & & & & & & & & ' ' ' ' ' ' 9 9 9 9 9 9 9 9 9 9 4 4 4 4 4 4 4 4 4 4 4 4GC)***= = = = = = = = = =r'   