Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

brain_collections.py 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # Copyright (c) 2016 Claudiu Popa <pcmanticore@gmail.com>
  2. # Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
  3. # For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER
  4. import sys
  5. import astroid
  6. PY35 = sys.version_info >= (3, 5)
  7. def _collections_transform():
  8. return astroid.parse('''
  9. class defaultdict(dict):
  10. default_factory = None
  11. def __missing__(self, key): pass
  12. def __getitem__(self, key): return default_factory
  13. ''' + _deque_mock() + '''
  14. class OrderedDict(dict):
  15. def __reversed__(self): return self[::-1]
  16. ''')
  17. def _deque_mock():
  18. base_deque_class = '''
  19. class deque(object):
  20. maxlen = 0
  21. def __init__(self, iterable=None, maxlen=None):
  22. self.iterable = iterable
  23. def append(self, x): pass
  24. def appendleft(self, x): pass
  25. def clear(self): pass
  26. def count(self, x): return 0
  27. def extend(self, iterable): pass
  28. def extendleft(self, iterable): pass
  29. def pop(self): pass
  30. def popleft(self): pass
  31. def remove(self, value): pass
  32. def reverse(self): pass
  33. def rotate(self, n=1): pass
  34. def __iter__(self): return self
  35. def __reversed__(self): return self.iterable[::-1]
  36. def __getitem__(self, index): pass
  37. def __setitem__(self, index, value): pass
  38. def __delitem__(self, index): pass
  39. def __bool__(self): return bool(self.iterable)
  40. def __nonzero__(self): return bool(self.iterable)
  41. def __contains__(self, o): return o in self.iterable
  42. def __len__(self): return len(self.iterable)
  43. def __copy__(self): return deque(self.iterable)'''
  44. if PY35:
  45. base_deque_class += '''
  46. def copy(self): return deque(self.iterable)
  47. def index(self, x, start=0, end=0): return 0
  48. def insert(self, x, i): pass
  49. def __add__(self, other): pass
  50. def __iadd__(self, other): pass
  51. def __mul__(self, other): pass
  52. def __imul__(self, other): pass
  53. def __rmul__(self, other): pass'''
  54. return base_deque_class
  55. astroid.register_module_extender(astroid.MANAGER, 'collections', _collections_transform)