|
|
|
@ -1617,7 +1617,7 @@ Line 1
|
|
|
|
|
self.assertEqual(traverse_obj(_TEST_DATA, lambda x, y: x == 'urls' and isinstance(y, list)),
|
|
|
|
|
[_TEST_DATA['urls']],
|
|
|
|
|
msg='function as query key should perform a filter based on (key, value)')
|
|
|
|
|
self.assertCountEqual(traverse_obj(_TEST_DATA, lambda _, x: isinstance(x[0], str)), {'str'},
|
|
|
|
|
self.assertCountEqual(traverse_obj(_TEST_DATA, lambda _, x: isinstance(x[0], str)), set(('str',)),
|
|
|
|
|
msg='exceptions in the query function should be catched')
|
|
|
|
|
self.assertEqual(traverse_obj(iter(range(4)), lambda _, x: x % 2 == 0), [0, 2],
|
|
|
|
|
msg='function key should accept iterables')
|
|
|
|
@ -1643,7 +1643,7 @@ Line 1
|
|
|
|
|
with self.assertRaises(Exception, msg='Sets with length != 1 should raise in debug'):
|
|
|
|
|
traverse_obj(_TEST_DATA, set())
|
|
|
|
|
with self.assertRaises(Exception, msg='Sets with length != 1 should raise in debug'):
|
|
|
|
|
traverse_obj(_TEST_DATA, {str.upper, str})
|
|
|
|
|
traverse_obj(_TEST_DATA, set((str.upper, str)))
|
|
|
|
|
|
|
|
|
|
# Test `slice` as a key
|
|
|
|
|
_SLICE_DATA = [0, 1, 2, 3, 4]
|
|
|
|
@ -1779,7 +1779,7 @@ Line 1
|
|
|
|
|
{0: 100}, msg='type as expected_type should filter dict values')
|
|
|
|
|
self.assertEqual(traverse_obj(_TEST_DATA, {0: 100, 1: 1.2, 2: 'None'}, expected_type=str_or_none),
|
|
|
|
|
{0: '100', 1: '1.2'}, msg='function as expected_type should transform dict values')
|
|
|
|
|
self.assertEqual(traverse_obj(_TEST_DATA, ({0: 1.2}, 0, {int_or_none}), expected_type=int),
|
|
|
|
|
self.assertEqual(traverse_obj(_TEST_DATA, ({0: 1.2}, 0, set((int_or_none,))), expected_type=int),
|
|
|
|
|
1, msg='expected_type should not filter non final dict values')
|
|
|
|
|
self.assertEqual(traverse_obj(_TEST_DATA, {0: {0: 100, 1: 'str'}}, expected_type=int),
|
|
|
|
|
{0: {0: 100}}, msg='expected_type should transform deep dict values')
|
|
|
|
|