a
    a                     @   sr   d dl Z d dlZd dlZd dlmZmZmZmZ d dlm	Z	 d dl
Z
ddlmZ ddlmZ G dd de
jZdS )	    N)AnyDictIteratorList)warn   )api)DEFAULT_CONFIGc                   @   sb   e Zd ZU dZdZg Zee ed< ddddZ	dddd	Z
ee dd
dZddddZdS )ISortCommandzoThe :class:`ISortCommand` class is used by setuptools to perform
    imports checks on registered modules.
    z-Run isort on modules registered in setuptoolsuser_optionsN)returnc                 C   s.   t t }| D ]\}}t| || qd S )N)varsr	   copyitemssetattr)selfZdefault_settingskeyvalue r   8lib/python3.9/site-packages/isort/setuptools_commands.pyinitialize_options   s    zISortCommand.initialize_optionsc                 C   s   i | _ t | j d< dS )zGet options from config files.Zsettings_pathN)	argumentsosgetcwd)r   r   r   r   finalize_options   s    zISortCommand.finalize_optionsc                 c   s   | j jrf| j jpi }| j jD ]H}|}||v r6|| }nd|v rR|d tjj | }|dtjjV  q| j jr| j jD ]}d| V  qvdV  dS )zFind distribution packages. .z%s.pyzsetup.pyN)ZdistributionZpackagesZpackage_dirr   pathsepreplaceZ
py_modules)r   Zpackage_dirspackageZpkg_dirfilenamer   r   r   distribution_files   s    
zISortCommand.distribution_filesc                 C   s   | j }d}|  D ]r}ttj|dD ]X}ztj|fi |sFd}W q* t	y } z t
d| d|  W Y d }~q*d }~0 0 q*q|rtd d S )NFz*.pyTzUnable to parse file z due to r   )r   r"   globZiglobr   r   joinr   Z
check_fileOSErrorr   sysexit)r   r   Zwrong_sorted_filesr   Zpython_fileerrorr   r   r   run2   s    .zISortCommand.run)__name__
__module____qualname____doc__descriptionr   r   r   __annotations__r   r   r   strr"   r)   r   r   r   r   r
      s   
r
   )r#   r   r&   typingr   r   r   r   warningsr   Z
setuptoolsr   r   Zsettingsr	   ZCommandr
   r   r   r   r   <module>   s   