Source code for colour_checker_detection.utilities.requirements
"""
Requirements Utilities
======================
Define the requirements utilities objects.
"""
from __future__ import annotations
import colour.utilities
__author__ = "Colour Developers"
__copyright__ = "Copyright 2018 Colour Developers"
__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause"
__maintainer__ = "Colour Developers"
__email__ = "colour-developers@colour-science.org"
__status__ = "Production"
__all__ = [
"is_sklearn_installed",
]
[docs]
def is_sklearn_installed(raise_exception: bool = False) -> bool:
"""
Return whether *scikit-learn* is installed and available.
Parameters
----------
raise_exception
Whether to raise an exception if *scikit-learn* is unavailable.
Returns
-------
:class:`bool`
Whether *scikit-learn* is installed.
Raises
------
:class:`ImportError`
If *scikit-learn* is not installed.
"""
try: # pragma: no cover
import sklearn # noqa: F401, PLC0415
except ImportError as exception: # pragma: no cover
if raise_exception:
error = (
f'"scikit-learn" related API features are not available: "{exception}".'
)
raise ImportError(error) from exception
return False
else:
return True
colour.utilities.requirements.REQUIREMENTS_TO_CALLABLE.update(
{
"scikit-learn": is_sklearn_installed,
}
)