nanofractal
Fast fractal fiducial-marker detection for Python. Fractal markers are nested square markers: they stay detectable under heavy occlusion and over a wide range of distances, and every visible level contributes corner correspondences for accurate pose.
nanofractal wraps an optimised C++ pipeline with nanobind:
zero-copy NumPy ↔ cv::Mat, the GIL is released during detection,
multi-threaded single-frame detection, and a parallel batch API.
Since 0.6 the library is fractal-only (the ArUco detector was removed).
Performance
The hot path (adaptive threshold, contour tracing, polygon fitting, decoding)
is a purpose-built reimplementation that returns bit-identical outer
corners to the reference detector (checked by the test-suite against
_reference_detect), and runs on all cores within a single frame.
Median latency per frame, FRACTAL_5L_6, synthetic scenes from
nanofractal.bench, i5-12400 (6 cores / 12 threads), NF_MARCH=x86-64-v3,
OpenCV 4.10 — the configuration of the published wheels:
| scene / mode | res | 0.5, 1 core | 0.6, 1 core | 0.5, all cores | 0.6, all cores | gain (all cores) |
|---|---|---|---|---|---|---|
marker in clutter, detect |
1080p | 11.3 ms | 3.18 ms | 12.3 ms | 1.14 ms | ×10.8 |
marker in clutter, with_inner_points |
1080p | 13.4 ms | 4.23 ms | 14.4 ms | 2.29 ms | ×6.3 |
| no marker (clutter only) | 1080p | 12.7 ms | 2.75 ms | 13.8 ms | 0.71 ms | ×19 |
marker in clutter, detect |
4K | 52.6 ms | 12.5 ms | 49.5 ms | 4.17 ms | ×11.9 |
marker in clutter, with_inner_points |
4K | 54.6 ms | 16.3 ms | 55.3 ms | 7.40 ms | ×7.5 |
| no marker (clutter only) | 4K | 55.3 ms | 12.7 ms | 55.1 ms | 4.40 ms | ×12.5 |
detect_batch, 48 × 1080p |
— | — | — | 382 fps | ~1360 fps | ×3.6 |
With OpenCV 5.0 (whose own findContours is already ~3× faster than 4.10's)
0.6 is 2–2.5× faster than 0.5 on one core and 3–8.5× with all cores, e.g.
1080p detect 4.66 → 0.92 ms and 4K 15.9 → 4.14 ms.
Reproduce on your machine:
python -m nanofractal.bench --resolution 1920x1080 --scene perspective
python benchmarks/fractal_bench.py run --resolutions 1920x1080 3840x2160 --batch
Levers:
nf.set_num_threads(n)— threads used inside onedetect()call (default: all cores;1= sequential, best for many concurrent detectors).params.detection_scale— runs the threshold/contour stage on a downscaled frame (corners are still refined at full resolution);0.5is roughly 3–4× faster at 4K.FractalTracker— for video: searches near the previous frame's markers (whole frame when they are lost), with identical accuracy; ~2.2× faster at 4K and 1.2–1.8× at 1080p on a moving-marker sequence.detect_batch— parallelises across frames for offline throughput.
Installation
pip install nanofractal
Wheels are available for Linux x86_64/aarch64 and Windows AMD64 (x86_64 wheels require AVX2, i.e. Haswell 2013 or newer). They bundle a minimal OpenCV, so no system OpenCV is required at runtime.
Build from source
You need a C++17 compiler, CMake ≥ 3.18 and a development OpenCV — 4.x
(core, imgproc, calib3d, features2d) or 5.x (core, imgproc,
geometry, features):
sudo apt-get install -y build-essential cmake libopencv-dev # Debian/Ubuntu
pip install .
NF_MARCH=x86-64-v3 pip install . # AVX2 build (what the x86_64 wheels use)
Quick start
Inputs are plain NumPy uint8 arrays — (H, W) / (H, W, 1) grayscale or
(H, W, 3) BGR, C-contiguous.
Generate a marker
import nanofractal as nf
marker = nf.generate_fractal("FRACTAL_5L_6", size_px=1200) # every nested level
outer = nf.generate_fractal("FRACTAL_5L_6", size_px=1200, nested=False) # external level only
The image spans the marker's black border exactly; leave a white quiet zone
around it when printing. Configs: FRACTAL_2L_6, FRACTAL_3L_6,
FRACTAL_4L_6, FRACTAL_5L_6 (number of nested levels).
Detect
import cv2
import nanofractal as nf
image = cv2.imread("scene.png") # (H, W, 3) uint8 BGR
det = nf.FractalDetector("FRACTAL_5L_6", marker_size=0.2) # side in metres
res = det.detect(image)
print(res.ids) # int32 (N,) — one entry per visible marker level
print(res.corners) # float32 (N,4,2) — outer corners, sub-pixel
for level_id, corners in res:
...
Pose (occlusion-robust)
estimate_pose returns (rvec, tvec, reproj_err) or None. It uses every
visible inner and outer corner correspondence when available and falls back
to the four outer corners otherwise; reproj_err (RMS px) lets you gate noisy
poses.
res = det.detect(image, with_inner_points=True)
pose = det.estimate_pose(res, camera_matrix, dist_coeffs) # fisheye=True for the fisheye model
if pose is not None:
rvec, tvec, reproj_err = pose
det.draw(image, res, camera_matrix, dist_coeffs, rvec, tvec) # outlines + axes
The raw correspondences are exposed too: res.points_2d float32 (M, 2) and
res.points_3d float32 (M, 3) (planar, z = 0).
Tune detection
p = nf.DetectorParams()
p.detection_scale = 0.5 # downscaled threshold/contour stage
p.min_contour_size = 60 # detect smaller markers (default 120 px perimeter)
p.adaptive_block_size = 21 # threshold window (odd, >= 3; -1 = auto)
p.adaptive_c = 7.0 # threshold constant
p.approx_poly_rate = 0.05 # polygon fit epsilon = perimeter * rate
p.subpix_win_size = 4 # corner refinement half-window (0 = off)
p.kfilter_min_dist = 10.0 # min distance between inner-corner keypoints
det = nf.FractalDetector("FRACTAL_5L_6", params=p)
det.params.adaptive_c = 5.0 # changes apply to the next detect()
Video
tracker = nf.FractalTracker(det) # margin=0.25, pad=16
for frame in frames:
res = tracker.detect(frame) # same results as det.detect(frame)
More
detect(image, roi=(x, y, w, h))— detect in a zero-copy sub-rectangle; corners come back in full-image coordinates.detect_batch(images, num_threads=0, roi=None)— parallel over frames.refine_corners(image, corners, win_size=5)— standalonecornerSubPix.PoseSmoother(process_noise, measurement_noise, mode="kalman"|"ema")— temporal pose smoothing.draw(..., inplace=False)— draw on a copy.
Errors: wrong dtype / non-contiguous input → TypeError; unsupported shape,
empty frame, invalid config or parameters, invalid intrinsics → ValueError.
How it is fast
- Fused adaptive threshold. Separable box sums (horizontal first, uint16, ring buffer + running vertical window), reproducing OpenCV's fixed-point / float rounding of the mean exactly, written straight into a zero-bordered buffer together with 8-neighbour occupancy masks. Row stripes run in parallel.
- Contour tracing. Suzuki–Abe border following identical to
cv::findContours(RETR_LIST, CHAIN_APPROX_NONE)(sequential), with SIMD start detection, one mask load per step and no allocation for contours below the minimum size. Isolated speckle pixels (most contours in noisy frames) are skipped without tracing. Row bands are traced in parallel: each band keeps its own pixel labels and a contour is kept by the band holding its start, the ownership rule also used by OpenCV's data-race-free TRUCO tracer; the test-suite checks the result againstfindContourson millions of contours, including bands one row high. It is 2–3× faster than OpenCV 5.0's own parallelfindContoursat every thread count (1080p, 12 threads: 0.31 vs 0.72 ms). - Polygon fit + decoding in parallel per contour, with exact replicas of
OpenCV 4's and OpenCV 5's
approxPolyDP(they differ) and no per-frame heap traffic. - Inner points. FAST runs only around the marker; keypoint filtering and matching use grids instead of O(n²) scans.
- Tracking (
FractalTracker): region-of-interest search around the previous detection, after Romero-Ramirez et al., Speeded up detection of squared fiducial markers (2018). Their other lever — shrinking the image to the previous marker size — was tested and rejected: it raised the corner error from 0.39 to 1.3 px. - Zero-copy input, GIL released, a detector pool for
detect_batch.
The one intentional behaviour difference from the reference detector: with
with_inner_points=True, the FAST response threshold is computed over the
marker's neighbourhood instead of the whole frame. Outer corners are unchanged.
Changelog
See CHANGELOG.md.
Citation
If you use this in research, please cite the original work:
- F. J. Romero-Ramirez, R. Muñoz-Salinas, R. Medina-Carnicer, "Fractal Markers: A New Approach for Long-Range Marker Pose Estimation Under Occlusion", IEEE Access, 7, 2019.
- F. J. Romero-Ramirez, R. Muñoz-Salinas, R. Medina-Carnicer, "Speeded up detection of squared fiducial markers", Image and Vision Computing, 76, 2018.
License
Apache-2.0. The vendored fractal detector is © its authors and used under its
terms; see third_party/ and PATCHES.md.
Metadata
Release files for nanofractal 0.6.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 | Provenance | Actions |
|---|---|---|---|---|
| nanofractal-0.6.0.tar.gz | 118.5 kB | With provenance | Details for nanofractal-0.6.0.tar.gz |
Built distributions (wheels)
Total release size: 147.2 MB
Release files / nanofractal-0.6.0.tar.gz
| Download URL | nanofractal-0.6.0.tar.gz |
|---|---|
| Size | 118.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70fe3cbb5dba13d39b00610a0cea3ff5af24ea631f50029cf47f4d89b210285b
|
|
BLAKE2b-256 checksum How to use checksums |
fdb483c692f01d5fbc7aed30a3a898c7fb81bb8a1ebcaac6c391ed334515916c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp313-cp313-win_amd64.whl
| Download URL | nanofractal-0.6.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 23.9 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1e534be69d7f94125f776ff51308114ea5ef7e98f406d895da74d698f6e037ec
|
|
BLAKE2b-256 checksum How to use checksums |
c5b0ced4acc097d0ed91014b87938421e7c70ebb2cc31e1ee9f6c043eb005b51
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | nanofractal-0.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e8f1f8387a204181ac23003e5b4d863cbd708c673b694d87527d966cdc0e064e
|
|
BLAKE2b-256 checksum How to use checksums |
c61dc05c3e0ebdbefb484df62bf64ebe570b2587316e21585897bf319fb520d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | nanofractal-0.6.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
99524ec10421e084dabb6f8ddf60a7c5a332414d73605f46b6265ee838028a92
|
|
BLAKE2b-256 checksum How to use checksums |
451280852a95c34d69e7263e8db33ecea003cd38119023bdd23778fa25df01de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp312-cp312-win_amd64.whl
| Download URL | nanofractal-0.6.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 23.9 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
39be0dd6bfa2da186570fe9c2dc25e59fa3d1f4effbb30d5a56aad9eb741a8f8
|
|
BLAKE2b-256 checksum How to use checksums |
6ec50ccb5c0e5046a88ca30b4f30f83f81ace1370808963df1dcb3c8a072398e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | nanofractal-0.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a5600fd95ea0f8464c297ea1f22d3c8dc4701f5e04adbd85172f37d24918339d
|
|
BLAKE2b-256 checksum How to use checksums |
b97c8b2cb0fc8e3a34299af26f40d5fc16cfd1b840224cc876084c60f6c80095
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | nanofractal-0.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
4971c8427fa643e7b68484b21b96433f6080be9fd8eec6c14ac3b88e259d2380
|
|
BLAKE2b-256 checksum How to use checksums |
631a99c837f9db542b784b1aa88c00ed6addf9e0dd1db099fdf28196b8771444
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp311-cp311-win_amd64.whl
| Download URL | nanofractal-0.6.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 23.9 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d0e25cf97521b4338c96c419c5b97c5774e61607197fb4500a61423a336fd7d0
|
|
BLAKE2b-256 checksum How to use checksums |
2f4fc18b8fe666c3b89276846a56a4913e55229e64d20bbf8a3af9f45c18b8e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | nanofractal-0.6.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
f48256771605f585877ca0ed7d34f030c3e4056a455778d5b3e2db02a37cde86
|
|
BLAKE2b-256 checksum How to use checksums |
fc0348dc3b0a92b4e0dd6424ff9d0998e2ab6a2801eed23272f7e4a1ac64bba8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | nanofractal-0.6.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
9f4ae1916a7f1523d27106881cda0baa16e14b55e0abb51f7e12482a9865f2f3
|
|
BLAKE2b-256 checksum How to use checksums |
ed2b20fcfb09603a91ae5328ba9c6656c6e37824b1c9bb39fd0945cd696c67d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp310-cp310-win_amd64.whl
| Download URL | nanofractal-0.6.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 23.9 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5a85762226fc7ed7e1108a41fbadc8a6a0a7ba223617511eafe7e3d8510c4484
|
|
BLAKE2b-256 checksum How to use checksums |
0adf9407167aa4313e551756e35a99e9b3f86a27c786fe67be14b1f6b7cbb498
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | nanofractal-0.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
91dbe9a1c3e73b8160aeea6d2efd4a598d1a469624b513c63999b03b0242ce06
|
|
BLAKE2b-256 checksum How to use checksums |
caeeecc0e5bbb7b445cd342e189d2137e80f51317e1e60b86db341d7fa86c675
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | nanofractal-0.6.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
a20c4564b139aaa013c6985d262077ef969a3d35773b36e395cbffcb83d24e22
|
|
BLAKE2b-256 checksum How to use checksums |
5ef3127e85cdcd82e4b8368ce6f5449d9b9b5e0acfb92f840809e4d1aa074741
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp39-cp39-win_amd64.whl
| Download URL | nanofractal-0.6.0-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 23.9 MB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
7885e0ef58e964b07303d7907efb2ac233d7819b31eaa92673708f0b14499d4d
|
|
BLAKE2b-256 checksum How to use checksums |
b17a03dc006da9d195110922a2846fbb1ed4935cdf4ff54aaf8c0cdac3bde3b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | nanofractal-0.6.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c6799d595a30d0a9c384dfcd0fd3dbdd87e980e204caf26505360244a03a4cba
|
|
BLAKE2b-256 checksum How to use checksums |
0b8d83bdd978b6a4b19cddf7fd697c420da112825fe24687c191fbd1775f9ffd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logRelease files / nanofractal-0.6.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | nanofractal-0.6.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.9 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
8f51c360bffe7a0b962b038fdcd6670b18db19a869749404c269cb644b2c1863
|
|
BLAKE2b-256 checksum How to use checksums |
7ee795377478c83f0dbbd263e0eff446415be2f3afeb7fecf8b3105e97516ab1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 26, 2026.
Transparency logSecurity for nanofractal 0.6.0
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.
Full provenance
All 16 files in this release have been uploaded with provenance metadata.
Attestation for nanofractal-0.6.0.tar.gz
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 Oct 26, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.