HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/context.cpython-310.pyc
o

�N�g8�@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@sfeZdZdZddd�Zedd��Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�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.activecKst||j|d�}|S)zE
        Clone this context, and return the ChildContextDict
        )�parentrr)�ChildContextDictr)r�kwargs�childr
r
r�cloneWs�zContextDict.clonecCs$|jr||jj|<dS||j|<dSr�rrrr�r�key�valr
r
r�__setitem__`szContextDict.__setitem__cCs |jr
|jj|=dS|j|=dSrr#�rr%r
r
r�__delitem__fszContextDict.__delitem__cCs|jr	|jj|S|j|Srr#r(r
r
r�__getitem__l�
zContextDict.__getitem__cC�|jr	t|jj�St|j�Sr)r�lenrrrrr
r
r�__len__rr+zContextDict.__len__cCr,r)r�iterrrrrr
r
r�__iter__xr+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|�|_|Sr1)r2rrr3�deepcopyrrr)r�memor4r
r
r�__deepcopy__�s�zContextDict.__deepcopy__N)F)�__name__�
__module__�__qualname__�__doc__r�propertyrr"r'r)r*r.r0r5r8r
r
r
rr8s


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

��zChildContextDict.__init__cCs||j|<dSr�r>r$r
r
rr'��zChildContextDict.__setitem__cCs|j|=dSrrCr(r
r
rr)��zChildContextDict.__delitem__cCs
|j|SrrCr(r
r
rr*��
zChildContextDict.__getitem__cC�
t|j�Sr)r-r>rr
r
rr.�rFzChildContextDict.__len__cCrGr)r/r>rr
r
rr0�rFzChildContextDict.__iter__cCs*t|jjd�r
|jjj|_|j|jj_dS)Nr)rrrrr?r>rr
r
r�	__enter__�szChildContextDict.__enter__cGs|j|jj_dSr)r?rrr)r�excr
r
r�__exit__��zChildContextDict.__exit__)NF)r9r:r;r<rr'r)r*r.r0rHrJr
r
r
rr�s
rcspeZdZdZ�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�drP��	__class__r
rr�s


zNamespacedDictWrapper.__init__cCs|j}|jD]}||}q|Sr)rMrP)r�rrAr
r
rrR�s

zNamespacedDictWrapper._dictcC�t|���Sr)�reprrRrr
r
r�__repr__�rEzNamespacedDictWrapper.__repr__cCs||��|<dSr�rRr$r
r
rr'�rKz!NamespacedDictWrapper.__setitem__cCs|��|=dSrrZr(r
r
rr)�rDz!NamespacedDictWrapper.__delitem__cCs|��|SrrZr(r
r
rr*�rEz!NamespacedDictWrapper.__getitem__cCrWr)r-rRrr
r
rr.�rEzNamespacedDictWrapper.__len__cCrWr)r/rRrr
r
rr0�rEzNamespacedDictWrapper.__iter__cCst|�t�|j�t�|j��Sr)r2r3rMrPrr
r
rr5�szNamespacedDictWrapper.__copy__cCs"t|�t�|j|�t�|j|��Sr)r2r3r6rMrP)rr7r
r
rr8�s�z"NamespacedDictWrapper.__deepcopy__cCs|����Sr)rR�__str__rr
r
rr[�rEzNamespacedDictWrapper.__str__)r9r:r;r<rrRrYr'r)r*r.r0r5r8r[�
__classcell__r
r
rTrrL�srL)r<r3r�collections.abcr�
contextlibrrrr�dictrLr
r
r
r�<module>s
%W/