code: def get_path(self, key):
          "Like `get`, but also return the path taken to the value."
          if key in self.keys():
              return (key,), self[key]
          else:
              key_path, res = (None, None)
              for sub_key, v in self.items():
                  if isinstance(v, self.__class__):
                      key_path, res = v.get_path(key)
                  elif hasattr(v, 'get'):
                      res = v.get(key)
                      key_path = (key,) if res is not None else None
                  if res is not None and key_path is not None:
                      key_path = (sub_key,) + key_path
                      break
              return key_path, ref get_path(self, key):
          "Like `get`, but also return the path taken to the value."
          if key in self.keys():
              return (key,), self[key]
          else:
              key_path, res = (None, None)
              for sub_key, v in self.items():
                  if isinstance(v, self.__class__):
                      key_path, res = v.get_path(key)
                  elif hasattr(v, 'get'):
                      res = v.get(key)
                      key_path = (key,) if res is not None else None
                  if res is not None and key_path is not None:
                      key_path = (sub_key,) + key_path
                      break
              return key_path, res
docs: Like `get`, but also return the path taken to the value.