Metadata-Version: 2.4
Name: hsluv
Version: 5.0.5
Summary: Human-friendly HSL
Author-email: Robert McGinley <mcginleyr1@gmail.com>, Alexei Boronine <alexei@boronine.com>, Sebastian Pipping <sebastian@pipping.org>
License-Expression: MIT
Project-URL: Homepage, https://www.hsluv.org
Project-URL: Bug Tracker, https://github.com/hsluv/hsluv-python/issues
Project-URL: Source Code, https://github.com/hsluv/hsluv-python
Keywords: color,hsl,cie,cieluv,colorwheel,hsluv,hpluv
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Dynamic: license-file

[![Build Status](https://github.com/hsluv/hsluv-python/actions/workflows/test.yml/badge.svg)](https://github.com/hsluv/hsluv-python/actions/workflows/test.yml)
[![Package Version](https://img.shields.io/pypi/v/hsluv.svg)](https://pypi.python.org/pypi/hsluv/)
[![PyPI Downloads](https://img.shields.io/pypi/dm/hsluv.svg)](https://pypistats.org/packages/hsluv)

A Python implementation of [HSLuv](https://www.hsluv.org) (revision 4).

## Installation

`pip install hsluv`

Python 2 users: `pip install hsluv==5.0.0`

## Usage

> This library does not hide (clamp) floating point error, e.g. you might receive a value outside
> of the expected range. If you wish to display the outputs of this library, consider rounding them 
> for your purpose. The floating point error has not been quantified, but at least 10 decimal digits 
> should be free of it.

### `hsluv_to_hex([hue, saturation, lightness])`

`hue` is a float between 0 and 360, `saturation` and `lightness` are floats between 0 and 100. This 
function returns the resulting color as a hex string.

### `hsluv_to_rgb([hue, saturation, lightness])`

Like above, but returns a list of 3 floats between 0 and 1, for each RGB channel.

### `hex_to_hsluv(hex)`

Takes a hex string and returns the HSLuv color as a list of floats as defined above.

### `rgb_to_hsluv([red, green, blue])`

Like above, but `red`, `green` and `blue` are passed as floats between 0 and 1.

For HPLuv (the pastel variant), use `hpluv_to_hex`, `hpluv_to_rgb`, `hex_to_hpluv` and `rgb_to_hpluv`.

## Testing

Run `python -m unittest discover -v`.

## Publishing to PyPI

* On PyPI, open the `hsluv` project's **Manage → Publishing** page and configure a GitHub Trusted Publisher: owner **`hsluv`**, repository **`hsluv-python`**, workflow **`publish.yml`**.
* Update `__version__` in `hsluv.py` to an unused version (e.g. `5.0.5rc1` for a pre-release) and push the commit to the branch you want to publish.
* Open **Actions → Publish to PyPI → Run workflow**, select that branch, and run it to build and upload to production PyPI. No tag or GitHub release is needed.
* Verify the release on [PyPI](https://pypi.org/project/hsluv/). Published versions cannot be reused.

## Authors

* Robert McGinley ([mcginleyr1](https://github.com/mcginleyr1))
* Alexei Boronine ([boronine](https://github.com/boronine))
* Sebastian Pipping ([hartwork](https://github.com/hartwork))
