
    Fwg                      V    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e	      Zy	)
zCFix UserDict.

Incomplete!

TODO: base this on fix_urllib perhaps?
    )
fixer_base)Name
attr_chain)
alternatesbuild_pattern
FixImportsUserDictcollectionsc                   N     e Zd ZdZdZeZdZd Z fdZ	 fdZ
 fdZd Z xZS )FixUserdictT   c                 J    dj                  t        | j                              S )N|)joinr   mapping)selfs    U/var/www/horilla/myenv/lib/python3.12/site-packages/libfuturize/fixes/fix_UserDict.pyr   zFixUserdict.build_pattern5   s    xxdll344    c                 T    | j                         | _        t        t        |           y N)r   PATTERNsuperr   compile_pattern)r   	__class__s    r   r   zFixUserdict.compile_pattern8   s"     ))+j$/1r   c                     t         t        | 
   |      }|r%d|vrt        fdt	        |d      D              ry|S y)Nbare_with_attrc              3   .   K   | ]  } |        y wr    ).0objmatchs     r   	<genexpr>z$FixUserdict.match.<locals>.<genexpr>F   s     Isc
Is   parentF)r   r   r!   anyr   )r   noderesultsr!   r   s      @r   r!   zFixUserdict.match?   sE    j$-+  w.Ijx.HIINr   c                 <    t         t        |   ||       i | _        y r   )r   r   
start_treereplace)r   treefilenamer   s      r   r(   zFixUserdict.start_treeK   s    j$*4:r   c                    |j                  d      }|r|j                  }t        | j                  |         }|j	                  t        ||j                               d|v r|| j                  |<   d|v r'| j                  |      }|r| j                  ||       y y y |d   d   }| j                  j                  |j                        }|r'|j	                  t        ||j                               y y )Nmodule_name)prefixname_importmultiple_importsr   r   )	getvalueunicoder   r)   r   r.   r!   	transform)r   r%   r&   
import_modmod_namenew_name	bare_names          r   r4   zFixUserdict.transformO   s    [[/
!''Ht||H56HtHZ5F5FGH' *2X&!W,
 **T*NN41  -   01!4I||''	8H!!$x	8H8H"IJ r   )__name__
__module____qualname__BM_compatiblekeep_line_orderMAPPINGr   	run_orderr   r   r!   r(   r4   __classcell__)r   s   @r   r   r   *   s3    MOG I52
Kr   r   N)__doc__lib2to3r   lib2to3.fixer_utilr   r   lib2to3.fixes.fix_importsr   r   r   r>   r   r   r   r   <module>rE      s2     / K K 8<K* <Kr   