def _to_legacy_path(dict_path): """Convert a tuple of ints and strings in a legacy "Path". .. note: This assumes, but does not verify, that each entry in ``dict_path`` is valid (i.e. doesn't have more than one key out of "name" / "id"). Args: dict_path (Iterable[Tuple[str, Union[str, int]]]): The "structured" path for a ``google-cloud-datastore`` key, i.e. it is a list of dictionaries, each of which has "kind" and one of "name" / "id" as keys. Returns: _app_engine_key_pb2.Path: The legacy path corresponding to ``dict_path``. """ elements = [] for part in dict_path: element_kwargs = { "type": _verify_path_value(part["kind"], True, is_kind=True) } if "id" in part: element_kwargs["id"] = _verify_path_value(part["id"], False) elif "name" in part: element_kwargs["name"] = _verify_path_value(part["name"], True) element = _app_engine_key_pb2.Path.Element(**element_kwargs) elements.append(element) return _app_engine_key_pb2.Path(element=elements)
def _to_legacy_path(dict_path): """Convert a tuple of ints and strings in a legacy "Path". .. note: This assumes, but does not verify, that each entry in ``dict_path`` is valid (i.e. doesn't have more than one key out of "name" / "id"). :type dict_path: lsit :param dict_path: The "structured" path for a key, i.e. it is a list of dictionaries, each of which has "kind" and one of "name" / "id" as keys. :rtype: :class:`._app_engine_key_pb2.Path` :returns: The legacy path corresponding to ``dict_path``. """ elements = [] for part in dict_path: element_kwargs = {"type": part["kind"]} if "id" in part: element_kwargs["id"] = part["id"] elif "name" in part: element_kwargs["name"] = part["name"] element = _app_engine_key_pb2.Path.Element(**element_kwargs) elements.append(element) return _app_engine_key_pb2.Path(element=elements)
def make_reference( path=({"type": "Parent", "id": 59}, {"type": "Child", "name": "Feather"}), app="s~sample-app", namespace="space", ): elements = [ _app_engine_key_pb2.Path.Element(**element) for element in path ] return _app_engine_key_pb2.Reference( app=app, path=_app_engine_key_pb2.Path(element=elements), name_space=namespace, )
def _make_path_pb(*element_pbs): from google.cloud.datastore import _app_engine_key_pb2 return _app_engine_key_pb2.Path(element=element_pbs)