B
    ™i‚\Ý  ã               @   s¤   d Z ddlmZ ddlmZ dZdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&S )'aS  Support for undoing and redoing actions.

Functions:

* undo(file, operation, *args)
* redo(file, operation, *args)
* move_to_shadow(file, path)
* move_from_shadow(file, path)
* attr_to_shadow(file, path, name)
* attr_from_shadow(file, path, name)

Misc variables:

`__docformat__`
    The format of documentation strings in this module.

é    )Úabsolute_importé   )Ú
split_pathZreStructuredTextc             G   sš   |dkrt | |d ƒ n~|dkr0t| |d ƒ nf|dkrNt| |d |d ƒ nH|dkrlt| |d |d ƒ n*|dkrŠt| |d |d ƒ ntd| ƒ‚d S )	NÚCREATEr   ÚREMOVEÚMOVEr   ÚADDATTRÚDELATTRzWthe requested unknown operation %r can not be undone; please report this to the authors)Úundo_createÚundo_removeÚ	undo_moveÚundo_add_attrÚundo_del_attrÚNotImplementedError)Úfile_Ú	operationÚargs© r   ú.lib/python3.7/site-packages/tables/undoredo.pyÚundo(   s    r   c             G   sš   |dkrt | |d ƒ n~|dkr0t| |d ƒ nf|dkrNt| |d |d ƒ nH|dkrlt| |d |d ƒ n*|dkrŠt| |d |d ƒ ntd| ƒ‚d S )	Nr   r   r   r   r   r   r	   zWthe requested unknown operation %r can not be redone; please report this to the authors)Úredo_createÚredo_removeÚ	redo_moveÚredo_add_attrÚredo_del_attrr   )r   r   r   r   r   r   Úredo9   s    r   c             C   s&   |   |¡}|  ¡ \}}| ||¡ d S )N)Ú	_get_nodeÚ_shadow_nameÚ_g_move)r   ÚpathÚnodeÚshparentÚshnamer   r   r   Úmove_to_shadowJ   s    
r#   c             C   s<   |   ¡ \}}| |¡}t|ƒ\}}|  |¡}| ||¡ d S )N)r   Z_f_get_childr   r   r   )r   r   r!   r"   r    ZpnameÚnameÚparentr   r   r   Úmove_from_shadowR   s
    

r&   c             C   s   t | |ƒ d S )N)r#   )r   r   r   r   r   r
   \   s    r
   c             C   s   t | |ƒ d S )N)r&   )r   r   r   r   r   r   a   s    r   c             C   s   t | |ƒ d S )N)r&   )r   r   r   r   r   r   f   s    r   c             C   s   t | |ƒ d S )N)r#   )r   r   r   r   r   r   k   s    r   c             C   s0   t |ƒ\}}|  |¡}|  |¡}| ||¡ d S )N)r   r   r   )r   ÚorigpathÚdestpathZ	origpnameZorignamer    Z
origparentr   r   r   r   p   s    

r   c             C   s0   t |ƒ\}}|  |¡}|  |¡}| ||¡ d S )N)r   r   r   )r   r'   r(   Z	destpnameZdestnamer    Z
destparentr   r   r   r   y   s    

r   c       	      C   sN   |   |¡}|j}t||ƒ}|  ¡ \}}|j}||kr@| ||¡ | |¡ d S )N)r   Ú_v_attrsÚgetattrr   Ú_g__setattrZ_g__delattr)	r   r   r$   r    ZattrsÚvaluer!   r"   Úshattrsr   r   r   Úattr_to_shadow‚   s    

r.   c             C   s8   |   ¡ \}}|j}t||ƒ}|  |¡}|j ||¡ d S )N)r   r)   r*   r   r+   )r   r   r$   r!   r"   r-   r,   r    r   r   r   Úattr_from_shadow“   s
    

r/   c             C   s   t | ||ƒ d S )N)r.   )r   r   r$   r   r   r   r       s    r   c             C   s   t | ||ƒ d S )N)r/   )r   r   r$   r   r   r   r   ¥   s    r   c             C   s   t | ||ƒ d S )N)r/   )r   r   r$   r   r   r   r   ª   s    r   c             C   s   t | ||ƒ d S )N)r.   )r   r   r$   r   r   r   r   ¯   s    r   N)Ú__doc__Z
__future__r   r   r   Z__docformat__r   r   r#   r&   r
   r   r   r   r   r   r.   r/   r   r   r   r   r   r   r   r   Ú<module>   s&   
		