Coverage for constants/common.py: 0%

31 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-16 22:49 +1300

1""" 

2Common Constants 

3================ 

4 

5Define common constants objects that don't belong to any specific 

6category. 

7""" 

8 

9from __future__ import annotations 

10 

11import os 

12 

13import numpy as np 

14 

15from colour.hints import DTypeComplex, DTypeFloat, Type, cast 

16from colour.utilities.documentation import DocstringFloat, is_documentation_building 

17 

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" 

24 

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] 

37 

38PATTERN_FLOATING_POINT_NUMBER: str = "[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?" 

39"""Floating point number regex matching pattern.""" 

40 

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""" 

48 

49EPSILON: float = cast("float", np.finfo(np.double).eps) 

50""" 

51Default epsilon value for tolerance and singularities avoidance in various 

52computations. 

53""" 

54 

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.""" 

62 

63 

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.""" 

72 

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.""" 

81 

82TOLERANCE_ABSOLUTE_DEFAULT: float = 1e-8 

83"""Default absolute tolerance for computations.""" 

84 

85TOLERANCE_RELATIVE_DEFAULT: float = 1e-8 

86"""Default relative tolerance for computations.""" 

87 

88TOLERANCE_ABSOLUTE_TESTS: float = 1e-7 

89"""Absolute tolerance for computations during unit tests.""" 

90 

91TOLERANCE_RELATIVE_TESTS: float = 1e-7 

92"""Relative tolerance for computations during unit tests."""