OLD | NEW |
1 # Protocol Buffers - Google's data interchange format | 1 # Protocol Buffers - Google's data interchange format |
2 # Copyright 2008 Google Inc. All rights reserved. | 2 # Copyright 2008 Google Inc. All rights reserved. |
3 # https://developers.google.com/protocol-buffers/ | 3 # https://developers.google.com/protocol-buffers/ |
4 # | 4 # |
5 # Redistribution and use in source and binary forms, with or without | 5 # Redistribution and use in source and binary forms, with or without |
6 # modification, are permitted provided that the following conditions are | 6 # modification, are permitted provided that the following conditions are |
7 # met: | 7 # met: |
8 # | 8 # |
9 # * Redistributions of source code must retain the above copyright | 9 # * Redistributions of source code must retain the above copyright |
10 # notice, this list of conditions and the following disclaimer. | 10 # notice, this list of conditions and the following disclaimer. |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 files: The file names to extract messages from. | 96 files: The file names to extract messages from. |
97 | 97 |
98 Returns: | 98 Returns: |
99 A dictionary mapping proto names to the message classes. This will include | 99 A dictionary mapping proto names to the message classes. This will include |
100 any dependent messages as well as any messages defined in the same file as | 100 any dependent messages as well as any messages defined in the same file as |
101 a specified message. | 101 a specified message. |
102 """ | 102 """ |
103 result = {} | 103 result = {} |
104 for file_name in files: | 104 for file_name in files: |
105 file_desc = self.pool.FindFileByName(file_name) | 105 file_desc = self.pool.FindFileByName(file_name) |
106 for name, msg in file_desc.message_types_by_name.items(): | 106 for desc in file_desc.message_types_by_name.values(): |
107 if file_desc.package: | 107 result[desc.full_name] = self.GetPrototype(desc) |
108 full_name = '.'.join([file_desc.package, name]) | |
109 else: | |
110 full_name = msg.name | |
111 result[full_name] = self.GetPrototype( | |
112 self.pool.FindMessageTypeByName(full_name)) | |
113 | 108 |
114 # While the extension FieldDescriptors are created by the descriptor pool, | 109 # While the extension FieldDescriptors are created by the descriptor pool, |
115 # the python classes created in the factory need them to be registered | 110 # the python classes created in the factory need them to be registered |
116 # explicitly, which is done below. | 111 # explicitly, which is done below. |
117 # | 112 # |
118 # The call to RegisterExtension will specifically check if the | 113 # The call to RegisterExtension will specifically check if the |
119 # extension was already registered on the object and either | 114 # extension was already registered on the object and either |
120 # ignore the registration if the original was the same, or raise | 115 # ignore the registration if the original was the same, or raise |
121 # an error if they were different. | 116 # an error if they were different. |
122 | 117 |
123 for name, extension in file_desc.extensions_by_name.items(): | 118 for extension in file_desc.extensions_by_name.values(): |
124 if extension.containing_type.full_name not in self._classes: | 119 if extension.containing_type.full_name not in self._classes: |
125 self.GetPrototype(extension.containing_type) | 120 self.GetPrototype(extension.containing_type) |
126 extended_class = self._classes[extension.containing_type.full_name] | 121 extended_class = self._classes[extension.containing_type.full_name] |
127 extended_class.RegisterExtension(extension) | 122 extended_class.RegisterExtension(extension) |
128 return result | 123 return result |
129 | 124 |
130 | 125 |
131 _FACTORY = MessageFactory() | 126 _FACTORY = MessageFactory() |
132 | 127 |
133 | 128 |
134 def GetMessages(file_protos): | 129 def GetMessages(file_protos): |
135 """Builds a dictionary of all the messages available in a set of files. | 130 """Builds a dictionary of all the messages available in a set of files. |
136 | 131 |
137 Args: | 132 Args: |
138 file_protos: A sequence of file protos to build messages out of. | 133 file_protos: A sequence of file protos to build messages out of. |
139 | 134 |
140 Returns: | 135 Returns: |
141 A dictionary mapping proto names to the message classes. This will include | 136 A dictionary mapping proto names to the message classes. This will include |
142 any dependent messages as well as any messages defined in the same file as | 137 any dependent messages as well as any messages defined in the same file as |
143 a specified message. | 138 a specified message. |
144 """ | 139 """ |
145 for file_proto in file_protos: | 140 for file_proto in file_protos: |
146 _FACTORY.pool.Add(file_proto) | 141 _FACTORY.pool.Add(file_proto) |
147 return _FACTORY.GetMessages([file_proto.name for file_proto in file_protos]) | 142 return _FACTORY.GetMessages([file_proto.name for file_proto in file_protos]) |
OLD | NEW |