
    F-Ph                        d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ ddgZ ed          Z ed	          Z	 G d
 dee                   Z
 G d d          ZdS )    )annotations)Any)cast)Generic)TypeVarStashStashKeyTDc                      e Zd ZdZdZdS )r	   z``StashKey`` is an object used as a key to a :class:`Stash`.

    A ``StashKey`` is associated with the type ``T`` of the value of the key.

    A ``StashKey`` is unique and cannot conflict with another key.

    .. versionadded:: 7.0
     N)__name__
__module____qualname____doc__	__slots__r       M/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/_pytest/stash.pyr	   r	      s          IIIr   c                  V    e Zd ZdZdZddZdd
ZddZddZddZ	ddZ
ddZddZdS )r   aJ  ``Stash`` is a type-safe heterogeneous mutable mapping that
    allows keys and value types to be defined separately from
    where it (the ``Stash``) is created.

    Usually you will be given an object which has a ``Stash``, for example
    :class:`~pytest.Config` or a :class:`~_pytest.nodes.Node`:

    .. code-block:: python

        stash: Stash = some_object.stash

    If a module or plugin wants to store data in this ``Stash``, it creates
    :class:`StashKey`\s for its keys (at the module level):

    .. code-block:: python

        # At the top-level of the module
        some_str_key = StashKey[str]()
        some_bool_key = StashKey[bool]()

    To store information:

    .. code-block:: python

        # Value type must match the key.
        stash[some_str_key] = "value"
        stash[some_bool_key] = True

    To retrieve the information:

    .. code-block:: python

        # The static type of some_str is str.
        some_str = stash[some_str_key]
        # The static type of some_bool is bool.
        some_bool = stash[some_bool_key]

    .. versionadded:: 7.0
    _storagereturnNonec                    i | _         d S )Nr   selfs    r   __init__zStash.__init__H   s    57r   keyStashKey[T]valuer
   c                    || j         |<   dS )zSet a value for key.Nr   )r   r   r    s      r   __setitem__zStash.__setitem__K   s    "cr   c                B    t          t          | j        |                   S )zZGet the value for key.

        Raises ``KeyError`` if the key wasn't set before.
        )r   r
   r   r   r   s     r   __getitem__zStash.__getitem__O   s    
 At}S)***r   defaultr   T | Dc                8    	 | |         S # t           $ r |cY S w xY w)zNGet the value for key, or return default if the key wasn't set
        before.KeyErrorr   r   r&   s      r   getz	Stash.getV   s5    	9 	 	 	NNN	s   
 c                B    	 | |         S # t           $ r
 || |<   |cY S w xY w)zmReturn the value of key if already set, otherwise set the value
        of key to default and return default.r)   r+   s      r   
setdefaultzStash.setdefault^   s>    	9 	 	 	DINNN	s   
 c                    | j         |= dS )z]Delete the value for key.

        Raises ``KeyError`` if the key wasn't set before.
        Nr   r$   s     r   __delitem__zStash.__delitem__g   s    
 M#r   boolc                    || j         v S )zReturn whether key was set.r   r$   s     r   __contains__zStash.__contains__n   s    dm##r   intc                *    t          | j                  S )z)Return how many items exist in the stash.)lenr   r   s    r   __len__zStash.__len__r   s    4=!!!r   N)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   r   r   )r   r   r   r1   )r   r4   )r   r   r   r   r   r   r"   r%   r,   r.   r0   r3   r7   r   r   r   r   r      s        & &P I8 8 8 8# # # #+ + + +         $ $ $ $" " " " " "r   N)
__future__r   typingr   r   r   r   __all__r
   r   r	   r   r   r   r   <module>r;      s    " " " " " "                         J
 GCLLGCLL
 
 
 
 
wqz 
 
 
W" W" W" W" W" W" W" W" W" W"r   