Ë
    #´˜j¸  ã                   óp   — 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y	)
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              #   óV  K  — | g}|�r|j                  «       }|j                  t        j                  k(  r|j                  –— nÙ|j                  t
        j                  k(  r6dj                  |j                  D �cg c]  }|j                  ‘Œ c}«      –— n†|j                  t
        j                  k(  r|j                  |j                  d   «       nJ|j                  t
        j                  k(  r"|j                  |j                  ddd…   «       nt        d«      ‚|r�Œyyc c}w ­w)zF
    Walks over all the names imported in a dotted_as_names node.
    Ú r   Néþÿÿÿzunknown node type)ÚpopÚtyper   ÚNAMEÚvaluer
   Údotted_namer   ÚchildrenÚdotted_as_nameÚappendÚdotted_as_namesÚextendÚAssertionError)ÚnamesÚpendingÚnodeÚchs       ú*lib/python3.12/lib2to3/fixes/fix_import.pyÚtraverse_importsr      s×   è ø€ ð ˆg€GÚ
Ø�{‰{‹}ˆØ�9‰9œŸ
™
Ò"Ø—*‘*ÓØ�Y‰Yœ$×*Ñ*Ò*Ø—'‘'¨d¯mªmÓ<©m¨˜2Ÿ8›8¨mÑ<Ó=Ó=Ø�Y‰Yœ$×-Ñ-Ò-Ø�N‰N˜4Ÿ=™=¨Ñ+Õ,Ø�Y‰Yœ$×.Ñ.Ò.Ø�N‰N˜4Ÿ=™=©¨2¨Ñ.Õ/ä Ð!4Ó5Ð5õ ùò
 =ùs   ‚A9D)Á;D$ÂBD)Ä"D)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                 óT   •— t         t        | �  ||«       d|j                  v | _        y )NÚabsolute_import)Úsuperr!   Ú
start_treeÚfuture_featuresÚskip)ÚselfÚtreeÚnameÚ	__class__s      €r   r%   zFixImport.start_tree/   s&   ø€ ÜŒi˜Ñ)¨$°Ô5Ø%¨×)=Ñ)=Ð=ˆ�	ó    c                 óô  — | j                   ry |d   }|j                  t        j                  k(  rit	        |d«      s|j
                  d   }t	        |d«      sŒ| j                  |j                  «      r%d|j                  z   |_        |j                  «        y y d}d}t        |«      D ]  }| j                  |«      rd}Œd}Œ |r|r| j                  |d«       y 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   Úresultsr.   Ú
have_localÚhave_absoluteÚmod_nameÚnews           r   Ú	transformzFixImport.transform3   sè   € Ø�9Š9ØØ�e‰nˆà�9‰9œ×(Ñ(Ò(ô
 ˜c 7Ô+Ø—l‘l 1‘o�ô ˜c 7Õ+à×+Ñ+¨C¯I©IÔ6Ø #§)¡)™O�”	Ø—‘•ð 7ð ˆJØ!ˆMÜ,¨SÖ1�Ø×/Ñ/°Ô9Ø!%‘Jà$(‘Mð	 2ñ
 Ùð —L‘L Ð'LÔMØä˜S 3 %Ó(ˆCØŸ™ˆCŒJØˆJr,   c                 ó  — |j                  d«      ry|j                  dd«      d   }t        | j                  «      }t	        ||«      }t        t	        t        |«      d«      «      sydt        ddd	d
fD ]  }t        ||z   «      sŒ y y)Nr/   Fé   r   z__init__.pyz.pyz.pycz.soz.slz.pydT)Ú
startswithÚsplitr   Úfilenamer   r   r   )r(   Úimp_nameÚ	base_pathÚexts       r   r2   z!FixImport.probably_a_local_importU   s†   € Ø×Ñ˜sÔ#àØ—>‘> # qÓ)¨!Ñ,ˆÜ˜DŸM™MÓ*ˆ	Ü˜ HÓ-ˆ	ô ”dœ7 9Ó-¨}Ó=Ô>ØØœ3 ¨¨u°fÓ=ˆCÜ�i #‘oÕ&Ùð >ð r,   )	Ú__name__Ú
__module__Ú__qualname__ÚBM_compatibleÚPATTERNr%   r;   r2   Ú__classcell__)r+   s   @r   r!   r!   &   s   ø„ Ø€Mð€Gô>ò öDr,   r!   N)Ú__doc__r   r   Úos.pathr   r   r   r   Ú
fixer_utilr	   r
   r   r   ÚBaseFixr!   © r,   r   Ú<module>rO      s2   ðñ
õ ß .Ó .ß 0Ñ 0ò6ô&=�
×"Ñ"õ =r,   