ó
'![c           @   s}  d  Z  d d l m Z d d l m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ	 d e f d „  ƒ  YZ
 d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d e f d „  ƒ  YZ d e f d  „  ƒ  YZ d! e f d" „  ƒ  YZ d# S($   s_    Checks assigning attributes not found in class slots
will trigger assigning-non-slot warning.
iÿÿÿÿ(   t   deque(   t   Unknownt   Emptyc           B   s   e  Z d  Z RS(   s    empty (   t   __name__t
   __module__t   __doc__(    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR   	   s   t   Badc           B   s    e  Z d  Z d g Z d „  Z RS(   s    missing not in slots. t   memberc         C   s   d |  _  d  S(   Ni*   (   t   missing(   t   self(    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyt   __init__   s    (   R   R   R   t	   __slots__R
   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR      s   	t   Bad2c           B   s&   e  Z d  Z e j  d g Z d „  Z RS(   s    missing not in slots R   c         C   s   d |  _  d |  _ d  S(   Ni*   (   R    R   (   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR
      s    	(   R   R   R   R    R   R
   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR      s   t   Bad3c           B   s    e  Z d  Z d g Z d „  Z RS(   s    missing not found in slots t	   componentc         C   s2   d |  _  d |  _ d |  _ t t |  ƒ j ƒ  d  S(   Ni*   i   (   R   R   R   t   superR   R
   (   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR
   !   s    			(   R   R   R   R   R
   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR      s   	t   Goodc           B   s    e  Z d  Z d g Z d „  Z RS(   sD    missing not in slots, but Empty doesn't
    specify __slots__.
    t   ac         C   s   d |  _  d  S(   Ni*   (   R   (   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR
   -   s    (   R   R   R   R   R
   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR   '   s   	t   Good2c           B   s#   e  Z d  Z d d g Z d „  Z RS(   s'    Using __dict__ in slots will be safe. t   __dict__t   compc         C   s   d |  _  d |  _ d  S(   Ni   i   (   R   R   (   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR
   5   s    	(   R   R   R   R   R
   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR   0   s   t   PropertyGoodc           B   sD   e  Z d  Z d d g Z e d „  ƒ Z e j d „  ƒ Z d „  Z RS(   s    Using properties is safe. t   tmpt   _valuec         C   s   |  j  S(   N(   R   (   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyt   test>   s    c         C   s   | |  _  d  S(   N(   R   (   R	   t   value(    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR   B   s    c         C   s   d |  _  d  S(   Ni*   (   R   (   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR
   G   s    (   R   R   R   R   t   propertyR   t   setterR
   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR   9   s
   t   PropertyGood2c           B   sA   e  Z d  Z d g Z d „  Z d „  Z e e e ƒ Z d „  Z RS(   s4    Using properties in the body of the class is safe. R   c         C   s   |  j  S(   N(   R   (   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyt   _getterN   s    c         C   s   | |  _  d  S(   N(   R   (   R	   R   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyt   _setterQ   s    c         C   s   d |  _  d  S(   Ni   (   R   (   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR
   W   s    (	   R   R   R   R   R   R   R   R   R
   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR   J   s   			t   UnicodeSlotsc           B   s   e  Z d  Z d Z d „  Z RS(   s—   Using unicode objects in __slots__ is okay.

    On Python 3.3 onward, u'' is equivalent to '',
    so this test should be safe for both versions.
    u   firstu   secondc         C   s   d |  _  d |  _ d  S(   Ni*   i   (   t   firstt   second(   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR
   b   s    	(   u   firstu   second(   R   R   R   R   R
   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR   Z   s   t   DataDescriptorc           B   s&   e  Z d  d „ Z d „  Z d „  Z RS(   t    c         C   s   | |  _  | |  _ d  S(   N(   t   _DataDescriptor__namet   _DataDescriptor__default(   R	   t   namet   default(    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR
   h   s    	c         C   s   t  | |  j |  j ƒ S(   N(   t   getattrR$   R%   (   R	   t   instt   cls(    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyt   __get__l   s    c         C   s   t  | |  j | ƒ d  S(   N(   t   setattrR$   (   R	   R)   R   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyt   __set__o   s    (   R   R   R
   R+   R-   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR"   g   s   	t   NonDataDescriptorc           B   s   e  Z d  „  Z RS(   c         C   s   d S(   Ni*   (    (   R	   R)   R*   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR+   t   s    (   R   R   R+   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR.   s   s   t   SlotsWithDescriptorc           B   s/   e  Z d  g Z e d  ƒ Z e ƒ  Z e ƒ  Z RS(   t   _err(	   R   R   R   R"   t   data_descriptorR.   t   non_data_descriptorR   t   missing_descriptor(    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR/   x   s   		c          C   s   t  ƒ  }  d |  _ d |  _ d  S(   Nt   foot   lala(   R/   R1   R2   (   R)   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyt   dont_emit_for_descriptors   s    			t   ClassWithSlotsc           B   s   e  Z d  g Z RS(   t   foobar(   R   R   R   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR7   ˆ   s   t   ClassReassigningDunderClassc           B   s   e  Z d  g Z d „  Z RS(   R8   c         C   s   t  |  _ d  S(   N(   R7   t	   __class__(   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyt   release   s    (   R   R   R   R;   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR9   Œ   s   	t"   ClassReassingingInvalidLayoutClassc           B   s   e  Z g  Z d  „  Z RS(   c         C   s   t  |  _ d  S(   N(   R7   R:   (   R	   (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR;   –   s    (   R   R   R   R;   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyR<   “   s   N(   R   t   collectionsR    R   R   t   objectR   R   R   R   R   R   R   R   R   R"   R.   R/   R6   R7   R9   R<   (    (    (    sH   lib/python2.7/site-packages/pylint/test/functional/assigning_non_slot.pyt   <module>   s$   				