a
    3e                     @   s  d Z ddlmZ ddlmZ G dd deZG dd deZG dd	 d	eZG d
d deZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdd ZG dd deZG d d! d!eZG d"d# d#eZd$S )%z_ Checks assigning attributes not found in class slots
will trigger assigning-non-slot warning.
    )deque)Unknownc                   @   s   e Zd ZdZdS )Emptyz empty N)__name__
__module____qualname____doc__ r	   r	   k/var/www/test.vcks.de/backend/venv/lib/python3.9/site-packages/pylint/test/functional/assigning_non_slot.pyr   	   s   r   c                   @   s   e Zd ZdZdgZdd ZdS )Badz missing not in slots. memberc                 C   s
   d| _ d S N*   missingselfr	   r	   r
   __init__   s    zBad.__init__Nr   r   r   r   	__slots__r   r	   r	   r	   r
   r      s   r   c                   @   s"   e Zd ZdZej dgZdd ZdS )Bad2z missing not in slots r   c                 C   s   d| _ d| _d S r   )r   r   r   r	   r	   r
   r      s    zBad2.__init__N)r   r   r   r   r   r   r   r	   r	   r	   r
   r      s   
r   c                       s&   e Zd ZdZdgZ fddZ  ZS )Bad3z missing not found in slots 	componentc                    s$   d| _ d| _d| _tt|   d S Nr      )r   r   r   superr   r   r   	__class__r	   r
   r   !   s    zBad3.__init__)r   r   r   r   r   r   __classcell__r	   r	   r   r
   r      s   r   c                   @   s   e Zd ZdZdgZdd ZdS )GoodzD missing not in slots, but Empty doesn't
    specify __slots__.
    ac                 C   s
   d| _ d S r   r   r   r	   r	   r
   r   -   s    zGood.__init__Nr   r	   r	   r	   r
   r   '   s   r   c                   @   s    e Zd ZdZddgZdd ZdS )Good2z' Using __dict__ in slots will be safe. __dict__compc                 C   s   d| _ d| _d S )N      )r#   r   r   r	   r	   r
   r   5   s    zGood2.__init__Nr   r	   r	   r	   r
   r!   0   s   r!   c                   @   s:   e Zd ZdZddgZedd Zejdd Zdd Zd	S )
PropertyGoodz Using properties is safe. tmp_valuec                 C   s   | j S Nr(   r   r	   r	   r
   test>   s    zPropertyGood.testc                 C   s
   || _ d S r)   r*   r   valuer	   r	   r
   r+   B   s    c                 C   s
   d| _ d S r   r+   r   r	   r	   r
   r   G   s    zPropertyGood.__init__N)	r   r   r   r   r   propertyr+   setterr   r	   r	   r	   r
   r&   9   s   

r&   c                   @   s8   e Zd ZdZdgZdd Zdd ZeeeZdd Z	d	S )
PropertyGood2z4 Using properties in the body of the class is safe. r(   c                 C   s   | j S r)   r*   r   r	   r	   r
   _getterN   s    zPropertyGood2._getterc                 C   s
   || _ d S r)   r*   r,   r	   r	   r
   _setterQ   s    zPropertyGood2._setterc                 C   s
   d| _ d S )Nr   r.   r   r	   r	   r
   r   W   s    zPropertyGood2.__init__N)
r   r   r   r   r   r2   r3   r/   r+   r   r	   r	   r	   r
   r1   J   s   
r1   c                   @   s   e Zd ZdZdZdd ZdS )UnicodeSlotszUsing unicode objects in __slots__ is okay.

    On Python 3.3 onward, u'' is equivalent to '',
    so this test should be safe for both versions.
    firstsecondc                 C   s   d| _ d| _d S r   r5   r   r	   r	   r
   r   b   s    zUnicodeSlots.__init__Nr   r	   r	   r	   r
   r4   Z   s   r4   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
DataDescriptor c                 C   s   || _ || _d S r)   )_DataDescriptor__name_DataDescriptor__default)r   namedefaultr	   r	   r
   r   h   s    zDataDescriptor.__init__c                 C   s   t || j| jS r)   )getattrr:   r;   r   instclsr	   r	   r
   __get__l   s    zDataDescriptor.__get__c                 C   s   t || j| d S r)   )setattrr:   )r   r@   r-   r	   r	   r
   __set__o   s    zDataDescriptor.__set__N)r9   )r   r   r   r   rB   rD   r	   r	   r	   r
   r8   g   s   
r8   c                   @   s   e Zd Zdd ZdS )NonDataDescriptorc                 C   s   dS r   r	   r?   r	   r	   r
   rB   t   s    zNonDataDescriptor.__get__N)r   r   r   rB   r	   r	   r	   r
   rE   s   s   rE   c                   @   s&   e Zd ZdgZedZe Ze Z	dS )SlotsWithDescriptorZ_errN)
r   r   r   r   r8   data_descriptorrE   non_data_descriptorr   Zmissing_descriptorr	   r	   r	   r
   rF   x   s   rF   c                  C   s   t  } d| _d| _d S )NZfooZlala)rF   rG   rH   )r@   r	   r	   r
   dont_emit_for_descriptors   s    rI   c                   @   s   e Zd ZdgZdS )ClassWithSlotsfoobarN)r   r   r   r   r	   r	   r	   r
   rJ      s   rJ   c                   @   s   e Zd ZdgZdd ZdS )ClassReassigningDunderClassrK   c                 C   s
   t | _d S r)   rJ   r   r   r	   r	   r
   release   s    z#ClassReassigningDunderClass.releaseNr   r   r   r   rN   r	   r	   r	   r
   rL      s   rL   c                   @   s   e Zd Zg Zdd ZdS )"ClassReassingingInvalidLayoutClassc                 C   s
   t | _d S r)   rM   r   r	   r	   r
   rN      s    z*ClassReassingingInvalidLayoutClass.releaseNrO   r	   r	   r	   r
   rP      s   rP   N)r   collectionsr   r   r   objectr   r   r   r   r   r!   r&   r1   r4   r8   rE   rF   rI   rJ   rL   rP   r	   r	   r	   r
   <module>   s$   		