3
‡Œði   ã               @   sP   d Z ddlmZ ddlmZmZ ddlmZmZm	Z	 ddiZ
G dd„ de	ƒZd	S )
zCFix UserDict.

Incomplete!

TODO: base this on fix_urllib perhaps?
é    )Ú
fixer_base)ÚNameÚ
attr_chain)Ú
alternatesÚbuild_patternÚ
FixImportsÚUserDictÚcollectionsc                   sT   e Zd ZdZdZeZdZdd„ Z‡ fdd„Z	‡ fdd„Z
‡ fd	d
„Zdd„ Z‡  ZS )ÚFixUserdictTé   c             C   s   dj t| jƒƒS )Nú|)Újoinr   Úmapping)Úself© r   ú@/tmp/pip-build-6m2fasei/future/libfuturize/fixes/fix_UserDict.pyr   5   s    zFixUserdict.build_patternc                s   | j ƒ | _tt| ƒjƒ  d S )N)r   ZPATTERNÚsuperr   Úcompile_pattern)r   )Ú	__class__r   r   r   8   s    
zFixUserdict.compile_patternc                sH   t t| ƒj‰ ˆ |ƒ}|rDd|kr@t‡ fdd„t|dƒD ƒƒr@dS |S dS )NÚbare_with_attrc             3   s   | ]}ˆ |ƒV  qd S )Nr   )Ú.0Úobj)Úmatchr   r   ú	<genexpr>F   s    z$FixUserdict.match.<locals>.<genexpr>ÚparentF)r   r   r   Úanyr   )r   ÚnodeÚresults)r   )r   r   r   ?   s    zFixUserdict.matchc                s   t t| ƒj||ƒ i | _d S )N)r   r   Ú
start_treeÚreplace)r   ÚtreeÚfilename)r   r   r   r   K   s    zFixUserdict.start_treec             C   s¢   |j dƒ}|rl|j}t| j| ƒ}|jt||jd�ƒ d|krH|| j|< d|krž| j|ƒ}|rž| j||ƒ n2|d d }| jj |jƒ}|rž|jt||jd�ƒ d S )NÚmodule_name)ÚprefixZname_importZmultiple_importsr   r   )	ÚgetÚvalueÚunicoder   r   r   r#   r   Ú	transform)r   r   r   Z
import_modÚmod_nameÚnew_nameZ	bare_namer   r   r   r'   O   s    


zFixUserdict.transform)Ú__name__Ú
__module__Ú__qualname__ZBM_compatibleZkeep_line_orderÚMAPPINGr   Z	run_orderr   r   r   r   r'   Ú__classcell__r   r   )r   r   r
   *   s   r
   N)Ú__doc__Zlib2to3r   Zlib2to3.fixer_utilr   r   Zlib2to3.fixes.fix_importsr   r   r   r-   r
   r   r   r   r   Ú<module>   s
   