reflection.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. # Protocol Buffers - Google's data interchange format
  2. # Copyright 2008 Google Inc. All rights reserved.
  3. #
  4. # Use of this source code is governed by a BSD-style
  5. # license that can be found in the LICENSE file or at
  6. # https://developers.google.com/open-source/licenses/bsd
  7. # This code is meant to work on Python 2.4 and above only.
  8. """Contains a metaclass and helper functions used to create
  9. protocol message classes from Descriptor objects at runtime.
  10. Recall that a metaclass is the "type" of a class.
  11. (A class is to a metaclass what an instance is to a class.)
  12. In this case, we use the GeneratedProtocolMessageType metaclass
  13. to inject all the useful functionality into the classes
  14. output by the protocol compiler at compile-time.
  15. The upshot of all this is that the real implementation
  16. details for ALL pure-Python protocol buffers are *here in
  17. this file*.
  18. """
  19. __author__ = 'robinson@google.com (Will Robinson)'
  20. import warnings
  21. from google.protobuf import message_factory
  22. from google.protobuf import symbol_database
  23. # The type of all Message classes.
  24. # Part of the public interface, but normally only used by message factories.
  25. GeneratedProtocolMessageType = message_factory._GENERATED_PROTOCOL_MESSAGE_TYPE
  26. MESSAGE_CLASS_CACHE = {}