ncolor 
Fast remapping of instance labels 1,2,3,...,M to a smaller set of repeating, disjoint labels 1,2,...,N. The four color theorem guarantees N <= 4 for planar adjacency graphs. Raster contacts can produce nonplanar graphs. The picker will fall back to N = 5 if a 4-coloring cannot be found within the time budget. Also works for 3D labels (< 8 typically) and higher dimensions.
Install
pip install ncolor
Pulls a precompiled wheel (Linux x86_64 / aarch64, macOS arm64 / x86_64, Windows AMD64 / ARM64) for CPython 3.11 to 3.15. Only runtime deps are numpy and platformdirs.
Usage
import ncolor
ncolor_masks = ncolor.label(masks) # 4-color
ncolor_masks, n = ncolor.label(masks, return_n=True) # + color count
labels = ncolor.format_labels(masks) # compact to 1..N
labels = ncolor.format_labels(masks, clean=True) # + split disjoint pieces, drop tiny components
ncolor.release_buffers() # free the scratch kept between calls (optional)
Expand-labels is on by default (so that close-but-not-touching cells tend to be assigned distinct colors). Pass expand=False for 3D inputs where cells can over-expand. Thanks to Ryan Peters (@ryanirl) for the original suggestion.
Threading needs nothing special. A lone call uses every core; calls that overlap are handed narrower engines whose threads add up to about one machine, so several images color at once:
import concurrent.futures as cf, ncolor
with cf.ThreadPoolExecutor(4) as pool:
colored = list(pool.map(ncolor.label, images)) # 1.4-3.1x faster than taking turns
Nothing is calibrated or configured for this. With four threads labeling images from 512 by 512 to 4096 by 4096, overlapping calls ran 1.4x to 3.1x faster than taking turns on an Apple M5 Max and an AMD Ryzen 9 7950X (benchmarks). NCOLOR_MAX_ENGINES=1 turns it off and calls take turns on one pool as they always have. Engines are built only when calls actually overlap, so a single-threaded program holds one, and once the parallel phase is over calls go back to full width. At most NCOLOR_MAX_ENGINES (4) are created; each keeps the working set of the largest image it has seen, roughly 20 bytes per pixel. ncolor.Engine does the same by hand for callers who would rather size the threads themselves.
Any integer, bool or float label array is accepted; the cast to the engine's int32 runs in parallel inside the call. Labels beyond the int32 range are compacted automatically by label and format_labels. The engine keeps the scratch memory of the largest image it has processed until release_buffers() is called.
Repeated coloring
For an unchanged label image, prepare its expansion and contact graphs once:
prepared = ncolor.prepare_labels(masks, expand_mode="clean")
colored = prepared.color(n=4)
colored_again = prepared.color(n=5)
print(prepared.nbytes) # owned array bytes
Preparation owns a snapshot, so later edits to masks do not affect it.
Create a new snapshot when the geometry, expansion, connectivity, or weight
settings change. Each coloring call can change the color target, search
depth, and perceptual palette. Engine.prepare_labels(...) and
prepared.color(engine=engine) provide explicit worker control. A snapshot
uses one, two, or four bytes per pixel according to label count, plus its
graph arrays. Large sparse images can instead store only foreground
positions and labels. Empty snapshots retain no per-pixel map. Compact
storage reduces snapshot memory and repeated rendering time, though
preparation can cost more. The snapshot's memory is freed when the object is
deleted (del prepared). prepared.color(return_lut=True) skips image
rendering when no output buffer is supplied.
Vector geometry (GeoDataFrames, GeoJSON)
Data that starts out as polygons does not have to be rasterized to be colored. ncolor.geo.label reads the adjacency straight off the geometry, so nothing is lost on the way in:
pip install "ncolor[geo]" # adds shapely; geopandas is optional
import geopandas as gpd
from ncolor import geo
gdf = gpd.read_file("cells.geojson")
gdf["color"] = geo.label(gdf) # 4-color, one per feature
gdf.plot(column="color", cmap="viridis")
It accepts a GeoDataFrame, a GeoSeries, a GeoJSON file / string / dict, a list of Shapely geometries, or anything with a __geo_interface__, and returns a uint8 array of colors in 1..n in input order (0 for missing or empty geometries). Pass return_frame=True for a GeoDataFrame with the colors in a column instead.
Two knobs mirror the raster ones:
| kwarg | meaning | raster analogue |
|---|---|---|
min_shared_length |
contact must be a shared border, not a point. The default 0.0 drops corner-only touches (the "Four Corners" rule), which is what keeps the graph planar and 4-colorable. None counts them, and then n = 5 is likely. |
conn=1 vs conn=2 |
tolerance |
treat features within this distance as touching, for polygons whose neighbors are separated by a hairline gap after vectorization or reprojection. In CRS units. | connect_radius |
With a tolerance, a positive min_shared_length is the vector form of the raster min_contact filter: dilating polygons to close gaps also creates one-point leaks between features that were never really neighbors, and those are what push a coloring from 4 up to 5. On a 5000-cell Voronoi tessellation with hairline gaps, tolerance=0.2 alone needs 5 colors; adding min_shared_length=1.0 brings it back to 4.
Pairs the filters reject become soft constraints: they still get different colors where that is free, without constraining the coloring. ncolor.geo.connect returns the adjacency pairs alone (0-indexed by row), and ncolor.color_graph colors any edge list you build yourself:
colors = ncolor.color_graph(edges, n_vertices=len(nodes)) # 0-indexed pairs
New in v2
v2 is a complete C++ rewrite. With matched settings, label runs 6.3x to 25.3x faster than 1.5.3 on 4 workers and 2.7x to 7.3x faster on one across 2D images and sparse 3D boxes, and 63x faster on 4 workers (18x on one) on a 128 x 128 x 128 volume of cells packed like tissue. These are measured on six test images on an Apple M5 Max and an AMD Ryzen 9 7950X; see BENCHMARKS.md for per-image times, methods, and how to reproduce them. The new default expand removes 1-pixel bridges and spurs before the picker sees them, and an auto-soft constraint refines the hard 4-coloring via local search to differentiate near-adjacent cells. Together these break the K₅-shaped convergence clusters that forced the v1 numba pipeline up to N = 5. See CHANGELOG.md for the full list of changes and the migration table from v1.
The rewrite also brings drop-in C++ replacements for the image-analysis and distance-transform calls the old pipeline relied on, with no extra install:
| ncolor | replaces | speed, 1 worker | speed, 4 workers |
|---|---|---|---|
ncolor.connected_components |
skimage.measure.label |
0.39x to 2.4x | 0.96x to 6.5x |
ncolor.regionprops |
skimage.measure.regionprops_table (area, bbox, centroid) |
1.9x to 27.8x | 5.4x to 34.5x |
ncolor.expand_labels |
scipy.ndimage.distance_transform_edt nearest-label fill |
2.6x to 7.6x | 6.5x to 25.8x |
ncolor.expand_labels |
skimage.segmentation.expand_labels |
3.5x to 8.5x | 9.9x to 29.2x |
ncolor.delete_spurs |
hand-rolled morphology, not in scikit-image | not compared | not compared |
Speeds are ranges over the benchmark inputs on both machines, measured against SciPy 1.18.1 and scikit-image 0.26.0, which run these operations on one thread. expand_labels also supports L1 expansion in any dimension. scikit-image's measure.label is faster on some dense masks: down to 0.39x on one thread on a 70% filled 3D volume at full connectivity, and 0.96x with four workers on the same volume.
All of these run on the engine's workers, and Engine(n_threads=...) sets the budget per call. Results never depend on the worker count.
Connected components is a separate utility and is also used by
format_labels(clean=True) to split disconnected pieces of a label.
Ordinary label() calls do not run it: their expand_mode="clean" uses
bridge and spur cleanup within label expansion. Large component jobs now
use parallel slabs and boundary merging; small arrays stay serial.
Engine(n_threads=4).connected_components(mask) selects an explicit worker
budget. Component IDs retain the serial scan order.
For C++ engine internals, file-by-file architecture, and threadpool design, see ARCHITECTURE.md.
Metadata
Release files for ncolor 2.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ncolor-2.3.0.tar.gz | 370.6 kB | Details |
Built distributions (wheels)
Total release size: 27.7 MB
Release files / ncolor-2.3.0.tar.gz
| Download URL | ncolor-2.3.0.tar.gz |
|---|---|
| Size | 370.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ebff8516234815153e86a8570b1e69a4e53fdcc02259483ba3d5cfd2567186c9
|
|
BLAKE2b-256 checksum How to use checksums |
3cf6b0df519eb8bb98528c717156806abf5358836d70818b0dc9602a82ae3e74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp315-cp315-win_arm64.whl
| Download URL | ncolor-2.3.0-cp315-cp315-win_arm64.whl |
|---|---|
| Size | 853.4 kB |
| Tags | CPython 3.15 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
ea3dfac3619cf72be53783f6a3f6346b99d7e83fcca1927834b8b6170db88599
|
|
BLAKE2b-256 checksum How to use checksums |
e422a69fdd27941aed06e2165ba645338b4986ed93907cbce1971c40e2978b94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp315-cp315-win_amd64.whl
| Download URL | ncolor-2.3.0-cp315-cp315-win_amd64.whl |
|---|---|
| Size | 722.1 kB |
| Tags | CPython 3.15 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8c5947f5f83e636ef619ac5d24e40f53644001f8db7c1b8c8e7bf92910d2450f
|
|
BLAKE2b-256 checksum How to use checksums |
00916e03d202ab0815994dfc9035de670a2a2894d6f6f2b9a39e247a46fab623
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ncolor-2.3.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.15 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2226e27385757bf62dcaafab5dbb1dd53c926305f56129cf59c540a9d5259a25
|
|
BLAKE2b-256 checksum How to use checksums |
d13703a70f8f56c05ac5e6d030dabcd7c41ad82362fd9f43aa7309c87920aeea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ncolor-2.3.0-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.15 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
8908290680bbca7a5aee19314180e6870ebbd218cfe501e102f891f133b6779c
|
|
BLAKE2b-256 checksum How to use checksums |
76d311e30ad9736f69764ab869611be2e04bef280c3ca7459735ce8f41577477
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp315-cp315-macosx_11_0_arm64.whl
| Download URL | ncolor-2.3.0-cp315-cp315-macosx_11_0_arm64.whl |
|---|---|
| Size | 695.4 kB |
| Tags | CPython 3.15 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2d60c92b80b8c9fdcae5388bc7ee8da477988c6032287967fc4408bab6a82a89
|
|
BLAKE2b-256 checksum How to use checksums |
720e64a464164ba71afab3a314d23192ba00cc51629973fafff4cd564fa8f3e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp315-cp315-macosx_10_15_x86_64.whl
| Download URL | ncolor-2.3.0-cp315-cp315-macosx_10_15_x86_64.whl |
|---|---|
| Size | 708.2 kB |
| Tags | CPython 3.15 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
ba2ae51c06acad5647b6dcb7a34d88ad3e998bfbd59a74ffc51c506ab3e024bf
|
|
BLAKE2b-256 checksum How to use checksums |
41c5491c2c9fc11a3ab3bb55c1d1daeba9cde524acc2368592176f1b039b3068
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp314-cp314-win_arm64.whl
| Download URL | ncolor-2.3.0-cp314-cp314-win_arm64.whl |
|---|---|
| Size | 853.4 kB |
| Tags | CPython 3.14 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
0f32bababd199786880abbe1a58caa17ee8d0bfc9cacc8cb592896eba266d404
|
|
BLAKE2b-256 checksum How to use checksums |
b37625510684c874c2a0605f787c12f501d101857f6e57ac577c5568479b6d3a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp314-cp314-win_amd64.whl
| Download URL | ncolor-2.3.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 722.1 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c3de2eac2a8eacb560974e91dfe6b92cb7c4874a8fd0d4d10a2f357908564ec7
|
|
BLAKE2b-256 checksum How to use checksums |
5f0a3582ea13525fb47ab65c94e105f0a96f1ce3f769fe27ce22cb292cb8137c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ncolor-2.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
97f2b7e33676a6b38563f77076f46f6fa7bf9849bac0bddbe0c8e6aec8d7384c
|
|
BLAKE2b-256 checksum How to use checksums |
f3df2bc24d0dc9c71c2f5fbb99ff9aa1c0916e95e4c520dde7426609c083d132
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ncolor-2.3.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
987071e924e75ed79eff1dab125e730b9907a6a8b3926187beb31746ff328da4
|
|
BLAKE2b-256 checksum How to use checksums |
f3d0c87d541c0c78ed847aab54bbd23e3e4904c2fe3f9782d039ba4bf1f68c95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | ncolor-2.3.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 693.8 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
69e01397ef3268770e603343302cc7ce868f0bc6869b9efe36bc3888dec5d1d6
|
|
BLAKE2b-256 checksum How to use checksums |
a86e44d20bf570549bb75df20fd0dc9afa4be26a9dc93054798458f40238fef6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp314-cp314-macosx_10_15_x86_64.whl
| Download URL | ncolor-2.3.0-cp314-cp314-macosx_10_15_x86_64.whl |
|---|---|
| Size | 708.2 kB |
| Tags | CPython 3.14 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
55d9fd2a03e57126678256a00f9eb573a5d163ed8306f0e24c86c37a050069e3
|
|
BLAKE2b-256 checksum How to use checksums |
902deb83ad32a6716f543ecfec4ad0ce9b5bae753d0c08b37c5215c07ba5e0f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp313-cp313-win_arm64.whl
| Download URL | ncolor-2.3.0-cp313-cp313-win_arm64.whl |
|---|---|
| Size | 827.1 kB |
| Tags | CPython 3.13 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
ab0f43ece2f15760a7ce4390bc1c97a67ccb8bd573ed9ebc6ce340683a0e9238
|
|
BLAKE2b-256 checksum How to use checksums |
e4f231fdf52941388856a9c3751d67ef6560cbacc594c1fd4b611fb4efb5456c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp313-cp313-win_amd64.whl
| Download URL | ncolor-2.3.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 702.0 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4d1ff1600bea0e534a7f5817599bfa0ca43538a61289b52781df7730d1f08e0e
|
|
BLAKE2b-256 checksum How to use checksums |
467dcec2ef1b5e41eb18f563a4bb801b99efa01600ca3f097ea68ac30cb42711
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ncolor-2.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
7e90df25a72a1bebfceaae7d581ba5c955186b553572865ec9fa0a2197d8af9b
|
|
BLAKE2b-256 checksum How to use checksums |
0da0dd40ff246c0d89dabd7b29850e1cb591f5b9aa81dab4cfe5efbcedddadbc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ncolor-2.3.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
45dfc02dfb49e61a0b005dffd34c811cf3d9cb0e822d2386a398a5132f4a3300
|
|
BLAKE2b-256 checksum How to use checksums |
3756ac01dd380be0ff15da6ca5dda70c93809472856106b49f97e407ce807d58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | ncolor-2.3.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 692.9 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
51761fc4acb4e645fa05b39cac9e25acd724c5d0da4f7270b5c25860a12e0e72
|
|
BLAKE2b-256 checksum How to use checksums |
a3589557a4bf409dc97ea258c17a4bc1e89e6a8d83cb36e177d29f6c386fe195
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp313-cp313-macosx_10_14_x86_64.whl
| Download URL | ncolor-2.3.0-cp313-cp313-macosx_10_14_x86_64.whl |
|---|---|
| Size | 708.0 kB |
| Tags | CPython 3.13 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
324bb66ba8dd43f1e11c997f518708b1cb5a028b08ac059c2acceca72f5774ba
|
|
BLAKE2b-256 checksum How to use checksums |
10b25f1e77c559ed3fc6db51f3f2d0af2010601f63409f4a69e966b8bb5d0297
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp312-cp312-win_arm64.whl
| Download URL | ncolor-2.3.0-cp312-cp312-win_arm64.whl |
|---|---|
| Size | 827.1 kB |
| Tags | CPython 3.12 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
a8d15c3645e26072f8151217f2368093a98c0537e39ce34736b05affe7bd4e45
|
|
BLAKE2b-256 checksum How to use checksums |
29bd35e1976e723b62d9e13bf73168a61a8fd6db5ea7bf3fa74ba6608882384f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp312-cp312-win_amd64.whl
| Download URL | ncolor-2.3.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 701.9 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cbc292b5f388e18bc3e6e7f7ddb840c907613fb08158f031a640c0ebe5f9503f
|
|
BLAKE2b-256 checksum How to use checksums |
1f867897534b8153b0faa0ba3b205aa3f624a2d9812214982b48c0345db87948
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ncolor-2.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
220d5bcea76a0ef234f673b7dc840678a3175bbf243ce682b1323edc322667b9
|
|
BLAKE2b-256 checksum How to use checksums |
25db85012fbc781bac4ce62b6f54a3d2aaeeb2119234cf754ed6ce23cc227c5a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ncolor-2.3.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
def4fa5f26c749b9473a799f2fddaf8ec1333512e0d198c2cf4ed7377c4d1c5d
|
|
BLAKE2b-256 checksum How to use checksums |
980672ca1eae4a8cbc958e616071e594772cb805833d7ce1b1c860872d25c42f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | ncolor-2.3.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 692.9 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8bfbfff868e95fc968de943a94f0a8256e54fd5dd5922c22e6239ada3d89ba3d
|
|
BLAKE2b-256 checksum How to use checksums |
99b7ccffc3053136c01b4f31c16ac87bc8e17a70a59dc22738ba1e80f5fd1ff8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp312-cp312-macosx_10_14_x86_64.whl
| Download URL | ncolor-2.3.0-cp312-cp312-macosx_10_14_x86_64.whl |
|---|---|
| Size | 707.9 kB |
| Tags | CPython 3.12 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
103b12ec993f54b473c8cfe32ef6ba778b9a7309be0400581dfaec1cd12ba9e1
|
|
BLAKE2b-256 checksum How to use checksums |
546cb0965fb63ab71bd9bbd6340b5b8cb95c0835be43a00585fb678ab88d19cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp311-cp311-win_arm64.whl
| Download URL | ncolor-2.3.0-cp311-cp311-win_arm64.whl |
|---|---|
| Size | 823.8 kB |
| Tags | CPython 3.11 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
67aff401d351b2dc3e4706b10cbe5e050c2c454369a82ecd9c43f24939b13ab2
|
|
BLAKE2b-256 checksum How to use checksums |
82eb573931420fc1c3f46c2977aeefa8d82d34e183db801b996d84bd5a44ab2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp311-cp311-win_amd64.whl
| Download URL | ncolor-2.3.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 698.7 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
63d73508fd21b1ec3ae8338c6cec4e7886d332ca9e3d6237a78ba40306c52836
|
|
BLAKE2b-256 checksum How to use checksums |
468427a8d68f268699cc8d029c36217ac8b8a0ab99432b0ee5c62a8f598e0de4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ncolor-2.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c441ef0aafbdcad8a6a20e551fc83401c79991122470e6fbe765d7d60374f42d
|
|
BLAKE2b-256 checksum How to use checksums |
f2a6fbfd76f47b8248da51071d47dae6d7eb9763f37a2b3c3806caa109f44866
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ncolor-2.3.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
2ba7a56f5eb5bc2d039dc045a08ce2d2a78eb9da6b399a9341b2c20cdd929670
|
|
BLAKE2b-256 checksum How to use checksums |
004a63e759ffe6b256daf74b92fb8bb44a6a6b22922ff5f635ccfcf529004b0b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | ncolor-2.3.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 692.5 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f4a4b5ff477e2c9163ab77d35acb72f75e4a802c707ef5f03343f7df321674e5
|
|
BLAKE2b-256 checksum How to use checksums |
179ca7e98318e46303cf388cbcd4c9447ded27d16312d596c9b4e400e0a46646
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / ncolor-2.3.0-cp311-cp311-macosx_10_14_x86_64.whl
| Download URL | ncolor-2.3.0-cp311-cp311-macosx_10_14_x86_64.whl |
|---|---|
| Size | 706.1 kB |
| Tags | CPython 3.11 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
24e2fb9f8c396f6c538eb9a3733c1e8898cda748a6cb4b64dafc5460e5caace5
|
|
BLAKE2b-256 checksum How to use checksums |
c8c5caf3d8906b7d31428c26d5f2a1a7b2cbe9885b81ebb20578b543dea8283f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency log