示例#1
0
    def test_iter_getter(self):
        obj = {"a": 1, "b": 2, "c": 3}
        pl = pluckable(obj)

        self.assertEqual(pl["a"].value, 1)
        self.assertEqual(pl["a", "b"].value, [1, 2])
        self.assertEqual(pl[("a", "b")].value, [1, 2])
        self.assertEqual(pl[["a", "b"]].value, [1, 2])

        def gen():
            yield "a"
            yield "b"
        self.assertEqual(pl[gen()].value, [1, 2])
示例#2
0
 def setUp(self):
     self.src = {
         "a": 1,
         "b": range(10),
         "c": {
             "I": {
                 "a": 1,
                 "b": 2
             },
             "II": [{
                 "x": "x1",
                 "y": "y1"
             }, {
                 "x": "x2",
                 "y": "y2",
                 "z": "z2"
             }]
         },
         "users": [{
             "uid": 1,
             "name": {
                 "first": "john",
                 "last": "smith"
             },
         }, {
             "uid": 2,
             "name": {
                 "last": "bonobo"
             }
         }, {
             "uid": 3
         }],
         1: "one",
         2: "two"
     }
     self.obj = pluckable(self.src)
     self.obj2 = pluckable(self.src, skipmissing=False)
示例#3
0
 def test_attrgetter_custom_attr_class_object(self):
     class Obj(object):
         x = 1
     self.assertEqual(pluckable(Obj()).x.value, 1)
示例#4
0
 def test_inplace(self):
     p = pluckable(self.src, inplace=True)
     p2 = p.c.I.b
     self.assertEqual(id(p), id(p2))
     self.assertEqual(p2.obj, 2)
示例#5
0
 def test_str_slice_range(self):
     self.assertEqual(pluckable("str")[0:2].value, ['s', 't'])
示例#6
0
 def test_getitem_str_from_dict_simple(self):
     D = {"x": 1}
     self.assertEqual(pluckable(D)["x"].value, 1)
示例#7
0
 def test_getitem_slice_from_list_simple(self):
     L = list(range(10))
     self.assertEqual(pluckable(L)[2:5].value, L[2:5])
示例#8
0
 def test_iter_noniterable_singular_value(self):
     self.assertEqual(list(iter(pluckable({'x': 1}).x)), [1])
示例#9
0
 def test_dict_numeric_key(self):
     self.assertEqual(pluckable({0: 0})[0].value, 0)
示例#10
0
 def test_skipmissing_dict_slice(self):
     D = {"x": 1}
     self.assertEqual(
         pluckable(D, skipmissing=False)[0:5].invalid.value, [None] * 5)
示例#11
0
 def test_skipmissing_dict_keys2(self):
     D = {"x": 1}
     self.assertEqual(
         pluckable(D, skipmissing=False)["x", "y"].invalid.value,
         [None, None])
示例#12
0
 def test_skipmissing_list_slice(self):
     self.assertEqual(
         pluckable([1, 2], skipmissing=False)[0:4].value,
         [1, 2, None, None])
示例#13
0
 def test_skipmissing_list_indices(self):
     self.assertEqual(
         pluckable([1, 2], skipmissing=False)[0, 2].value, [1, None])
示例#14
0
 def test_getitem_str2_from_dict_simple(self):
     D = {"x": 1, "y": 2, "z": 3}
     self.assertEqual(pluckable(D)["x", "z"].value, [1, 3])
示例#15
0
 def test_attrgetter_custom_attr_shadowed_combination(self):
     class Dct(dict):
         x = 1
         y = 2
     d = Dct(x=2)
     self.assertEqual(pluckable(d)['x', 'y'].value, [2, 2])
示例#16
0
 def test_attrgetter_namedtuple(self):
     Point = namedtuple("Point", "x y z")
     self.assertEqual(pluckable(Point(3, 2, 1)).x.value, 3)
示例#17
0
 def test_dict_slice_singular(self):
     self.assertEqual(pluckable({0: 0, 1: 1, 2: 2})[1:2].value, [1])
示例#18
0
 def test_items_dict(self):
     self.assertEqual(list(pluckable({'x': {'y': 2}}).x.items()), [('y', 2)])
示例#19
0
 def test_dict_slice_range(self):
     self.assertEqual(pluckable({0: 0, 1: 1, 2: 2})[1:3].value, [1, 2])
示例#20
0
 def test_getitem_index_missing_from_list_simple(self):
     L = list(range(10))
     self.assertEqual(pluckable(L)[70].value, None)
示例#21
0
 def test_dict_slice_unbound_bottom(self):
     self.assertEqual(pluckable({0: 0, 1: 1, 2: 2})[:2].value, [0, 1])
示例#22
0
 def test_getitem_slice_rot_list_simple(self):
     L = list(range(10))
     self.assertEqual(pluckable(L)[:5, 5:].value, L[:5] + L[5:])
示例#23
0
 def test_dict_slice_unbound(self):
     self.assertEqual(pluckable({0: 0, 1: 1, 2: 2})[:].value, [0, 1, 2])
示例#24
0
 def test_str_slice_singular(self):
     self.assertEqual(pluckable("str")[0:1].value, ['s'])
示例#25
0
 def test_dict_slice_reduced_to_single_result(self):
     self.assertEqual(pluckable({0: 0, 1: 1, 4: 4})[1::2].value, [1])
示例#26
0
 def test_str_slice_unbound(self):
     self.assertEqual(pluckable("str")[:].value, ['s', 't', 'r'])
示例#27
0
 def test_str_numeric_key(self):
     self.assertEqual(pluckable("str")[0].value, 's')
示例#28
0
 def test_attrgetter_custom_attr_old_style_class(self):
     class Obj:
         x = 1
     self.assertEqual(pluckable(Obj).x.value, 1)
示例#29
0
 def test_str_numeric_negative_key(self):
     self.assertEqual(pluckable("str")[-1].value, 'r')
示例#30
0
 def test_attrgetter_custom_attr_shadowed(self):
     class Dct(dict):
         x = 1
     d = Dct(x=2)
     self.assertEqual(pluckable(d).x.value, 1)
     self.assertEqual(pluckable(d)['x'].value, 2)
示例#31
0
 def test_str_slice_singular(self):
     self.assertEqual(pluckable("str")[0:1].value, ['s'])
示例#32
0
 def test_attrgetter_custom_attr_shadowed_combination_inv_deep(self):
     class Dct(dict):
         x = dict(y=1)
     d = Dct()
     self.assertEqual(pluckable(d)['x'].y.value, 1)
示例#33
0
 def test_str_slice_range(self):
     self.assertEqual(pluckable("str")[0:2].value, ['s', 't'])
示例#34
0
 def test_iter_empty(self):
     self.assertEqual(list(iter(pluckable('x').y)), [])
示例#35
0
 def test_dict_slice_step_from_zero(self):
     self.assertEqual(pluckable({0: 0, 1: 1, 3: 3, 4: 4})[::2].value, [0, 4])
示例#36
0
 def test_iter_dictkeys(self):
     self.assertEqual(list(iter(pluckable({'x': {'y': 2}}).x)), ['y'])
示例#37
0
 def test_dict_slice_step_from_one(self):
     self.assertEqual(pluckable({0: 0, 1: 1, 3: 3, 4: 4})[1::2].value, [1, 3])
示例#38
0
 def test_items_list(self):
     self.assertEqual(list(pluckable(range(10))[0:3].items()), [0, 1, 2])
示例#39
0
 def test_dict_slice_reduced_to_single_result(self):
     self.assertEqual(pluckable({0: 0, 1: 1, 4: 4})[1::2].value, [1])
示例#40
0
 def test_getattr_on_pluckable_list(self):
     users_list = self.obj.value['users']
     self.assertEqual(pluckable(users_list).name.last.value, ["smith", "bonobo"])
示例#41
0
 def test_dict_extract_only_numerical_keys(self):
     self.assertEqual(sorted(pluckable({0: 0, 'a': 'a', 1: 1, 'b': 'b', 3: 3, 4: 4})[:].value), [0, 1, 3, 4])
示例#42
0
 def test_getitem_index2_from_list_simple(self):
     L = list(range(10))
     self.assertEqual(pluckable(L)[5, 7].value, [L[5], L[7]])
示例#43
0
 def test_str_numeric_key(self):
     self.assertEqual(pluckable("str")[0].value, 's')
示例#44
0
 def test_getitem_slice_and_index_from_list_simple(self):
     L = list(range(10))
     self.assertEqual(pluckable(L)[2:5, 8].value, L[2:5] + [L[8]])
示例#45
0
 def test_str_numeric_negative_key(self):
     self.assertEqual(pluckable("str")[-1].value, 'r')
示例#46
0
 def test_getitem_slice_reverse_dup_list_simple(self):
     L = list(range(10))
     self.assertEqual(pluckable(L)[:, ::-1].value, L + list(reversed(L)))
示例#47
0
 def test_getitem_slice_reverse_dup_list_simple(self):
     L = list(range(10))
     self.assertEqual(pluckable(L)[:, ::-1].value, L + list(reversed(L)))