U
    ÌZjÒi  ã                   @   s  d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	„ Z	d
d„ Z
G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deeƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG d d!„ d!eƒZd"S )#zïThe internals for the unit of work system.

The session's flush() process passes objects to a contextual object
here, which assembles flush tasks based on mappers and their properties,
organizes them in order of dependency, and executes.

é   ©Ú
attributes)Úexc)Úutilé   )Úevent)Útopologicalc                 C   s   t jd| jj|f dd� d S )NaH  "%s" object is being merged into a Session along the backref cascade path for relationship "%s"; in SQLAlchemy 2.0, this reverse cascade will not take place.  Set cascade_backrefs to False in either the relationship() or backref() function for the 2.0 behavior; or to set globally for the whole Session, set the future=True flagZs9r1)Úcode)r   Zwarn_deprecated_20Úclass_Ú__name__)ÚstateÚprop© r   ú\/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.pyÚ_warn_for_cascade_backrefs   s    
ûùr   c                    s|   |j ‰ ‡ fdd„}‡ fdd„}‡ fdd„}tj| d|dd	� tj| d
|ddd� tj| d|ddd� tj| d|ddd� dS )z\Establish event listeners on object attributes which handle
    cascade-on-set/append.

    c                    sˆ   |d krd S | j }|r„|jr&| d¡ | jjjˆ  }t |¡}|jj	r„|j
rR|jr\ˆ |jkr„| |¡s„ˆ |jkrzt||ƒ | |¡ |S )Nzcollection append)ÚsessionÚ_warn_on_eventsÚ_flush_warningÚmanagerÚmapperÚ_propsr   Úinstance_stateÚ_cascadeÚsave_updateÚcascade_backrefsÚfutureÚkeyÚ_contains_stater   Ú_save_or_update_state©r   ÚitemÚ	initiatorÚsessr   Z
item_state©r   r   r   Úappend+   s,    

ÿýýüú


z$track_cascade_events.<locals>.appendc                    sœ   |d krd S | j }| jjjˆ  }|r>|jr>| |jr8dnd¡ |d k	r˜|tjk	r˜|tj	k	r˜|j
jr˜t |¡}|j |¡r˜|r’||jkr’| |¡ nd|_d S )Nzcollection removezrelated attribute deleteT)r   r   r   r   r   r   Zuselistr   Ú	NEVER_SETÚPASSIVE_NO_RESULTr   Údelete_orphanr   Ú
_is_orphanÚ_newÚexpungeZ_orphaned_outside_of_sessionr   r#   r   r   ÚremoveG   s.    
ÿýÿþýü
z$track_cascade_events.<locals>.removec                    sÞ   ||kr|S | j }|rÚ|jr&| d¡ | jjjˆ  }|d k	rŒt |¡}|jj	rŒ|j
rZ|jrdˆ |jkrŒ| |¡sŒˆ |jkr‚t||ƒ | |¡ |d k	rÚ|tjk	rÚ|tjk	rÚ|jjrÚt |¡}||jkrÚ|j |¡rÚ| |¡ |S )Nzrelated attribute set)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r&   r'   r)   r(   r*   )r   ZnewvalueZoldvaluer!   r"   r   Znewvalue_stateZoldvalue_stater#   r   r   Úset_i   sH    

ÿýýüú


ÿþýü
ÿ
z"track_cascade_events.<locals>.set_Zappend_wo_mutationT)Úrawr$   )r-   Úretvalr+   ÚsetN)r   r   Úlisten)Z
descriptorr   r$   r+   r,   r   r#   r   Útrack_cascade_events$   s    "*r1   c                   @   s®   e Zd Zdd„ Zedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	e
jfdd„Zdd„ Zdd„ Zd'dd„Zdd„ Zdd„ Zejdd„ ƒZdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ ZdS )(ÚUOWTransactionc                 C   sR   || _ i | _t t¡| _t t¡| _i | _i | _tƒ | _	i | _
t dd„ ¡| _d S )Nc                   S   s   t ƒ t ƒ fS ©N)r/   r   r   r   r   Ú<lambda>Å   ó    z)UOWTransaction.__init__.<locals>.<lambda>)r   r   r   Údefaultdictr/   ÚdepsÚmappersÚpresort_actionsÚpostsort_actionsÚdependenciesÚstatesÚpost_update_states)Úselfr   r   r   r   Ú__init__š   s    zUOWTransaction.__init__c                 C   s
   t | jƒS r3   )Úboolr<   ©r>   r   r   r   Úhas_workÇ   s    zUOWTransaction.has_workc                 C   sD   |j r@z| |tj¡ W n& tjk
r>   | j |g¡ Y dS X dS )zZReturn ``True`` if the given state is expired and was deleted
        previously.
        TF)ZexpiredZ_load_expiredr   ÚPASSIVE_OFFÚorm_excZObjectDeletedErrorr   Ú_remove_newly_deleted©r>   r   r   r   r   Úwas_already_deletedË   s    z"UOWTransaction.was_already_deletedc                 C   s   || j ko| j | d S )z[Return ``True`` if the given state is marked as deleted
        within this uowtransaction.é    ©r<   rF   r   r   r   Ú
is_deleted×   s    zUOWTransaction.is_deletedc                 C   s,   || j kr| j | S |ƒ  | j |< }|S d S r3   r   )r>   r   Z	callable_Úretr   r   r   ÚmemoÝ   s    

zUOWTransaction.memoc                 C   s    | j | d }|df| j |< dS )z;Remove pending actions for a state from the uowtransaction.rH   TNrI   )r>   r   Úisdeleter   r   r   Úremove_state_actionsä   s    z#UOWTransaction.remove_state_actionsc           	      C   sà   d||f}|| j krŒ| j | \}}}|t j@ sÜ|t j@ rÜ|j| j}| ||jt jt jB t jB ¡}|rv|j	rv| 
¡ }n|}|||f| j |< nP|j| j}| ||j|t jB t jB ¡}|rÈ|j	rÈ| 
¡ }n|}|||f| j |< |S )zOFacade to attributes.get_state_history(), including
        caching of results.Úhistory)r   ZSQL_OKr   ÚimplZget_historyÚdictrC   ZLOAD_AGAINST_COMMITTEDZNO_RAISEZuses_objectsZas_state)	r>   r   r   ZpassiveZhashkeyrO   Zstate_historyZcached_passiverP   r   r   r   Úget_attribute_historyë   sH    

ÿþÿþý

ÿþý

z$UOWTransaction.get_attribute_historyc                 C   s   |df| j kS )NT)r9   )r>   Ú	processorr   r   r   Úhas_dep   s    zUOWTransaction.has_depc                 C   s&   ||f}|| j kr"t||ƒ| j |< d S r3   )r9   Ú
Preprocess)r>   rS   Ú
fromparentr   r   r   r   Úregister_preprocessor#  s    
z$UOWTransaction.register_preprocessorFNc                 C   sœ   | j  |¡s8|js4|d k	r4t dt |¡||f ¡ dS || jkr~|jj	}|| j
kr^|  |¡ | j
|  |¡ ||f| j|< n|s˜|sŠ|r˜|df| j|< dS )NzJObject of type %s not in session, %s operation along '%s' will not proceedFT)r   r   Zdeletedr   ÚwarnÚorm_utilZstate_class_strr<   r   r   r8   Ú_per_mapper_flush_actionsÚadd)r>   r   rM   ÚlistonlyZcancel_deleteZ	operationr   r   r   r   r   Úregister_object(  s"    	þÿ


zUOWTransaction.register_objectc                 C   s0   |j jj}| j| \}}| |¡ | |¡ d S r3   )r   r   Úbase_mapperr=   r[   Úupdate)r>   r   Zpost_update_colsr   r<   Úcolsr   r   r   Úregister_post_updateJ  s    

z#UOWTransaction.register_post_updatec                 C   sf   t | |jƒ}t| |jƒ}| j ||f¡ |jD ]}| | ¡ q.|jD ]}|jrPqD|j	}| | ¡ qDd S r3   )
ÚSaveUpdateAllr^   Ú	DeleteAllr;   r[   Z_dependency_processorsZper_property_preprocessorsZrelationshipsZviewonlyZ_dependency_processor)r>   r   ZsavesZdeletesÚdepr   r   r   r   rZ   P  s    

z(UOWTransaction._per_mapper_flush_actionsc                 C   s   t  dd„ ¡S )a  return a dynamic mapping of (Mapper, DependencyProcessor) to
        True or False, indicating if the DependencyProcessor operates
        on objects of that Mapper.

        The result is stored in the dictionary persistently once
        calculated.

        c                 S   s    | d j  | d j¡| d jkS )NrH   r   )r   Úgetr   r   )Útupr   r   r   r4   i  r5   z0UOWTransaction._mapper_for_dep.<locals>.<lambda>)r   ZPopulateDictrA   r   r   r   Ú_mapper_for_dep^  s    
ÿzUOWTransaction._mapper_for_depc                    s   | j ‰‡ ‡fdd„|D ƒS )zmFilter the given list of InstanceStates to those relevant to the
        given DependencyProcessor.

        c                    s    g | ]}ˆ|j jˆ f r|‘qS r   )r   r   ©Ú.0Ús©rd   Zmapper_for_depr   r   Ú
<listcomp>r  s      z8UOWTransaction.filter_states_for_dep.<locals>.<listcomp>)rg   )r>   rd   r<   r   rk   r   Úfilter_states_for_depl  s    z$UOWTransaction.filter_states_for_depc                 c   s>   ||f}|j jD ](}| j| D ]}| j| |kr|V  qqd S r3   )r^   Úself_and_descendantsr8   r<   )r>   r   rM   r\   Zchecktupr   r   r   r   Ústates_for_mapper_hierarchyt  s
    z*UOWTransaction.states_for_mapper_hierarchyc                    sJ  d}t ˆ j ¡ ƒD ]}| ˆ ¡rd}q|s q.q t ˆ jt ˆ j ¡ ƒ¡ ˆ _}|�r,t	‡ fdd„|D ƒƒ}t ˆ jƒD ]¸}d|ksœ|d j
sœ|d j
sœ| |¡rªˆ j |¡ qr|d |krêˆ j |¡ ||d  D ]}ˆ j ||d f¡ qÎqr|d |krrˆ j |¡ ||d  D ]}ˆ j |d |f¡ �qqrtdd	„ ˆ j ¡ D ƒƒ |¡S )
z}Generate the full, unsorted collection of PostSortRecs as
        well as dependency pairs for this UOWTransaction.

        FTc                 3   s    | ]}|t | ˆ ¡ƒfV  qd S r3   )r/   Úper_state_flush_actions)ri   ÚrecrA   r   r   Ú	<genexpr>“  s    z3UOWTransaction._generate_actions.<locals>.<genexpr>NrH   r   c                 S   s   g | ]}|j s|‘qS r   ©Údisabled)ri   Úar   r   r   rl   ¬  s      z4UOWTransaction._generate_actions.<locals>.<listcomp>)Úlistr9   ÚvaluesÚexecuter   Zfind_cyclesr;   r:   ÚcyclesrQ   rt   Ú
issupersetr+   r[   r/   Ú
difference)r>   rK   Úactionry   ÚconvertÚedgerd   r   rA   r   Ú_generate_actions{  sJ    	
 ÿ
ÿÿþýüÿþz UOWTransaction._generate_actionsc                 C   sx   |   ¡ }t|dd„ d�}| jrVt | j|¡D ]&}t|ƒ}|r,| ¡ }| | |¡ q8q,nt 	| j|¡D ]}| 
| ¡ qdd S )Nc                 S   s   | j S r3   )Úsort_key)r    r   r   r   r4   ´  r5   z(UOWTransaction.execute.<locals>.<lambda>r#   )r   Úsortedry   r   Zsort_as_subsetsr;   r/   ÚpopÚexecute_aggregateÚsortrx   )r>   r:   Zsubsetr,   Únrq   r   r   r   rx   ¯  s     þ ÿzUOWTransaction.executec                 C   sZ   | j s
dS t| j ƒ}tdd„ | j  ¡ D ƒƒ}| |¡}|rF| j |¡ |rV| j |¡ dS )zéMark processed objects as clean / deleted after a successful
        flush().

        This method is called within the flush() method after the
        execute() method has succeeded and the transaction has been committed.

        Nc                 s   s   | ]\}\}}|r|V  qd S r3   r   )ri   rj   rM   r\   r   r   r   rr   Ö  s   
  z8UOWTransaction.finalize_flush_changes.<locals>.<genexpr>)r<   r/   Úitemsr{   r   rE   Z_register_persistent)r>   r<   ZisdelÚotherr   r   r   Úfinalize_flush_changesÊ  s    
ÿ
z%UOWTransaction.finalize_flush_changes)FFFNN)r   Ú
__module__Ú__qualname__r?   ÚpropertyrB   rG   rJ   rL   rN   r   ZPASSIVE_NO_INITIALIZErR   rT   rW   r]   ra   rZ   r   Zmemoized_propertyrg   rm   ro   r   rx   rˆ   r   r   r   r   r2   ™   s4   -
ÿ
5     ù
"
4r2   c                   @   s   e Zd Zdd„ ZdS )ÚIterateMappersMixinc                    s2   ˆ j r$t‡ ‡fdd„ˆ jjjD ƒƒS ˆ jjjS d S )Nc                 3   s"   | ]}ˆj |ˆ jf r|V  qd S r3   )rg   Údependency_processor)ri   Úm©r>   Úuowr   r   rr   ã  s   þz/IterateMappersMixin._mappers.<locals>.<genexpr>)rV   Úiterr�   Úparentrn   r   r�   r   r�   r   Ú_mappersá  s
    þzIterateMappersMixin._mappersN)r   r‰   rŠ   r“   r   r   r   r   rŒ   à  s   rŒ   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )rU   )r�   rV   Ú	processedÚsetup_flush_actionsc                 C   s   || _ || _tƒ | _d| _d S ©NF)r�   rV   r/   r”   r•   )r>   r�   rV   r   r   r   r?   ô  s    zPreprocess.__init__c                 C   sè   t ƒ }t ƒ }|  |¡D ]H}|j|  | j¡D ]0}|j| \}}|s,|rR| |¡ q,| |¡ q,q|r~| j ||¡ | j 	|¡ |rœ| j 
||¡ | j 	|¡ |s¤|rà| jsÜ| j ||d¡sÊ| j ||d¡rÜ| j |¡ d| _dS dS d S ©NTF)r/   r“   r8   r{   r”   r<   r[   r�   Zpresort_deletesr_   Zpresort_savesr•   Zprop_has_changesZper_property_flush_actions)r>   r�   Zdelete_statesZsave_statesr   r   rM   r\   r   r   r   rx   ú  sB      ÿÿ  ÿüzPreprocess.executeN)r   r‰   rŠ   Ú	__slots__r?   rx   r   r   r   r   rU   ì  s   rU   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚPostSortRecrs   c                 G   s@   | f| }||j kr|j | S t | ¡ |j |< }d|_|S d S r–   )r:   ÚobjectÚ__new__rt   )Úclsr�   Úargsr   rK   r   r   r   r›   !  s    


zPostSortRec.__new__c                 C   s   |   |¡ d S r3   )rx   )r>   r�   Úrecsr   r   r   rƒ   *  s    zPostSortRec.execute_aggregateN)r   r‰   rŠ   r˜   r›   rƒ   r   r   r   r   r™     s   	r™   c                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )Ú
ProcessAll)r�   rM   rV   r€   c                 C   s:   || _ d| j j|f| _|| _|| _|j|jj  |¡ d S )NrŸ   )r�   r€   rM   rV   r7   r’   r^   r[   )r>   r�   r�   rM   rV   r   r   r   r?   1  s    ýÿzProcessAll.__init__c                 C   s2   |   |¡}| jr | j ||¡ n| j ||¡ d S r3   )Ú	_elementsrM   r�   Úprocess_deletesÚprocess_saves)r>   r�   r<   r   r   r   rx   >  s    
zProcessAll.executec                 C   s   t g ƒS r3   )r‘   r�   r   r   r   rp   E  s    z"ProcessAll.per_state_flush_actionsc                 C   s   d| j j| j| jf S )Nz%s(%s, isdelete=%s))Ú	__class__r   r�   rM   rA   r   r   r   Ú__repr__L  s
    ýzProcessAll.__repr__c                 c   sF   |   |¡D ]6}|j| D ]&}|j| \}}|| jkr|s|V  qq
d S r3   )r“   r8   r<   rM   )r>   r�   r   r   rM   r\   r   r   r   r    S  s
    zProcessAll._elementsN)	r   r‰   rŠ   r˜   r?   rx   rp   r¤   r    r   r   r   r   rŸ   .  s   rŸ   c                   @   s*   e Zd ZdZdd„ Ze d¡dd„ ƒZdS )ÚPostUpdateAll)r   rM   r€   c                 C   s   || _ || _d|j|f| _d S )Nr¥   )r   rM   Ú	_sort_keyr€   )r>   r�   r   rM   r   r   r   r?   ^  s    zPostUpdateAll.__init__úsqlalchemy.orm.persistencec                    sB   t jj}ˆjˆ j \}}‡ ‡fdd„|D ƒ}| ˆ j|ˆ|¡ d S )Nc                    s$   g | ]}ˆj | d  ˆ jkr|‘qS ©rH   )r<   rM   rh   r�   r   r   rl   g  s      z)PostUpdateAll.execute.<locals>.<listcomp>)r   Ú	preloadedÚorm_persistencer=   r   Zpost_update)r>   r�   Úpersistencer<   r`   r   r�   r   rx   c  s    zPostUpdateAll.executeN)r   r‰   rŠ   r˜   r?   r   Úpreload_modulerx   r   r   r   r   r¥   [  s   r¥   c                   @   s:   e Zd ZdZdd„ Ze d¡dd„ ƒZdd„ Zd	d
„ Z	dS )rb   ©r   r€   c                 C   s$   || _ d|jf| _||jks t‚d S )Nrb   ©r   r¦   r€   r^   ÚAssertionError©r>   r�   r   r   r   r   r?   o  s    zSaveUpdateAll.__init__r§   c                 C   s$   t jj | j| | jdd¡|¡ d S r–   )r   r©   rª   Úsave_objr   ro   r�   r   r   r   rx   t  s
    ýzSaveUpdateAll.executec           	      c   s€   t | | jdd¡ƒ}| jj}t||ƒ}|D ]$}t||ƒ}|j ||f¡ |V  q*|j| j D ]}| 	||¡}| 
||d¡ q\d S r–   )rv   ro   r   r^   rc   ÚSaveUpdateStater;   r[   r7   rm   rp   )	r>   r�   r<   r^   Z
delete_allr   r|   rd   Ústates_for_propr   r   r   rp   |  s    ÿ

z%SaveUpdateAll.per_state_flush_actionsc                 C   s   d| j j| jf S ©Nz%s(%s)©r£   r   r   rA   r   r   r   r¤   �  s    zSaveUpdateAll.__repr__N©
r   r‰   rŠ   r˜   r?   r   r¬   rx   rp   r¤   r   r   r   r   rb   l  s   
rb   c                   @   s:   e Zd ZdZdd„ Ze d¡dd„ ƒZdd„ Zd	d
„ Z	dS )rc   r­   c                 C   s$   || _ d|jf| _||jks t‚d S )Nrc   r®   r°   r   r   r   r?   ”  s    zDeleteAll.__init__r§   c                 C   s$   t jj | j| | jdd¡|¡ d S r—   )r   r©   rª   Ú
delete_objr   ro   r�   r   r   r   rx   ™  s
    ýzDeleteAll.executec           	      c   s€   t | | jdd¡ƒ}| jj}t||ƒ}|D ]$}t||ƒ}|j ||f¡ |V  q*|j| j D ]}| 	||¡}| 
||d¡ q\d S r—   )rv   ro   r   r^   rb   ÚDeleteStater;   r[   r7   rm   rp   )	r>   r�   r<   r^   Zsave_allr   r|   rd   r³   r   r   r   rp   ¡  s    ÿ

z!DeleteAll.per_state_flush_actionsc                 C   s   d| j j| jf S r´   rµ   rA   r   r   r   r¤   ²  s    zDeleteAll.__repr__Nr¶   r   r   r   r   rc   ‘  s   
rc   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚProcessState)r�   rM   r   r€   c                 C   s"   || _ d|jf| _|| _|| _d S ©Nr¹   )r�   r€   rM   r   )r>   r�   r�   rM   r   r   r   r   r?   ¹  s    zProcessState.__init__c                    sj   | j ‰ | j‰| j‰‡ ‡‡fdd„|D ƒ}| |¡ | jgdd„ |D ƒ }ˆrZˆ ||¡ nˆ ||¡ d S )Nc                    s.   g | ]&}|j ˆ kr|jˆkr|jˆkr|‘qS r   )r£   r�   rM   ©ri   Úr©Úcls_r�   rM   r   r   rl   Ã  s
   


üz2ProcessState.execute_aggregate.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r   ©r   r»   r   r   r   rl   Ë  s     )r£   r�   rM   Údifference_updater   r¡   r¢   )r>   r�   rž   Úour_recsr<   r   r½   r   rƒ   ¿  s    þ
zProcessState.execute_aggregatec                 C   s    d| j j| jt | j¡| jf S )Nz%s(%s, %s, delete=%s))r£   r   r�   rY   Ú	state_strr   rM   rA   r   r   r   r¤   Ñ  s    
üzProcessState.__repr__N)r   r‰   rŠ   r˜   r?   rƒ   r¤   r   r   r   r   r¹   ¶  s   r¹   c                   @   s2   e Zd ZdZdd„ Ze d¡dd„ ƒZdd„ Zd	S )
r²   ©r   r   r€   c                 C   s"   || _ |jj| _d| jjf| _d S rº   ©r   r   r^   r¦   r€   ©r>   r�   r   r   r   r   r?   Ý  s    
zSaveUpdateState.__init__r§   c                    sV   t jj}| j‰ | j‰‡ ‡fdd„|D ƒ}| |¡ | ˆ| jgdd„ |D ƒ |¡ d S )Nc                    s$   g | ]}|j ˆ kr|jˆkr|‘qS r   ©r£   r   r»   ©r¾   r   r   r   rl   ç  s    
 
 z5SaveUpdateState.execute_aggregate.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r   r¿   r»   r   r   r   rl   ì  s     )r   r©   rª   r£   r   rÀ   r±   r   )r>   r�   rž   r«   rÁ   r   rÇ   r   rƒ   â  s    ÿ
  ÿz!SaveUpdateState.execute_aggregatec                 C   s   d| j jt | j¡f S r´   ©r£   r   rY   rÂ   r   rA   r   r   r   r¤   ï  s    
þzSaveUpdateState.__repr__N©	r   r‰   rŠ   r˜   r?   r   r¬   rƒ   r¤   r   r   r   r   r²   Ú  s
   
r²   c                   @   s2   e Zd ZdZdd„ Ze d¡dd„ ƒZdd„ Zd	S )
r¸   rÃ   c                 C   s"   || _ |jj| _d| jjf| _d S )Nr¸   rÄ   rÅ   r   r   r   r?   ù  s    
zDeleteState.__init__r§   c                    sh   t jj}| j‰ | j‰‡ ‡fdd„|D ƒ}| |¡ | jgdd„ |D ƒ }| ˆ‡fdd„|D ƒˆ¡ d S )Nc                    s$   g | ]}|j ˆ kr|jˆkr|‘qS r   rÆ   r»   rÇ   r   r   rl     s    
 
 z1DeleteState.execute_aggregate.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r   r¿   r»   r   r   r   rl     s     c                    s   g | ]}ˆ j | d  r|‘qS r¨   rI   rh   )r�   r   r   rl   	  s      )r   r©   rª   r£   r   rÀ   r   r·   )r>   r�   rž   r«   rÁ   r<   r   )r¾   r   r�   r   rƒ   þ  s    ÿ
  ÿzDeleteState.execute_aggregatec                 C   s   d| j jt | j¡f S r´   rÈ   rA   r   r   r   r¤     s    
þzDeleteState.__repr__NrÉ   r   r   r   r   r¸   ö  s
   
r¸   N)Ú__doc__Ú r   r   rD   r   rY   r   r   r   r1   rš   r2   rŒ   rU   r™   rŸ   r¥   rb   rc   r¹   r²   r¸   r   r   r   r   Ú<module>   s*   u  I2-%%$