structure saas with tools
This commit is contained in:
83
.venv/lib/python3.10/site-packages/google/protobuf/proto_json.py
Executable file
83
.venv/lib/python3.10/site-packages/google/protobuf/proto_json.py
Executable file
@@ -0,0 +1,83 @@
|
||||
# Protocol Buffers - Google's data interchange format
|
||||
# Copyright 2008 Google Inc. All rights reserved.
|
||||
#
|
||||
# Use of this source code is governed by a BSD-style
|
||||
# license that can be found in the LICENSE file or at
|
||||
# https://developers.google.com/open-source/licenses/bsd
|
||||
|
||||
"""Contains the Nextgen Pythonic Protobuf JSON APIs."""
|
||||
|
||||
from typing import Optional, Type
|
||||
|
||||
from google.protobuf.message import Message
|
||||
from google.protobuf.descriptor_pool import DescriptorPool
|
||||
from google.protobuf import json_format
|
||||
|
||||
def serialize(
|
||||
message: Message,
|
||||
always_print_fields_with_no_presence: bool=False,
|
||||
preserving_proto_field_name: bool=False,
|
||||
use_integers_for_enums: bool=False,
|
||||
descriptor_pool: Optional[DescriptorPool]=None,
|
||||
float_precision: int=None,
|
||||
) -> dict:
|
||||
"""Converts protobuf message to a dictionary.
|
||||
|
||||
When the dictionary is encoded to JSON, it conforms to proto3 JSON spec.
|
||||
|
||||
Args:
|
||||
message: The protocol buffers message instance to serialize.
|
||||
always_print_fields_with_no_presence: If True, fields without
|
||||
presence (implicit presence scalars, repeated fields, and map fields) will
|
||||
always be serialized. Any field that supports presence is not affected by
|
||||
this option (including singular message fields and oneof fields).
|
||||
preserving_proto_field_name: If True, use the original proto field names as
|
||||
defined in the .proto file. If False, convert the field names to
|
||||
lowerCamelCase.
|
||||
use_integers_for_enums: If true, print integers instead of enum names.
|
||||
descriptor_pool: A Descriptor Pool for resolving types. If None use the
|
||||
default.
|
||||
float_precision: If set, use this to specify float field valid digits.
|
||||
|
||||
Returns:
|
||||
A dict representation of the protocol buffer message.
|
||||
"""
|
||||
return json_format.MessageToDict(
|
||||
message,
|
||||
always_print_fields_with_no_presence=always_print_fields_with_no_presence,
|
||||
preserving_proto_field_name=preserving_proto_field_name,
|
||||
use_integers_for_enums=use_integers_for_enums,
|
||||
float_precision=float_precision,
|
||||
)
|
||||
|
||||
def parse(
|
||||
message_class: Type[Message],
|
||||
js_dict: dict,
|
||||
ignore_unknown_fields: bool=False,
|
||||
descriptor_pool: Optional[DescriptorPool]=None,
|
||||
max_recursion_depth: int=100
|
||||
) -> Message:
|
||||
"""Parses a JSON dictionary representation into a message.
|
||||
|
||||
Args:
|
||||
message_class: The message meta class.
|
||||
js_dict: Dict representation of a JSON message.
|
||||
ignore_unknown_fields: If True, do not raise errors for unknown fields.
|
||||
descriptor_pool: A Descriptor Pool for resolving types. If None use the
|
||||
default.
|
||||
max_recursion_depth: max recursion depth of JSON message to be deserialized.
|
||||
JSON messages over this depth will fail to be deserialized. Default value
|
||||
is 100.
|
||||
|
||||
Returns:
|
||||
A new message passed from json_dict.
|
||||
"""
|
||||
new_message = message_class()
|
||||
json_format.ParseDict(
|
||||
js_dict=js_dict,
|
||||
message=new_message,
|
||||
ignore_unknown_fields=ignore_unknown_fields,
|
||||
descriptor_pool=descriptor_pool,
|
||||
max_recursion_depth=max_recursion_depth,
|
||||
)
|
||||
return new_message
|
||||
Reference in New Issue
Block a user