File: //opt/saltstack/salt/lib/python3.10/lib2to3/__pycache__/refactor.cpython-310.pyc
o
�N�gsk � @ s d Z dZddlZddlZddlZddlZddlZddlZddlZddl m
Z
ddlmZm
Z
mZ ddlmZ ddlmZmZ dd lmZ d!dd�ZG d
d� de�Zdd� Zdd� Zdd� Zdd� Zdd� ZG dd� de�ZG dd� de�Z G dd� de�Z!G dd � d e �Z"dS )"z�Refactoring framework.
Used as a main program, this can refactor any number of files and/or
recursively descend down directories. Imported as a module, this
provides infrastructure to write your own refactoring tool.
z#Guido van Rossum <guido@python.org>� N)�chain� )�driver�tokenize�token)� find_root)�pytree�pygram)�btm_matcherTc C sT t | g g dg�}g }t�|j�D ]\}}}|�d�r'|r"|dd� }|�|� q|S )zEReturn a sorted list of all available fix names in the given package.�*�fix_� N)�
__import__�pkgutilZiter_modules�__path__�
startswith�append)Z fixer_pkgZ
remove_prefixZpkgZ fix_names�finder�nameZispkg� r �6/opt/saltstack/salt/lib/python3.10/lib2to3/refactor.py�get_all_fix_names s
�r c @ � e Zd ZdS )�
_EveryNodeN��__name__�
__module__�__qualname__r r r r r + � r c C s� t | tjtjf�r| jdu rt�| jhS t | tj�r$| jr"t| j�S t�t | tj �rAt
� }| jD ]}|D ] }|�t|�� q4q0|S td| ��)zf Accepts a pytree Pattern Node and returns a set
of the pattern types which will match first. Nz$Oh no! I don't understand pattern %s)
�
isinstancer ZNodePatternZLeafPattern�typer ZNegatedPattern�content�_get_head_typesZWildcardPattern�set�update� Exception)�pat�r�p�xr r r r"