Exemple #1
0
 def _do_set_or_frozenset_item(self, items, func):
     for path, value in items.items():
         elements = _path_to_elements(path)
         parent = _get_nested_obj(obj=self, elements=elements[:-1])
         elem, action = elements[-1]
         obj = self._get_elem_and_compare_to_old_value(
             parent,
             path_for_err_reporting=path,
             expected_old_value=None,
             elem=elem,
             action=action)
         new_value = getattr(obj, func)(value)
         self._simple_set_elem_value(parent,
                                     path_for_err_reporting=path,
                                     elem=elem,
                                     value=new_value,
                                     action=action)
Exemple #2
0
 def _get_elements_and_details(self, path):
     try:
         elements = _path_to_elements(path)
         if len(elements) > 1:
             parent = _get_nested_obj(obj=self, elements=elements[:-2])
             parent_to_obj_elem, parent_to_obj_action = elements[-2]
             obj = self._get_elem_and_compare_to_old_value(
                 obj=parent,
                 path_for_err_reporting=path,
                 expected_old_value=None,
                 elem=parent_to_obj_elem,
                 action=parent_to_obj_action)
         else:
             parent = parent_to_obj_elem = parent_to_obj_action = None
             obj = _get_nested_obj(obj=self, elements=elements[:-1])
         elem, action = elements[-1]
     except Exception as e:
         self._raise_or_log(UNABLE_TO_GET_ITEM_MSG.format(path, e))
         return None
     else:
         if obj is not_found:
             return None
         return elements, parent, parent_to_obj_elem, parent_to_obj_action, obj, elem, action
Exemple #3
0
def test_path_to_elements(path, expected):
    result = _path_to_elements(path, root_element=None)
    assert tuple(expected) == result