code: def set(self, prop, value):
          
  
          prop_parts = prop.split(".")
          if self.copy_dict:
              new_dict = copy.deepcopy(self.obj)
          else:
              new_dict = self.obj
          pointer = None
          parts_length = len(prop_parts) - 1
          for i, part in enumerate(prop_parts):
              if pointer is None and i == parts_length:
                  new_dict[part] = value
              elif pointer is None:
                  pointer = new_dict.get(part)
              elif i == parts_length:
                  pointer[part] = value
              else:
                  pointer = pointer.get(part)
          return new_dict
docs: sets the dot notated property to the passed in value
  
          args:
              prop: a string of the property to retreive
                  "a.b.c" ~ dictionary['a']['b']['c']
              value: the value to set the prop object