|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- """ Checks that classes uses valid __slots__ """
-
- # pylint: disable=too-few-public-methods, missing-docstring, no-absolute-import
- # pylint: disable=using-constant-test, wrong-import-position, no-else-return
- from collections import deque
-
- def func():
- if True:
- return ("a", "b", "c")
- else:
- return [str(var) for var in range(3)]
-
-
- class NotIterable(object):
- def __iter_(self):
- """ do nothing """
-
- class Good(object):
- __slots__ = ()
-
- class SecondGood(object):
- __slots__ = []
-
- class ThirdGood(object):
- __slots__ = ['a']
-
- class FourthGood(object):
- __slots__ = ('a%s' % i for i in range(10))
-
- class FifthGood(object):
- __slots__ = deque(["a", "b", "c"])
-
- class SixthGood(object):
- __slots__ = {"a": "b", "c": "d"}
-
- class Bad(object): # [invalid-slots]
- __slots__ = list
-
- class SecondBad(object): # [invalid-slots]
- __slots__ = 1
-
- class ThirdBad(object):
- __slots__ = ('a', 2) # [invalid-slots-object]
-
- class FourthBad(object): # [invalid-slots]
- __slots__ = NotIterable()
-
- class FifthBad(object):
- __slots__ = ("a", "b", "") # [invalid-slots-object]
-
- class SixthBad(object): # [single-string-used-for-slots]
- __slots__ = "a"
-
- class SeventhBad(object): # [single-string-used-for-slots]
- __slots__ = ('foo')
-
- class EighthBad(object): # [single-string-used-for-slots]
- __slots__ = deque.__name__
-
- class PotentiallyGood(object):
- __slots__ = func()
-
- class PotentiallySecondGood(object):
- __slots__ = ('a', deque.__name__)
-
-
- import six
-
-
- class Metaclass(type):
-
- def __iter__(cls):
- for value in range(10):
- yield str(value)
-
-
- @six.add_metaclass(Metaclass)
- class IterableClass(object):
- pass
-
- class PotentiallyThirdGood(object):
- __slots__ = IterableClass
-
- class PotentiallyFourthGood(object):
- __slots__ = Good.__slots__
|