okpalette 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- okpalette-0.1.0/.github/workflows/ci.yml +80 -0
- okpalette-0.1.0/.github/workflows/release.yml +131 -0
- okpalette-0.1.0/.gitignore +23 -0
- okpalette-0.1.0/AGENTS.md +42 -0
- okpalette-0.1.0/Cargo.lock +282 -0
- okpalette-0.1.0/Cargo.toml +20 -0
- okpalette-0.1.0/PKG-INFO +234 -0
- okpalette-0.1.0/README.md +210 -0
- okpalette-0.1.0/docs/position_aware_label_color_mapping.md +189 -0
- okpalette-0.1.0/pyproject.toml +47 -0
- okpalette-0.1.0/python/okpalette/__init__.py +174 -0
- okpalette-0.1.0/python/okpalette/_core.pyi +26 -0
- okpalette-0.1.0/python/okpalette/_format.py +233 -0
- okpalette-0.1.0/python/okpalette/_plot.py +188 -0
- okpalette-0.1.0/python/okpalette/_types.py +11 -0
- okpalette-0.1.0/python/okpalette/py.typed +1 -0
- okpalette-0.1.0/src/algorithm.rs +547 -0
- okpalette-0.1.0/src/candidates.rs +475 -0
- okpalette-0.1.0/src/color.rs +185 -0
- okpalette-0.1.0/src/error.rs +37 -0
- okpalette-0.1.0/src/lib.rs +224 -0
- okpalette-0.1.0/src/parse.rs +150 -0
- okpalette-0.1.0/src/render.rs +149 -0
- okpalette-0.1.0/tests/test_api.py +104 -0
- okpalette-0.1.0/tests/test_constraints.py +120 -0
- okpalette-0.1.0/tests/test_determinism.py +125 -0
- okpalette-0.1.0/tests/test_formats.py +93 -0
- okpalette-0.1.0/tests/test_plot.py +83 -0
- okpalette-0.1.0/tests/test_plot_smoke.py +82 -0
- okpalette-0.1.0/tests/test_regressions.py +74 -0
- okpalette-0.1.0/uv.lock +357 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
rust:
|
|
17
|
+
name: Rust
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- name: Check out repository
|
|
21
|
+
uses: actions/checkout@v4
|
|
22
|
+
|
|
23
|
+
- name: Install Rust
|
|
24
|
+
uses: dtolnay/rust-toolchain@stable
|
|
25
|
+
with:
|
|
26
|
+
components: clippy, rustfmt
|
|
27
|
+
|
|
28
|
+
- name: Cache Rust build artifacts
|
|
29
|
+
uses: Swatinem/rust-cache@v2
|
|
30
|
+
|
|
31
|
+
- name: Check formatting
|
|
32
|
+
run: cargo fmt --all -- --check
|
|
33
|
+
|
|
34
|
+
- name: Run clippy
|
|
35
|
+
run: cargo clippy --all-targets --all-features -- -D warnings
|
|
36
|
+
|
|
37
|
+
- name: Run Rust tests
|
|
38
|
+
run: cargo test
|
|
39
|
+
|
|
40
|
+
python:
|
|
41
|
+
name: Python ${{ matrix.python-version }}
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
strategy:
|
|
44
|
+
fail-fast: false
|
|
45
|
+
matrix:
|
|
46
|
+
python-version: ["3.12", "3.13", "3.14"]
|
|
47
|
+
steps:
|
|
48
|
+
- name: Check out repository
|
|
49
|
+
uses: actions/checkout@v4
|
|
50
|
+
|
|
51
|
+
- name: Install Rust
|
|
52
|
+
uses: dtolnay/rust-toolchain@stable
|
|
53
|
+
|
|
54
|
+
- name: Cache Rust build artifacts
|
|
55
|
+
uses: Swatinem/rust-cache@v2
|
|
56
|
+
|
|
57
|
+
- name: Install Python
|
|
58
|
+
uses: actions/setup-python@v5
|
|
59
|
+
with:
|
|
60
|
+
python-version: ${{ matrix.python-version }}
|
|
61
|
+
|
|
62
|
+
- name: Install uv
|
|
63
|
+
uses: astral-sh/setup-uv@v6
|
|
64
|
+
with:
|
|
65
|
+
enable-cache: true
|
|
66
|
+
|
|
67
|
+
- name: Sync development dependencies
|
|
68
|
+
run: uv sync --extra dev --locked
|
|
69
|
+
|
|
70
|
+
- name: Build and install native extension
|
|
71
|
+
run: uv run --extra dev maturin develop --uv
|
|
72
|
+
|
|
73
|
+
- name: Run Python tests
|
|
74
|
+
run: uv run --extra dev pytest
|
|
75
|
+
|
|
76
|
+
- name: Run ruff
|
|
77
|
+
run: uv run --extra dev ruff check .
|
|
78
|
+
|
|
79
|
+
- name: Run ty
|
|
80
|
+
run: uv run --extra dev ty check
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ["v*"]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
linux:
|
|
17
|
+
name: Linux ${{ matrix.target }}
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: false
|
|
21
|
+
matrix:
|
|
22
|
+
target: [x86_64, aarch64]
|
|
23
|
+
steps:
|
|
24
|
+
- name: Check out repository
|
|
25
|
+
uses: actions/checkout@v4
|
|
26
|
+
|
|
27
|
+
- name: Build wheel
|
|
28
|
+
uses: PyO3/maturin-action@v1
|
|
29
|
+
with:
|
|
30
|
+
command: build
|
|
31
|
+
target: ${{ matrix.target }}
|
|
32
|
+
manylinux: "2014"
|
|
33
|
+
args: --release --locked --out dist
|
|
34
|
+
|
|
35
|
+
- name: Upload wheel
|
|
36
|
+
uses: actions/upload-artifact@v4
|
|
37
|
+
with:
|
|
38
|
+
name: dist-linux-${{ matrix.target }}
|
|
39
|
+
path: dist
|
|
40
|
+
|
|
41
|
+
macos:
|
|
42
|
+
name: macOS aarch64
|
|
43
|
+
runs-on: macos-14
|
|
44
|
+
steps:
|
|
45
|
+
- name: Check out repository
|
|
46
|
+
uses: actions/checkout@v4
|
|
47
|
+
|
|
48
|
+
- name: Build wheel
|
|
49
|
+
uses: PyO3/maturin-action@v1
|
|
50
|
+
with:
|
|
51
|
+
command: build
|
|
52
|
+
target: aarch64
|
|
53
|
+
args: --release --locked --out dist
|
|
54
|
+
|
|
55
|
+
- name: Upload wheel
|
|
56
|
+
uses: actions/upload-artifact@v4
|
|
57
|
+
with:
|
|
58
|
+
name: dist-macos-aarch64
|
|
59
|
+
path: dist
|
|
60
|
+
|
|
61
|
+
windows:
|
|
62
|
+
name: Windows x64
|
|
63
|
+
runs-on: windows-latest
|
|
64
|
+
steps:
|
|
65
|
+
- name: Check out repository
|
|
66
|
+
uses: actions/checkout@v4
|
|
67
|
+
|
|
68
|
+
- name: Install Python
|
|
69
|
+
uses: actions/setup-python@v5
|
|
70
|
+
with:
|
|
71
|
+
python-version: "3.12"
|
|
72
|
+
architecture: x64
|
|
73
|
+
|
|
74
|
+
- name: Build wheel
|
|
75
|
+
uses: PyO3/maturin-action@v1
|
|
76
|
+
with:
|
|
77
|
+
command: build
|
|
78
|
+
target: x64
|
|
79
|
+
args: --release --locked --out dist
|
|
80
|
+
|
|
81
|
+
- name: Upload wheel
|
|
82
|
+
uses: actions/upload-artifact@v4
|
|
83
|
+
with:
|
|
84
|
+
name: dist-windows-x64
|
|
85
|
+
path: dist
|
|
86
|
+
|
|
87
|
+
sdist:
|
|
88
|
+
name: Source distribution
|
|
89
|
+
runs-on: ubuntu-latest
|
|
90
|
+
steps:
|
|
91
|
+
- name: Check out repository
|
|
92
|
+
uses: actions/checkout@v4
|
|
93
|
+
|
|
94
|
+
- name: Build sdist
|
|
95
|
+
uses: PyO3/maturin-action@v1
|
|
96
|
+
with:
|
|
97
|
+
command: sdist
|
|
98
|
+
args: --out dist
|
|
99
|
+
|
|
100
|
+
- name: Upload sdist
|
|
101
|
+
uses: actions/upload-artifact@v4
|
|
102
|
+
with:
|
|
103
|
+
name: dist-sdist
|
|
104
|
+
path: dist
|
|
105
|
+
|
|
106
|
+
publish:
|
|
107
|
+
name: Publish to PyPI
|
|
108
|
+
runs-on: ubuntu-latest
|
|
109
|
+
needs: [linux, macos, windows, sdist]
|
|
110
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
111
|
+
environment:
|
|
112
|
+
name: pypi
|
|
113
|
+
url: https://pypi.org/p/okpalette
|
|
114
|
+
permissions:
|
|
115
|
+
contents: read
|
|
116
|
+
id-token: write
|
|
117
|
+
steps:
|
|
118
|
+
- name: Download distributions
|
|
119
|
+
uses: actions/download-artifact@v4
|
|
120
|
+
with:
|
|
121
|
+
pattern: dist-*
|
|
122
|
+
path: dist
|
|
123
|
+
merge-multiple: true
|
|
124
|
+
|
|
125
|
+
- name: List distributions
|
|
126
|
+
run: ls -la dist
|
|
127
|
+
|
|
128
|
+
- name: Publish distributions
|
|
129
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
130
|
+
with:
|
|
131
|
+
packages-dir: dist
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
.kata.local.toml
|
|
2
|
+
.kata/
|
|
3
|
+
.docs/
|
|
4
|
+
|
|
5
|
+
# Rust build output
|
|
6
|
+
target/
|
|
7
|
+
|
|
8
|
+
# Python environments and caches
|
|
9
|
+
.venv/
|
|
10
|
+
__pycache__/
|
|
11
|
+
*.py[cod]
|
|
12
|
+
.pytest_cache/
|
|
13
|
+
.ruff_cache/
|
|
14
|
+
.mypy_cache/
|
|
15
|
+
|
|
16
|
+
# Python/Rust extension build artifacts
|
|
17
|
+
dist/
|
|
18
|
+
build/
|
|
19
|
+
*.egg-info/
|
|
20
|
+
python/okpalette/_core*.so
|
|
21
|
+
|
|
22
|
+
# Generated smoke-test review artifacts
|
|
23
|
+
output/
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Repository Instructions
|
|
2
|
+
|
|
3
|
+
<!-- codebase-memory-mcp:start -->
|
|
4
|
+
# Codebase Knowledge Graph (codebase-memory-mcp)
|
|
5
|
+
|
|
6
|
+
This project uses codebase-memory-mcp to maintain a knowledge graph of the codebase.
|
|
7
|
+
ALWAYS prefer MCP graph tools over grep/glob/file-search for code discovery.
|
|
8
|
+
|
|
9
|
+
## Priority Order
|
|
10
|
+
|
|
11
|
+
1. `search_graph` - find functions, classes, routes, variables by pattern
|
|
12
|
+
2. `trace_path` - trace who calls a function or what it calls
|
|
13
|
+
3. `get_code_snippet` - read specific function/class source code
|
|
14
|
+
4. `query_graph` - run Cypher queries for complex patterns
|
|
15
|
+
5. `get_architecture` - high-level project summary
|
|
16
|
+
|
|
17
|
+
## When to fall back to grep/glob
|
|
18
|
+
|
|
19
|
+
- Searching for string literals, error messages, config values
|
|
20
|
+
- Searching non-code files (Dockerfiles, shell scripts, configs)
|
|
21
|
+
- When MCP tools return insufficient results
|
|
22
|
+
|
|
23
|
+
## Examples
|
|
24
|
+
|
|
25
|
+
- Find a handler: `search_graph(name_pattern=".*OrderHandler.*")`
|
|
26
|
+
- Who calls it: `trace_path(function_name="OrderHandler", direction="inbound")`
|
|
27
|
+
- Read source: `get_code_snippet(qualified_name="pkg/orders.OrderHandler")`
|
|
28
|
+
<!-- codebase-memory-mcp:end -->
|
|
29
|
+
|
|
30
|
+
## Development Loop
|
|
31
|
+
|
|
32
|
+
Before handing off code changes, run the checks in this order:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
cargo fmt
|
|
36
|
+
cargo clippy --all-targets --all-features -- -D warnings
|
|
37
|
+
cargo test
|
|
38
|
+
uv run --extra dev ruff check .
|
|
39
|
+
uv run --extra dev ty check
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
For docs-only changes, say explicitly when the loop is skipped.
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "adler2"
|
|
7
|
+
version = "2.0.1"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
|
10
|
+
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "bitflags"
|
|
13
|
+
version = "2.11.1"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
|
|
16
|
+
|
|
17
|
+
[[package]]
|
|
18
|
+
name = "cfg-if"
|
|
19
|
+
version = "1.0.4"
|
|
20
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
21
|
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
22
|
+
|
|
23
|
+
[[package]]
|
|
24
|
+
name = "crc32fast"
|
|
25
|
+
version = "1.5.0"
|
|
26
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
27
|
+
checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
|
|
28
|
+
dependencies = [
|
|
29
|
+
"cfg-if",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[[package]]
|
|
33
|
+
name = "crossbeam-deque"
|
|
34
|
+
version = "0.8.6"
|
|
35
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
36
|
+
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
|
|
37
|
+
dependencies = [
|
|
38
|
+
"crossbeam-epoch",
|
|
39
|
+
"crossbeam-utils",
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
[[package]]
|
|
43
|
+
name = "crossbeam-epoch"
|
|
44
|
+
version = "0.9.18"
|
|
45
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
46
|
+
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
|
47
|
+
dependencies = [
|
|
48
|
+
"crossbeam-utils",
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
[[package]]
|
|
52
|
+
name = "crossbeam-utils"
|
|
53
|
+
version = "0.8.21"
|
|
54
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
55
|
+
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
|
56
|
+
|
|
57
|
+
[[package]]
|
|
58
|
+
name = "either"
|
|
59
|
+
version = "1.15.0"
|
|
60
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
61
|
+
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
|
|
62
|
+
|
|
63
|
+
[[package]]
|
|
64
|
+
name = "fdeflate"
|
|
65
|
+
version = "0.3.7"
|
|
66
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
67
|
+
checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
|
|
68
|
+
dependencies = [
|
|
69
|
+
"simd-adler32",
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
[[package]]
|
|
73
|
+
name = "flate2"
|
|
74
|
+
version = "1.1.9"
|
|
75
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
76
|
+
checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
|
|
77
|
+
dependencies = [
|
|
78
|
+
"crc32fast",
|
|
79
|
+
"miniz_oxide",
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
[[package]]
|
|
83
|
+
name = "heck"
|
|
84
|
+
version = "0.5.0"
|
|
85
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
86
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
87
|
+
|
|
88
|
+
[[package]]
|
|
89
|
+
name = "libc"
|
|
90
|
+
version = "0.2.186"
|
|
91
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
92
|
+
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
|
|
93
|
+
|
|
94
|
+
[[package]]
|
|
95
|
+
name = "miniz_oxide"
|
|
96
|
+
version = "0.8.9"
|
|
97
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
98
|
+
checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
|
|
99
|
+
dependencies = [
|
|
100
|
+
"adler2",
|
|
101
|
+
"simd-adler32",
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
[[package]]
|
|
105
|
+
name = "okpalette"
|
|
106
|
+
version = "0.1.0"
|
|
107
|
+
dependencies = [
|
|
108
|
+
"png",
|
|
109
|
+
"pyo3",
|
|
110
|
+
"rayon",
|
|
111
|
+
"thiserror",
|
|
112
|
+
]
|
|
113
|
+
|
|
114
|
+
[[package]]
|
|
115
|
+
name = "once_cell"
|
|
116
|
+
version = "1.21.4"
|
|
117
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
118
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
119
|
+
|
|
120
|
+
[[package]]
|
|
121
|
+
name = "png"
|
|
122
|
+
version = "0.18.1"
|
|
123
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
124
|
+
checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
|
|
125
|
+
dependencies = [
|
|
126
|
+
"bitflags",
|
|
127
|
+
"crc32fast",
|
|
128
|
+
"fdeflate",
|
|
129
|
+
"flate2",
|
|
130
|
+
"miniz_oxide",
|
|
131
|
+
]
|
|
132
|
+
|
|
133
|
+
[[package]]
|
|
134
|
+
name = "portable-atomic"
|
|
135
|
+
version = "1.13.1"
|
|
136
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
137
|
+
checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
|
|
138
|
+
|
|
139
|
+
[[package]]
|
|
140
|
+
name = "proc-macro2"
|
|
141
|
+
version = "1.0.106"
|
|
142
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
143
|
+
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
144
|
+
dependencies = [
|
|
145
|
+
"unicode-ident",
|
|
146
|
+
]
|
|
147
|
+
|
|
148
|
+
[[package]]
|
|
149
|
+
name = "pyo3"
|
|
150
|
+
version = "0.28.3"
|
|
151
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
152
|
+
checksum = "91fd8e38a3b50ed1167fb981cd6fd60147e091784c427b8f7183a7ee32c31c12"
|
|
153
|
+
dependencies = [
|
|
154
|
+
"libc",
|
|
155
|
+
"once_cell",
|
|
156
|
+
"portable-atomic",
|
|
157
|
+
"pyo3-build-config",
|
|
158
|
+
"pyo3-ffi",
|
|
159
|
+
"pyo3-macros",
|
|
160
|
+
]
|
|
161
|
+
|
|
162
|
+
[[package]]
|
|
163
|
+
name = "pyo3-build-config"
|
|
164
|
+
version = "0.28.3"
|
|
165
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
166
|
+
checksum = "e368e7ddfdeb98c9bca7f8383be1648fd84ab466bf2bc015e94008db6d35611e"
|
|
167
|
+
dependencies = [
|
|
168
|
+
"target-lexicon",
|
|
169
|
+
]
|
|
170
|
+
|
|
171
|
+
[[package]]
|
|
172
|
+
name = "pyo3-ffi"
|
|
173
|
+
version = "0.28.3"
|
|
174
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
175
|
+
checksum = "7f29e10af80b1f7ccaf7f69eace800a03ecd13e883acfacc1e5d0988605f651e"
|
|
176
|
+
dependencies = [
|
|
177
|
+
"libc",
|
|
178
|
+
"pyo3-build-config",
|
|
179
|
+
]
|
|
180
|
+
|
|
181
|
+
[[package]]
|
|
182
|
+
name = "pyo3-macros"
|
|
183
|
+
version = "0.28.3"
|
|
184
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
185
|
+
checksum = "df6e520eff47c45997d2fc7dd8214b25dd1310918bbb2642156ef66a67f29813"
|
|
186
|
+
dependencies = [
|
|
187
|
+
"proc-macro2",
|
|
188
|
+
"pyo3-macros-backend",
|
|
189
|
+
"quote",
|
|
190
|
+
"syn",
|
|
191
|
+
]
|
|
192
|
+
|
|
193
|
+
[[package]]
|
|
194
|
+
name = "pyo3-macros-backend"
|
|
195
|
+
version = "0.28.3"
|
|
196
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
197
|
+
checksum = "c4cdc218d835738f81c2338f822078af45b4afdf8b2e33cbb5916f108b813acb"
|
|
198
|
+
dependencies = [
|
|
199
|
+
"heck",
|
|
200
|
+
"proc-macro2",
|
|
201
|
+
"pyo3-build-config",
|
|
202
|
+
"quote",
|
|
203
|
+
"syn",
|
|
204
|
+
]
|
|
205
|
+
|
|
206
|
+
[[package]]
|
|
207
|
+
name = "quote"
|
|
208
|
+
version = "1.0.45"
|
|
209
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
210
|
+
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
|
211
|
+
dependencies = [
|
|
212
|
+
"proc-macro2",
|
|
213
|
+
]
|
|
214
|
+
|
|
215
|
+
[[package]]
|
|
216
|
+
name = "rayon"
|
|
217
|
+
version = "1.12.0"
|
|
218
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
219
|
+
checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
|
|
220
|
+
dependencies = [
|
|
221
|
+
"either",
|
|
222
|
+
"rayon-core",
|
|
223
|
+
]
|
|
224
|
+
|
|
225
|
+
[[package]]
|
|
226
|
+
name = "rayon-core"
|
|
227
|
+
version = "1.13.0"
|
|
228
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
229
|
+
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
|
|
230
|
+
dependencies = [
|
|
231
|
+
"crossbeam-deque",
|
|
232
|
+
"crossbeam-utils",
|
|
233
|
+
]
|
|
234
|
+
|
|
235
|
+
[[package]]
|
|
236
|
+
name = "simd-adler32"
|
|
237
|
+
version = "0.3.9"
|
|
238
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
239
|
+
checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
|
|
240
|
+
|
|
241
|
+
[[package]]
|
|
242
|
+
name = "syn"
|
|
243
|
+
version = "2.0.117"
|
|
244
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
245
|
+
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
|
|
246
|
+
dependencies = [
|
|
247
|
+
"proc-macro2",
|
|
248
|
+
"quote",
|
|
249
|
+
"unicode-ident",
|
|
250
|
+
]
|
|
251
|
+
|
|
252
|
+
[[package]]
|
|
253
|
+
name = "target-lexicon"
|
|
254
|
+
version = "0.13.5"
|
|
255
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
256
|
+
checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
257
|
+
|
|
258
|
+
[[package]]
|
|
259
|
+
name = "thiserror"
|
|
260
|
+
version = "2.0.18"
|
|
261
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
262
|
+
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
|
|
263
|
+
dependencies = [
|
|
264
|
+
"thiserror-impl",
|
|
265
|
+
]
|
|
266
|
+
|
|
267
|
+
[[package]]
|
|
268
|
+
name = "thiserror-impl"
|
|
269
|
+
version = "2.0.18"
|
|
270
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
271
|
+
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
|
|
272
|
+
dependencies = [
|
|
273
|
+
"proc-macro2",
|
|
274
|
+
"quote",
|
|
275
|
+
"syn",
|
|
276
|
+
]
|
|
277
|
+
|
|
278
|
+
[[package]]
|
|
279
|
+
name = "unicode-ident"
|
|
280
|
+
version = "1.0.24"
|
|
281
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
282
|
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "okpalette"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
edition = "2021"
|
|
5
|
+
license = "MIT"
|
|
6
|
+
description = "Fast, dependency-free OKLab categorical color palettes powered by Rust"
|
|
7
|
+
readme = "README.md"
|
|
8
|
+
repository = "https://github.com/pmbaumgartner/okpalette"
|
|
9
|
+
homepage = "https://github.com/pmbaumgartner/okpalette"
|
|
10
|
+
|
|
11
|
+
[lib]
|
|
12
|
+
name = "_core"
|
|
13
|
+
crate-type = ["cdylib", "rlib"]
|
|
14
|
+
|
|
15
|
+
[dependencies]
|
|
16
|
+
# Use abi3-py312 so one wheel can support Python 3.12+ where PyO3 APIs allow it.
|
|
17
|
+
pyo3 = { version = "0.28.3", features = ["abi3-py312"] }
|
|
18
|
+
png = "0.18"
|
|
19
|
+
rayon = "1.12"
|
|
20
|
+
thiserror = "2.0"
|