
    ,h                        S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKrSSK	J
r
  SSKrSSKrSSKrSSKrSSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr   " S S5      rg)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)Union   )compatc                  "   \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   S	\S'   SS jrSS jrSS jrSS jrSS jr	      SS jr
      SS jrSSS.       SS jjr\R                  S S j5       r\R                  S!S j5       rSrg)"code_writer_cmd#   r   parserr   argsboolsuppress_outputdiffs_detectedr   source_rootpyproject_toml_pathc                T   [        U5      R                  R                  U l        U R                  [        S5      -  U l        U R                  R	                  5       (       d   e[        5       U l        U R                  R                  SSSS9  U R                  R                  SSSSS	9  g )
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)selftool_scripts     T/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/util/tool_support.py__init__code_writer_cmd.__init__+   s    ,33::#'#3#3d;K6L#L ''..0000$&  < 	! 	

 	  B   	! 	
    c                Z    U R                  [        U5      SSU R                   3S.5        g )Nzimportsz--toml-config 
entrypointoptions_run_console_scriptstrr   r    tempfiles     r"   run_zimportscode_writer_cmd.run_zimports?   s0      M(+D,D,D+EF	
r%   c                Z    U R                  [        U5      SSU R                   3S.5        g )Nblackz	--config r(   r+   r.   s     r"   	run_blackcode_writer_cmd.run_blackH   s0      M%&t'?'?&@A	
r%   c                2   [         R                  S:H  nUS   n[        R                  " S5       H  nUR                  U:X  d  M  Un  O   [	        SU 35      eUR                  SS5      n[        R                  " XsS9U/-   n0 n	U R                  (       a  [        R                  =U	S'   U	S	'   [        R                  " [        R                  S
SUR                  < SUR                  < SUR                  < S3/U-   4S[!        U R"                  5      0U	D6  g)zURun a Python console application from within the process.

Used for black, zimports

posixr)   console_scriptsz*Could not find entrypoint console_scripts.r*    )r7   stdoutstderrr   zimport z; .z()cwdN)osnamer   importlib_metadata_get	Exceptiongetshlexsplitr   
subprocessDEVNULLrunsys
executablemoduleattrr-   r   )
r    pathr*   is_posixentrypoint_nameentryimplcmdline_options_strcmdline_options_listkws
             r"   r,   #code_writer_cmd._run_console_scriptQ   s    77g%!,/223DEEzz_, F
 <_<MN  &kk)R8${{ 
F   *4*<*<<BxL2h<(,T[[$))L
 ##		
 D$$%		
 		
r%   c                    U R                   (       d/  [        R                  R                  SR	                  U5      5        g g )N )r   rH   r;   writejoin)r    texts     r"   write_statuscode_writer_cmd.write_statusx   s*    ##JJSXXd^, $r%   c                (   U R                   R                  (       a  U R                  X!S9  g U R                   R                  (       a  [	        U5        g U R                  SU S35        [        U5      R                  USSS9  U R                  S5        g )N)sourceWriting ...utf-8
)encodingnewlinedone
)r   check	_run_diffr:   printrZ   r   
write_text)r    rY   destination_paths      r"   write_output_file_from_text+code_writer_cmd.write_output_file_from_text|   s{     99??NN+N9YY$K)9(:#>?!"--w .  h'r%   c                   U R                   R                  (       a&  U R                  X!S9  [        R                  " U5        g U R                   R
                  (       aD  [        U5       n[        UR                  5       5        S S S 5        [        R                  " U5        g U R                  SU S35        [        R                  " X5        U R                  S5        g ! , (       d  f       Nb= f)N)source_filer^   r_   rd   )r   re   rf   r>   unlinkr:   openrg   readrZ   shutilmove)r    r/   ri   tfs       r"   write_output_file_from_tempfile/code_writer_cmd.write_output_file_from_tempfile   s     99??NN+NBIIhYYh2bggi   IIh)9(:#>?KK3h'  s   (C
C,N)r]   rm   c          
        U(       a  [        USS9 n[        U5      nS S S 5        OUb  UR                  SS9nO S5       e[        USS9 n[        R                  " [        U5      W[        U5      R                  5       SSSS	9n[        U5      nU(       a!  SU l        [        S
R                  U5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr`   )rb   T)keependsz!source or source_file is requiredz<proposed changes>   ra   )fromfiletofilenlinetermr9   )
ro   list
splitlinesdifflibunified_diffr   as_posixr   rg   rX   )	r    ri   r]   rm   rs   source_linesdpd	d_as_lists	            r"   rf   code_writer_cmd._run_diff   s     kG4#Bx 54!,,d,;L===5"W5$$R./88:+A QI&*#bggi() 65 54 65s   CA-C
C
C c              #  (   #    U R                   v   g 7f)N)r   r    s    r"   add_argumentscode_writer_cmd.add_arguments   s     kks   c              #    #    U R                   R                  5       U l        U R                  R                  (       a  SU l        SU l        O*U R                  R                  (       a  SU l        OSU l        S v   U R                  R                  (       a(  U R                  (       a  [        R                  " S5        g [        R                  " S5        g 7f)NFTr   r   )	r   
parse_argsr   re   r   r   r:   rH   exitr   s    r"   run_programcode_writer_cmd.run_program   s}     KK**,	99??"'D#'D YY#'D #(D 99??t22HHQKHHQKs   CC)r   r   r   r   r   r   )r!   r-   )r/   r-   returnNone)rL   r-   r*   zDict[str, Any]r   r   )rY   r-   r   r   )rY   r-   ri   Union[str, Path]r   r   )r/   r-   ri   r-   r   r   )ri   r   r]   Optional[str]rm   r   r   r   )r   zIterator[ArgumentParser])r   zIterator[None])__name__
__module____qualname____firstlineno____annotations__r#   r0   r4   r,   rZ   rj   rt   rf   
contextlibcontextmanagerr   r   __static_attributes__ r%   r"   r   r   #   s    
O
(

%
N-((+;(	(((/2(	(& !%%)*** 	*
 #* 
*:    r%   r   )__doc__
__future__r   argparser   r   r   r   r>   pathlibr   rC   rq   rE   rH   typingr   r   r	   r
   r   r9   r   r   r   r%   r"   <module>r      sK    # #    	     
      f fr%   