Coverage for constants/common.py: 0%
31 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-16 22:49 +1300
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-16 22:49 +1300
1"""
2Common Constants
3================
5Define common constants objects that don't belong to any specific
6category.
7"""
9from __future__ import annotations
11import os
13import numpy as np
15from colour.hints import DTypeComplex, DTypeFloat, Type, cast
16from colour.utilities.documentation import DocstringFloat, is_documentation_building
18__author__ = "Colour Developers"
19__copyright__ = "Copyright 2013 Colour Developers"
20__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause"
21__maintainer__ = "Colour Developers"
22__email__ = "colour-developers@colour-science.org"
23__status__ = "Production"
25__all__ = [
26 "PATTERN_FLOATING_POINT_NUMBER",
27 "THRESHOLD_INTEGER",
28 "EPSILON",
29 "DTYPE_INT_DEFAULT",
30 "DTYPE_FLOAT_DEFAULT",
31 "DTYPE_COMPLEX_DEFAULT",
32 "TOLERANCE_ABSOLUTE_DEFAULT",
33 "TOLERANCE_RELATIVE_DEFAULT",
34 "TOLERANCE_ABSOLUTE_TESTS",
35 "TOLERANCE_RELATIVE_TESTS",
36]
38PATTERN_FLOATING_POINT_NUMBER: str = "[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?"
39"""Floating point number regex matching pattern."""
41THRESHOLD_INTEGER: float = 1e-3
42if is_documentation_building(): # pragma: no cover
43 THRESHOLD_INTEGER = DocstringFloat(THRESHOLD_INTEGER)
44 THRESHOLD_INTEGER.__doc__ = """
45Integer threshold value when checking if a floating point number is almost an
46integer.
47"""
49EPSILON: float = cast("float", np.finfo(np.double).eps)
50"""
51Default epsilon value for tolerance and singularities avoidance in various
52computations.
53"""
55DTYPE_INT_DEFAULT: Type[np.int32 | np.int64] = cast(
56 "Type[np.int32 | np.int64]",
57 np.sctypeDict.get(
58 os.environ.get("COLOUR_SCIENCE__DEFAULT_INT_DTYPE", "int64"), np.int64
59 ),
60)
61"""Default int number dtype."""
64DTYPE_FLOAT_DEFAULT: Type[DTypeFloat] = cast(
65 "Type[DTypeFloat]",
66 np.sctypeDict.get(
67 os.environ.get("COLOUR_SCIENCE__DEFAULT_FLOAT_DTYPE", "float64"),
68 np.float64,
69 ),
70)
71"""Default floating point number dtype."""
73DTYPE_COMPLEX_DEFAULT: Type[DTypeComplex] = cast(
74 "Type[DTypeComplex]",
75 np.sctypeDict.get(
76 os.environ.get("COLOUR_SCIENCE__DEFAULT_COMPLEX_DTYPE", "complex128"),
77 np.complex128,
78 ),
79)
80"""Default complex number dtype."""
82TOLERANCE_ABSOLUTE_DEFAULT: float = 1e-8
83"""Default absolute tolerance for computations."""
85TOLERANCE_RELATIVE_DEFAULT: float = 1e-8
86"""Default relative tolerance for computations."""
88TOLERANCE_ABSOLUTE_TESTS: float = 1e-7
89"""Absolute tolerance for computations during unit tests."""
91TOLERANCE_RELATIVE_TESTS: float = 1e-7
92"""Relative tolerance for computations during unit tests."""