diff options
author | chebee7i <chebee7i@gmail.com> | 2018-03-08 15:02:22 -0600 |
---|---|---|
committer | Ashley Camba <ashwoods@gmail.com> | 2018-05-02 19:36:28 +0200 |
commit | a1552e6d11386043b452d3fb2dced698ec764827 (patch) | |
tree | c70457532b2af11c608c08ec1c63bf413115cc04 /raven/utils | |
parent | 8530ba1081f07f891684c01035ec67b60edc115a (diff) | |
download | raven-a1552e6d11386043b452d3fb2dced698ec764827.tar.gz |
Add is_namedtuple().
Diffstat (limited to 'raven/utils')
-rw-r--r-- | raven/utils/__init__.py | 4 | ||||
-rw-r--r-- | raven/utils/basic.py | 11 |
2 files changed, 14 insertions, 1 deletions
diff --git a/raven/utils/__init__.py b/raven/utils/__init__.py index b4b22b8..a0de8cb 100644 --- a/raven/utils/__init__.py +++ b/raven/utils/__init__.py @@ -15,7 +15,9 @@ except ImportError: import sys from raven.utils.compat import iteritems, string_types -from raven.utils.basic import merge_dicts, varmap, memoize, once +from raven.utils.basic import ( + merge_dicts, varmap, memoize, once, is_namedtuple +) logger = logging.getLogger('raven.errors') diff --git a/raven/utils/basic.py b/raven/utils/basic.py index 4a40e8e..d995423 100644 --- a/raven/utils/basic.py +++ b/raven/utils/basic.py @@ -83,3 +83,14 @@ def once(func): new_func = update_wrapper(new_func, func) new_func.called = False return new_func + + +def is_namedtuple(value): + # https://stackoverflow.com/a/2166841/1843746 + # But modified to handle subclasses of namedtuples. + if not isinstance(value, tuple): + return False + f = getattr(type(value), '_fields', None) + if not isinstance(f, tuple): + return False + return all(type(n) == str for n in f) |