DateRange,
detect_exe_version,
determine_ext,
+ dict_get,
encode_compat_str,
encodeFilename,
escape_rfc3986,
data = urlencode_postdata({'username': 'foo@bar.com', 'password': '1234'})
self.assertTrue(isinstance(data, bytes))
+ def test_dict_get(self):
+ d = {
+ 'a': 42,
+ }
+ self.assertEqual(dict_get(d, 'a'), 42)
+ self.assertEqual(dict_get(d, 'b'), None)
+ self.assertEqual(dict_get(d, 'b', 42), 42)
+ self.assertEqual(dict_get(d, ('a', )), 42)
+ self.assertEqual(dict_get(d, ('b', 'a', )), 42)
+ self.assertEqual(dict_get(d, ('b', 'c', 'a', 'd', )), 42)
+ self.assertEqual(dict_get(d, ('b', 'c', )), None)
+ self.assertEqual(dict_get(d, ('b', 'c', ), 42), 42)
+
def test_encode_compat_str(self):
self.assertEqual(encode_compat_str(b'\xd1\x82\xd0\xb5\xd1\x81\xd1\x82', 'utf-8'), 'тест')
self.assertEqual(encode_compat_str('тест', 'utf-8'), 'тест')
return dict((encode(k), encode(v)) for k, v in d.items())
+def dict_get(d, key_or_keys, default=None):
+ if isinstance(key_or_keys, (list, tuple)):
+ for key in key_or_keys:
+ if d.get(key):
+ return d[key]
+ return default
+ return d.get(key_or_keys, default)
+
+
def encode_compat_str(string, encoding=preferredencoding(), errors='strict'):
return string if isinstance(string, compat_str) else compat_str(string, encoding, errors)