prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  installation crashes when there are no config files
  ## Current Behavior
  ```
  $ cd pretalx
  $ pip-3.6 install . --user
  (...)
        File "<frozen importlib._bootstrap>", line 994, in _gcd_import
        File "<frozen importlib._bootstrap>", line 971, in _find_and_load
        File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
        File "<frozen importlib._bootstrap_external>", line 678, in exec_module
        File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
        File "/tmp/pip-xa87l9tk-build/pretalx/settings.py", line 460, in <module>
          plugins=PLUGINS
        File "/tmp/pip-xa87l9tk-build/pretalx/common/settings/utils.py", line 11, in log_initial
          (f'Read from: {", ".join(config_files)}', False),
      TypeError: can only join an iterable
  ```
  
  if there are no config files at all, the installation crashes, because `config_files` is `None`.
  
  ## Your Environment
  
  * Version used: master
  * Operating System and version (desktop or mobile): FreeBSD
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `src/pretalx/common/settings/config.py`
  Content:
  ```
  1 import configparser
  2 import os
  3 import sys
  4 
  5 from pretalx.common.settings.utils import reduce_dict
  6 
  7 CONFIG = {
  8     'filesystem': {
  9         'base': {
  10             'default': os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))),
  11         },
  12         'logs': {
  13             'default': None,
  14             'env': os.getenv('PRETALX_FILESYSTEM_LOGS'),
  15         },
  16         'media': {
  17             'default': None,
  18             'env': os.getenv('PRETALX_FILESYSTEM_MEDIA'),
  19         },
  20         'static': {
  21             'default': None,
  22             'env': os.getenv('PRETALX_FILESYSTEM_STATIC'),
  23         },
  24     },
  25     'site': {
  26         'debug': {
  27             'default': 'runserver' in sys.argv,
  28             'env': os.getenv('PRETALX_DEBUG'),
  29         },
  30         'url': {
  31             'default': 'http://localhost',
  32             'env': os.getenv('PRETALX_SITE_URL'),
  33         },
  34         'https': {
  35             'env': os.getenv('PRETALX_HTTPS'),
  36         },
  37         'cookie_domain': {
  38             'default': '',
  39             'env': os.getenv('PRETALX_COOKIE_DOMAIN'),
  40         },
  41     },
  42     'database': {
  43         'backend': {
  44             'default': 'sqlite3',
  45             'env': os.getenv('PRETALX_DB_TYPE'),
  46         },
  47         'name': {
  48             'env': os.getenv('PRETALX_DB_NAME'),
  49         },
  50         'user': {
  51             'default': '',
  52             'env': os.getenv('PRETALX_DB_USER'),
  53         },
  54         'password': {
  55             'default': '',
  56             'env': os.getenv('PRETALX_DB_PASS'),
  57         },
  58         'host': {
  59             'default': '',
  60             'env': os.getenv('PRETALX_DB_HOST'),
  61         },
  62         'port': {
  63             'default': '',
  64             'env': os.getenv('PRETALX_DB_PORT'),
  65         },
  66     },
  67     'mail': {
  68         'from': {
  69             'default': 'admin@localhost',
  70             'env': os.getenv('PRETALX_MAIL_FROM'),
  71         },
  72         'host': {
  73             'default': 'localhost',
  74             'env': os.getenv('PRETALX_MAIL_HOST'),
  75         },
  76         'port': {
  77             'default': '25',
  78             'env': os.getenv('PRETALX_MAIL_PORT'),
  79         },
  80         'user': {
  81             'default': '',
  82             'env': os.getenv('PRETALX_MAIL_USER'),
  83         },
  84         'password': {
  85             'default': '',
  86             'env': os.getenv('PRETALX_MAIL_PASSWORD'),
  87         },
  88         'tls': {
  89             'default': 'False',
  90             'env': os.getenv('PRETALX_MAIL_TLS'),
  91         },
  92         'ssl': {
  93             'default': 'False',
  94             'env': os.getenv('PRETALX_MAIL_SSL'),
  95         },
  96     },
  97     'cache': {
  98     },
  99     'celery': {
  100         'broker': {
  101             'default': '',
  102             'env': os.getenv('PRETALX_CELERY_BROKER'),
  103         },
  104         'backend': {
  105             'default': '',
  106             'env': os.getenv('PRETALX_CELERY_BACKEND'),
  107         },
  108     },
  109     'logging': {
  110         'email': {
  111             'default': '',
  112             'env': os.getenv('PRETALX_LOGGING_EMAIL'),
  113         },
  114         'email_level': {
  115             'default': '',
  116             'env': os.getenv('PRETALX_LOGGING_EMAIL_LEVEL'),
  117         },
  118     },
  119 }
  120 
  121 
  122 def read_config_files(config):
  123     if 'PRETALX_CONFIG_FILE' in os.environ:
  124         config_files = config.read_file(open(os.environ.get('PRETALX_CONFIG_FILE'), encoding='utf-8'))
  125     else:
  126         config_files = config.read([
  127             '/etc/pretalx/pretalx.cfg',
  128             os.path.expanduser('~/.pretalx.cfg'),
  129             'pretalx.cfg',
  130         ], encoding='utf-8')
  131     return config, config_files
  132 
  133 
  134 def read_layer(layer_name, config):
  135     config_dict = reduce_dict({
  136         section_name: {
  137             key: value.get(layer_name)
  138             for key, value in section_content.items()
  139         }
  140         for section_name, section_content in CONFIG.items()
  141     })
  142     config.read_dict(config_dict)
  143     return config
  144 
  145 
  146 def build_config():
  147     config = configparser.RawConfigParser()
  148     config = read_layer('default', config)
  149     config, config_files = read_config_files(config)
  150     config = read_layer('env', config)
  151     return config, config_files
  152
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/src/pretalx/common/settings/config.py b/src/pretalx/common/settings/config.py
  --- a/src/pretalx/common/settings/config.py
  +++ b/src/pretalx/common/settings/config.py
  @@ -128,7 +128,7 @@
               os.path.expanduser('~/.pretalx.cfg'),
               'pretalx.cfg',
           ], encoding='utf-8')
  -    return config, config_files
  +    return config, config_files or []  # .read() returns None, if there are no config files
   
   
   def read_layer(layer_name, config):
  
verification_info: {"golden_diff": "diff --git a/src/pretalx/common/settings/config.py b/src/pretalx/common/settings/config.py\n--- a/src/pretalx/common/settings/config.py\n+++ b/src/pretalx/common/settings/config.py\n@@ -128,7 +128,7 @@\n             os.path.expanduser('~/.pretalx.cfg'),\n             'pretalx.cfg',\n         ], encoding='utf-8')\n-    return config, config_files\n+    return config, config_files or []  # .read() returns None, if there are no config files\n \n \n def read_layer(layer_name, config):\n", "issue": "installation crashes when there are no config files\n## Current Behavior\r\n```\r\n$ cd pretalx\r\n$ pip-3.6 install . --user\r\n(...)\r\n      File \"<frozen importlib._bootstrap>\", line 994, in _gcd_import\r\n      File \"<frozen importlib._bootstrap>\", line 971, in _find_and_load\r\n      File \"<frozen importlib._bootstrap>\", line 955, in _find_and_load_unlocked\r\n      File \"<frozen importlib._bootstrap>\", line 665, in _load_unlocked\r\n      File \"<frozen importlib._bootstrap_external>\", line 678, in exec_module\r\n      File \"<frozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\r\n      File \"/tmp/pip-xa87l9tk-build/pretalx/settings.py\", line 460, in <module>\r\n        plugins=PLUGINS\r\n      File \"/tmp/pip-xa87l9tk-build/pretalx/common/settings/utils.py\", line 11, in log_initial\r\n        (f'Read from: {\", \".join(config_files)}', False),\r\n    TypeError: can only join an iterable\r\n```\r\n\r\nif there are no config files at all, the installation crashes, because `config_files` is `None`.\r\n\r\n## Your Environment\r\n\r\n* Version used: master\r\n* Operating System and version (desktop or mobile): FreeBSD\r\n\n", "before_files": [{"content": "import configparser\nimport os\nimport sys\n\nfrom pretalx.common.settings.utils import reduce_dict\n\nCONFIG = {\n    'filesystem': {\n        'base': {\n            'default': os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))),\n        },\n        'logs': {\n            'default': None,\n            'env': os.getenv('PRETALX_FILESYSTEM_LOGS'),\n        },\n        'media': {\n            'default': None,\n            'env': os.getenv('PRETALX_FILESYSTEM_MEDIA'),\n        },\n        'static': {\n            'default': None,\n            'env': os.getenv('PRETALX_FILESYSTEM_STATIC'),\n        },\n    },\n    'site': {\n        'debug': {\n            'default': 'runserver' in sys.argv,\n            'env': os.getenv('PRETALX_DEBUG'),\n        },\n        'url': {\n            'default': 'http://localhost',\n            'env': os.getenv('PRETALX_SITE_URL'),\n        },\n        'https': {\n            'env': os.getenv('PRETALX_HTTPS'),\n        },\n        'cookie_domain': {\n            'default': '',\n            'env': os.getenv('PRETALX_COOKIE_DOMAIN'),\n        },\n    },\n    'database': {\n        'backend': {\n            'default': 'sqlite3',\n            'env': os.getenv('PRETALX_DB_TYPE'),\n        },\n        'name': {\n            'env': os.getenv('PRETALX_DB_NAME'),\n        },\n        'user': {\n            'default': '',\n            'env': os.getenv('PRETALX_DB_USER'),\n        },\n        'password': {\n            'default': '',\n            'env': os.getenv('PRETALX_DB_PASS'),\n        },\n        'host': {\n            'default': '',\n            'env': os.getenv('PRETALX_DB_HOST'),\n        },\n        'port': {\n            'default': '',\n            'env': os.getenv('PRETALX_DB_PORT'),\n        },\n    },\n    'mail': {\n        'from': {\n            'default': 'admin@localhost',\n            'env': os.getenv('PRETALX_MAIL_FROM'),\n        },\n        'host': {\n            'default': 'localhost',\n            'env': os.getenv('PRETALX_MAIL_HOST'),\n        },\n        'port': {\n            'default': '25',\n            'env': os.getenv('PRETALX_MAIL_PORT'),\n        },\n        'user': {\n            'default': '',\n            'env': os.getenv('PRETALX_MAIL_USER'),\n        },\n        'password': {\n            'default': '',\n            'env': os.getenv('PRETALX_MAIL_PASSWORD'),\n        },\n        'tls': {\n            'default': 'False',\n            'env': os.getenv('PRETALX_MAIL_TLS'),\n        },\n        'ssl': {\n            'default': 'False',\n            'env': os.getenv('PRETALX_MAIL_SSL'),\n        },\n    },\n    'cache': {\n    },\n    'celery': {\n        'broker': {\n            'default': '',\n            'env': os.getenv('PRETALX_CELERY_BROKER'),\n        },\n        'backend': {\n            'default': '',\n            'env': os.getenv('PRETALX_CELERY_BACKEND'),\n        },\n    },\n    'logging': {\n        'email': {\n            'default': '',\n            'env': os.getenv('PRETALX_LOGGING_EMAIL'),\n        },\n        'email_level': {\n            'default': '',\n            'env': os.getenv('PRETALX_LOGGING_EMAIL_LEVEL'),\n        },\n    },\n}\n\n\ndef read_config_files(config):\n    if 'PRETALX_CONFIG_FILE' in os.environ:\n        config_files = config.read_file(open(os.environ.get('PRETALX_CONFIG_FILE'), encoding='utf-8'))\n    else:\n        config_files = config.read([\n            '/etc/pretalx/pretalx.cfg',\n            os.path.expanduser('~/.pretalx.cfg'),\n            'pretalx.cfg',\n        ], encoding='utf-8')\n    return config, config_files\n\n\ndef read_layer(layer_name, config):\n    config_dict = reduce_dict({\n        section_name: {\n            key: value.get(layer_name)\n            for key, value in section_content.items()\n        }\n        for section_name, section_content in CONFIG.items()\n    })\n    config.read_dict(config_dict)\n    return config\n\n\ndef build_config():\n    config = configparser.RawConfigParser()\n    config = read_layer('default', config)\n    config, config_files = read_config_files(config)\n    config = read_layer('env', config)\n    return config, config_files\n", "path": "src/pretalx/common/settings/config.py"}], "after_files": [{"content": "import configparser\nimport os\nimport sys\n\nfrom pretalx.common.settings.utils import reduce_dict\n\nCONFIG = {\n    'filesystem': {\n        'base': {\n            'default': os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))),\n        },\n        'logs': {\n            'default': None,\n            'env': os.getenv('PRETALX_FILESYSTEM_LOGS'),\n        },\n        'media': {\n            'default': None,\n            'env': os.getenv('PRETALX_FILESYSTEM_MEDIA'),\n        },\n        'static': {\n            'default': None,\n            'env': os.getenv('PRETALX_FILESYSTEM_STATIC'),\n        },\n    },\n    'site': {\n        'debug': {\n            'default': 'runserver' in sys.argv,\n            'env': os.getenv('PRETALX_DEBUG'),\n        },\n        'url': {\n            'default': 'http://localhost',\n            'env': os.getenv('PRETALX_SITE_URL'),\n        },\n        'https': {\n            'env': os.getenv('PRETALX_HTTPS'),\n        },\n        'cookie_domain': {\n            'default': '',\n            'env': os.getenv('PRETALX_COOKIE_DOMAIN'),\n        },\n    },\n    'database': {\n        'backend': {\n            'default': 'sqlite3',\n            'env': os.getenv('PRETALX_DB_TYPE'),\n        },\n        'name': {\n            'env': os.getenv('PRETALX_DB_NAME'),\n        },\n        'user': {\n            'default': '',\n            'env': os.getenv('PRETALX_DB_USER'),\n        },\n        'password': {\n            'default': '',\n            'env': os.getenv('PRETALX_DB_PASS'),\n        },\n        'host': {\n            'default': '',\n            'env': os.getenv('PRETALX_DB_HOST'),\n        },\n        'port': {\n            'default': '',\n            'env': os.getenv('PRETALX_DB_PORT'),\n        },\n    },\n    'mail': {\n        'from': {\n            'default': 'admin@localhost',\n            'env': os.getenv('PRETALX_MAIL_FROM'),\n        },\n        'host': {\n            'default': 'localhost',\n            'env': os.getenv('PRETALX_MAIL_HOST'),\n        },\n        'port': {\n            'default': '25',\n            'env': os.getenv('PRETALX_MAIL_PORT'),\n        },\n        'user': {\n            'default': '',\n            'env': os.getenv('PRETALX_MAIL_USER'),\n        },\n        'password': {\n            'default': '',\n            'env': os.getenv('PRETALX_MAIL_PASSWORD'),\n        },\n        'tls': {\n            'default': 'False',\n            'env': os.getenv('PRETALX_MAIL_TLS'),\n        },\n        'ssl': {\n            'default': 'False',\n            'env': os.getenv('PRETALX_MAIL_SSL'),\n        },\n    },\n    'cache': {\n    },\n    'celery': {\n        'broker': {\n            'default': '',\n            'env': os.getenv('PRETALX_CELERY_BROKER'),\n        },\n        'backend': {\n            'default': '',\n            'env': os.getenv('PRETALX_CELERY_BACKEND'),\n        },\n    },\n    'logging': {\n        'email': {\n            'default': '',\n            'env': os.getenv('PRETALX_LOGGING_EMAIL'),\n        },\n        'email_level': {\n            'default': '',\n            'env': os.getenv('PRETALX_LOGGING_EMAIL_LEVEL'),\n        },\n    },\n}\n\n\ndef read_config_files(config):\n    if 'PRETALX_CONFIG_FILE' in os.environ:\n        config_files = config.read_file(open(os.environ.get('PRETALX_CONFIG_FILE'), encoding='utf-8'))\n    else:\n        config_files = config.read([\n            '/etc/pretalx/pretalx.cfg',\n            os.path.expanduser('~/.pretalx.cfg'),\n            'pretalx.cfg',\n        ], encoding='utf-8')\n    return config, config_files or []  # .read() returns None, if there are no config files\n\n\ndef read_layer(layer_name, config):\n    config_dict = reduce_dict({\n        section_name: {\n            key: value.get(layer_name)\n            for key, value in section_content.items()\n        }\n        for section_name, section_content in CONFIG.items()\n    })\n    config.read_dict(config_dict)\n    return config\n\n\ndef build_config():\n    config = configparser.RawConfigParser()\n    config = read_layer('default', config)\n    config, config_files = read_config_files(config)\n    config = read_layer('env', config)\n    return config, config_files\n", "path": "src/pretalx/common/settings/config.py"}]}