diff options
Diffstat (limited to 'pylint/test/functional/assigning_non_slot.py')
-rw-r--r-- | pylint/test/functional/assigning_non_slot.py | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/pylint/test/functional/assigning_non_slot.py b/pylint/test/functional/assigning_non_slot.py index b80c32e..7163ac9 100644 --- a/pylint/test/functional/assigning_non_slot.py +++ b/pylint/test/functional/assigning_non_slot.py @@ -1,10 +1,10 @@ """ Checks assigning attributes not found in class slots will trigger assigning-non-slot warning. """ -# pylint: disable=too-few-public-methods, no-init, missing-docstring, no-absolute-import +# pylint: disable=too-few-public-methods, no-init, missing-docstring, no-absolute-import, import-error from collections import deque -__revision__ = 0 +from missing import Unknown class Empty(object): """ empty """ @@ -98,3 +98,36 @@ class UnicodeSlots(object): def __init__(self): self.first = 42 self.second = 24 + + +class DataDescriptor(object): + def __init__(self, name, default=''): + self.__name = name + self.__default = default + + def __get__(self, inst, cls): + return getattr(inst, self.__name, self.__default) + + def __set__(self, inst, value): + setattr(inst, self.__name, value) + + +class NonDataDescriptor(object): + def __get__(self, inst, cls): + return 42 + + +class SlotsWithDescriptor(object): + __slots__ = ['_err'] + data_descriptor = DataDescriptor('_err') + non_data_descriptor = NonDataDescriptor() + missing_descriptor = Unknown() + + +def dont_emit_for_descriptors(): + inst = SlotsWithDescriptor() + # This should not emit, because attr is + # a data descriptor + inst.data_descriptor = 'foo' + inst.non_data_descriptor = 'lala' # [assigning-non-slot] + return |