validators.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. """
  2. Common validation functions
  3. """
  4. from pika.compat import basestring
  5. def require_string(value, value_name):
  6. """Require that value is a string
  7. :raises: TypeError
  8. """
  9. if not isinstance(value, basestring):
  10. raise TypeError('%s must be a str or unicode str, but got %r' % (
  11. value_name,
  12. value,
  13. ))
  14. def require_callback(callback, callback_name='callback'):
  15. """Require that callback is callable and is not None
  16. :raises: TypeError
  17. """
  18. if not callable(callback):
  19. raise TypeError('callback %s must be callable, but got %r' % (
  20. callback_name,
  21. callback,
  22. ))
  23. def rpc_completion_callback(callback):
  24. """Verify callback is callable if not None
  25. :returns: boolean indicating nowait
  26. :rtype: bool
  27. :raises: TypeError
  28. """
  29. if callback is None:
  30. # No callback means we will not expect a response
  31. # i.e. nowait=True
  32. return True
  33. if callable(callback):
  34. # nowait=False
  35. return False
  36. else:
  37. raise TypeError('completion callback must be callable if not None')
  38. def zero_or_greater(name, value):
  39. """Verify that value is zero or greater. If not, 'name'
  40. will be used in error message
  41. :raises: ValueError
  42. """
  43. if int(value) < 0:
  44. errmsg = '{} must be >= 0, but got {}'.format(name, value)
  45. raise ValueError(errmsg)