3 SÉLjÒ ã @ sd d Z dZddlmZ ddlmZ ejƒ dkr:ddlmZ nddlm Z e jZi Zdd „ Z d d„ ZdS ) a 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*. z#robinson@google.com (Will Robinson)é )Úapi_implementation)ÚmessageZcpp)Úcpp_message)Úpython_messagec C s t | ƒ}|ƒ }|j|ƒ |S )zêGenerate a new Message instance from this Descriptor and a byte string. Args: descriptor: Protobuf Descriptor object byte_str: Serialized protocol buffer byte string Returns: Newly created protobuf Message object. )Ú MakeClassZParseFromString)Ú descriptorZbyte_strZresult_classZnew_msg© r ú /usr/lib/python3.6/reflection.pyÚParseMessageC s r c C sd | t krt | S i }x"| jjƒ D ]\}}t|ƒ||<