color_tools.constants
Immutable color science constants from international standards.
These values are defined by CIE (International Commission on Illumination), sRGB specification, and various color difference formulas. They should never be modified as they represent fundamental color science.
- class color_tools.constants.ColorConstants[source]
Bases:
objectImmutable color science constants from international standards.
These values are defined by CIE (International Commission on Illumination), sRGB specification, and various color difference formulas. They should never be modified as they represent fundamental color science.
- D65_WHITE_X = 95.047
- D65_WHITE_Y = 100.0
- D65_WHITE_Z = 108.883
- SRGB_TO_XYZ_R = (0.4124564, 0.3575761, 0.1804375)
- SRGB_TO_XYZ_G = (0.2126729, 0.7151522, 0.072175)
- SRGB_TO_XYZ_B = (0.0193339, 0.119192, 0.9503041)
- XYZ_TO_SRGB_X = (3.2404542, -1.5371385, -0.4985314)
- XYZ_TO_SRGB_Y = (-0.969266, 1.8760108, 0.041556)
- XYZ_TO_SRGB_Z = (0.0556434, -0.2040259, 1.0572252)
- SRGB_GAMMA_THRESHOLD = 0.04045
- SRGB_GAMMA_LINEAR_SCALE = 12.92
- SRGB_GAMMA_OFFSET = 0.055
- SRGB_GAMMA_DIVISOR = 1.055
- SRGB_GAMMA_POWER = 2.4
- SRGB_INV_GAMMA_THRESHOLD = 0.0031308
- LAB_DELTA = 0.20689655172413793
- LAB_KAPPA = 116.0
- LAB_OFFSET = 16.0
- LAB_A_SCALE = 500.0
- LAB_B_SCALE = 200.0
- DE94_K1 = 0.045
- DE94_K2 = 0.015
- DE2000_POW7_BASE = 25.0
- DE2000_HUE_OFFSET_1 = 30.0
- DE2000_HUE_WEIGHT_1 = 0.17
- DE2000_HUE_MULT_2 = 2.0
- DE2000_HUE_WEIGHT_2 = 0.24
- DE2000_HUE_MULT_3 = 3.0
- DE2000_HUE_OFFSET_3 = 6.0
- DE2000_HUE_WEIGHT_3 = 0.32
- DE2000_HUE_MULT_4 = 4.0
- DE2000_HUE_OFFSET_4 = 63.0
- DE2000_HUE_WEIGHT_4 = 0.2
- DE2000_DRO_MULT = 30.0
- DE2000_DRO_CENTER = 275.0
- DE2000_DRO_DIVISOR = 25.0
- DE2000_L_WEIGHT = 0.015
- DE2000_L_OFFSET = 50.0
- DE2000_L_DIVISOR = 20.0
- DE2000_C_WEIGHT = 0.045
- DE2000_H_WEIGHT = 0.015
- CMC_L_THRESHOLD = 16.0
- CMC_L_LOW = 0.511
- CMC_L_SCALE = 0.040975
- CMC_L_DIVISOR = 0.01765
- CMC_C_SCALE = 0.0638
- CMC_C_DIVISOR = 0.0131
- CMC_C_OFFSET = 0.638
- CMC_HUE_MIN = 164.0
- CMC_HUE_MAX = 345.0
- CMC_T_IN_RANGE = 0.56
- CMC_T_COS_MULT_IN = 0.2
- CMC_T_HUE_OFFSET_IN = 168.0
- CMC_T_OUT_RANGE = 0.36
- CMC_T_COS_MULT_OUT = 0.4
- CMC_T_HUE_OFFSET_OUT = 35.0
- CMC_F_POWER = 4.0
- CMC_F_DIVISOR = 1900.0
- CMC_L_DEFAULT = 2.0
- CMC_C_DEFAULT = 1.0
- HUE_CIRCLE_DEGREES = 360.0
- HUE_HALF_CIRCLE_DEGREES = 180.0
- RGB_MIN = 0
- RGB_MAX = 255
- NORMALIZED_MIN = 0.0
- NORMALIZED_MAX = 1.0
- XYZ_SCALE_FACTOR = 100.0
- WIN_HSL_MAX = 240.0
- AB_MIN = -128.0
- AB_MAX = 127.0
- CHROMA_MIN = 0.0
- CHROMA_MAX = 181.0
- COLORS_JSON_FILENAME = 'colors.json'
- FILAMENTS_JSON_FILENAME = 'filaments.json'
- MAKER_SYNONYMS_JSON_FILENAME = 'maker_synonyms.json'
- LAB_DELTA_CUBED = 0.008856451679035631
- LAB_F_SCALE = 0.12841854934601665
- LAB_F_OFFSET = 0.13793103448275862
- classmethod verify_integrity()[source]
Verify that constants haven’t been modified.
- Return type:
- Returns:
True if all constants match expected values, False if tampered with.
- COLORS_JSON_HASH = 'dc8ce5769a2186008af540c03159d3f24a72e5effc9ce5b611c8b4374da19ffd'
- FILAMENTS_JSON_HASH = '8e3e178cf824b7e1bcf34b67bfa929e462964334c79069073806a9a959f3536e'
- MAKER_SYNONYMS_JSON_HASH = '27488f9dfa37d661a0d5c0f73d1680aea22ab909f1c94fe1dd576b7902245c81'
- APPLE2_PALETTE_HASH = 'd5374e50f76312799c031a8f64fe9537cac2d903c59dbc09f0760e8f5bb581fe'
- CGA4_PALETTE_HASH = '62624dbeef28b664feca10afe3901b52b2335395134aba88ea21f955f0d17b7d'
- CGA16_PALETTE_HASH = 'd189b3004d20a343105d01b03c71d437077e34bb8d25fc074487c35c8490a329'
- COMMODORE64_PALETTE_HASH = 'c4502abaed781535de55f3042cca4d7b3653c5eeb4cec3ecb30f591bfbfdfcca'
- CRAYOLA_PALETTE_HASH = '65bf4add677a7a8667114b8f813b8afdd6b8e92e8cef1458e53b4a8cd716a4a3'
- EGA16_PALETTE_HASH = 'd189b3004d20a343105d01b03c71d437077e34bb8d25fc074487c35c8490a329'
- EGA64_PALETTE_HASH = '2159e51f89cca4a4fb43a2d80bea030f3d7cd0cc5e1eacd25eb95f0ce2027e7f'
- GAMEBOY_PALETTE_HASH = 'e2911baed15b4d56a27313b6be506c3a1f57bee3b01ecd2ca5995b512822da9b'
- GAMEBOY_COLOR_PALETTE_HASH = '5c98dd69be991f445aabafe21a0bdddabc8f6e98aa728724e3d0e72a445aadde'
- GAMEBOY_DMG_PALETTE_HASH = '042d7cfd7b94f8719aa01603ddf5b0d9c73ae59b04e27295132ddac13142e968'
- GAMEBOY_GBL_PALETTE_HASH = 'f2b6a573b09c1efa3529e79f281dcb0ed4e5c788cb10e51526c60e6e5d928231'
- GAMEBOY_MGB_PALETTE_HASH = '7c556e05e13adcfce0e7aec06ded6c7871acee63771e520319afa67e07080027'
- MACINTOSH_PALETTE_HASH = 'e9b5bce3ce2eda12dec5793b4eb3c588a92d53e8d6ecaf4fa310998fe2dd1ddd'
- NES_PALETTE_HASH = '3021573a00b158fb6cf694e6546b236c2ec6862d52e08cc860f32d983e1f0a59'
- SMS_PALETTE_HASH = '95010c348c2f77a209544170da29ee7f5bfccacbcd32ed33c36cb7ef269f72e8'
- TANDY16_PALETTE_HASH = '820f2f1dcdd3acd7130a88247b09e6bf969779a08c97091800db19c1748f1a03'
- VGA_PALETTE_HASH = '9eb6055508d5523ceafbb4abe3d2921f09bc61b20485da1052e4d4fd653a5d00'
- VIRTUALBOY_PALETTE_HASH = '218854f6dc6506649e6ff14f92f56ff996b7c01a36c916b0374880c8524c40a9'
- WEB_PALETTE_HASH = 'ba4ad53ece01d2f1338ae13221aa04e5c342519d7750d948458074001a465e7d'
- USER_COLORS_JSON_FILENAME = 'user/user-colors.json'
- USER_FILAMENTS_JSON_FILENAME = 'user/user-filaments.json'
- USER_SYNONYMS_JSON_FILENAME = 'user/user-synonyms.json'
- MATRICES_EXPECTED_HASH = 'd177316ade5146a084bb5b92d693c3f9c62ec593fde9b6face567dbd8a633df5'
- static verify_data_file(filepath, expected_hash)[source]
Verify integrity of a data file using SHA-256 hash.
- classmethod verify_all_data_files(data_dir=None)[source]
Verify integrity of all core data files.
- classmethod verify_matrices_integrity()[source]
Verify that transformation matrices haven’t been modified.
- Return type:
- Returns:
True if all matrices match expected values, False if tampered with.
- classmethod generate_user_data_hash(file_path)[source]
Generate SHA-256 hash for a user data file.
- Parameters:
- Return type:
- Returns:
SHA-256 hash of the file contents
- Raises:
FileNotFoundError – If file doesn’t exist
- classmethod save_user_data_hash(file_path, hash_value=None)[source]
Save SHA-256 hash for a user data file to a .sha256 file.
- classmethod verify_user_data_file(file_path)[source]
Verify user data file against its .sha256 file if it exists.
- classmethod verify_all_user_data(data_dir=None)[source]
Verify integrity of all user data files in the user/ subdirectory.
Only files with corresponding .sha256 files are verified.
- Parameters:
data_dir (
Path|str|None) – Optional custom data directory. If None, uses package data directory.- Return type:
- Returns:
Tuple of (all_valid, list_of_errors) - all_valid: True if all files with hash files pass verification - list_of_errors: List of error messages for any failed verifications