Skip to content

reflection

Contains a metaclass and helper functions used to create protocol message classes from Descriptor objects at runtime.

Recall that a metaclass is the "type" of a class. (A class is to a metaclass what an instance is to a class.)

In this case, we use the GeneratedProtocolMessageType metaclass to inject all the useful functionality into the classes output by the protocol compiler at compile-time.

The upshot of all this is that the real implementation details for ALL pure-Python protocol buffers are here in this file.

MakeClass(descriptor)

Construct a class object for a protobuf described by descriptor.

DEPRECATED: use MessageFactory.GetPrototype() instead.

Parameters:

Name Type Description Default
descriptor

A descriptor.Descriptor object describing the protobuf.

required

Returns: The Message class object described by the descriptor.

Source code in client/ayon_nuke/vendor/google/protobuf/reflection.py
82
83
84
85
86
87
88
89
90
91
92
93
94
95
def MakeClass(descriptor):
  """Construct a class object for a protobuf described by descriptor.

  DEPRECATED: use MessageFactory.GetPrototype() instead.

  Args:
    descriptor: A descriptor.Descriptor object describing the protobuf.
  Returns:
    The Message class object described by the descriptor.
  """
  # Original implementation leads to duplicate message classes, which won't play
  # well with extensions. Message factory info is also missing.
  # Redirect to message_factory.
  return symbol_database.Default().GetPrototype(descriptor)

ParseMessage(descriptor, byte_str)

Generate a new Message instance from this Descriptor and a byte string.

DEPRECATED: ParseMessage is deprecated because it is using MakeClass(). Please use MessageFactory.GetPrototype() instead.

Parameters:

Name Type Description Default
descriptor

Protobuf Descriptor object

required
byte_str

Serialized protocol buffer byte string

required

Returns:

Type Description

Newly created protobuf Message object.

Source code in client/ayon_nuke/vendor/google/protobuf/reflection.py
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
def ParseMessage(descriptor, byte_str):
  """Generate a new Message instance from this Descriptor and a byte string.

  DEPRECATED: ParseMessage is deprecated because it is using MakeClass().
  Please use MessageFactory.GetPrototype() instead.

  Args:
    descriptor: Protobuf Descriptor object
    byte_str: Serialized protocol buffer byte string

  Returns:
    Newly created protobuf Message object.
  """
  result_class = MakeClass(descriptor)
  new_msg = result_class()
  new_msg.ParseFromString(byte_str)
  return new_msg