File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/parsers.cpython-310.pyc
o
�N�g~� � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl
mZ ddlZ
ddlmZ ddlZ
ddlZ
ddlmZ ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
ddlm Z ddl!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z( e�)e*�Z+dd� Z,G d d
� d
e-�Z.G dd� de/�Z0G d
d� de0�Z1G dd� dej2�Z3G dd� dej4�Z4G dd� de0d�Z5G dd� de0d�Z6G dd� de0d�Z7G dd� de0d�Z8G dd� de0d�Z9G dd� de0d�Z:G d d!� d!e0d�Z;G d"d#� d#e0d�Z<G d$d%� d%e0d�Z=G d&d'� d'e=�Z>G d(d)� d)e0d�Z?G d*d+� d+e0d�Z@G d,d-� d-e0d�ZAG d.d/� d/e0d�ZBG d0d1� d1e0d�ZCG d2d3� d3e0d�ZDG d4d5� d5e0d�ZEG d6d7� d7e0d�ZFG d8d9� d9e0d�ZGG d:d;� d;e0d�ZHG d<d=� d=e0d�ZIG d>d?� d?e0d�ZJG d@dA� dA�ZKG dBdC� dCe4e9e5e:e;e<e6e1d�
ZLG dDdE� dEeLe1d�ZMG dFdG� dGe4eAe9e5e:e;e<e6e1d�ZNG dHdI� dIe4e9e5e:e;e<e6e1d�
ZOG dJdK� dKe4e9e5e?e>eDe:eBe7e6e@eJe8e1d�ZPG dLdM� dMe4eDe9e5e?e=e:e7e6e1d�ZQG dNdO� dOe4e9e5e:eDe;e7e6eJe1d�ZRG dPdQ� dQe4eAe9eBe5e:eDe7e6e@eHe8eCe1d�ZSG dRdS� dSe4e9e5e?e:e7e6eDe@eHeJe8eKe1d�ZTG dTdU� dUe4e9e5e:e=eDe6e7e8eKe1d�
ZUG dVdW� dWe4e:e5eDe9eFeEeGeIe7e6e1d�ZVG dXdY� dYe4e9e:e5e6e1d�ZWG dZd[� d[e4e9e:e<e5e1d�ZXdS )\z�
:codeauthor: Pedro Algarvio (pedro@algarvio.me)
salt.utils.parsers
~~~~~~~~~~~~~~~~~~
This is where all the black magic happens on all of salt's CLI tools.
� N)�partial)�DEFAULT_TARGET_DELIM)�is_writeable)�insecure_log�
verify_log�verify_log_filesc C s t | dd� d�S )Nc S s t | dd�S )N�_mixin_prio_�� )�getattr)Zmf� r �F/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/parsers.py�<lambda>2 s z_sorted.<locals>.<lambda>)�key)�sorted)Zmixins_or_funcsr r r �_sorted1 � r c @ � e Zd Zdd� ZdS )�MixinFuncsContainerc C s. t |tj�r |j}|| vrt�| |� d S d S �N)�
isinstance�types�
MethodType�__func__�list�append)�self�funcr r r r 6 s
�zMixinFuncsContainer.appendN)�__name__�
__module__�__qualname__r r r r r r 5 � r c s e Zd ZdZ� fdd�Z� ZS )� MixInMetar c s2 t � �| |||�}t|d�std�| j|���|S )N�_mixin_setupzNDon't subclass {} in {} if you're not going to use it as a salt parser mix-in.)�super�__new__�hasattr�RuntimeError�formatr )�mcs�name�bases�attrs�instance�� __class__r r r$ E s
�zMixInMeta.__new__)r r r r r$ �
__classcell__r r r- r r! ? s r! c s e Zd Z� fdd�Z� ZS )�OptionParserMetac s4 t � �| |||�}t|d�st� |_t|d�st� |_t|d�s$t� |_t|d�s-t� |_t||f �D ]c}t |dd �}|d urK||jvrK|j�
|� t |dd �}|d ur`||jvr`|j�
|� t |dd �}|d uru||jvru|j�
|� t|�D ]}|�d�s�qyt ||�}t |d d �d ur�qyt |d d
�|_
qyq4|S )N�_mixin_setup_funcs�_mixin_process_funcs�_mixin_after_parsed_funcs�_mixin_before_exit_funcsr"