def register_hook(self, event, hook):
"""Properly register a hook."""
- if isinstance(hook, (list, tuple, set)):
- self.hooks[event].extend(hook)
- else:
+ if callable(hook):
self.hooks[event].append(hook)
+ elif hasattr(hook, '__iter__'):
+ self.hooks[event].extend(h for h in hook if callable(h))
def deregister_hook(self, event, hook):
"""Deregister a previously registered hook.
r = requests.models.Request(hooks={'args': hooks})
assert_hooks_are_callable(r.hooks)
+ hooks.append('string that should not be registered')
+ r = requests.models.Request(hooks={'args': hooks})
+ assert_hooks_are_callable(r.hooks)
+
def test_session_persistent_cookies(self):
s = requests.session()