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.

singledispatch_functions.py 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # pylint: disable=missing-docstring,import-error,unused-import,assignment-from-no-return
  2. # pylint: disable=invalid-name, too-few-public-methods
  3. from __future__ import print_function
  4. from UNINFERABLE import uninferable_func
  5. try:
  6. from functools import singledispatch
  7. except ImportError:
  8. from singledispatch import singledispatch
  9. my_single_dispatch = singledispatch
  10. class FakeSingleDispatch(object):
  11. @staticmethod
  12. def register(function):
  13. return function
  14. def __call__(self, function):
  15. return function
  16. fake_singledispatch_decorator = FakeSingleDispatch()
  17. @singledispatch
  18. def func(arg):
  19. return arg
  20. @func.register(str)
  21. def _(arg):
  22. return 42
  23. @func.register(float)
  24. @func.register(int)
  25. def _(arg):
  26. return 42
  27. @my_single_dispatch
  28. def func2(arg):
  29. return arg
  30. @func2.register(int)
  31. def _(arg):
  32. return 42
  33. @singledispatch
  34. def with_extra_arg(arg, verbose=False):
  35. if verbose:
  36. print(arg)
  37. return arg
  38. @with_extra_arg.register(str)
  39. def _(arg, verbose=False):
  40. unused = 42 # [unused-variable]
  41. return arg[::-1]
  42. @fake_singledispatch_decorator
  43. def not_single_dispatch(arg): # [unused-argument]
  44. return 'not yet implemented'
  45. @fake_singledispatch_decorator.register(str)
  46. def bad_single_dispatch(arg): # [unused-argument]
  47. return 42
  48. @fake_singledispatch_decorator.register(str)
  49. def bad_single_dispatch(arg): # [unused-argument, function-redefined]
  50. return 24