old_contents: # -*- coding: utf-8 -*-
  # vim: tabstop=4 shiftwidth=4 softtabstop=4
  
  # Copyright (c) 2010-2011, GEM Foundation.
  #
  # OpenQuake is free software: you can redistribute it and/or modify
  # it under the terms of the GNU Lesser General Public License version 3
  # only, as published by the Free Software Foundation.
  #
  # OpenQuake is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU Lesser General Public License version 3 for more details
  # (a copy is included in the LICENSE file that accompanied this code).
  #
  # You should have received a copy of the GNU Lesser General Public License
  # version 3 along with OpenQuake.  If not, see
  # <http://www.gnu.org/licenses/lgpl-3.0.txt> for a copy of the LGPLv3 License.
  
  
  """
  Utility functions of general interest.
  """
  
  import cPickle
  
  
  def singleton(cls):
      """This class decorator facilitates the definition of singletons."""
      instances = {}
  
      def getinstance():
          """
          Return an instance from the cache if present, create one otherwise.
          """
          if cls not in instances:
              instances[cls] = cls()
          return instances[cls]
      return getinstance
  
  
  # Memoize taken from the Python Cookbook that handles also unhashable types
  class MemoizeMutable:
      """ This decorator enables method/function caching in memory """
      def __init__(self, fun):
          self.fun = fun
          self.memo = {}
  
      def __call__(self, *args, **kwds):
          key = cPickle.dumps(args, 1) + cPickle.dumps(kwds, 1)
          if not key in self.memo:
              self.memo[key] = self.fun(*args, **kwds)
  
          return self.memo[key]
  
  
  str2bool = lambda x: x.lower() in ("true", "yes", "t", "1")
  
new_contents: # -*- coding: utf-8 -*-
  # vim: tabstop=4 shiftwidth=4 softtabstop=4
  
  # Copyright (c) 2010-2011, GEM Foundation.
  #
  # OpenQuake is free software: you can redistribute it and/or modify
  # it under the terms of the GNU Lesser General Public License version 3
  # only, as published by the Free Software Foundation.
  #
  # OpenQuake is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU Lesser General Public License version 3 for more details
  # (a copy is included in the LICENSE file that accompanied this code).
  #
  # You should have received a copy of the GNU Lesser General Public License
  # version 3 along with OpenQuake.  If not, see
  # <http://www.gnu.org/licenses/lgpl-3.0.txt> for a copy of the LGPLv3 License.
  
  
  """
  Utility functions of general interest.
  """
  
  import cPickle
  
  
  def singleton(cls):
      """This class decorator facilitates the definition of singletons."""
      instances = {}
  
      def getinstance():
          """
          Return an instance from the cache if present, create one otherwise.
          """
          if cls not in instances:
              instances[cls] = cls()
          return instances[cls]
      return getinstance
  
  
  # Memoize taken from the Python Cookbook that handles also unhashable types
  class MemoizeMutable:
      """ This decorator enables method/function caching in memory """
      def __init__(self, fun):
          self.fun = fun
          self.memo = {}
  
      def __call__(self, *args, **kwds):
          key = cPickle.dumps(args, 1) + cPickle.dumps(kwds, 1)
          if not key in self.memo:
              self.memo[key] = self.fun(*args, **kwds)
  
          return self.memo[key]
  
  
  def str2bool(x):
      """Convert a string representation of a boolean value to a bool."""
      return x.lower() in ("true", "yes", "t", "1")
  
subject: Convert lambda to function