o
    ȷe                     @   sX   d dl Zd dlZd dlmZmZ G dd dejjZG dd deZ	G dd deZ
dS )	    N)sixStringIOc                   @   sJ   e Zd ZdZdddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )ResponseGroupzA Generic "Response Group", which can
    be anything from the entire list of Items to
    specific response elements within an itemNc                 C   s$   || _ || _g | _d| _t | _dS )Initialize this ItemN)_connection	_nodename	_nodepath_curobjr   _xml)self
connectionnodename r   D/var/www/ideatree/venv/lib/python3.10/site-packages/boto/ecs/item.py__init__    s
   zResponseGroup.__init__c                 C   s   d| j j| jf S )Nz<%s: %s>)	__class____name____dict__r   r   r   r   __repr__(   s   zResponseGroup.__repr__c                 C   s   | j |S N)r   get)r   namer   r   r   r   .   s   zResponseGroup.getc                 C   s   || j |< d S r   )r   )r   r   valuer   r   r   set1   s   zResponseGroup.setc                 C   s   d| j | j | j f S )Nz<%s>%s</%s>)r   r
   getvaluer   r   r   r   to_xml4   s   zResponseGroup.to_xmlc                 C   sd   | j d|  | j| t| jdkr%t| j}| || || _d S | jr0| j	||| d S )Nz<%s>   )
r
   writer   appendlenr   r   r   r	   startElement)r   r   attrsr   objr   r   r   r!   :   s   
zResponseGroup.startElementc                 C   s   | j dt|dd|f  t| jdkrd S d }| |}t| jdkr9|s,|s2| || | j	r8d | _	n| j	rD| j	
||| | j  d S )Nz%s</%s>z	&amp;amp;z&amp;r   r   )r
   r   cgiescapereplacer    r   r   r   r	   
endElementpop)r   r   r   r   r#   curvalr   r   r   r'   E   s   "

zResponseGroup.endElement)NN)r   
__module____qualname____doc__r   r   r   r   r   r!   r'   r   r   r   r   r      s    
r   c                   @   s   e Zd ZdZdddZdS )ItemzA single ItemNc                 C   s   t | |d dS )r   r-   N)r   r   )r   r   r   r   r   r   [   s   zItem.__init__r   )r   r*   r+   r,   r   r   r   r   r   r-   X   s    r-   c                   @   sF   e Zd ZdZdddZdd Zdd Zd	d
 ZeZdd Z	dd Z
dS )ItemSetzbA special ResponseGroup that has built-in paging, and
    only creates new Items on the "Item" tagr   c                 C   sN   t | |d g | _d | _|| _|| _|| _d | _d| _d| _	d| _
g | _d S )NItemsr   F)r   r   objsiterpageactionparamscurItemtotal_resultstotal_pagesis_validerrors)r   r   r3   r4   r2   r   r   r   r   c   s   
zItemSet.__init__c                 C   s6   |dkrt | j| _d S | jd ur| j||| d S )Nr-   )r-   r   r5   r!   )r   r   r"   r   r   r   r   r!   p   s   
zItemSet.startElementc                 C   s   |dkr	|| _ d S |dkr|| _d S |dkr|dkrd| _d S |dkr.| j|d d d S |dkr;|| jd	 d< d S |d
krT| j| j | j| j	  d | _d S | jd ura| j
||| d S )NTotalResults
TotalPagesIsValidTrueTCode)r>   Messager?   r-   )r6   r7   r8   r9   r   r0   r5   r
   r   r   r'   )r   r   r   r   r   r   r   r'   w   s0   	
zItemSet.endElementc              	   C   s   | j du rt | j| _ zt| j W S  tyB   d| _ g | _t| jt| jk rA|  jd7  _| j| j	| j
| j|  t|  Y S  w )zSpecial paging functionalityNr   )r1   r0   nextStopIterationintr2   r7   r   get_responser3   r4   r   r   r   r   __next__   s   
zItemSet.__next__c                 C   s   | S r   r   r   r   r   r   __iter__   s   zItemSet.__iter__c                 C   s   | D ]}qt | S )z"Override to first fetch everything)r   r   )r   itemr   r   r   r      s   
zItemSet.to_xmlN)r   )r   r*   r+   r,   r   r!   r'   rE   rA   rF   r   r   r   r   r   r.   _   s    
r.   )xml.saxxmlr$   boto.compatr   r   saxContentHandlerr   r-   r.   r   r   r   r   <module>   s   =