Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
any.py54 linesDownload Raw Back to protobuf
1# Protocol Buffers - Google's data interchange format2# Copyright 2008 Google Inc.  All rights reserved.3#4# Use of this source code is governed by a BSD-style5# license that can be found in the LICENSE file or at6# https://developers.google.com/open-source/licenses/bsd7 8"""Contains the Any helper APIs."""9 10from typing import Optional, TypeVar11 12from google.protobuf import descriptor13from google.protobuf.message import Message14 15from google.protobuf.any_pb2 import Any16 17 18_MessageT = TypeVar('_MessageT', bound=Message)19 20 21def pack(22    msg: Message,23    type_url_prefix: Optional[str] = 'type.googleapis.com/',24    deterministic: Optional[bool] = None,25) -> Any:26  any_msg = Any()27  any_msg.Pack(28      msg=msg, type_url_prefix=type_url_prefix, deterministic=deterministic29  )30  return any_msg31 32 33def unpack(any_msg: Any, msg: Message) -> bool:34  return any_msg.Unpack(msg=msg)35 36 37def unpack_as(any_msg: Any, message_type: type[_MessageT]) -> _MessageT:38  unpacked = message_type()39  if unpack(any_msg, unpacked):40    return unpacked41  else:42    raise TypeError(43        f'Attempted to unpack {type_name(any_msg)} to'44        f' {message_type.__qualname__}'45    )46 47 48def type_name(any_msg: Any) -> str:49  return any_msg.TypeName()50 51 52def is_type(any_msg: Any, des: descriptor.Descriptor) -> bool:53  return any_msg.Is(des)54 
codekingpro/portable-devtools · Team Ai