
    !ja/                       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mZ  edd	
          Z G d d	          Z G d de          Z G d de          Z G d d          Z edd
          Z G d de          Z edd
          Z G d de          Z edd
          Z G d de          Z edd
          Z G d d          ZdS )zd
Request/response of PutBucketNotificationConfiguration and
GetBucketNotiicationConfiguration APIs.
    )absolute_importannotations)ABCMeta)TypeTypeVarcast)ElementTree   )Element
SubElementfindfindallfindtextA
FilterRule)boundc                  n    e Zd ZdZeZddZedd            Zedd            Z	e
dd            ZddZdS )r   zFilter rule.namestrvaluec                "    || _         || _        d S N)_name_value)selfr   r   s      b/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/minio/notificationconfig.py__init__zFilterRule.__init__&   s    
    returnc                    | j         S )z	Get name.)r   r   s    r   r   zFilterRule.name*   s     zr   c                    | j         S )z
Get value.)r   r!   s    r   r   zFilterRule.value/        {r   clsType[A]element
ET.Elementr   c                    t          t          t          |dd                    }t          t          t          |dd                    } | ||          S )/Create new object with values from XML element.NameTValue)r   r   r   )r$   r&   r   r   s       r   fromxmlzFilterRule.fromxml4   sL     C'648899S(7GT::;;s4r   ET.Element | Nonec                    |t          d          t          |d          }t          |d| j                   t          |d| j                   |S )Convert to XML.Nelement must be providedr   r*   r+   )
ValueErrorr   r   r   )r   r&   s     r   toxmlzFilterRule.toxml;   sR    ?7888Wl337FDJ///7GT[111r   N)r   r   r   r   r   r   )r$   r%   r&   r'   r   r   r&   r-   r   r'   )__name__
__module____qualname____doc__r   __metaclass__r   propertyr   r   classmethodr,   r2    r   r   r   r   !   s        M       X    X       [      r   c                  $     e Zd ZdZd fdZ xZS )PrefixFilterRulezPrefix filter rule.r   r   c                L    t                                          d|           d S )Nprefixsuperr   r   r   	__class__s     r   r   zPrefixFilterRule.__init__H   #    5)))))r   r   r   r5   r6   r7   r8   r   __classcell__rD   s   @r   r>   r>   E   C        * * * * * * * * * *r   r>   c                  $     e Zd ZdZd fdZ xZS )SuffixFilterRulezSuffix filter rule.r   r   c                L    t                                          d|           d S )NsuffixrA   rC   s     r   r   zSuffixFilterRule.__init__O   rE   r   rF   rG   rI   s   @r   rL   rL   L   rJ   r   rL   c                      e Zd ZdZeZ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 )CommonConfigz4Common for cloud-function/queue/topic configuration.events	list[str]	config_id
str | Noneprefix_filter_rulePrefixFilterRule | Nonesuffix_filter_ruleSuffixFilterRule | Nonec                `    |st          d          || _        || _        || _        || _        d S )Nzevents must be provided)r1   _events
_config_id_prefix_filter_rule_suffix_filter_rule)r   rQ   rS   rU   rW   s        r   r   zCommonConfig.__init__X   s?      	86777##5 #5   r   r   c                    | j         S )zGet events.)rZ   r!   s    r   rQ   zCommonConfig.eventsf   s     |r   c                    | j         S )zGet configuration ID.)r[   r!   s    r   rS   zCommonConfig.config_idk   s     r   c                    | j         S )zGet prefix filter rule.)r\   r!   s    r   rU   zCommonConfig.prefix_filter_rulep        ''r   c                    | j         S )zGet suffix filter rule.)r]   r!   s    r   rW   zCommonConfig.suffix_filter_ruleu   ra   r   r&   r'   Ntuple[list[str], str | None, PrefixFilterRule | None, SuffixFilterRule | None]c                   t          | d          }g }|D ]2}|j        t          d          |                    |j                   3t	          | d          }t          | d          }|||ddfS d}d}t          t          j        t          |dd                    }t          |d          }|D ]P}t          
                    |          }|j        d	k    rt          |j                  }<t          |j                  }Q||||fS )
z
Parse XML.EventNz missing value in XML tag 'Event'IdFilterS3KeyTr   r@   )r   textr1   appendr   r   r   ETr   r   r,   r   r>   r   rL   )	r&   elementsrQ   tagrS   elemrU   rW   filter_rules	            r   parsexmlzCommonConfig.parsexmlz   s*    7G,, 	$ 	$Cx !CDDDMM#(####Wd++	GX&&<9dD00!!BJT7D 9 9::4.. 	I 	IC$,,S11K8++%5k6G%H%H""%5k6G%H%H""y"46HHHr   r-   c                x   |t          d          | j        D ]}t          |d|           | j        t          |d| j                   | j        s| j        r t          |d          }t          |d          }| j        r| j                            |           | j        r| j                            |           |S )r/   Nr0   re   rf   rg   rh   )r1   rZ   r   r[   r\   r]   r2   )r   r&   eventrules       r   r2   zCommonConfig.toxml   s    ?7888\ 	0 	0Ew////?&wdo666# 	-t'? 	-gx00DdG,,D# 	1$**4000# 	1$**4000r   N)rQ   rR   rS   rT   rU   rV   rW   rX   )r   rR   )r   rT   )r   rV   )r   rX   )r&   r'   r   rc   r4   )r5   r6   r7   r8   r   r9   r   r:   rQ   rS   rU   rW   staticmethodrp   r2   r<   r   r   rP   rP   S   s        >>M6 6 6 6    X    X ( ( ( X( ( ( ( X( I I I \I8     r   rP   BCloudFuncConfigc                  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 )rv   zCloud function configuration.N
cloud_funcr   rQ   rR   rS   rT   rU   rV   rW   rX   c                    |st          d          || _        t                                          ||||           d S )Nzcloud function must be provided)r1   _cloud_funcrB   r   )r   rx   rQ   rS   rU   rW   rD   s         r   r   zCloudFuncConfig.__init__   sV      	@>???%I13E	
 	
 	
 	
 	
r   r   c                    | j         S )zGet cloud function ARN.)rz   r!   s    r   rx   zCloudFuncConfig.cloud_func   s     r   r$   Type[B]r&   r'   ru   c                    t          t          t          |dd                    }|                     |          \  }}}} | |||||          S )r)   CloudFunctionTr   r   r   rp   )r$   r&   rx   rQ   rS   rU   rW   s          r   r,   zCloudFuncConfig.fromxml   s`     #x$GGHH
"||G44	.	s
 
 	
r   r-   c                    |t          d          t          |d          }t          |d| j                   t                                          |           |S )r/   Nr0   CloudFunctionConfigurationr~   )r1   r   rz   rB   r2   r   r&   rD   s     r   r2   zCloudFuncConfig.toxml   sW    ?7888W&BCC7OT-=>>>gr   NNN)
rx   r   rQ   rR   rS   rT   rU   rV   rW   rX   r3   )r$   r|   r&   r'   r   ru   r4   )r5   r6   r7   r8   r   r:   rx   r;   r,   r2   rH   rI   s   @r   rv   rv      s        '' %):>:>
 
 
 
 
 
 
       X  
 
 
 [
         r   CQueueConfigc                  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 )r   zQueue configuration.Nqueuer   rQ   rR   rS   rT   rU   rV   rW   rX   c                    |st          d          || _        t                                          ||||           d S )Nzqueue must be provided)r1   _queuerB   r   )r   r   rQ   rS   rU   rW   rD   s         r   r   zQueueConfig.__init__   T      	75666I13E	
 	
 	
 	
 	
r   r   c                    | j         S )zGet queue ARN.)r   r!   s    r   r   zQueueConfig.queue   r#   r   r$   Type[C]r&   r'   r   c                    t          t          t          |dd                    }|                     |          \  }}}} | |||||          S )r)   QueueTr   )r$   r&   r   rQ   rS   rU   rW   s          r   r,   zQueueConfig.fromxml   `     S(7GT::;;"||G44	.	s
 
 	
r   r-   c                    |t          d          t          |d          }t          |d| j                   t                                          |           |S )r/   Nr0   QueueConfigurationr   )r1   r   r   rB   r2   r   s     r   r2   zQueueConfig.toxml  V    ?7888W&:;;7GT[111gr   r   )
r   r   rQ   rR   rS   rT   rU   rV   rW   rX   r3   )r$   r   r&   r'   r   r   r4   )r5   r6   r7   r8   r   r:   r   r;   r,   r2   rH   rI   s   @r   r   r      s         %):>:>
 
 
 
 
 
 
    X 
 
 
 [
         r   DTopicConfigc                  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 )r   zGet topic configuration.Ntopicr   rQ   rR   rS   rT   rU   rV   rW   rX   c                    |st          d          || _        t                                          ||||           d S )Nztopic must be provided)r1   _topicrB   r   )r   r   rQ   rS   rU   rW   rD   s         r   r   zTopicConfig.__init__  r   r   r   c                    | j         S )zGet topic ARN.)r   r!   s    r   r   zTopicConfig.topic"  r#   r   r$   Type[D]r&   r'   r   c                    t          t          t          |dd                    }|                     |          \  }}}} | |||||          S )r)   TopicTr   )r$   r&   r   rQ   rS   rU   rW   s          r   r,   zTopicConfig.fromxml'  r   r   r-   c                    |t          d          t          |d          }t          |d| j                   t                                          |           |S )r/   Nr0   TopicConfigurationr   )r1   r   r   rB   r2   r   s     r   r2   zTopicConfig.toxml5  r   r   r   )
r   r   rQ   rR   rS   rT   rU   rV   rW   rX   r3   )r$   r   r&   r'   r   r   r4   )r5   r6   r7   r8   r   r:   r   r;   r,   r2   rH   rI   s   @r   r   r     s        "" %):>:>
 
 
 
 
 
 
    X 
 
 
 [
         r   ENotificationConfigc                      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
ddZdS )r   zNotification configuration.Ncloud_func_config_listlist[CloudFuncConfig] | Nonequeue_config_listlist[QueueConfig] | Nonetopic_config_listlist[TopicConfig] | Nonec                <    |pg | _         |pg | _        |pg | _        d S r   )_cloud_func_config_list_queue_config_list_topic_config_list)r   r   r   r   s       r   r   zNotificationConfig.__init__E  s1     (>'C$"3"9r"3"9rr   r   c                    | j         S )z&Get cloud function configuration list.)r   r!   s    r   r   z)NotificationConfig.cloud_func_config_listO  s     ++r   c                    | j         S )zGet queue configuration list.)r   r!   s    r   r   z$NotificationConfig.queue_config_listT       &&r   c                    | j         S )zGet topic configuration list.)r   r!   s    r   r   z$NotificationConfig.topic_config_listY  r   r   r$   Type[E]r&   r'   r   c                   t          |d          }g }|D ]/}|                    t                              |                     0t          |d          }g }|D ]/}|                    t                              |                     0t          |d          }g }|D ]/}|                    t
                              |                     0 | |||          S )r)   r   r   r   )r   rj   rv   r,   r   r   )r$   r&   rl   r   rm   r   r   s          r   r,   zNotificationConfig.fromxml^  s    7$@AA!# 	H 	HC"))/*A*A#*F*FGGGG7$899 	? 	?C$$[%8%8%=%=>>>>7$899 	? 	?C$$[%8%8%=%=>>>>s"$57H
 
 	
r   r-   c                    t          d          }| j        D ]}|                    |           | j        D ]}|                    |           | j        D ]}|                    |           |S )r/   NotificationConfiguration)r   r   r2   r   r   )r   r&   cloud_func_configqueue_configconfigs        r   r2   zNotificationConfig.toxmlq  s    566!%!= 	- 	-##G,,,, 3 	( 	(Lw''''- 	" 	"FLL!!!!r   r   )r   r   r   r   r   r   )r   r   )r   r   )r   r   )r$   r   r&   r'   r   r   r4   )r5   r6   r7   r8   r   r:   r   r   r   r;   r,   r2   r<   r   r   r   r   B  s        %% DH:>:>	: : : : : , , , X, ' ' ' X' ' ' ' X' 
 
 
 [
$	 	 	 	 	 	r   N) r8   
__future__r   r   abcr   typingr   r   r   	xml.etreer	   rk   xmlr   r   r   r   r   r   r   r>   rL   rP   ru   rv   r   r   r   r   r   r   r<   r   r   <module>r      sd  " 
 4 3 3 3 3 3 3 3       & & & & & & & & & & ' ' ' ' ' ' = = = = = = = = = = = = = =GC|$$$! ! ! ! ! ! ! !H* * * * *z * * ** * * * *z * * *S S S S S S S Sl GC())), , , , ,l , , ,^ GC}%%%, , , , ,, , , ,^ GC}%%%, , , , ,, , , ,^ GC+,,,8 8 8 8 8 8 8 8 8 8r   