old_contents: # Copyright 2014 Google Inc. All rights reserved.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  try:
      from threading import local as Local
  except ImportError:     # pragma: NO COVER (who doesn't have it?)
      class Local(object):
          """Placeholder for non-threaded applications."""
  
  
  class _LocalStack(Local):
      """Manage a thread-local LIFO stack of resources.
  
      Intended for use in :class:`gcloud.datastore.batch.Batch.__enter__`,
      :class:`gcloud.storage.batch.Batch.__enter__`, etc.
      """
      def __init__(self):
          super(_LocalStack, self).__init__()
          self._stack = []
  
      def __iter__(self):
          """Iterate the stack in LIFO order.
          """
          return iter(reversed(self._stack))
  
      def push(self, resource):
          """Push a resource onto our stack.
          """
          self._stack.append(resource)
  
      def pop(self):
          """Pop a resource from our stack.
  
          :raises: IndexError if the stack is empty.
          :returns: the top-most resource, after removing it.
          """
          return self._stack.pop()
  
      @property
      def top(self):
          """Get the top-most resource
  
          :returns: the top-most item, or None if the stack is empty.
          """
          if len(self._stack) > 0:
              return self._stack[-1]
  
new_contents: # Copyright 2014 Google Inc. All rights reserved.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  """Thread-local resource stack.
  
  Not an API.
  """
  
  try:
      from threading import local as Local
  except ImportError:     # pragma: NO COVER (who doesn't have it?)
      class Local(object):
          """Placeholder for non-threaded applications."""
  
  
  class _LocalStack(Local):
      """Manage a thread-local LIFO stack of resources.
  
      Intended for use in :class:`gcloud.datastore.batch.Batch.__enter__`,
      :class:`gcloud.storage.batch.Batch.__enter__`, etc.
      """
      def __init__(self):
          super(_LocalStack, self).__init__()
          self._stack = []
  
      def __iter__(self):
          """Iterate the stack in LIFO order.
          """
          return iter(reversed(self._stack))
  
      def push(self, resource):
          """Push a resource onto our stack.
          """
          self._stack.append(resource)
  
      def pop(self):
          """Pop a resource from our stack.
  
          :raises: IndexError if the stack is empty.
          :returns: the top-most resource, after removing it.
          """
          return self._stack.pop()
  
      @property
      def top(self):
          """Get the top-most resource
  
          :returns: the top-most item, or None if the stack is empty.
          """
          if len(self._stack) > 0:
              return self._stack[-1]
  
subject: Add module docstring.