<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]m                 @   s  d  d l  m Z d Z d  d l Z d  d l 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 m Z m Z d d l m Z d d l m Z m Z d d	 l m Z d d
 l m Z d d d  Z Gd d   d e  Z d d   Z d d   Z d d   Z d d   Z e j d d  f k  rjd  d l  Z  e  j! Z" d d   Z# d d   Z$ n e! Z" e Z# e Z$ d d   Z% Gd d    d  e  Z& Gd! d"   d" e'  Z( Gd# d$   d$ e  Z) Gd% d&   d& e(  Z* d S)'    )with_statementz#Guido van Rossum <guido@python.org>N)chain   )drivertokenizetoken)	find_root)pytreepygram)	btm_utils)btm_matcherTc             C   s   t  |  g  g  d g  } t j j | j  } g  } xh t t j |   D]Q } | j d  rI | j d  rI | r | d d   } | j	 | d  d   qI W| S)N*fix_z.py      )

__import__ospathdirname__file__sortedlistdir
startswithendswithappend)Z	fixer_pkgZremove_prefixZpkgZ	fixer_dirZ	fix_namesname r   -/opt/alt/python35/lib64/python3.5/refactor.pyget_all_fix_names!   s    r   c               @   s   e  Z d  Z d S)
_EveryNodeN)__name__
__module____qualname__r   r   r   r   r    .   s   r    c             C   s   t  |  t j t j f  r: |  j d  k r0 t  |  j h St  |  t j  rh |  j rb t |  j  St  t  |  t j	  r t
   } x5 |  j D]* } x! | D] } | j t |   q Wq W| St d |    d  S)Nz$Oh no! I don't understand pattern %s)
isinstancer	   ZNodePatternZLeafPatterntyper    ZNegatedPatternZcontent_get_head_typesZWildcardPatternsetupdate	Exception)patrpxr   r   r   r&   2   s    
		r&   c             C   s  t  j t  } g  } x |  D] } | j r y t | j  } Wn t k
 r_ | j |  Yq XxU | D] } | | j |  qg Wq | j d  k	 r | | j j |  q | j |  q Wx: t t	 j
 j j   t	 j
 j  D] } | | j |  q Wt |  S)N)collectionsdefaultdictlistpatternr&   r    r   Z_accept_typer   r
   python_grammarZsymbol2numbervaluestokensextenddict)Z
fixer_listZ
head_nodesZeveryfixerZheadsZ	node_typer   r   r   _get_headnode_dictN   s"    	r8   c                s      f d d   t    d  D S)Nc                s   g  |  ] }   d  |  q S).r   ).0fix_name)pkg_namer   r   
<listcomp>k   s   	z+get_fixers_from_package.<locals>.<listcomp>F)r   )r<   r   )r<   r   get_fixers_from_packageg   s    r>   c             C   s   |  S)Nr   )objr   r   r   	_identityn   s    r@   r   c             C   s   |  j  d d  S)Nz

)replace)inputr   r   r   _from_system_newlinesu   s    rD   c             C   s*   t  j d k r" |  j d t  j  S|  Sd  S)NrA   )r   lineseprB   )rC   r   r   r   _to_system_newlinesw   s    rF   c                s  d } t  j t j |   j      f d d   } t t j t  j t j	 h  } t
   } yVxO|   \ } } | | k r q` q` | t j k r | r Pd } q` | t j k r| d k r|   \ } } | t j k s | d k r P|   \ } } | t j k s| d k rP|   \ } } | t j k rJ| d k rJ|   \ } } x^ | t j k r| j |  |   \ } } | t j k s| d	 k rP|   \ } } qMWq` Pq` WWn t k
 rYn Xt |  S)
NFc                 s   t     }  |  d |  d f S)Nr   r   )next)tok)genr   r   advance   s    z(_detect_future_features.<locals>.advanceTfrom
__future__import(,)r   generate_tokensioStringIOreadline	frozensetr   NEWLINENLCOMMENTr'   STRINGNAMEOPaddStopIteration)sourceZhave_docstringrJ   ignorefeaturestpvaluer   )rI   r   _detect_future_features   sD    			rb   c               @   s   e  Z d  Z d S)
FixerErrorN)r!   r"   r#   r   r   r   r   rc      s   rc   c               @   si  e  Z d  Z d d d d i Z d Z d Z d d d d  Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d d d d  Z d d d d  Z d d   Z d d d d  Z d d   Z d d d  Z d d    Z d! d"   Z d d d d# d$  Z d d% d&  Z d' Z d( Z d) d*   Z d+ d,   Z d- d.   Z d/ d0   Z d1 d2   Z d3 d4   Z d S)5RefactoringToolprint_functionFwrite_unchanged_filesZFixr   Nc             C   s  | |  _  | p g  |  _ |  j j   |  _ | d  k	 rF |  j j |  |  j d rb t j |  _ n t j	 |  _ |  j j
 d  |  _ g  |  _ t j d  |  _ g  |  _ d |  _ t j |  j d t j d |  j |  _ |  j   \ |  _ |  _ g  |  _ t j   |  _ g  |  _ g  |  _ xz t |  j |  j  D]c } | j  rQ|  j j! |  q/| |  j k rs|  j j" |  q/| |  j k r/|  j j" |  q/Wt# |  j  |  _$ t# |  j  |  _% d  S)Nre   rf   rd   Fconvertlogger)&fixersexplicit_default_optionscopyoptionsr(   r
   !python_grammar_no_print_statementgrammarr2   getrf   errorslogging	getLoggerrh   	fixer_logwroter   ZDriverr	   rg   
get_fixers	pre_order
post_orderfilesbmZBottomMatcherBMZbmi_pre_orderZbmi_post_orderr   ZBM_compatibleZ	add_fixerr   r8   bmi_pre_order_headsbmi_post_order_heads)selfZfixer_namesrm   rj   r7   r   r   r   __init__   s<    									zRefactoringTool.__init__c             C   s  g  } g  } x|  j  D]} t | i  i  d g  } | j d d  d } | j |  j  ru | t |  j  d   } | j d  } |  j d j d d   | D  } y t	 | |  } Wn( t
 k
 r t d | | f   Yn X| |  j |  j  }	 |	 j r4|  j d	 k	 r4| |  j k r4|  j d
 |  q |  j d |  |	 j d k rc| j |	  q |	 j d k r| j |	  q t d |	 j   q Wt j d  }
 | j d |
  | j d |
  | | f S)Nr   r9   r   _ c             S   s   g  |  ] } | j     q Sr   )title)r:   r,   r   r   r   r=      s   	 z.RefactoringTool.get_fixers.<locals>.<listcomp>zCan't find %s.%sTzSkipping optional fixer: %szAdding transformation: %spreZpostzIllegal fixer order: %rZ	run_orderkey)ri   r   rsplitr   FILE_PREFIXlensplitCLASS_PREFIXjoingetattrAttributeErrorrc   rm   rt   rj   log_message	log_debugorderr   operator
attrgettersort)r~   Zpre_order_fixersZpost_order_fixersZfix_mod_pathmodr;   parts
class_nameZ	fix_classr7   Zkey_funcr   r   r   rv      s8    #zRefactoringTool.get_fixersc             O   s     d  S)Nr   )r~   msgargskwdsr   r   r   	log_error  s    zRefactoringTool.log_errorc             G   s$   | r | | } |  j  j |  d  S)N)rh   info)r~   r   r   r   r   r   r     s    
zRefactoringTool.log_messagec             G   s$   | r | | } |  j  j |  d  S)N)rh   debug)r~   r   r   r   r   r   r     s    
zRefactoringTool.log_debugc             C   s   d  S)Nr   )r~   old_textnew_textfilenameequalr   r   r   print_output!  s    zRefactoringTool.print_outputc             C   sP   xI | D]A } t  j j |  r5 |  j | | |  q |  j | | |  q Wd  S)N)r   r   isdirrefactor_dirrefactor_file)r~   itemswritedoctests_onlyZdir_or_filer   r   r   refactor&  s    zRefactoringTool.refactorc       
      C   s   t  j d } x t  j |  D] \ } } } |  j d |  | j   | j   xb | D]Z } | j d  rW t  j j |  d | k rW t  j j | |  }	 |  j	 |	 | |  qW Wd d   | D | d  d   <q Wd  S)NpyzDescending into %sr9   r   c             S   s%   g  |  ] } | j  d   s |  q S)r9   )r   )r:   Zdnr   r   r   r=   A  s   	 z0RefactoringTool.refactor_dir.<locals>.<listcomp>)
r   extsepwalkr   r   r   r   splitextr   r   )
r~   Zdir_namer   r   Zpy_extdirpathdirnames	filenamesr   fullnamer   r   r   r   /  s    

zRefactoringTool.refactor_dirc             C   s   y t  | d  } Wn< t k
 rQ } z |  j d | |  d SWYd  d  } ~ Xn Xz t j | j  d } Wd  | j   Xt | d d |  } t | j	    | f SWd  QRXd  S)NrbzCan't open %s: %sr   r+   encoding)NN)
openOSErrorr   r   detect_encodingrS   close_open_with_encodingrD   read)r~   r   ferrr   r   r   r   _read_python_sourceC  s    z#RefactoringTool._read_python_sourcec             C   s  |  j  |  \ } } | d  k r% d  S| d 7} | r |  j d |  |  j | |  } |  j sl | | k r |  j | | | | |  q|  j d |  ni |  j | |  } |  j s | r | j r |  j t |  d  d  | d | d | n |  j d |  d  S)	NrA   zRefactoring doctests in %szNo doctest changes in %sr   r   r   zNo changes in %sr   )r   r   refactor_docstringrf   processed_filerefactor_stringwas_changedstr)r~   r   r   r   rC   r   outputtreer   r   r   r   S  s    
zRefactoringTool.refactor_filec             C   s   t  |  } d | k r' t j |  j _ zb y |  j j |  } WnE t k
 r } z% |  j d | | j j	 |  d  SWYd  d  } ~ Xn XWd  |  j |  j _ X| | _
 |  j d |  |  j | |  | S)Nre   zCan't parse %s: %s: %szRefactoring %s)rb   r
   rn   r   ro   Zparse_stringr)   r   	__class__r!   future_featuresr   refactor_tree)r~   datar   r_   r   r   r   r   r   r   j  s    		zRefactoringTool.refactor_stringc             C   s   t  j j   } | ro |  j d  |  j | d  } |  j sI | | k r_ |  j | d |  q |  j d  nS |  j | d  } |  j s | r | j r |  j t	 |  d |  n |  j d  d  S)NzRefactoring doctests in stdinz<stdin>zNo doctest changes in stdinzNo changes in stdin)
sysstdinr   r   r   rf   r   r   r   r   )r~   r   rC   r   r   r   r   r   refactor_stdin  s    zRefactoringTool.refactor_stdinc       
      C   s  x- t  |  j |  j  D] } | j | |  q W|  j |  j | j    |  j |  j | j    |  j j | j	    } xt
 | j    rLx|  j j D]} | | k r | | r | | j d t j j d d  | j r | | j d t j j  xGt | |  D]5} | | | k r3| | j |  y t |  Wn t k
 rXwYn X| j rt| | j k rtq| j |  } | r| j | |  } | d  k	 r| j |  x6 | j   D]( } | j sg  | _ | j j |  qW|  j j | j	    } x9 | D]1 }	 |	 | k r(g  | |	 <| |	 j | |	  qWqWq Wq} Wx- t  |  j |  j  D] } | j | |  qcW| j S)Nr   reverseT)r   rw   rx   Z
start_treetraverse_byr|   r}   r{   runZleavesanyr3   ri   r   r	   ZBasedepthZkeep_line_orderZ
get_linenor0   remover   
ValueErrorZfixers_appliedmatch	transformrB   r   r5   Zfinish_treer   )
r~   r   r   r7   Z	match_setnoderesultsnewZnew_matchesZfxrr   r   r   r     sJ     			
%zRefactoringTool.refactor_treec             C   s}   | s
 d  Sxl | D]d } x[ | | j  D]L } | j |  } | r% | j | |  } | d  k	 r% | j |  | } q% Wq Wd  S)N)r%   r   r   rB   )r~   ri   Z	traversalr   r7   r   r   r   r   r   r     s    zRefactoringTool.traverse_byc             C   s   |  j  j |  | d  k r? |  j |  d } | d  k r? d  S| | k } |  j | | | |  | r |  j d |  |  j s d  S| r |  j | | | |  n |  j d |  d  S)Nr   zNo changes to %szNot writing changes to %s)ry   r   r   r   r   rf   
write_file)r~   r   r   r   r   r   r   r   r   r   r     s    	zRefactoringTool.processed_filec          %   C   s   y t  | d d | } Wn< t k
 rW } z |  j d | |  d  SWYd  d  } ~ Xn XzV y | j t |   Wn8 t k
 r } z |  j d | |  WYd  d  } ~ Xn XWd  | j   X|  j d |  d |  _ d  S)Nwr   zCan't create %s: %szCan't write %s: %szWrote changes to %sT)r   r   r   r   rF   r   r   ru   )r~   r   r   r   r   r   r   r   r   r   r     s    *zRefactoringTool.write_filez>>> z... c       
      C   s  g  } d  } d  } d  } d } x.| j  d d  D]} | d 7} | j   j |  j  r | d  k	 r | j |  j | | | |   | } | g } | j |  j  }	 | d  |	  } q1 | d  k	 r| j | |  j  s | | |  j j   d k r| j	 |  q1 | d  k	 r2| j |  j | | | |   d  } d  } | j	 |  q1 W| d  k	 rz| j |  j | | | |   d j
 |  S)Nr   keependsTr   rA   r   )
splitlineslstripr   PS1r5   refactor_doctestfindPS2rstripr   r   )
r~   rC   r   resultblockZblock_linenoindentlinenolineir   r   r   r   (  s:    
	z"RefactoringTool.refactor_docstringc       
         s^  y  j  | |    } Wn t k
 r } zg  j j t j  rm x' | D] }  j d | j d   qJ W j d | | | j	 j
 |  | SWYd  d  } ~ Xn X j | |  rZt |  j d d  } | d  | d  | | d d   }	 } | d
 j d  s| d d 7<   j | j d  g } | rZ|    f d d	   | D 7} | S)Nz
Source: %srA   z+Can't parse docstring in %s line %s: %s: %sr   Tr   r   c                s!   g  |  ] }    j  |  q Sr   )r   )r:   r   )r   r~   r   r   r=   m  s   	 z4RefactoringTool.refactor_doctest.<locals>.<listcomp>r   r   )parse_blockr)   rh   isEnabledForrr   DEBUGr   r   r   r   r!   r   r   r   r   r   pop)
r~   r   r   r   r   r   r   r   r   Zclippedr   )r   r~   r   r   S  s$    	) z RefactoringTool.refactor_doctestc             C   s  |  j  r d } n d } |  j s4 |  j d |  n1 |  j d |  x |  j D] } |  j |  qN W|  j r |  j d  x |  j D] } |  j |  q W|  j rt |  j  d k r |  j d  n |  j d t |  j   x- |  j D]" \ } } } |  j | | |  q Wd  S)	Nwerez
need to bezNo files %s modified.zFiles that %s modified:z$Warnings/messages while refactoring:r   zThere was 1 error:zThere were %d errors:)ru   ry   r   rt   rq   r   )r~   r   filemessager   r   r   r   r   r   	summarizep  s$    					zRefactoringTool.summarizec             C   s1   |  j  j |  j | | |   } t   | _ | S)N)r   Zparse_tokens	wrap_toksrT   r   )r~   r   r   r   r   r   r   r   r     s    !zRefactoringTool.parse_blockc             c   s   t  j |  j | |  j  } xe | D]] \ } } \ } } \ }	 }
 } | | d 7} |	 | d 7}	 | | | | f |	 |
 f | f Vq% Wd  S)Nr   )r   rP   	gen_lines__next__)r~   r   r   r   r4   r%   ra   Zline0Zcol0Zline1Zcol1Z	line_textr   r   r   r     s
    (zRefactoringTool.wrap_toksc             c   s   | |  j  } | |  j } | } xo | D]g } | j |  rT | t |  d   Vn4 | | j   d k rr d Vn t d | | f   | } q' Wx	 d Vq Wd  S)NrA   zline=%r, prefix=%rr   )r   r   r   r   r   AssertionError)r~   r   r   Zprefix1Zprefix2prefixr   r   r   r   r     s    
zRefactoringTool.gen_lines)r!   r"   r#   rk   r   r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rd      s:   4(	O+
rd   c               @   s   e  Z d  Z d S)MultiprocessingUnsupportedN)r!   r"   r#   r   r   r   r   r     s   r   c                   sa   e  Z d  Z   f d d   Z d d d   f d d  Z   f d d   Z   f d	 d
   Z   S)MultiprocessRefactoringToolc                s/   t  t |   j | |   d  |  _ d  |  _ d  S)N)superr   r   queueoutput_lock)r~   r   kwargs)r   r   r   r     s    	z$MultiprocessRefactoringTool.__init__Fr   c                sU  | d k r( t  t   j | | |  Sy d d  l   Wn t k
 rR t  Yn X j d  k	 rn t d     j    _   j	    _
    f d d   t |  D } z; x | D] } | j   q Wt  t   j | | |  Wd   j j   x$ t |  D] }  j j d   qWx$ | D] } | j   r'| j   q'Wd   _ Xd  S)Nr   r   z already doing multiple processesc                s%   g  |  ] }   j  d   j   q S)target)Process_child)r:   r   )multiprocessingr~   r   r   r=     s   	z8MultiprocessRefactoringTool.refactor.<locals>.<listcomp>)r   r   r   r   ImportErrorr   r   RuntimeErrorJoinableQueueLockr   rangestartr   putis_alive)r~   r   r   r   Znum_processes	processesr,   r   )r   )r   r~   r   r     s2    z$MultiprocessRefactoringTool.refactorc          
      so   |  j  j   } xY | d  k	 rj | \ } } z t t |   j | |   Wd  |  j  j   X|  j  j   } q Wd  S)N)r   rp   r   r   r   	task_done)r~   Ztaskr   r   )r   r   r   r     s    z"MultiprocessRefactoringTool._childc                sE   |  j  d  k	 r( |  j  j | | f  n t t |   j | |   Sd  S)N)r   r  r   r   r   )r~   r   r   )r   r   r   r     s    z)MultiprocessRefactoringTool.refactor_file)r!   r"   r#   r   r   r   r   r   r   )r   r   r     s
   r   )+rL   r   
__author__r   r   rr   r   r.   rQ   	itertoolsr   Zpgen2r   r   r   Z
fixer_utilr   r   r	   r
   r   Zbur   rz   r   r)   r    r&   r8   r>   r@   version_infocodecsr   r   rD   rF   rb   rc   objectrd   r   r   r   r   r   r   <module>   sD   	(  