Source code for aiida.common.warnings
###########################################################################
# 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 #
###########################################################################
"""Define warnings that can be thrown by AiiDA."""
import os
import warnings
[docs]
class AiidaDeprecationWarning(Warning):
"""Class for AiiDA deprecations.
It does *not* inherit, on purpose, from `DeprecationWarning` as
this would be filtered out by default.
Enabled by default, you can disable it by running in the shell::
verdi config warnings.showdeprecations False
"""
[docs]
class AiidaEntryPointWarning(Warning):
"""Class for warnings concerning AiiDA entry points."""
[docs]
class AiidaTestWarning(Warning):
"""Class for warnings concerning the AiiDA testing infrastructure."""
[docs]
def warn_deprecation(message: str, version: int, stacklevel=2) -> None:
"""Warn about a deprecation for a future aiida-core version.
Warnings are emitted if the ``warnings.showdeprecations`` config option is set to ``True``. Its value can be
overwritten with the ``AIIDA_WARN_v{version}`` environment variable. The exact value for the environment variable is
irrelevant. Any value will mean the variable is enabled and warnings will be emitted.
:param message: the message to be printed
:param version: the major version number of the future version
:param stacklevel: the stack level at which the warning is issued
"""
from aiida.manage.configuration import get_config_option
from_config = get_config_option('warnings.showdeprecations')
from_environment = os.environ.get(f'AIIDA_WARN_v{version}')
if from_config or from_environment:
message = f'{message} (this will be removed in v{version})'
warnings.warn(message, AiidaDeprecationWarning, stacklevel=stacklevel)