Coloraide

Latest version: v4.2.1

Safety actively analyzes 707607 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 11 of 19

0.16.0

> **Warning**: _Deprecations_
> In interest of speed, and due to the overhead inflicted on every class attribute access, we've decided to deprecate
> dynamic properties. This includes dynamic color properties (e.g. `Color.red`) and dynamic ∆E methods (e.g.
> `Color.delta_e_2000()`). As far as color channel coordinate access is concerned, we've reworked a faster more useful
> approach. ∆E already has a suitable replacement and will be the only approach moving forward.
>
> 1. Use of `delta_e_<method>` is deprecated. Users should use the already available `delta_e(color, method=name)`
> approach when using non-default ∆E methods.
>
> 2. Color channel access has changed. Dynamic channel properties have been deprecated. Usage of `Color.coords()` has
> also been deprecated. All channels can now easily be accessed with indexing. `Color.get()` and `Color.set()`
> have not changed.
>
> - You can index with numbers: `Color[0]`.
> - You can index with channel names: `Color['red']`.
> - You can slice to get specific color coordinates: `Color[:-1]`.
> - You can get all coordinates: `Color[:]` or `list(Color)`.
> - You can even iterate coordinates: `[c for c in Color]`.
> - Indexing also supports assignment: `Color[0] = 1` or `Color[:3] = [1, 1, 1]`.
>
> Please consider updating usage to utilize the suggested approaches. The aforementioned methods will be removed
> sometime before the 1.0 release.

- **NEW**: `Color` objects are now indexable and channels can be retrieved using either numbers or strings, e.g.,
`!py3 Color[0]` or `!py3 Color['red']`. Slicing and assignments via slicing are also supported:
`!py3 Color1[:] = Color2[:]`.
- **NEW**: `Color.coords()`, dynamic color properties, and dynamic ∆E methods are all deprecated.
- **NEW**: Input method names for distancing, gamut mapping, compositing, and space methods are now case sensitive.
There were inconsistencies in some places, so it was opted to make all case sensitive.
- **NEW**: The ability to create color harmonies has been added via the new `harmony()` method. Also, the default color
space used to calculate color harmonies can be overridden by the class property `HARMONY`.
- **NEW**: Add new support for filters added via the `filter()` method. Filters include the W3C Filter Effects Level 1
and color vision deficiency simulation.
- **NEW**: Some performance enhancements in conversions.
- **NEW**: Chromatic adaptation is now exposed as a plugin. New CAT plugins can be created externally and registered.
- **FIX**: Okhsl and Okhsv handling of achromatic values during conversion.

0.15.1

- **FIX**: Fix an issue related to matching colors in a buffer at a given offset.

0.15.0

> **Warning**:
> No changes in the public API have changed, but type annotations have. If you were importing type annotations, you
> will have to update them.
>
> Also, if any undocumented math related methods were accessed (for plugins or otherwise) they've been moved to
> `coloraide.algebra`

- **NEW**: A number of performance improvements.
- **NEW**: Regenerate all matrices with our own matrix tools so that there is consistency between precision of
pre-generated matrices and on-the-fly matrix generation. Reduces some noise in a few color space transforms.
- **NEW**: Changes to type annotations. `Mutable<type>`, where type is either `Matrix`, `Vector`, or `Array`, are simply
known as `<type>`. Types previously specified as `<type>`, where type is either `Matrix`, `Vector`, or `Array`, are
now known as `<type>Like`. The types are expected to be mutable lists, anything else is noted as "like".
- **NEW**: All matrix and math utilities have been moved to `coloraide.algebra`.
- **FIX**: Fix rare issue where precision adjustment could fail.
- **FIX**: Fix matrix `divide` logic when dividing a number or vector by a matrix. There are no actual usage of these
cases in the code but they were fixed in case they are used in the future.

0.14.2

- **FIX**: Fix rare issue where precision adjustment could fail.
- **FIX**: Fix `util.divide` logic when dividing a number or vector by a matrix. There are no actual usage of these
cases in the code but fixed in case they are used in the future.
- **FIX**: Minor performance improvements.

0.14.1

- **FIX**: Fix bug related to parsing strings without full matching.

0.14.0

> **Note**
> No changes should break existing color space plugins. Moved objects and references are still also available in old
> locations, and new functionality is implemented in such a way as to not break existing plugins, but plugins should
> be updated as sometime before the 1.0 release, such legacy access will be removed.

- **NEW**: Faster parsing. Instead of parsing the `color(space ...)` format each a different color space is evaluated,
generically parse it once and then associate it with a registered color space. If a color space wishes to opt out of
the `color(space ...)` input format, the space should set `COLOR_FORMAT` to `False`. This means there is no need to
call `super.match()` when overriding `Color.match()` to ensure support for the `color(space ...)` format as it will be
handled unless `COLOR_FORMAT` is turned off. `DEFAULT_MATCH` usage should also be discontinued as it now does nothing.
- **NEW**: Other speed optimizations.
- **NEW**: All CSS parsing and serialization is now contained in a single module at `coloraide.css`. This simplifies
the current color space classes greatly when it comes to supporting CSS specific formats.
- **NEW**: Move our white space mapping to the `cat` module as it makes more sense there.
- **NEW**: `GamutBound`, `GamutUnbound`, and associated flags are now contained under `coloraide.gamut.bounds`.
- **NEW**: `normalize` will also remove masked values to properly adjust the color.
- **FIX**: Compositing and blending should not "fit" colors before applying, it is only specified that the range should
be clamped at the end of blending.
- **FIX**: Fix issue where a subclassed `Color()` object could not recognize the base class or other subclasses.

Page 11 of 19

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.