Index: third_party/google/protobuf/message.py |
diff --git a/third_party/google/protobuf/message.py b/third_party/google/protobuf/message.py |
deleted file mode 100644 |
index 37b0af14579a66d86fc18d0399bc1a52cdb769d5..0000000000000000000000000000000000000000 |
--- a/third_party/google/protobuf/message.py |
+++ /dev/null |
@@ -1,284 +0,0 @@ |
-# Protocol Buffers - Google's data interchange format |
-# Copyright 2008 Google Inc. All rights reserved. |
-# http://code.google.com/p/protobuf/ |
-# |
-# Redistribution and use in source and binary forms, with or without |
-# modification, are permitted provided that the following conditions are |
-# met: |
-# |
-# * Redistributions of source code must retain the above copyright |
-# notice, this list of conditions and the following disclaimer. |
-# * Redistributions in binary form must reproduce the above |
-# copyright notice, this list of conditions and the following disclaimer |
-# in the documentation and/or other materials provided with the |
-# distribution. |
-# * Neither the name of Google Inc. nor the names of its |
-# contributors may be used to endorse or promote products derived from |
-# this software without specific prior written permission. |
-# |
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- |
-# TODO(robinson): We should just make these methods all "pure-virtual" and move |
-# all implementation out, into reflection.py for now. |
- |
- |
-"""Contains an abstract base class for protocol messages.""" |
- |
-__author__ = 'robinson@google.com (Will Robinson)' |
- |
- |
-class Error(Exception): pass |
-class DecodeError(Error): pass |
-class EncodeError(Error): pass |
- |
- |
-class Message(object): |
- |
- """Abstract base class for protocol messages. |
- |
- Protocol message classes are almost always generated by the protocol |
- compiler. These generated types subclass Message and implement the methods |
- shown below. |
- |
- TODO(robinson): Link to an HTML document here. |
- |
- TODO(robinson): Document that instances of this class will also |
- have an Extensions attribute with __getitem__ and __setitem__. |
- Again, not sure how to best convey this. |
- |
- TODO(robinson): Document that the class must also have a static |
- RegisterExtension(extension_field) method. |
- Not sure how to best express at this point. |
- """ |
- |
- # TODO(robinson): Document these fields and methods. |
- |
- __slots__ = [] |
- |
- DESCRIPTOR = None |
- |
- def __deepcopy__(self, memo=None): |
- clone = type(self)() |
- clone.MergeFrom(self) |
- return clone |
- |
- def __eq__(self, other_msg): |
- """Recursively compares two messages by value and structure.""" |
- raise NotImplementedError |
- |
- def __ne__(self, other_msg): |
- # Can't just say self != other_msg, since that would infinitely recurse. :) |
- return not self == other_msg |
- |
- def __hash__(self): |
- raise TypeError('unhashable object') |
- |
- def __str__(self): |
- """Outputs a human-readable representation of the message.""" |
- raise NotImplementedError |
- |
- def __unicode__(self): |
- """Outputs a human-readable representation of the message.""" |
- raise NotImplementedError |
- |
- def MergeFrom(self, other_msg): |
- """Merges the contents of the specified message into current message. |
- |
- This method merges the contents of the specified message into the current |
- message. Singular fields that are set in the specified message overwrite |
- the corresponding fields in the current message. Repeated fields are |
- appended. Singular sub-messages and groups are recursively merged. |
- |
- Args: |
- other_msg: Message to merge into the current message. |
- """ |
- raise NotImplementedError |
- |
- def CopyFrom(self, other_msg): |
- """Copies the content of the specified message into the current message. |
- |
- The method clears the current message and then merges the specified |
- message using MergeFrom. |
- |
- Args: |
- other_msg: Message to copy into the current one. |
- """ |
- if self is other_msg: |
- return |
- self.Clear() |
- self.MergeFrom(other_msg) |
- |
- def Clear(self): |
- """Clears all data that was set in the message.""" |
- raise NotImplementedError |
- |
- def SetInParent(self): |
- """Mark this as present in the parent. |
- |
- This normally happens automatically when you assign a field of a |
- sub-message, but sometimes you want to make the sub-message |
- present while keeping it empty. If you find yourself using this, |
- you may want to reconsider your design.""" |
- raise NotImplementedError |
- |
- def IsInitialized(self): |
- """Checks if the message is initialized. |
- |
- Returns: |
- The method returns True if the message is initialized (i.e. all of its |
- required fields are set). |
- """ |
- raise NotImplementedError |
- |
- # TODO(robinson): MergeFromString() should probably return None and be |
- # implemented in terms of a helper that returns the # of bytes read. Our |
- # deserialization routines would use the helper when recursively |
- # deserializing, but the end user would almost always just want the no-return |
- # MergeFromString(). |
- |
- def MergeFromString(self, serialized): |
- """Merges serialized protocol buffer data into this message. |
- |
- When we find a field in |serialized| that is already present |
- in this message: |
- - If it's a "repeated" field, we append to the end of our list. |
- - Else, if it's a scalar, we overwrite our field. |
- - Else, (it's a nonrepeated composite), we recursively merge |
- into the existing composite. |
- |
- TODO(robinson): Document handling of unknown fields. |
- |
- Args: |
- serialized: Any object that allows us to call buffer(serialized) |
- to access a string of bytes using the buffer interface. |
- |
- TODO(robinson): When we switch to a helper, this will return None. |
- |
- Returns: |
- The number of bytes read from |serialized|. |
- For non-group messages, this will always be len(serialized), |
- but for messages which are actually groups, this will |
- generally be less than len(serialized), since we must |
- stop when we reach an END_GROUP tag. Note that if |
- we *do* stop because of an END_GROUP tag, the number |
- of bytes returned does not include the bytes |
- for the END_GROUP tag information. |
- """ |
- raise NotImplementedError |
- |
- def ParseFromString(self, serialized): |
- """Parse serialized protocol buffer data into this message. |
- |
- Like MergeFromString(), except we clear the object first and |
- do not return the value that MergeFromString returns. |
- """ |
- self.Clear() |
- self.MergeFromString(serialized) |
- |
- def SerializeToString(self): |
- """Serializes the protocol message to a binary string. |
- |
- Returns: |
- A binary string representation of the message if all of the required |
- fields in the message are set (i.e. the message is initialized). |
- |
- Raises: |
- message.EncodeError if the message isn't initialized. |
- """ |
- raise NotImplementedError |
- |
- def SerializePartialToString(self): |
- """Serializes the protocol message to a binary string. |
- |
- This method is similar to SerializeToString but doesn't check if the |
- message is initialized. |
- |
- Returns: |
- A string representation of the partial message. |
- """ |
- raise NotImplementedError |
- |
- # TODO(robinson): Decide whether we like these better |
- # than auto-generated has_foo() and clear_foo() methods |
- # on the instances themselves. This way is less consistent |
- # with C++, but it makes reflection-type access easier and |
- # reduces the number of magically autogenerated things. |
- # |
- # TODO(robinson): Be sure to document (and test) exactly |
- # which field names are accepted here. Are we case-sensitive? |
- # What do we do with fields that share names with Python keywords |
- # like 'lambda' and 'yield'? |
- # |
- # nnorwitz says: |
- # """ |
- # Typically (in python), an underscore is appended to names that are |
- # keywords. So they would become lambda_ or yield_. |
- # """ |
- def ListFields(self): |
- """Returns a list of (FieldDescriptor, value) tuples for all |
- fields in the message which are not empty. A singular field is non-empty |
- if HasField() would return true, and a repeated field is non-empty if |
- it contains at least one element. The fields are ordered by field |
- number""" |
- raise NotImplementedError |
- |
- def HasField(self, field_name): |
- """Checks if a certain field is set for the message. Note if the |
- field_name is not defined in the message descriptor, ValueError will be |
- raised.""" |
- raise NotImplementedError |
- |
- def ClearField(self, field_name): |
- raise NotImplementedError |
- |
- def HasExtension(self, extension_handle): |
- raise NotImplementedError |
- |
- def ClearExtension(self, extension_handle): |
- raise NotImplementedError |
- |
- def ByteSize(self): |
- """Returns the serialized size of this message. |
- Recursively calls ByteSize() on all contained messages. |
- """ |
- raise NotImplementedError |
- |
- def _SetListener(self, message_listener): |
- """Internal method used by the protocol message implementation. |
- Clients should not call this directly. |
- |
- Sets a listener that this message will call on certain state transitions. |
- |
- The purpose of this method is to register back-edges from children to |
- parents at runtime, for the purpose of setting "has" bits and |
- byte-size-dirty bits in the parent and ancestor objects whenever a child or |
- descendant object is modified. |
- |
- If the client wants to disconnect this Message from the object tree, she |
- explicitly sets callback to None. |
- |
- If message_listener is None, unregisters any existing listener. Otherwise, |
- message_listener must implement the MessageListener interface in |
- internal/message_listener.py, and we discard any listener registered |
- via a previous _SetListener() call. |
- """ |
- raise NotImplementedError |
- |
- def __getstate__(self): |
- """Support the pickle protocol.""" |
- return dict(serialized=self.SerializePartialToString()) |
- |
- def __setstate__(self, state): |
- """Support the pickle protocol.""" |
- self.__init__() |
- self.ParseFromString(state['serialized']) |