code: def singleton(cls):
      
  
      # the only way to implement nonlocal closure variables in Python 2.X
      instances = {}
  
      def get_instance():
          if cls not in instances:
              instances[cls] = cls()
          return instances[cls]
  
      return get_instance
docs: turns class to singleton
      :param cls: class itself
      :return: function that either creates new instance of the class or returns existing one