HEX
Server: LiteSpeed
System: Linux s787.bom1.mysecurecloudhost.com 4.18.0-477.13.1.lve.el8.x86_64 #1 SMP Thu Jun 1 16:40:47 EDT 2023 x86_64
User: mobilech (5348)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/context.cpython-310.pyc
o

;j��@sndZddlZddlZddlmZddlmZedd��ZGdd�de�ZGd	d
�d
e�Z	Gdd�dee
�ZdS)
z�
    :codeauthor: Pedro Algarvio (pedro@algarvio.me)
    :codeauthor: Thomas Jackson (jacksontj.89@gmail.com)


    salt.utils.context
    ~~~~~~~~~~~~~~~~~~

    Context managers used throughout Salt's source code.
�N)�MutableMapping)�contextmanagerc	ks��t|d�r|jr|j}|j}g}i}|D]}||vr"||||<q|�|�q|�|�zdVW|�|�|D]}||=q9dS|�|�|D]}||=qHw)zI
    Override specific variables within a function's global context.
    �im_funcN)�hasattrr�__func__�__globals__�append�update)�func�	overridesZfunc_globalsZinjected_func_globalsZoverridden_func_globals�overrideZinjected�r
�F/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/context.py�func_globals_injects*�

�
��rc@sneZdZdZddd�Zedd��Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�ContextDictz�
    A context manager that saves some per-thread state globally.
    Intended for use with Tornado's StackContext.

    Provide arbitrary data as kwargs upon creation,
    then allow any children to override the values of the parent.
    FcKs"t��|_d|j_i|_||_dS�N)�	threading�local�_state�data�global_data�_threadsafe)�self�
threadsaferr
r
r�__init__As

zContextDict.__init__cCs$z|jjduWStyYdSw)z�Determine if this ContextDict is currently overridden
        Since the ContextDict can be overridden in each thread, we check whether
        the _state.data is set or not.
        NF)rr�AttributeError�rr
r
r�activeKs
�zContextDict.activecCsLt|d�rd|j_z|j`Wn	tyYnwt|d�r$|j��dSdS)zB
        Destroy the ContextDict and clear internal state
        rNr)rrrrr�clearrr
r
r�destroyVs

�
�zContextDict.destroycKst||j|d�}|S)zE
        Clone this context, and return the ChildContextDict
        )�parentrr)�ChildContextDictr)r�kwargs�childr
r
r�cloneds�zContextDict.clonecCs$|jr||jj|<dS||j|<dSr�rrrr�r�key�valr
r
r�__setitem__mszContextDict.__setitem__cCs |jr
|jj|=dS|j|=dSrr%�rr'r
r
r�__delitem__sszContextDict.__delitem__cCs|jr	|jj|S|j|Srr%r*r
r
r�__getitem__y�
zContextDict.__getitem__cC�|jr	t|jj�St|j�Sr)r�lenrrrrr
r
r�__len__r-zContextDict.__len__cCr.r)r�iterrrrrr
r
r�__iter__�r-zContextDict.__iter__cCs<t|�|jd�}|jrt�|jj�|_|St�|j�|_|S�N)r)�typerr�copyrrr)r�new_objr
r
r�__copy__�s�zContextDict.__copy__cCs@t|�|jd�}|jrt�|jj|�|_|St�|j|�|_|Sr3)r4rrr5�deepcopyrrr)r�memor6r
r
r�__deepcopy__�s�zContextDict.__deepcopy__N)F)�__name__�
__module__�__qualname__�__doc__r�propertyrrr$r)r+r,r0r2r7r:r
r
r
rr8s



	rc@sReZdZdZddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�ZdS)r!z$An overrideable child of ContextDictNFcCs�||_|dur	in||_d|_|r+|jj��D]\}}||jvr(t�|�|j|<qdS|jj��D]\}}||jvr?||j|<q1dSr)r �_data�	_old_datar�itemsr5r8)rr rr�k�vr
r
rr�s
��

��zChildContextDict.__init__cCs||j|<dSr�r@r&r
r
rr)��zChildContextDict.__setitem__cCs|j|=dSrrEr*r
r
rr+��zChildContextDict.__delitem__cCs
|j|SrrEr*r
r
rr,��
zChildContextDict.__getitem__cC�
t|j�Sr)r/r@rr
r
rr0�rHzChildContextDict.__len__cCrIr)r1r@rr
r
rr2�rHzChildContextDict.__iter__cCs*t|jjd�r
|jjj|_|j|jj_dS)Nr)rr rrrAr@rr
r
r�	__enter__�szChildContextDict.__enter__cGs|j|jj_dSr)rAr rr)r�excr
r
r�__exit__��zChildContextDict.__exit__)NF)r;r<r=r>rr)r+r,r0r2rJrLr
r
r
rr!�s
r!cspeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Z�ZS)�NamespacedDictWrapperz�
    Create a dict which wraps another dict with a specific prefix of key(s)

    MUST inherit from dict to serialize through msgpack correctly
    cs4||_t|t�r
|f|_n||_t��|���dSr)�_NamespacedDictWrapper__dict�
isinstance�str�pre_keys�superr�_dict)r�drR��	__class__r
rr�s


zNamespacedDictWrapper.__init__cCs|j}|jD]}||}q|Sr)rOrR)r�rrCr
r
rrT�s

zNamespacedDictWrapper._dictcC�t|���Sr)�reprrTrr
r
r�__repr__�rGzNamespacedDictWrapper.__repr__cCs||��|<dSr�rTr&r
r
rr)�rMz!NamespacedDictWrapper.__setitem__cCs|��|=dSrr\r*r
r
rr+�rFz!NamespacedDictWrapper.__delitem__cCs|��|Srr\r*r
r
rr,�rGz!NamespacedDictWrapper.__getitem__cCrYr)r/rTrr
r
rr0�rGzNamespacedDictWrapper.__len__cCrYr)r1rTrr
r
rr2�rGzNamespacedDictWrapper.__iter__cCst|�t�|j�t�|j��Sr)r4r5rOrRrr
r
rr7�szNamespacedDictWrapper.__copy__cCs"t|�t�|j|�t�|j|��Sr)r4r5r8rOrR)rr9r
r
rr:�s�z"NamespacedDictWrapper.__deepcopy__cCs|����Sr)rT�__str__rr
r
rr]�rGzNamespacedDictWrapper.__str__)r;r<r=r>rrTr[r)r+r,r0r2r7r:r]�
__classcell__r
r
rVrrN�srN)r>r5r�collections.abcr�
contextlibrrrr!�dictrNr
r
r
r�<module>s
%d/