
    c                         d Z ddlZddlZddlZddlZddlZ ej        de          Zd Z	 G d d          Z
 G d d          Z G d	 d
          Z G d d          Z G d d          ZddZddedefdZddZd Zd Zd ZdS )a  Project file system commands.

This modules implements file system operations used by rope.  Different
version control systems can be supported by implementing the interface
provided by `FileSystemCommands` class.  See `SubversionCommands` and
`MercurialCommands` for example.

    NFileContentc                     t          j        |           }t          t          t          t          t
          d}|D ]1}||v r+	  ||         |           c S # t          t          f$ r Y -w xY w2t                      S )N)z.hgz.svnz.git_svn_darcs)	oslistdirMercurialCommandsSubversionCommandsGITCommandsDarcsCommandsImportErrorOSErrorFileSystemCommands)rootdirlistcommandskeys       4lib/python3.11/site-packages/rope/base/fscommands.pycreate_fscommandsr      s    jG "" H   '> 	$x}T*****)   	
 s   AA&%A&c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )r   c                 J    t          |d                                           d S )Nw)opencloseselfpaths     r   create_filezFileSystemCommands.create_file%   s"    T3    c                 .    t          j        |           d S N)r   mkdirr   s     r   create_folderz FileSystemCommands.create_folder(   s    
r   c                 0    t          j        ||           d S r!   )shutilmover   r   new_locations      r   r&   zFileSystemCommands.move+   s    D,'''''r   c                     t           j                            |          rt          j        |           d S t	          j        |           d S r!   )r   r   isfileremover%   rmtreer   s     r   r+   zFileSystemCommands.remove.   s?    7>>$ 	 IdOOOOOM$r   c                     t          |d          }	 |                    |           |                                 d S # |                                 w xY w)Nwb)r   writer   )r   r   datafile_s       r   r/   zFileSystemCommands.write4   sK    T4  	KKKKMMMMMEKKMMMMs	   = Ac                 ~    t          |d          5 }|                                cd d d            S # 1 swxY w Y   d S )Nrb)r   read)r   r   handles      r   r4   zFileSystemCommands.read;   s~    $ 	!;;==	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   266N)	__name__
__module____qualname__r   r#   r&   r+   r/   r4    r   r   r   r   $   sn               ( ( (       ! ! ! ! !r   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	r
   c                 f    t                      | _        dd l}|                                | _        d S Nr   )r   normal_actionspysvnClientclient)r   argsr>   s      r   __init__zSubversionCommands.__init__A   s,    022llnnr   c                 r    | j                             |           | j                            |d           d S NT)force)r=   r   r@   addr   s     r   r   zSubversionCommands.create_fileG   s7    ''---D)))))r   c                 r    | j                             |           | j                            |d           d S rD   )r=   r#   r@   rF   r   s     r   r#   z SubversionCommands.create_folderK   s7    ))$///D)))))r   c                 @    | j                             ||d           d S rD   )r@   r&   r'   s      r   r&   zSubversionCommands.moveO   s%    |488888r   c                 >    | j                             |d           d S rD   )r@   r+   r   s     r   r+   zSubversionCommands.removeR   s#    4t,,,,,r   c                 <    | j                             ||           d S r!   r=   r/   r   r   r0   s      r   r/   zSubversionCommands.writeU   !    !!$-----r   c                 6    | j                             |          S r!   r=   r4   r   s     r   r4   zSubversionCommands.readX       "''---r   N)
r6   r7   r8   rB   r   r#   r&   r+   r/   r4   r9   r   r   r
   r
   @   s}        % % %* * ** * *9 9 9- - -. . .. . . . .r   r
   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
r	   c                    |                                  | _        t                      | _        	 | j        j                            dddddd          | _        n# t
          $ r | j        j                                        | _        | j                            ddd           | j                            ddd           | j                            ddd           | j                            dd	d           | j                            dd
d           | j                            ddd           Y nw xY w| j        j                            | j        |          | _        d S )NFT)verbosedebugquietinteractive	tracebackreport_untrusteduirV   norT   rW   rS   rX   rU   yes)	_import_mercurialhgr   r=   rY   	Exception	setconfig
repositoryrepor   r   s     r   rB   zMercurialCommands.__init__]   sP   ((**022	4gjmm!!& $  DGG  	4 	4 	4gjmmooDGGdM4888GdGT222GdK666GdIt444Gd$6===GdGU33333	4 GJ))$'488			s   *A CD10D1c                     dd l }dd l}dd l}|S r<   )mercurial.commandsmercurial.hgmercurial.ui)r   	mercurials     r   r\   z#MercurialCommands._import_mercurialt   s,    !!!!r   c                     | j                             |           | j        j                            | j        | j        |           d S r!   )r=   r   r]   r   rF   rY   ra   r   s     r   r   zMercurialCommands.create_file{   s@    ''---TWdi66666r   c                 :    | j                             |           d S r!   r=   r#   r   s     r   r#   zMercurialCommands.create_folder       ))$/////r   c                 b    | j         j                            | j        | j        ||d           d S )NF)after)r]   r   renamerY   ra   r'   s      r   r&   zMercurialCommands.move   s0    D,eTTTTTr   c                 \    | j         j                            | j        | j        |           d S r!   )r]   r   r+   rY   ra   r   s     r   r+   zMercurialCommands.remove   s)    D99999r   c                 <    | j                             ||           d S r!   rK   rL   s      r   r/   zMercurialCommands.write   rM   r   c                 6    | j                             |          S r!   rO   r   s     r   r4   zMercurialCommands.read   rP   r   N)r6   r7   r8   rB   r\   r   r#   r&   r+   r/   r4   r9   r   r   r	   r	   \   s        9 9 9.  7 7 70 0 0U U U: : :. . .. . . . .r   r	   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )r   c                 f    || _         |                     dg           t                      | _        d S )Nversion)r   _dor   r=   rb   s     r   rB   zGITCommands.__init__   s1    	)022r   c                     | j                             |           |                     d|                     |          g           d S NrF   )r=   r   ru   _in_dirr   s     r   r   zGITCommands.create_file   sB    ''---%d++,-----r   c                 :    | j                             |           d S r!   rj   r   s     r   r#   zGITCommands.create_folder   rk   r   c                     |                      d|                     |          |                     |          g           d S Nmvru   rx   r'   s      r   r&   zGITCommands.move   s9    $T**DLL,F,FGHHHHHr   c                 Z    |                      d|                     |          g           d S )Nrmr}   r   s     r   r+   zGITCommands.remove   s+    $T**+,,,,,r   c                 <    | j                             ||           d S r!   rK   rL   s      r   r/   zGITCommands.write   s!    !!$-----r   c                 6    | j                             |          S r!   rO   r   s     r   r4   zGITCommands.read   rP   r   c                 :    t          dg|z   | j                   d S )Ngitcwd_executer   r   rA   s     r   ru   zGITCommands._do   s#    %4TY//////r   c                     |                     | j                  r|t          | j                  dz   d          S | j        S )N   )
startswithr   lenr   s     r   rx   zGITCommands._in_dir   s>    ??49%% 	.DI*,,--yr   N)r6   r7   r8   rB   r   r#   r&   r+   r/   r4   ru   rx   r9   r   r   r   r      s        3 3 3
. . .0 0 0I I I- - -. . .. . .0 0 0    r   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
r   c                 :    || _         t                      | _        d S r!   )r   r   r=   rb   s     r   rB   zDarcsCommands.__init__   s    	022r   c                 h    | j                             |           |                     d|g           d S rw   )r=   r   ru   r   s     r   r   zDarcsCommands.create_file   s5    ''---%r   c                 h    | j                             |           |                     d|g           d S rw   )r=   r#   ru   r   s     r   r#   zDarcsCommands.create_folder   s5    ))$///%r   c                 6    |                      d||g           d S r{   )ru   r'   s      r   r&   zDarcsCommands.move   s!    $l+,,,,,r   c                 :    | j                             |           d S r!   )r=   r+   r   s     r   r+   zDarcsCommands.remove   s    ""4(((((r   c                 6    | j                             |          S r!   rO   r   s     r   r4   zDarcsCommands.read   rP   r   c                 <    | j                             ||           d S r!   rK   rL   s      r   r/   zDarcsCommands.write   rM   r   c                 :    t          dg|z   | j                   d S )Ndarcsr   r   r   s     r   ru   zDarcsCommands._do   s$    'T!ty111111r   N)r6   r7   r8   rB   r   r#   r&   r+   r4   r/   ru   r9   r   r   r   r      s        3 3 3          - - -) ) ). . .. . .2 2 2 2 2r   r   c                 z    t          j        | |t           j                  }|                                 |j        S )N)r   stdout)
subprocessPopenPIPEwait
returncode)rA   r   processs      r   r   r      s1    tZ_EEEGLLNNNr   contentsreturnc                 ~   t          | t                    sJ |r|dk    r|                     d|          } |t          |           }|"t	          |                     |                    S 	 t	          |                                           S # t          $ r% t	          |                     d                    cY S w xY w)N
utf-8)
isinstancestrreplaceread_str_codingr   encodeUnicodeEncodeError)r   encodingnewliness      r   unicode_to_file_datar      s    h$$$$$ 4H$ 4##D(33 -"8,, 68??84455558??,,--- 5 5 58??733444445s   , B ,B<;B<c                     t          | |          }d}d|v r|                    dd          }d}d|v r|                    dd          }d}||fS )Nr   z
)_decode_datar   )r0   r   resultnewlines       r   file_data_to_unicoder      si    $))FG --v~ d++7?r   c                     t          | t                    r| S |t          |           }|d}	 |                     |          S # t          t
          f$ r |                     d          cY S w xY w)Nr   latin1)r   r   r   decodeUnicodeErrorLookupError)r0   r   s     r   r   r      s    $  )"4(( 
 %{{8$$$+& % % %{{8$$$$$%s   A &A,+A,c                 H   d}t          |           t          k    rd}t          j        |          }n)d}t          j        |                    d                    }|                     |d          d d         D ](}t          j        ||          rt          |          c S )d S )Ns+   ^[ 	]*#.*?coding[:=][ 	]*([-_.a-zA-Z0-9]+)   
r   ascii   )typebytesrecompiler   splitmatch_find_coding)sourceCODING_LINE_PATTERNr   lines       r   r   r     s    KF||u N j)<== j)<)C)CG)L)LMMWa((!,  8'.. 	&%%%%%	& 	r   c                    t          | t                    r|                     d          } d}t          }	 |                     |          t          |          z   }| |         dvrd S |dz  }|t          |           k     r^ || |                                                   r;|dz  }|t          |           k     r# || |                                                   ;|}|t          |           k     rB| |         } ||                                          s|dvrn|dz  }|t          |           k     B| ||         }t          |t                    r|	                    d          }|S # t          $ r Y d S w xY w)Nr   s   codings   =:r   s   -_)r   r   r   chrindexr   isspaceisalnumr   r   
ValueError)textcodingto_chrstartendcr   s          r   r   r     s   $ ${{7##FF

6""S[[0;e# 	F
c$ii 	FF4;$7$7$?$?$A$A 	QJE c$ii 	FF4;$7$7$?$?$A$A 	CIIo 	S	A6!99$$&& 1E> 1HC	 CIIo 	
 eCife$$ 	,]]7++F   s   /E) &DE) )
E76E7r!   )NN)__doc__r   r   r%   r   typingNewTyper   r   r   r   r
   r	   r   r   r   r   r   r   r   r   r   r9   r   r   <module>r      s    
			 				      fn]E22     $! ! ! ! ! ! ! !8. . . . . . . .80. 0. 0. 0. 0. 0. 0. 0.f               F2 2 2 2 2 2 2 2:   5 53 5 5 5 5 5	 	 	 	% % %$  "    r   