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.

debug.py 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from __future__ import absolute_import
  2. from kombu.five import items
  3. from kombu.utils import reprcall
  4. from kombu.utils.eventio import READ, WRITE, ERR
  5. def repr_flag(flag):
  6. return '{0}{1}{2}'.format('R' if flag & READ else '',
  7. 'W' if flag & WRITE else '',
  8. '!' if flag & ERR else '')
  9. def _rcb(obj):
  10. if obj is None:
  11. return '<missing>'
  12. if isinstance(obj, str):
  13. return obj
  14. if isinstance(obj, tuple):
  15. cb, args = obj
  16. return reprcall(cb.__name__, args=args)
  17. return obj.__name__
  18. def repr_active(h):
  19. return ', '.join(repr_readers(h) + repr_writers(h))
  20. def repr_events(h, events):
  21. return ', '.join(
  22. '{0}({1})->{2}'.format(
  23. _rcb(callback_for(h, fd, fl, '(GONE)')), fd,
  24. repr_flag(fl),
  25. )
  26. for fd, fl in events
  27. )
  28. def repr_readers(h):
  29. return ['({0}){1}->{2}'.format(fd, _rcb(cb), repr_flag(READ | ERR))
  30. for fd, cb in items(h.readers)]
  31. def repr_writers(h):
  32. return ['({0}){1}->{2}'.format(fd, _rcb(cb), repr_flag(WRITE))
  33. for fd, cb in items(h.writers)]
  34. def callback_for(h, fd, flag, *default):
  35. try:
  36. if flag & READ:
  37. return h.readers[fd]
  38. if flag & WRITE:
  39. if fd in h.consolidate:
  40. return h.consolidate_callback
  41. return h.writers[fd]
  42. except KeyError:
  43. if default:
  44. return default[0]
  45. raise