old_contents: """
  In here we shall keep track of all variables and objects that should be
  instantiated only once and be common to pieces of GLBackend code.
  """
  
  __version__ = '1.0.0-rc6'
  
  __all__ = ['Storage', 'randomStr']
  
  import string
  import random
  
  class Storage(dict):
      """
      A Storage object is like a dictionary except `obj.foo` can be used
      in addition to `obj['foo']`.
  
          >>> o = Storage(a=1)
          >>> o.a
          1
          >>> o['a']
          1
          >>> o.a = 2
          >>> o['a']
          2
          >>> del o.a
          >>> o.a
          None
      """
      def __getattr__(self, key):
          return self.get(key)
  
      def __setattr__(self, key, value):
          self[key] = value
  
      def __delattr__(self, key):
          try:
              del self[key]
          except KeyError, k:
              raise AttributeError, k
  
      def __repr__(self):
          return '<Storage ' + dict.__repr__(self) + '>'
  
      def __getstate__(self):
          return dict(self)
  
      def __setstate__(self, value):
          self.update(value.items())
  
  def randomStr(length, num=True):
      """
      Returns a random a mixed lowercase, uppercase, alfanumerical (if num True)
      string long length
      """
      chars = string.ascii_lowercase + string.ascii_uppercase
      if num:
          chars += string.digits
      return ''.join(random.choice(chars) for x in range(length))
  
new_contents: """
  In here we shall keep track of all variables and objects that should be
  instantiated only once and be common to pieces of GLBackend code.
  """
  
  __version__ = '1.0.0-rc6'
  
  __all__ = ['Storage', 'randomStr']
  
  import string
  import random
  
  class Storage(dict):
      """
      A Storage object is like a dictionary except `obj.foo` can be used
      in addition to `obj['foo']`.
  
          >>> o = Storage(a=1)
          >>> o.a
          1
          >>> o['a']
          1
          >>> o.a = 2
          >>> o['a']
          2
          >>> del o.a
          >>> o.a
      """
      def __getattr__(self, key):
          return self.get(key)
  
      def __setattr__(self, key, value):
          self[key] = value
  
      def __delattr__(self, key):
          try:
              del self[key]
          except KeyError, k:
              raise AttributeError, k
  
      def __repr__(self):
          return '<Storage ' + dict.__repr__(self) + '>'
  
      def __getstate__(self):
          return dict(self)
  
      def __setstate__(self, value):
          self.update(value.items())
  
  def randomStr(length, num=True):
      """
      Returns a random a mixed lowercase, uppercase, alfanumerical (if num True)
      string long length
      """
      chars = string.ascii_lowercase + string.ascii_uppercase
      if num:
          chars += string.digits
      return ''.join(random.choice(chars) for x in range(length))
  
subject: fix doctest (python -m doctest __init__.py was failing)