Coverage for colour/__init__.py: 100%

92 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-15 19:01 +1300

1""" 

2Colour 

3====== 

4 

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. 

8 

9It is freely available under the 

10`BSD-3-Clause <https://opensource.org/licenses/BSD-3-Clause>`__ terms. 

11 

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. 

15 

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

46 

47import contextlib 

48import json 

49import os 

50import sys 

51 

52import numpy as np 

53 

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) 

60 

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) 

65 

66 del _JENV_FILE, _KEY, _VALUE 

67 

68del _JENV_FILE_PATH 

69 

70# ruff: noqa: E402 

71 

72from colour import plotting # noqa: F401 

73 

74# isort: split 

75 

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) 

486 

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" 

493 

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] 

912 

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) 

920 

921del _JCh, _Jab, _module, _sub_module 

922 

923 

924__application_name__ = "Colour" 

925 

926__major_version__ = "0" 

927__minor_version__ = "4" 

928__change_version__ = "6" 

929__version__ = f"{__major_version__}.{__minor_version__}.{__change_version__}" 

930 

931# TODO: Remove legacy printing support when deemed appropriate. 

932with contextlib.suppress(TypeError): 

933 np.set_printoptions(legacy="1.13") 

934 

935 

936# ----------------------------------------------------------------------------# 

937# --- API Changes and Deprecation Management ---# 

938# ----------------------------------------------------------------------------# 

939from .utilities.deprecation import ModuleAPI, build_API_changes 

940from .utilities.documentation import is_documentation_building 

941 

942 

943class colour(ModuleAPI): 

944 """Define a class acting like the *colour* module.""" 

945 

946 def __getattr__(self, attribute: str) -> Any: 

947 """Return the value from the attribute with given name.""" 

948 

949 return super().__getattr__(attribute) 

950 

951 

952colour.__application_name__ = __application_name__ # pyright: ignore 

953 

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 

958 

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

965 

966 

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. 

978 

979API_CHANGES : dict 

980""" 

981 

982if not is_documentation_building(): 

983 sys.modules["colour"] = colour( # pyright: ignore 

984 sys.modules["colour"], build_API_changes(API_CHANGES) 

985 ) 

986 

987 del ModuleAPI, is_documentation_building, build_API_changes 

988 

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 

1003 

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 

1013 

1014 import importlib.machinery 

1015 

1016 _module = importlib.machinery.SourceFileLoader( 

1017 "__vaab_colour__", _module_path 

1018 ).load_module() 

1019 

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

1057 

1058 del importlib, _module 

1059 

1060 break 

1061 

1062 del _module_path, _path 

1063 

1064del os, sys