
    ;ȋh                        d dl mZ d dlmZ d dlZddlmZ  G d d          Zde	d	e
d
e
ddfdZ G d de
e          Z G d dee          Z G d dee          ZdD ]Z eeed            G d dee          ZdD ]Z eeed            G d dej        j        e          Z ed          ZdedefdZe
eeeeeeeiZdedefdZdedefdZ e            Z e            ZdS )     )wraps)TypeVarN   )SetuptoolsDeprecationWarningc                   "    e Zd ZU dZdZeed<   dS )Statica`  
    Wrapper for built-in object types that are allow setuptools to identify
    static core metadata (in opposition to ``Dynamic``, as defined :pep:`643`).

    The trick is to mark values with :class:`Static` when they come from
    ``pyproject.toml`` or ``setup.cfg``, so if any plugin overwrite the value
    with a built-in, setuptools will be able to recognise the change.

    We inherit from built-in classes, so that we don't need to change the existing
    code base to deal with the new types.
    We also should strive for immutability objects to avoid changes after the
    initial parsing.
    F	_mutated_N)__name__
__module____qualname____doc__r	   bool__annotations__     O/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/_static.pyr   r   	   s.           Itr   r   targetmethodcopyingreturnc                     t          | |d          dS t                    dt          ffd            }d|_        t	          | ||           dS )a	  
    Because setuptools is very flexible we cannot fully prevent
    plugins and user customizations from modifying static values that were
    parsed from config files.
    But we can attempt to block "in-place" mutations and identify when they
    were done.
    Nselfc                 `    d| _         t          j        dd dd            | g|R i |S )NTz/Direct modification of value will be disallowedz
            In an effort to implement PEP 643, direct/in-place changes of static values
            that come from configuration files are deprecated.
            If you need to modify this value, please first create a copy with z
            and make sure conform to all relevant standards when overriding setuptools
            functionality (https://packaging.python.org/en/latest/specifications/).
            )i  
   r   )due_date)r	   r   emit)r   argskwargsr   fns      r   _replacementz+_prevent_modification.<locals>._replacement'   sk     $)= PW   $
	
 
	
 
	
 
	
 r$(((((((r    )getattrr   r   r   setattr)r   r   r   r    r   s     ` @r   _prevent_modificationr$      s}     
	&	&B	z
2YY)6 ) ) ) ) ) ) Y)" LFFL)))))r   c                       e Zd ZdS )StrNr
   r   r   r   r   r   r&   r&   =           Dr   r&   c                       e Zd ZdS )TupleNr'   r   r   r   r*   r*   A   r(   r   r*   c                       e Zd ZdZdS )Lista  
    :meta private:
    >>> x = List([1, 2, 3])
    >>> is_static(x)
    True
    >>> x += [0]  # doctest: +IGNORE_EXCEPTION_DETAIL
    Traceback (most recent call last):
    SetuptoolsDeprecationWarning: Direct modification ...
    >>> is_static(x)  # no longer static after modification
    False
    >>> y = list(x)
    >>> y.clear()
    >>> y
    []
    >>> y == x
    False
    >>> is_static(List(y))
    True
    Nr
   r   r   r   r   r   r   r,   r,   E   s           r   r,   )
__delitem____iadd____setitem__appendclearextendinsertremovereversepopz`list(value)`c                       e Zd ZdZdS )Dicta  
    :meta private:
    >>> x = Dict({'a': 1, 'b': 2})
    >>> is_static(x)
    True
    >>> x['c'] = 0  # doctest: +IGNORE_EXCEPTION_DETAIL
    Traceback (most recent call last):
    SetuptoolsDeprecationWarning: Direct modification ...
    >>> x._mutated_
    True
    >>> is_static(x)  # no longer static after modification
    False
    >>> y = dict(x)
    >>> y.popitem()
    ('b', 2)
    >>> y == x
    False
    >>> is_static(Dict(y))
    True
    Nr-   r   r   r   r9   r9   l   s           r   r9   )r.   __ior__r0   r2   r7   popitem
setdefaultupdatez`dict(value)`c                       e Zd ZdZdS )SpecifierSetz>Not exactly a built-in type but useful for ``requires-python``Nr-   r   r   r   r?   r?      s        HHHHr   r?   Tvaluec                     | S )z
    >>> noop(42)
    42
    r   rA   s    r   nooprD      s	    
 Lr   c                 l    t                              t          |           t                    |           S )zc
    >>> is_static(attempt_conversion("hello"))
    True
    >>> is_static(object())
    False
    )_CONVERSIONSgettyperD   rC   s    r   attempt_conversionrI      s(     DKK..u555r   c                 <    t          | t                    o| j         S )z
    >>> is_static(a := Dict({'a': 1}))
    True
    >>> is_static(dict(a))
    False
    >>> is_static(b := List([1, 2, 3]))
    True
    >>> is_static(list(b))
    False
    )
isinstancer   r	   rC   s    r   	is_staticrL      s     eV$$<U_)<<r   )	functoolsr   typingr   packaging.specifiers	packagingwarningsr   r   rH   strr$   r&   tupler*   listr,   _methoddictr9   
specifiersr?   r@   rD   rF   rI   objectr   rL   
EMPTY_LIST
EMPTY_DICTr   r   r   <module>r[      s                   2 2 2 2 2 2       $*$ * *c *d * * * *D	 	 	 	 	#v 	 	 		 	 	 	 	E6 	 	 	    4   0 : :G $9999    4   0	 
: 
:G $9999I I I I I9'4f I I I GCLL a     S%dD$?6a 6A 6 6 6 6=V = = = = = TVV
TVV


r   