o
    E6d                     @  s   d Z ddlmZ ddlmZ ddlmZ ddlZddlZddlZddl	m
Z
 ddlZddlZddlZddlZddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ G dd dZdS )zsupport routines for the helpers in tools/.

These aren't imported by the enclosing util package as the are not
needed for normal library use.

    )annotations)ArgumentParser)	NamespaceN)Path)Any)Dict)Iterator)Optional   )compatc                   @  s   e Zd ZU ded< ded< ded< ded< ded	< ded
< d0ddZd1ddZd1ddZd2ddZd3ddZd4dd Z	d5d!d"Z
d#d#d$d6d(d)Zejd7d+d,Zejd8d.d/Zd#S )9code_writer_cmdr   parserr   argsboolsuppress_outputdiffs_detectedr   source_rootpyproject_toml_pathtool_scriptstrc                 C  s^   t |jj| _| jt d | _| j sJ t | _| jjdddd | jjddddd	 d S )
Nzpyproject.tomlz--stdout
store_truez)Write to stdout instead of saving to file)actionhelp-cz--checkzDon't write the files back, just return the status. Return code 0 means nothing would change. Return code 1 means some files would be reformatted)r   r   )r   parentr   r   existsr   r   add_argument)selfr    r   sC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\sqlalchemy/util/tool_support.py__init__*   s   
zcode_writer_cmd.__init__tempfilereturnNonec                 C  "   |  t|dd| j d d S )NZzimportsz--toml-config 
entrypointoptions_run_console_scriptr   r   r   r!   r   r   r   run_zimports>      
zcode_writer_cmd.run_zimportsc                 C  r$   )Nblackz	--config r%   r(   r*   r   r   r   	run_blackG   r,   zcode_writer_cmd.run_blackpathr'   Dict[str, Any]c           
      C  s   t jdk}|d }tdD ]}|j|kr|} nqtd| |dd}tj||d|g }i }	| jr?t	j
 |	d< |	d	< t	jtjd
d|j|j|jf g| fdt| ji|	 dS )zeRun a Python console application from within the process.

        Used for black, zimports

        posixr&   console_scriptsz*Could not find entrypoint console_scripts.r'    )r1   stdoutstderrr   zimport %s; %s.%s()cwdN)osnamer   Zimportlib_metadata_get	Exceptiongetshlexsplitr   
subprocessDEVNULLrunsys
executablemoduleattrr   r   )
r   r/   r'   Zis_posixZentrypoint_nameentryimplZcmdline_options_strZcmdline_options_listkwr   r   r   r)   P   s>   


z#code_writer_cmd._run_console_scripttextc                 G  s    | j stjd| d S d S )N )r   r@   r5   writejoin)r   rG   r   r   r   write_statusw   s   zcode_writer_cmd.write_statusdestination_pathc                 C  s\   | j jr| j||d d S | j jrt| d S | d| d t|| | d d S )N)sourceWriting ...done
)r   check	_run_diffr4   printrK   r   
write_text)r   rG   rL   r   r   r   write_output_file_from_text{   s   z+code_writer_cmd.write_output_file_from_textc                 C  s   | j jr| j||d t| d S | j jr7t|}t|  W d    n1 s+w   Y  t| d S | 	d| d t
|| | 	d d S )N)source_filerN   rO   rP   )r   rQ   rR   r7   unlinkr4   openrS   readrK   shutilmove)r   r!   rL   tfr   r   r   write_output_file_from_tempfile   s   
z/code_writer_cmd.write_output_file_from_tempfileN)rM   rV   rM   Optional[str]rV   c          	   	   C  s   |rt |}t|}W d    n1 sw   Y  n|d ur&|jdd}nJ dt |.}tjt|||dddd}t|}|rTd| _td	| W d    d S W d    d S 1 s_w   Y  d S )
NT)keependsFz!source or source_file is requiredz<proposed changes>   
)fromfiletofilenZlinetermr3   )rX   list
splitlinesdifflibZunified_diffr   rS   rJ   )	r   rL   rM   rV   r\   Zsource_linesZdpdZ	d_as_listr   r   r   rR      s0   



"zcode_writer_cmd._run_diffIterator[ArgumentParser]c                 c  s    | j V  d S )N)r   r   r   r   r   add_arguments   s   zcode_writer_cmd.add_argumentsIterator[None]c                 c  sj    | j  | _| jjrd| _d| _n| jjrd| _nd| _d V  | jjr.| jr.td d S td d S )NFTr
   r   )	r   
parse_argsr   rQ   r   r   r4   r@   exitrj   r   r   r   run_program   s   zcode_writer_cmd.run_program)r   r   )r!   r   r"   r#   )r/   r   r'   r0   r"   r#   )rG   r   r"   r#   )rG   r   rL   r   r"   r#   )r!   r   rL   r   r"   r#   )rL   r   rM   r^   rV   r^   r"   r#   )r"   ri   )r"   rl   )__name__
__module____qualname____annotations__r    r+   r.   r)   rK   rU   r]   rR   
contextlibcontextmanagerrk   ro   r   r   r   r   r   "   s*   
 


	
	
'

r   )__doc__
__future__r   argparser   r   rt   rg   r7   pathlibr   r;   rZ   r=   r@   typingr   r   r   r	   r3   r   r   r   r   r   r   <module>   s$   