Source code for aiida.manage.configuration.utils

# -*- coding: utf-8 -*-
###########################################################################
# Copyright (c), The AiiDA team. All rights reserved.                     #
# This file is part of the AiiDA code.                                    #
#                                                                         #
# The code is hosted on GitHub at https://github.com/aiidateam/aiida_core #
# For further information on the license, see the LICENSE.txt file        #
# For further information please visit http://www.aiida.net               #
###########################################################################
"""Definition of known configuration options and methods to parse and get option values."""
from __future__ import division
from __future__ import print_function
from __future__ import absolute_import

import io
import os

from .config import Config
from .migrations import check_and_migrate_config
from .settings import DEFAULT_CONFIG_FILE_NAME

__all__ = ('load_config',)


[docs]def load_config(create=False): """Instantiate the Config object representing the configuration file of the current AiiDA instance. :param create: when set to True, will create the configuration file if it does not already exist :return: the config :rtype: :class:`~aiida.manage.configuration.config.Config` :raises aiida.common.MissingConfigurationError: if the configuration file could not be found and create=False """ from .settings import AIIDA_CONFIG_FOLDER from aiida.backends.settings import IN_RT_DOC_MODE, DUMMY_CONF_FILE from aiida.common import exceptions from aiida.common import json if IN_RT_DOC_MODE: return DUMMY_CONF_FILE filepath = os.path.join(AIIDA_CONFIG_FOLDER, DEFAULT_CONFIG_FILE_NAME) if not os.path.isfile(filepath): if not create: raise exceptions.MissingConfigurationError('configuration file {} does not exist'.format(filepath)) else: config = Config(filepath, {}).store() else: try: with io.open(filepath, 'r', encoding='utf8') as handle: config = Config(filepath, json.load(handle)) except ValueError: raise exceptions.ConfigurationError('configuration file {} contains invalid JSON'.format(filepath)) return check_and_migrate_config(config, store=True)