|
@@ -2103,13 +2103,16 @@ def dict_get(d, key_or_keys, default=None, skip_false_values=True):
|
|
|
|
|
|
|
|
|
def try_get(src, getter, expected_type=None):
|
|
|
- try:
|
|
|
- v = getter(src)
|
|
|
- except (AttributeError, KeyError, TypeError, IndexError):
|
|
|
- pass
|
|
|
- else:
|
|
|
- if expected_type is None or isinstance(v, expected_type):
|
|
|
- return v
|
|
|
+ if not isinstance(getter, (list, tuple)):
|
|
|
+ getter = [getter]
|
|
|
+ for get in getter:
|
|
|
+ try:
|
|
|
+ v = get(src)
|
|
|
+ except (AttributeError, KeyError, TypeError, IndexError):
|
|
|
+ pass
|
|
|
+ else:
|
|
|
+ if expected_type is None or isinstance(v, expected_type):
|
|
|
+ return v
|
|
|
|
|
|
|
|
|
def encode_compat_str(string, encoding=preferredencoding(), errors='strict'):
|