§
    ZQd¸  ã                   ón   — d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
mZ d„ Z G d„ dej        ¦  «        Zd	S )
zÞFixer for import statements.
If spam is being imported from the local directory, this import:
    from spam import eggs
Becomes:
    from .spam import eggs

And this import:
    import spam
Becomes:
    from . import spam
é   )Ú
fixer_baseé    )ÚdirnameÚjoinÚexistsÚsep)Ú
FromImportÚsymsÚtokenc              #   óö  K  — | g}|rñ|                      ¦   «         }|j        t          j        k    r
|j        V — nº|j        t
          j        k    r'd                     d„ |j        D ¦   «         ¦  «        V — n~|j        t
          j	        k    r!| 
                    |j        d         ¦  «         nH|j        t
          j        k    r$|                     |j        ddd…         ¦  «         nt          d¦  «        ‚|°ïdS dS )zF
    Walks over all the names imported in a dotted_as_names node.
    Ú c                 ó   — g | ]	}|j         ‘Œ
S © )Úvalue)Ú.0Úchs     ú//usr/lib/python3.11/lib2to3/fixes/fix_import.pyú
<listcomp>z$traverse_imports.<locals>.<listcomp>   s   € Ð<Ð<Ð<¨˜2œ8Ð<Ð<Ð<ó    r   Néþÿÿÿzunknown node type)ÚpopÚtyper   ÚNAMEr   r
   Údotted_namer   ÚchildrenÚdotted_as_nameÚappendÚdotted_as_namesÚextendÚAssertionError)ÚnamesÚpendingÚnodes      r   Útraverse_importsr$      s  è è € ð ˆg€GØ
ð 6Ø�{Š{‰}Œ}ˆØŒ9�œ
Ò"Ð"Ø”*ÐÐÐÐØŒY�$Ô*Ò*Ð*Ø—'’'Ð<Ð<¨d¬mÐ<Ñ<Ô<Ñ=Ô=Ð=Ð=Ð=Ð=ØŒY�$Ô-Ò-Ð-Ø�NŠN˜4œ=¨Ô+Ñ,Ô,Ð,Ð,ØŒY�$Ô.Ò.Ð.Ø�NŠN˜4œ=¨¨¨2¨Ô.Ñ/Ô/Ð/Ð/å Ð!4Ñ5Ô5Ð5ð ð 6ð 6ð 6ð 6ð 6r   c                   ó2   ‡ — e Zd ZdZdZˆ fd„Zd„ Zd„ Zˆ xZS )Ú	FixImportTzj
    import_from< 'from' imp=any 'import' ['('] any [')'] >
    |
    import_name< 'import' imp=any >
    c                 óv   •— t          t          | ¦  «                             ||¦  «         d|j        v | _        d S )NÚabsolute_import)Úsuperr&   Ú
start_treeÚfuture_featuresÚskip)ÚselfÚtreeÚnameÚ	__class__s      €r   r*   zFixImport.start_tree/   s6   ø€ Ý�i˜ÑÔ×)Ò)¨$°Ñ5Ô5Ð5Ø%¨Ô)=Ð=ˆŒ	ˆ	ˆ	r   c                 ó   — | j         rd S |d         }|j        t          j        k    rnt	          |d¦  «        s|j        d         }t	          |d¦  «        ¯|                      |j        ¦  «        r%d|j        z   |_        |                     ¦   «          d S d S d}d}t          |¦  «        D ]}|                      |¦  «        rd}Œd}Œ|r|r|  
                    |d¦  «         d S t          d|g¦  «        }|j        |_        |S )NÚimpr   r   ú.FTz#absolute and local imports together)r,   r   r
   Úimport_fromÚhasattrr   Úprobably_a_local_importr   Úchangedr$   Úwarningr	   Úprefix)r-   r#   Úresultsr2   Ú
have_localÚhave_absoluteÚmod_nameÚnews           r   Ú	transformzFixImport.transform3   s0  € ØŒ9ð 	ØˆFØ�eŒnˆàŒ9�Ô(Ò(Ð(õ
 ˜c 7Ñ+Ô+ð &Ø”l 1”o�õ ˜c 7Ñ+Ô+ð &à×+Ò+¨C¬IÑ6Ô6ð Ø #¤)™O�”	Ø—’‘”���ðð ð ˆJØ!ˆMÝ,¨SÑ1Ô1ð )ð )�Ø×/Ò/°Ñ9Ô9ð )Ø!%�J�Jà$(�M�MØð Øð Nð —L’L Ð'LÑMÔMÐMØ�å˜S 3 %Ñ(Ô(ˆCØœˆCŒJØˆJr   c                 óV  — |                      d¦  «        rdS |                     dd¦  «        d         }t          | j        ¦  «        }t	          ||¦  «        }t          t	          t          |¦  «        d¦  «        ¦  «        sdS dt          ddd	d
fD ]}t          ||z   ¦  «        r dS ŒdS )Nr3   Fé   r   z__init__.pyz.pyz.pycz.soz.slz.pydT)Ú
startswithÚsplitr   Úfilenamer   r   r   )r-   Úimp_nameÚ	base_pathÚexts       r   r6   z!FixImport.probably_a_local_importU   s½   € Ø×Ò˜sÑ#Ô#ð 	à�5Ø—>’> # qÑ)Ô)¨!Ô,ˆÝ˜DœMÑ*Ô*ˆ	Ý˜ HÑ-Ô-ˆ	õ •d�7 9Ñ-Ô-¨}Ñ=Ô=Ñ>Ô>ð 	Ø�5Ø�3 ¨¨u°fÐ=ð 	ð 	ˆCÝ�i #‘oÑ&Ô&ð Ø�t�tðàˆur   )	Ú__name__Ú
__module__Ú__qualname__ÚBM_compatibleÚPATTERNr*   r?   r6   Ú__classcell__)r0   s   @r   r&   r&   &   sc   ø€ € € € € Ø€Mð€Gð>ð >ð >ð >ð >ð ð  ð  ðDð ð ð ð ð ð r   r&   N)Ú__doc__r   r   Úos.pathr   r   r   r   Ú
fixer_utilr	   r
   r   r$   ÚBaseFixr&   r   r   r   ú<module>rR      s«   ðð
ð 
ð Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ð6ð 6ð 6ð&=ð =ð =ð =ð =�
Ô"ñ =ô =ð =ð =ð =r   