Coverage for colour/__init__.py: 100%
92 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-15 19:01 +1300
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-15 19:01 +1300
1"""
2Colour
3======
5`Colour <https://github.com/colour-science/colour>`__ is an open-source
6`Python <https://www.python.org>`__ package providing a comprehensive number
7of algorithms and datasets for colour science.
9It is freely available under the
10`BSD-3-Clause <https://opensource.org/licenses/BSD-3-Clause>`__ terms.
12`Colour <https://github.com/colour-science/colour>`__ is an affiliated project
13of `NumFOCUS <https://numfocus.org>`__, a 501(c)(3) nonprofit in the United
14States.
16Sub-packages
17------------
18- adaptation: Chromatic adaptation models and transformations.
19- algebra: Algebra utilities.
20- appearance: Colour appearance models.
21- biochemistry: Biochemistry computations.
22- blindness: Colour vision deficiency models.
23- characterisation: Colour correction, camera and display characterisation.
24- colorimetry: Core objects for colour computations.
25- constants: *CIE* and *CODATA* constants.
26- continuous: Base objects for continuous data representation.
27- contrast: Objects for contrast sensitivity computation.
28- corresponding: Corresponding colour chromaticities computations.
29- difference: Colour difference computations.
30- examples: Examples for the sub-packages.
31- geometry: Geometry computations.
32- graph: Graph for automatic colour conversions.
33- hints: Type hints for annotations.
34- io: Input / output objects for reading and writing data.
35- models: Colour models.
36- notation: Colour notation systems.
37- phenomena: Computation of various optical phenomena.
38- plotting: Diagrams, figures, etc...
39- quality: Colour quality computation.
40- recovery: Reflectance recovery.
41- temperature: Colour temperature and correlated colour temperature
42 computation.
43- utilities: Various utilities and data structures.
44- volume: Colourspace volumes computation and optimal colour stimuli.
45"""
47import contextlib
48import json
49import os
50import sys
52import numpy as np
54# Loading the "colour-science" JEnv file.
55_JENV_FILE_PATH = os.path.join(
56 os.path.expanduser("~"),
57 ".colour-science",
58 "colour-science.jenv",
59)
61if os.path.exists(_JENV_FILE_PATH):
62 with open(_JENV_FILE_PATH) as _JENV_FILE:
63 for _KEY, _VALUE in json.loads(_JENV_FILE.read()).items():
64 os.environ[_KEY] = str(_VALUE)
66 del _JENV_FILE, _KEY, _VALUE
68del _JENV_FILE_PATH
70# ruff: noqa: E402
72from colour import plotting # noqa: F401
74# isort: split
76from .adaptation import (
77 CHROMATIC_ADAPTATION_METHODS,
78 CHROMATIC_ADAPTATION_TRANSFORMS,
79 VIEWING_CONDITIONS_CMCCAT2000,
80 chromatic_adaptation,
81)
82from .algebra import (
83 TABLE_INTERPOLATION_METHODS,
84 CubicSplineInterpolator,
85 Extrapolator,
86 KernelInterpolator,
87 LinearInterpolator,
88 NearestNeighbourInterpolator,
89 NullInterpolator,
90 PchipInterpolator,
91 SpragueInterpolator,
92 kernel_cardinal_spline,
93 kernel_lanczos,
94 kernel_linear,
95 kernel_nearest_neighbour,
96 kernel_sinc,
97 lagrange_coefficients,
98 table_interpolation,
99)
100from .appearance import (
101 HKE_NAYATANI1997_METHODS,
102 MEDIA_PARAMETERS_KIM2009,
103 VIEWING_CONDITIONS_CAM16,
104 VIEWING_CONDITIONS_CIECAM02,
105 VIEWING_CONDITIONS_CIECAM16,
106 VIEWING_CONDITIONS_HELLWIG2022,
107 VIEWING_CONDITIONS_HUNT,
108 VIEWING_CONDITIONS_KIM2009,
109 VIEWING_CONDITIONS_LLAB,
110 VIEWING_CONDITIONS_RLAB,
111 VIEWING_CONDITIONS_ZCAM,
112 CAM16_to_XYZ,
113 CAM_Specification_ATD95,
114 CAM_Specification_CAM16,
115 CAM_Specification_CIECAM02,
116 CAM_Specification_CIECAM16,
117 CAM_Specification_Hellwig2022,
118 CAM_Specification_Hunt,
119 CAM_Specification_Kim2009,
120 CAM_Specification_LLAB,
121 CAM_Specification_Nayatani95,
122 CAM_Specification_RLAB,
123 CAM_Specification_sCAM,
124 CAM_Specification_ZCAM,
125 CIECAM02_to_XYZ,
126 CIECAM16_to_XYZ,
127 Hellwig2022_to_XYZ,
128 HelmholtzKohlrausch_effect_luminous_Nayatani1997,
129 HelmholtzKohlrausch_effect_object_Nayatani1997,
130 Kim2009_to_XYZ,
131 VIEWING_CONDITIONS_sCAM,
132 XYZ_to_ATD95,
133 XYZ_to_CAM16,
134 XYZ_to_CIECAM02,
135 XYZ_to_CIECAM16,
136 XYZ_to_Hellwig2022,
137 XYZ_to_Hunt,
138 XYZ_to_Kim2009,
139 XYZ_to_LLAB,
140 XYZ_to_Nayatani95,
141 XYZ_to_RLAB,
142 XYZ_to_sCAM,
143 XYZ_to_ZCAM,
144 ZCAM_to_XYZ,
145 sCAM_to_XYZ,
146)
147from .blindness import (
148 CVD_MATRICES_MACHADO2010,
149 matrix_anomalous_trichromacy_Machado2009,
150 matrix_cvd_Machado2009,
151 msds_cmfs_anomalous_trichromacy_Machado2009,
152)
153from .characterisation import (
154 APPLY_MATRIX_COLOUR_CORRECTION_METHODS,
155 CCS_COLOURCHECKERS,
156 COLOUR_CORRECTION_METHODS,
157 MATRIX_COLOUR_CORRECTION_METHODS,
158 MSDS_CAMERA_SENSITIVITIES,
159 MSDS_DISPLAY_PRIMARIES,
160 POLYNOMIAL_EXPANSION_METHODS,
161 SDS_COLOURCHECKERS,
162 SDS_FILTERS,
163 SDS_LENSES,
164 apply_matrix_colour_correction,
165 camera_RGB_to_ACES2065_1,
166 colour_correction,
167 matrix_colour_correction,
168 matrix_idt,
169 polynomial_expansion,
170 sd_to_ACES2065_1,
171 sd_to_aces_relative_exposure_values,
172)
173from .colorimetry import (
174 BANDPASS_CORRECTION_METHODS,
175 CCS_ILLUMINANTS,
176 CCS_LIGHT_SOURCES,
177 LIGHTNESS_METHODS,
178 LUMINANCE_METHODS,
179 MSDS_CMFS,
180 MSDS_TO_XYZ_METHODS,
181 SD_GAUSSIAN_METHODS,
182 SD_MULTI_LEDS_METHODS,
183 SD_SINGLE_LED_METHODS,
184 SD_TO_XYZ_METHODS,
185 SDS_ILLUMINANTS,
186 SDS_LEFS,
187 SDS_LIGHT_SOURCES,
188 SPECTRAL_SHAPE_ASTME308,
189 SPECTRAL_SHAPE_DEFAULT,
190 TVS_ILLUMINANTS,
191 TVS_ILLUMINANTS_HUNTERLAB,
192 WHITENESS_METHODS,
193 YELLOWNESS_METHODS,
194 MultiSpectralDistributions,
195 SpectralDistribution,
196 SpectralShape,
197 bandpass_correction,
198 colorimetric_purity,
199 complementary_wavelength,
200 dominant_wavelength,
201 excitation_purity,
202 lightness,
203 luminance,
204 luminous_efficacy,
205 luminous_efficiency,
206 luminous_flux,
207 msds_constant,
208 msds_ones,
209 msds_to_XYZ,
210 msds_zeros,
211 sd_blackbody,
212 sd_CIE_illuminant_D_series,
213 sd_CIE_standard_illuminant_A,
214 sd_constant,
215 sd_gaussian,
216 sd_mesopic_luminous_efficiency_function,
217 sd_multi_leds,
218 sd_ones,
219 sd_rayleigh_jeans,
220 sd_single_led,
221 sd_to_XYZ,
222 sd_zeros,
223 spectral_uniformity,
224 wavelength_to_XYZ,
225 whiteness,
226 yellowness,
227)
228from .contrast import (
229 CONTRAST_SENSITIVITY_METHODS,
230 contrast_sensitivity_function,
231)
232from .corresponding import (
233 BRENEMAN_EXPERIMENT_PRIMARIES_CHROMATICITIES,
234 BRENEMAN_EXPERIMENTS,
235 CORRESPONDING_CHROMATICITIES_PREDICTION_MODELS,
236 CorrespondingChromaticitiesPrediction,
237 CorrespondingColourDataset,
238 corresponding_chromaticities_prediction,
239)
240from .difference import (
241 DELTA_E_METHODS,
242 INDEX_STRESS_METHODS,
243 delta_E,
244 index_stress,
245)
246from .geometry import (
247 PRIMITIVE_METHODS,
248 PRIMITIVE_VERTICES_METHODS,
249 primitive,
250 primitive_vertices,
251)
252from .graph import convert, describe_conversion_path
253from .hints import Any
254from .io import (
255 LUT1D,
256 LUT3D,
257 READ_IMAGE_METHODS,
258 WRITE_IMAGE_METHODS,
259 Header_IESTM2714,
260 LUT3x1D,
261 LUTOperatorMatrix,
262 LUTSequence,
263 Specification_Fichet2021,
264 SpectralDistribution_IESTM2714,
265 SpectralDistribution_Sekonic,
266 SpectralDistribution_UPRTek,
267 read_image,
268 read_LUT,
269 read_sds_from_csv_file,
270 read_sds_from_xrite_file,
271 read_spectral_data_from_csv_file,
272 read_spectral_image_Fichet2021,
273 write_image,
274 write_LUT,
275 write_sds_to_csv_file,
276 write_spectral_image_Fichet2021,
277)
278from .models import (
279 CCTF_DECODINGS,
280 CCTF_ENCODINGS,
281 COLOUR_PRIMARIES_ITUTH273,
282 COLOURSPACE_MODELS,
283 COLOURSPACE_MODELS_POLAR_CONVERSIONS,
284 DATA_MACADAM_1942_ELLIPSES,
285 EOTF_INVERSES,
286 EOTFS,
287 HDR_CIELAB_METHODS,
288 HDR_IPT_METHODS,
289 LOG_DECODINGS,
290 LOG_ENCODINGS,
291 MATRIX_COEFFICIENTS_ITUTH273,
292 OETF_INVERSES,
293 OETFS,
294 OOTF_INVERSES,
295 OOTFS,
296 RGB_COLOURSPACES,
297 TRANSFER_CHARACTERISTICS_ITUTH273,
298 WEIGHTS_YCBCR,
299 CAM02LCD_to_JMh_CIECAM02,
300 CAM02LCD_to_XYZ,
301 CAM02SCD_to_JMh_CIECAM02,
302 CAM02SCD_to_XYZ,
303 CAM02UCS_to_JMh_CIECAM02,
304 CAM02UCS_to_XYZ,
305 CAM16LCD_to_JMh_CAM16,
306 CAM16LCD_to_XYZ,
307 CAM16SCD_to_JMh_CAM16,
308 CAM16SCD_to_XYZ,
309 CAM16UCS_to_JMh_CAM16,
310 CAM16UCS_to_XYZ,
311 CIE1960UCS_to_XYZ,
312 CIE1976UCS_to_XYZ,
313 CMY_to_CMYK,
314 CMY_to_RGB,
315 CMYK_to_CMY,
316 CV_range,
317 DIN99_to_Lab,
318 DIN99_to_XYZ,
319 HCL_to_RGB,
320 HSL_to_RGB,
321 HSV_to_RGB,
322 Hunter_Lab_to_XYZ,
323 Hunter_Rdab_to_XYZ,
324 ICaCb_to_XYZ,
325 ICtCp_to_RGB,
326 ICtCp_to_XYZ,
327 IgPgTg_to_XYZ,
328 IHLS_to_RGB,
329 IPT_Ragoo2021_to_XYZ,
330 IPT_to_XYZ,
331 JMh_CAM16_to_CAM16LCD,
332 JMh_CAM16_to_CAM16SCD,
333 JMh_CAM16_to_CAM16UCS,
334 JMh_CIECAM02_to_CAM02LCD,
335 JMh_CIECAM02_to_CAM02SCD,
336 JMh_CIECAM02_to_CAM02UCS,
337 Jzazbz_to_XYZ,
338 Lab_to_DIN99,
339 Lab_to_XYZ,
340 Luv_to_uv,
341 Luv_to_XYZ,
342 Luv_uv_to_xy,
343 Oklab_to_XYZ,
344 OSA_UCS_to_XYZ,
345 Prismatic_to_RGB,
346 ProLab_to_XYZ,
347 RGB_Colourspace,
348 RGB_luminance,
349 RGB_luminance_equation,
350 RGB_to_CMY,
351 RGB_to_HCL,
352 RGB_to_HSL,
353 RGB_to_HSV,
354 RGB_to_ICtCp,
355 RGB_to_IHLS,
356 RGB_to_Prismatic,
357 RGB_to_RGB,
358 RGB_to_XYZ,
359 RGB_to_YCbCr,
360 RGB_to_YcCbcCrc,
361 RGB_to_YCoCg,
362 UCS_to_uv,
363 UCS_to_XYZ,
364 UCS_uv_to_xy,
365 UVW_to_XYZ,
366 XYZ_to_CAM02LCD,
367 XYZ_to_CAM02SCD,
368 XYZ_to_CAM02UCS,
369 XYZ_to_CAM16LCD,
370 XYZ_to_CAM16SCD,
371 XYZ_to_CAM16UCS,
372 XYZ_to_CIE1960UCS,
373 XYZ_to_CIE1976UCS,
374 XYZ_to_DIN99,
375 XYZ_to_hdr_CIELab,
376 XYZ_to_hdr_IPT,
377 XYZ_to_Hunter_Lab,
378 XYZ_to_Hunter_Rdab,
379 XYZ_to_ICaCb,
380 XYZ_to_ICtCp,
381 XYZ_to_IgPgTg,
382 XYZ_to_IPT,
383 XYZ_to_IPT_Ragoo2021,
384 XYZ_to_Jzazbz,
385 XYZ_to_K_ab_HunterLab1966,
386 XYZ_to_Lab,
387 XYZ_to_Luv,
388 XYZ_to_Oklab,
389 XYZ_to_OSA_UCS,
390 XYZ_to_ProLab,
391 XYZ_to_RGB,
392 XYZ_to_sRGB,
393 XYZ_to_sUCS,
394 XYZ_to_UCS,
395 XYZ_to_UVW,
396 XYZ_to_xy,
397 XYZ_to_xyY,
398 XYZ_to_Yrg,
399 YCbCr_to_RGB,
400 YcCbcCrc_to_RGB,
401 YCoCg_to_RGB,
402 Yrg_to_XYZ,
403 cctf_decoding,
404 cctf_encoding,
405 chromatically_adapted_primaries,
406 eotf,
407 eotf_inverse,
408 full_to_legal,
409 gamma_function,
410 hdr_CIELab_to_XYZ,
411 hdr_IPT_to_XYZ,
412 legal_to_full,
413 linear_function,
414 log_decoding,
415 log_encoding,
416 matrix_RGB_to_RGB,
417 matrix_YCbCr,
418 normalised_primary_matrix,
419 oetf,
420 oetf_inverse,
421 offset_YCbCr,
422 ootf,
423 ootf_inverse,
424 primaries_whitepoint,
425 sRGB_to_XYZ,
426 sUCS_to_XYZ,
427 uv_to_Luv,
428 uv_to_UCS,
429 xy_to_Luv_uv,
430 xy_to_UCS_uv,
431 xy_to_xyY,
432 xy_to_XYZ,
433 xyY_to_xy,
434 xyY_to_XYZ,
435)
436from .notation import (
437 MUNSELL_COLOURS,
438 MUNSELL_VALUE_METHODS,
439 munsell_colour_to_xyY,
440 munsell_value,
441 xyY_to_munsell_colour,
442)
443from .phenomena import (
444 rayleigh_scattering,
445 scattering_cross_section,
446 sd_rayleigh_scattering,
447)
448from .quality import (
449 COLOUR_FIDELITY_INDEX_METHODS,
450 COLOUR_QUALITY_SCALE_METHODS,
451 COLOUR_RENDERING_INDEX_METHODS,
452 colour_fidelity_index,
453 colour_quality_scale,
454 colour_rendering_index,
455 spectral_similarity_index,
456)
457from .recovery import XYZ_TO_SD_METHODS, XYZ_to_sd
458from .temperature import (
459 CCT_TO_UV_METHODS,
460 CCT_TO_XY_METHODS,
461 UV_TO_CCT_METHODS,
462 XY_TO_CCT_METHODS,
463 CCT_to_uv,
464 CCT_to_xy,
465 uv_to_CCT,
466 xy_to_CCT,
467)
468from .utilities.array import (
469 domain_range_scale,
470 get_domain_range_scale,
471 get_domain_range_scale_metadata,
472 set_domain_range_scale,
473)
474from .volume import (
475 OPTIMAL_COLOUR_STIMULI_ILLUMINANTS,
476 RGB_colourspace_limits,
477 RGB_colourspace_pointer_gamut_coverage_MonteCarlo,
478 RGB_colourspace_visible_spectrum_coverage_MonteCarlo,
479 RGB_colourspace_volume_coverage_MonteCarlo,
480 RGB_colourspace_volume_MonteCarlo,
481 is_within_macadam_limits,
482 is_within_mesh_volume,
483 is_within_pointer_gamut,
484 is_within_visible_spectrum,
485)
487__author__ = "Colour Developers"
488__copyright__ = "Copyright 2013 Colour Developers"
489__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause"
490__maintainer__ = "Colour Developers"
491__email__ = "colour-developers@colour-science.org"
492__status__ = "Production"
494__all__ = [
495 "CHROMATIC_ADAPTATION_METHODS",
496 "CHROMATIC_ADAPTATION_TRANSFORMS",
497 "VIEWING_CONDITIONS_CMCCAT2000",
498 "chromatic_adaptation",
499]
500__all__ += [
501 "TABLE_INTERPOLATION_METHODS",
502 "CubicSplineInterpolator",
503 "Extrapolator",
504 "KernelInterpolator",
505 "LinearInterpolator",
506 "NearestNeighbourInterpolator",
507 "NullInterpolator",
508 "PchipInterpolator",
509 "SpragueInterpolator",
510 "kernel_cardinal_spline",
511 "kernel_lanczos",
512 "kernel_linear",
513 "kernel_nearest_neighbour",
514 "kernel_sinc",
515 "lagrange_coefficients",
516 "table_interpolation",
517]
518__all__ += [
519 "HKE_NAYATANI1997_METHODS",
520 "MEDIA_PARAMETERS_KIM2009",
521 "VIEWING_CONDITIONS_CAM16",
522 "VIEWING_CONDITIONS_CIECAM02",
523 "VIEWING_CONDITIONS_CIECAM16",
524 "VIEWING_CONDITIONS_HELLWIG2022",
525 "VIEWING_CONDITIONS_HUNT",
526 "VIEWING_CONDITIONS_KIM2009",
527 "VIEWING_CONDITIONS_LLAB",
528 "VIEWING_CONDITIONS_RLAB",
529 "VIEWING_CONDITIONS_ZCAM",
530 "CAM16_to_XYZ",
531 "CAM_Specification_ATD95",
532 "CAM_Specification_CAM16",
533 "CAM_Specification_CIECAM02",
534 "CAM_Specification_CIECAM16",
535 "CAM_Specification_Hellwig2022",
536 "CAM_Specification_Hunt",
537 "CAM_Specification_Kim2009",
538 "CAM_Specification_LLAB",
539 "CAM_Specification_Nayatani95",
540 "CAM_Specification_RLAB",
541 "CAM_Specification_sCAM",
542 "CAM_Specification_ZCAM",
543 "CIECAM02_to_XYZ",
544 "CIECAM16_to_XYZ",
545 "Hellwig2022_to_XYZ",
546 "HelmholtzKohlrausch_effect_luminous_Nayatani1997",
547 "HelmholtzKohlrausch_effect_object_Nayatani1997",
548 "Kim2009_to_XYZ",
549 "VIEWING_CONDITIONS_sCAM",
550 "XYZ_to_ATD95",
551 "XYZ_to_CAM16",
552 "XYZ_to_CIECAM02",
553 "XYZ_to_CIECAM16",
554 "XYZ_to_Hellwig2022",
555 "XYZ_to_Hunt",
556 "XYZ_to_Kim2009",
557 "XYZ_to_LLAB",
558 "XYZ_to_Nayatani95",
559 "XYZ_to_RLAB",
560 "XYZ_to_sCAM",
561 "XYZ_to_ZCAM",
562 "ZCAM_to_XYZ",
563 "sCAM_to_XYZ",
564]
565__all__ += [
566 "CVD_MATRICES_MACHADO2010",
567 "matrix_anomalous_trichromacy_Machado2009",
568 "matrix_cvd_Machado2009",
569 "msds_cmfs_anomalous_trichromacy_Machado2009",
570]
571__all__ += [
572 "APPLY_MATRIX_COLOUR_CORRECTION_METHODS",
573 "CCS_COLOURCHECKERS",
574 "COLOUR_CORRECTION_METHODS",
575 "MATRIX_COLOUR_CORRECTION_METHODS",
576 "MSDS_CAMERA_SENSITIVITIES",
577 "MSDS_DISPLAY_PRIMARIES",
578 "POLYNOMIAL_EXPANSION_METHODS",
579 "SDS_COLOURCHECKERS",
580 "SDS_FILTERS",
581 "SDS_LENSES",
582 "apply_matrix_colour_correction",
583 "camera_RGB_to_ACES2065_1",
584 "colour_correction",
585 "matrix_colour_correction",
586 "matrix_idt",
587 "polynomial_expansion",
588 "sd_to_ACES2065_1",
589 "sd_to_aces_relative_exposure_values",
590]
591__all__ += [
592 "BANDPASS_CORRECTION_METHODS",
593 "CCS_ILLUMINANTS",
594 "CCS_LIGHT_SOURCES",
595 "LIGHTNESS_METHODS",
596 "LUMINANCE_METHODS",
597 "MSDS_CMFS",
598 "MSDS_TO_XYZ_METHODS",
599 "SD_GAUSSIAN_METHODS",
600 "SD_MULTI_LEDS_METHODS",
601 "SD_SINGLE_LED_METHODS",
602 "SD_TO_XYZ_METHODS",
603 "SDS_ILLUMINANTS",
604 "SDS_LEFS",
605 "SDS_LIGHT_SOURCES",
606 "SPECTRAL_SHAPE_ASTME308",
607 "SPECTRAL_SHAPE_DEFAULT",
608 "TVS_ILLUMINANTS",
609 "TVS_ILLUMINANTS_HUNTERLAB",
610 "WHITENESS_METHODS",
611 "YELLOWNESS_METHODS",
612 "MultiSpectralDistributions",
613 "SpectralDistribution",
614 "SpectralShape",
615 "bandpass_correction",
616 "colorimetric_purity",
617 "complementary_wavelength",
618 "dominant_wavelength",
619 "excitation_purity",
620 "lightness",
621 "luminance",
622 "luminous_efficacy",
623 "luminous_efficiency",
624 "luminous_flux",
625 "msds_constant",
626 "msds_ones",
627 "msds_to_XYZ",
628 "msds_zeros",
629 "sd_blackbody",
630 "sd_CIE_illuminant_D_series",
631 "sd_CIE_standard_illuminant_A",
632 "sd_constant",
633 "sd_gaussian",
634 "sd_mesopic_luminous_efficiency_function",
635 "sd_multi_leds",
636 "sd_ones",
637 "sd_rayleigh_jeans",
638 "sd_single_led",
639 "sd_to_XYZ",
640 "sd_zeros",
641 "spectral_uniformity",
642 "wavelength_to_XYZ",
643 "whiteness",
644 "yellowness",
645]
646__all__ += [
647 "CONTRAST_SENSITIVITY_METHODS",
648 "contrast_sensitivity_function",
649]
650__all__ += [
651 "BRENEMAN_EXPERIMENT_PRIMARIES_CHROMATICITIES",
652 "BRENEMAN_EXPERIMENTS",
653 "CORRESPONDING_CHROMATICITIES_PREDICTION_MODELS",
654 "CorrespondingChromaticitiesPrediction",
655 "CorrespondingColourDataset",
656 "corresponding_chromaticities_prediction",
657]
658__all__ += [
659 "DELTA_E_METHODS",
660 "INDEX_STRESS_METHODS",
661 "delta_E",
662 "index_stress",
663]
664__all__ += [
665 "PRIMITIVE_METHODS",
666 "PRIMITIVE_VERTICES_METHODS",
667 "primitive",
668 "primitive_vertices",
669]
670__all__ += [
671 "convert",
672 "describe_conversion_path",
673]
674__all__ += [
675 "Any",
676]
677__all__ += [
678 "LUT1D",
679 "LUT3D",
680 "READ_IMAGE_METHODS",
681 "WRITE_IMAGE_METHODS",
682 "Header_IESTM2714",
683 "LUT3x1D",
684 "LUTOperatorMatrix",
685 "LUTSequence",
686 "Specification_Fichet2021",
687 "SpectralDistribution_IESTM2714",
688 "SpectralDistribution_Sekonic",
689 "SpectralDistribution_UPRTek",
690 "read_image",
691 "read_LUT",
692 "read_sds_from_csv_file",
693 "read_sds_from_xrite_file",
694 "read_spectral_data_from_csv_file",
695 "read_spectral_image_Fichet2021",
696 "write_image",
697 "write_LUT",
698 "write_sds_to_csv_file",
699 "write_spectral_image_Fichet2021",
700]
701__all__ += [
702 "CCTF_DECODINGS",
703 "CCTF_ENCODINGS",
704 "COLOUR_PRIMARIES_ITUTH273",
705 "COLOURSPACE_MODELS",
706 "COLOURSPACE_MODELS_POLAR_CONVERSIONS",
707 "DATA_MACADAM_1942_ELLIPSES",
708 "EOTF_INVERSES",
709 "EOTFS",
710 "HDR_CIELAB_METHODS",
711 "HDR_IPT_METHODS",
712 "LOG_DECODINGS",
713 "LOG_ENCODINGS",
714 "MATRIX_COEFFICIENTS_ITUTH273",
715 "OETF_INVERSES",
716 "OETFS",
717 "OOTF_INVERSES",
718 "OOTFS",
719 "RGB_COLOURSPACES",
720 "TRANSFER_CHARACTERISTICS_ITUTH273",
721 "WEIGHTS_YCBCR",
722 "CAM02LCD_to_JMh_CIECAM02",
723 "CAM02LCD_to_XYZ",
724 "CAM02SCD_to_JMh_CIECAM02",
725 "CAM02SCD_to_XYZ",
726 "CAM02UCS_to_JMh_CIECAM02",
727 "CAM02UCS_to_XYZ",
728 "CAM16LCD_to_JMh_CAM16",
729 "CAM16LCD_to_XYZ",
730 "CAM16SCD_to_JMh_CAM16",
731 "CAM16SCD_to_XYZ",
732 "CAM16UCS_to_JMh_CAM16",
733 "CAM16UCS_to_XYZ",
734 "CIE1960UCS_to_XYZ",
735 "CIE1976UCS_to_XYZ",
736 "CMY_to_CMYK",
737 "CMY_to_RGB",
738 "CMYK_to_CMY",
739 "CV_range",
740 "DIN99_to_Lab",
741 "DIN99_to_XYZ",
742 "HCL_to_RGB",
743 "HSL_to_RGB",
744 "HSV_to_RGB",
745 "Hunter_Lab_to_XYZ",
746 "Hunter_Rdab_to_XYZ",
747 "ICaCb_to_XYZ",
748 "ICtCp_to_RGB",
749 "ICtCp_to_XYZ",
750 "IgPgTg_to_XYZ",
751 "IHLS_to_RGB",
752 "IPT_Ragoo2021_to_XYZ",
753 "IPT_to_XYZ",
754 "JMh_CAM16_to_CAM16LCD",
755 "JMh_CAM16_to_CAM16SCD",
756 "JMh_CAM16_to_CAM16UCS",
757 "JMh_CIECAM02_to_CAM02LCD",
758 "JMh_CIECAM02_to_CAM02SCD",
759 "JMh_CIECAM02_to_CAM02UCS",
760 "Jzazbz_to_XYZ",
761 "Lab_to_DIN99",
762 "Lab_to_XYZ",
763 "Luv_to_uv",
764 "Luv_to_XYZ",
765 "Luv_uv_to_xy",
766 "Oklab_to_XYZ",
767 "OSA_UCS_to_XYZ",
768 "Prismatic_to_RGB",
769 "ProLab_to_XYZ",
770 "RGB_Colourspace",
771 "RGB_luminance",
772 "RGB_luminance_equation",
773 "RGB_to_CMY",
774 "RGB_to_HCL",
775 "RGB_to_HSL",
776 "RGB_to_HSV",
777 "RGB_to_ICtCp",
778 "RGB_to_IHLS",
779 "RGB_to_Prismatic",
780 "RGB_to_RGB",
781 "RGB_to_XYZ",
782 "RGB_to_YCbCr",
783 "RGB_to_YcCbcCrc",
784 "RGB_to_YCoCg",
785 "UCS_to_uv",
786 "UCS_to_XYZ",
787 "UCS_uv_to_xy",
788 "UVW_to_XYZ",
789 "XYZ_to_CAM02LCD",
790 "XYZ_to_CAM02SCD",
791 "XYZ_to_CAM02UCS",
792 "XYZ_to_CAM16LCD",
793 "XYZ_to_CAM16SCD",
794 "XYZ_to_CAM16UCS",
795 "XYZ_to_CIE1960UCS",
796 "XYZ_to_CIE1976UCS",
797 "XYZ_to_DIN99",
798 "XYZ_to_hdr_CIELab",
799 "XYZ_to_hdr_IPT",
800 "XYZ_to_Hunter_Lab",
801 "XYZ_to_Hunter_Rdab",
802 "XYZ_to_ICaCb",
803 "XYZ_to_ICtCp",
804 "XYZ_to_IgPgTg",
805 "XYZ_to_IPT",
806 "XYZ_to_IPT_Ragoo2021",
807 "XYZ_to_Jzazbz",
808 "XYZ_to_K_ab_HunterLab1966",
809 "XYZ_to_Lab",
810 "XYZ_to_Luv",
811 "XYZ_to_Oklab",
812 "XYZ_to_OSA_UCS",
813 "XYZ_to_ProLab",
814 "XYZ_to_RGB",
815 "XYZ_to_sRGB",
816 "XYZ_to_sUCS",
817 "XYZ_to_UCS",
818 "XYZ_to_UVW",
819 "XYZ_to_xy",
820 "XYZ_to_xyY",
821 "XYZ_to_Yrg",
822 "YCbCr_to_RGB",
823 "YcCbcCrc_to_RGB",
824 "YCoCg_to_RGB",
825 "Yrg_to_XYZ",
826 "cctf_decoding",
827 "cctf_encoding",
828 "chromatically_adapted_primaries",
829 "eotf",
830 "eotf_inverse",
831 "full_to_legal",
832 "gamma_function",
833 "hdr_CIELab_to_XYZ",
834 "hdr_IPT_to_XYZ",
835 "legal_to_full",
836 "linear_function",
837 "log_decoding",
838 "log_encoding",
839 "matrix_RGB_to_RGB",
840 "matrix_YCbCr",
841 "normalised_primary_matrix",
842 "oetf",
843 "oetf_inverse",
844 "offset_YCbCr",
845 "ootf",
846 "ootf_inverse",
847 "primaries_whitepoint",
848 "sRGB_to_XYZ",
849 "sUCS_to_XYZ",
850 "uv_to_Luv",
851 "uv_to_UCS",
852 "xy_to_Luv_uv",
853 "xy_to_UCS_uv",
854 "xy_to_xyY",
855 "xy_to_XYZ",
856 "xyY_to_xy",
857 "xyY_to_XYZ",
858]
859__all__ += [
860 "MUNSELL_COLOURS",
861 "MUNSELL_VALUE_METHODS",
862 "munsell_colour_to_xyY",
863 "munsell_value",
864 "xyY_to_munsell_colour",
865]
866__all__ += [
867 "rayleigh_scattering",
868 "scattering_cross_section",
869 "sd_rayleigh_scattering",
870]
871__all__ += [
872 "COLOUR_FIDELITY_INDEX_METHODS",
873 "COLOUR_QUALITY_SCALE_METHODS",
874 "COLOUR_RENDERING_INDEX_METHODS",
875 "colour_fidelity_index",
876 "colour_quality_scale",
877 "colour_rendering_index",
878 "spectral_similarity_index",
879]
880__all__ += [
881 "XYZ_TO_SD_METHODS",
882 "XYZ_to_sd",
883]
884__all__ += [
885 "CCT_TO_UV_METHODS",
886 "CCT_TO_XY_METHODS",
887 "UV_TO_CCT_METHODS",
888 "XY_TO_CCT_METHODS",
889 "CCT_to_uv",
890 "CCT_to_xy",
891 "uv_to_CCT",
892 "xy_to_CCT",
893]
894__all__ += [
895 "domain_range_scale",
896 "get_domain_range_scale",
897 "get_domain_range_scale_metadata",
898 "set_domain_range_scale",
899]
900__all__ += [
901 "OPTIMAL_COLOUR_STIMULI_ILLUMINANTS",
902 "RGB_colourspace_limits",
903 "RGB_colourspace_pointer_gamut_coverage_MonteCarlo",
904 "RGB_colourspace_visible_spectrum_coverage_MonteCarlo",
905 "RGB_colourspace_volume_coverage_MonteCarlo",
906 "RGB_colourspace_volume_MonteCarlo",
907 "is_within_macadam_limits",
908 "is_within_mesh_volume",
909 "is_within_pointer_gamut",
910 "is_within_visible_spectrum",
911]
913# Programmatically defining the colourspace models polar conversions.
914for _Jab, _JCh in COLOURSPACE_MODELS_POLAR_CONVERSIONS:
915 for name in (f"{_Jab}_to_{_JCh}", f"{_JCh}_to_{_Jab}"):
916 _module = sys.modules["colour"]
917 _sub_module = sys.modules["colour.models"]
918 setattr(_module, name, getattr(_sub_module, name))
919 __all__.append(name)
921del _JCh, _Jab, _module, _sub_module
924__application_name__ = "Colour"
926__major_version__ = "0"
927__minor_version__ = "4"
928__change_version__ = "6"
929__version__ = f"{__major_version__}.{__minor_version__}.{__change_version__}"
931# TODO: Remove legacy printing support when deemed appropriate.
932with contextlib.suppress(TypeError):
933 np.set_printoptions(legacy="1.13")
936# ----------------------------------------------------------------------------#
937# --- API Changes and Deprecation Management ---#
938# ----------------------------------------------------------------------------#
939from .utilities.deprecation import ModuleAPI, build_API_changes
940from .utilities.documentation import is_documentation_building
943class colour(ModuleAPI):
944 """Define a class acting like the *colour* module."""
946 def __getattr__(self, attribute: str) -> Any:
947 """Return the value from the attribute with given name."""
949 return super().__getattr__(attribute)
952colour.__application_name__ = __application_name__ # pyright: ignore
954colour.__major_version__ = __major_version__ # pyright: ignore
955colour.__minor_version__ = __minor_version__ # pyright: ignore
956colour.__change_version__ = __change_version__ # pyright: ignore
957colour.__version__ = __version__ # pyright: ignore
959colour.__disable_lazy_load__ = True # pyright: ignore
960__disable_lazy_load__ = colour.__disable_lazy_load__ # pyright: ignore
961"""
962Ensures that the lazy loaded datasets are not transformed during import.
963See :class:`colour.utilities.LazyCanonicalMapping` for more information.
964"""
967# v0.4.7
968API_CHANGES = {
969 "ObjectFutureAccessChange": [
970 [
971 "colour.IPT_hue_angle",
972 "colour.models.IPT_hue_angle",
973 ],
974 ]
975}
976"""
977Defines *colour* package API changes.
979API_CHANGES : dict
980"""
982if not is_documentation_building():
983 sys.modules["colour"] = colour( # pyright: ignore
984 sys.modules["colour"], build_API_changes(API_CHANGES)
985 )
987 del ModuleAPI, is_documentation_building, build_API_changes
989# NOTE: We are solving the clash with https://github.com/vaab/colour by loading
990# a known subset of the objects given by vaab/colour-0.1.5 into our namespace
991# if the *COLOUR_SCIENCE__COLOUR__IMPORT_VAAB_COLOUR=True* environment variable
992# is defined.
993#
994# See the following issues for more information:
995# - https://github.com/colour-science/colour/issues/958
996# - https://github.com/colour-science/colour/issues/1221
997# - https://github.com/vaab/colour/issues/62
998for _path in sys.path: # pragma: no cover
999 _module_path = os.path.join(_path, "colour.py")
1000 if os.path.exists(_module_path):
1001 import colour # pyright: ignore
1002 from colour.utilities import as_bool
1004 if as_bool(
1005 os.environ.get("COLOUR_SCIENCE__COLOUR__IMPORT_VAAB_COLOUR", "False")
1006 ):
1007 colour.utilities.runtime_warning( # pyright: ignore
1008 '"vaab/colour" was detected in "sys.path", please define a '
1009 '"COLOUR_SCIENCE__COLOUR__IMPORT_VAAB_COLOUR=True" environment '
1010 'variable to import its objects into "colour" namespace!'
1011 )
1012 break
1014 import importlib.machinery
1016 _module = importlib.machinery.SourceFileLoader(
1017 "__vaab_colour__", _module_path
1018 ).load_module()
1020 for name in [
1021 "COLOR_NAME_TO_RGB",
1022 "C_HEX",
1023 "C_HSL",
1024 "C_RGB",
1025 "Color",
1026 "HEX",
1027 "HSL",
1028 "HSL_equivalence",
1029 "LONG_HEX_COLOR",
1030 "RGB",
1031 "RGB_TO_COLOR_NAMES",
1032 "RGB_color_picker",
1033 "RGB_equivalence",
1034 "SHORT_HEX_COLOR",
1035 "color_scale",
1036 "hash_or_str",
1037 "hex2hsl",
1038 "hex2rgb",
1039 "hex2web",
1040 "hsl2hex",
1041 "hsl2rgb",
1042 "hsl2web",
1043 "make_color_factory",
1044 "rgb2hex",
1045 "rgb2hsl",
1046 "rgb2web",
1047 "web2hex",
1048 "web2hsl",
1049 "web2rgb",
1050 ]:
1051 if name in dir(_module):
1052 colour.utilities.runtime_warning( # pyright: ignore
1053 f'Importing "vaab/colour" "{name}" object into '
1054 f'"Colour"\'s namespace!'
1055 )
1056 setattr(sys.modules["colour"], name, getattr(_module, name))
1058 del importlib, _module
1060 break
1062 del _module_path, _path
1064del os, sys