old_contents: # -*- encoding: utf-8 -*-
  
  from __future__ import unicode_literals
  
  import sys
  import os
  import logging
  
  from glob import glob
  
  from werkzeug.wsgi import DispatcherMiddleware
  from werkzeug.wrappers import Response
  
  from isso import dist, make_app, wsgi, config
  
  logger = logging.getLogger("isso")
  
  
  class Dispatcher(DispatcherMiddleware):
      """
      A dispatcher to support different websites. Dispatches based on
      a relative URI, e.g. /foo.example and /other.bar.
      """
  
      default = os.path.join(dist.location, dist.project_name, "defaults.ini")
  
      def __init__(self, *confs):
  
          self.isso = {}
  
          for i, path in enumerate(confs):
              conf = config.load(Dispatcher.default, path)
  
              if not conf.get("general", "name"):
                  logger.warn("unable to dispatch %r, no 'name' set", confs[i])
                  continue
  
              self.isso["/" + conf.get("general", "name")] = make_app(conf)
  
          super(Dispatcher, self).__init__(self.default, mounts=self.isso)
  
      def __call__(self, environ, start_response):
  
          # clear X-Script-Name as the PATH_INFO is already adjusted
          environ.pop('HTTP_X_SCRIPT_NAME', None)
  
          return super(Dispatcher, self).__call__(environ, start_response)
  
      def default(self, environ, start_response):
          resp = Response("\n".join(self.isso.keys()), 404, content_type="text/plain")
          return resp(environ, start_response)
  
  
  settings = os.environ.get("ISSO_SETTINGS")
  if settings:
      if os.path.isdir(settings):
          conf_glob = os.path.join(settings, '*.cfg')
          confs = glob(conf_glob)
          application = wsgi.SubURI(Dispatcher(*confs))
      else:
          confs = settings.split(";")
          for path in confs:
              if not os.path.isfile(path):
                  logger.fatal("%s: no such file", path)
                  sys.exit(1)
      application = wsgi.SubURI(Dispatcher(*confs))
  else:
      logger.fatal('environment variable ISSO_SETTINGS must be set')
  
new_contents: # -*- encoding: utf-8 -*-
  
  from __future__ import unicode_literals
  
  import sys
  import os
  import logging
  
  from glob import glob
  
  from werkzeug.wsgi import DispatcherMiddleware
  from werkzeug.wrappers import Response
  
  from isso import dist, make_app, wsgi, config
  
  logger = logging.getLogger("isso")
  
  
  class Dispatcher(DispatcherMiddleware):
      """
      A dispatcher to support different websites. Dispatches based on
      a relative URI, e.g. /foo.example and /other.bar.
      """
  
      def __init__(self, *confs):
          self.isso = {}
  
          default = os.path.join(dist.location, dist.project_name, "defaults.ini")
          for i, path in enumerate(confs):
              conf = config.load(default, path)
  
              if not conf.get("general", "name"):
                  logger.warn("unable to dispatch %r, no 'name' set", confs[i])
                  continue
  
              self.isso["/" + conf.get("general", "name")] = make_app(conf)
  
          super(Dispatcher, self).__init__(self.default, mounts=self.isso)
  
      def __call__(self, environ, start_response):
  
          # clear X-Script-Name as the PATH_INFO is already adjusted
          environ.pop('HTTP_X_SCRIPT_NAME', None)
  
          return super(Dispatcher, self).__call__(environ, start_response)
  
      def default(self, environ, start_response):
          resp = Response("\n".join(self.isso.keys()), 404, content_type="text/plain")
          return resp(environ, start_response)
  
  
  settings = os.environ.get("ISSO_SETTINGS")
  if settings:
      if os.path.isdir(settings):
          conf_glob = os.path.join(settings, '*.cfg')
          confs = glob(conf_glob)
          application = wsgi.SubURI(Dispatcher(*confs))
      else:
          confs = settings.split(";")
          for path in confs:
              if not os.path.isfile(path):
                  logger.fatal("%s: no such file", path)
                  sys.exit(1)
      application = wsgi.SubURI(Dispatcher(*confs))
  else:
      logger.fatal('environment variable ISSO_SETTINGS must be set')
  
subject: move default config expansion to function body (`default` already exists)