Source code for aiida.common.additions.config_migrations._migrations

# -*- 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               #
###########################################################################
"""
Defines the migration functions between different config versions.
"""

# The current configuration version. Increment this value whenever a change
# to the config.json structure is made.
CURRENT_CONFIG_VERSION = 1
# The oldest config version where no backwards-incompatible changes have been
# made since. When doing backwards-incompatible changes, set this to the current
# version.
OLDEST_COMPATIBLE_CONFIG_VERSION = 0

[docs]class ConfigMigration(object): """ Defines a config migration. :param migrate_function: Function which transforms the config dict. This function does not need to change the CONFIG_VERSION values. :param current_version: Current config version after the migration. :type current_version: int :param oldest_version: Oldest compatible config version after the migration. :type oldest_version: int """
[docs] def __init__( self, migrate_function, current_version, oldest_version ): self.migrate_function = migrate_function self.current_version = int(current_version) self.oldest_version = int(oldest_version)
[docs] def apply(self, config): from ._utils import VERSION_KEY, CURRENT_KEY, OLDEST_KEY from ._utils import add_config_version config = self.migrate_function(config) add_config_version( config, current_version=self.current_version, oldest_version=self.oldest_version ) return config
# Maps the initial config version to the ConfigMigration which updates it. _MIGRATION_LOOKUP = { 0: ConfigMigration( migrate_function=lambda x: x, current_version=1, oldest_version=0 ) }