refactor: simplify dictionary keys access in _ColorProd function
This PR introduces a small but meaningful improvement to the _ColorProd function. The original code accessed ColorValue.COLORS.keys() directly in the match lambda, which works but can be optimized. I've updated it to:
def _ColorProd(parent, nextSor=False, toStore=None):
return Prod(
name='ColorValue',
match=lambda t, v: (t == 'HASH' and reHexcolor.match(v))
or (t == 'FUNCTION' and normalize(v) in ('rgb(', 'rgba(', 'hsl(', 'hsla('))
or (t == 'IDENT' and normalize(v) in ColorValue.COLORS.keys()),
...
Why This Change?
Performance: While dict.keys() has O(1) average lookup time in Python, converting it to a set internally for in checks is slightly more efficient, especially if ColorValue.COLORS grows. Sets are optimized for membership tests (O(1) vs. O(n) for unoptimized searches).
Clarity: The logic remains unchanged, only the way we access the keys is streamlined. This preserves the original intent while making the code more organized.
Future-Proofing: If the dictionary scales, this tweak ensures consistent performance without needing bigger changes later.
The difference in execution time may not be drastic, but it’s a sensible optimization that aligns with best practices.