Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

pencilmark

PyPI Python Wheels License: MIT Docs

pencilmark rates sudoku puzzles the way a human solver experiences them. It solves a puzzle step by step with human techniques, easiest first, and reports how hard it is, how long it takes, which band it belongs to and which techniques you need. It works for classic sudoku of any standard size and for many variants (killer, thermo, arrow, kropki, XV, sandwich, multi-grid boards and more). It also solves puzzles, checks uniqueness, imports puzzles from SudokuPad, f-puzzles, penpa-edit and Logic Masters links, and generates new puzzles to a target band or difficulty.

The engine is written in C++ (pybind11). Results are deterministic: the same puzzle always gets the same card.

Install

pip install pencilmark
pip install "pencilmark[verify]"      # optional: OR-Tools CP-SAT as a fallback uniqueness checker

Python 3.10 or newer. Building from source needs a C++17 compiler.

Quick start

import pencilmark

card = pencilmark.rate("....4.8.3.6...8..29.86.5..1235.........7..2.........96..2......8.12..7...9.......")
card["band"], card["difficulty"], card["time"]          # ('Medium', 5.9, 10.7)

card  = pencilmark.rate(puzzle, steps=True)             # add the step-by-step solve with explanations
cards = pencilmark.rate_many(puzzles, jobs=4)           # several puzzles in parallel, input order kept
sol   = pencilmark.solve(puzzle)                        # list of digits; raises NotUnique / NoSolution
exp   = pencilmark.to_export(puzzle, title="My puzzle") # "sudoku-puzzle" exchange format (docs/FORMAT.md)

A puzzle can be a classic string (. or 0 for blanks), a sudoku-puzzle dict, a puzzle JSON dict or string, or a path to a .json file.

Command line:

$ echo '....4.8.3.6...8..29.86.5..1235.........7..2.........96..2......8.12..7...9.......' | pencilmark rate - --report
#1  Medium  -  difficulty 5.9  -  time 10.7 min (80% of players within 16.4 min)
   contains: Naked Pair (or PPR/HPR), X-Wing (or KTE/SCL)

pencilmark rate puzzles.txt --json        # full card per line (python -m pencilmark works too)
pencilmark solve puzzles.txt              # the solution, or 'not unique' / 'no solution'

More in docs/USAGE.md.

The card

rate returns a dict (format "sudoku-grade") with these fields by default (grader, format, format_version are always there); rate(puzzle, fields=[...]) / --fields asks for others by their key names, and only requested fields are computed (docs/FORMAT.md section 11):

Field Meaning
difficulty how hard each step feels, continuous from 0 (one empty cell) with no ceiling; a typical newspaper medium is about 5
time expected minutes for an average player (time_p80 on request: 80% of players finish within it)
band, band_index Very Easy (0), Easy, Medium, Hard, Very Hard, Extreme (5); "Unknown" (null) only with allow_guessing=True, when the engine had to guess
contains techniques met going easy to hard: code, chip, name, band, uses, alternatives; with contains_complete and contains_truncated
issues, reject publishing checks such as a difficulty spike or an unused rule (code, severity reject / warning, text, and rules: the offending rules' indices in the exported puzzle); reject is true when any issue is a reject
on request time_p80, steps (technique, placement r2c8=3 or eliminations r4c5#7; explain="short" / "teach" adds explanations), se / se_diuf, describe, symmetry

A chip like XWG/KTE/SCL means any one of those techniques gets you through at that point.

Guessing is off by default: where no technique applies, the engine proves an elimination by full search (Trial and error, band Extreme), so every uniquely solvable puzzle gets a band. allow_guessing=True (CLI --allow-guessing) lets it guess there instead, which is faster on the hardest puzzles; the card then says Unknown, with contains_complete: false and stopped_at_step. With max_seconds set, the contents search is capped and the card may say contains_truncated: true. A puzzle without exactly one solution has no card: rate raises NotUnique / NoSolution.

Exchange format

to_export writes, and every entry point reads, the "sudoku-puzzle" format, format_version 1, specified in docs/FORMAT.md (JSON Schema: docs/sudoku-puzzle.schema.json):

{"format": "sudoku-puzzle", "format_version": 1,
 "meta": {"title": "Heartstring", "author": "...", "source": "example.org", "type": "Killer Sudoku"},
 "board": {"rows": 9, "cols": 9},
 "digits": 9,
 "givens":   [0, 0, 5, 4, 0, ...],
 "solution": [6, 1, 5, 4, 2, ...],
 "rules": [
  {"type": "box_grid", "origin": "r1c1", "box": [3, 3]},
  {"type": "cage", "sum": 15, "cells": ["r1c4", "r1c5", "r2c4"]},
  {"type": "edge", "kind": "kropki", "color": "white", "cells": ["r5c5", "r5c6"]}]}
  • Every constraint is a rule, houses included: a grid gives a sudoku grid's rows and columns, a box_grid adds its regular boxes, so a classic is one box_grid and a jigsaw is a grid plus box rules. Nothing is implied. Cells are named r{row}c{col}, 1-based. givens: 0 = empty, null = no cell (multi-grid gaps).
  • Each rule has one exact meaning and a default drawing, so a renderer needs nothing else; style and decorations are cosmetic only. meta is free-form information that never changes solving.
  • Strict reading: an unknown key or rule type makes the reader refuse the file (FormatError) instead of dropping a rule.
  • pencilmark.dumps writes the canonical text (one grid row per line, one rule per line); pencilmark.fingerprint gives a content hash that ignores metadata and styling; pencilmark.describe names the variant and lists its rules.

Other formats

For convenience pencilmark also reads and writes sudokuwiki.org packed strings, exports ipuz, and loads SudokuPad, f-puzzles, Penpa+ and Logic Masters links. None of these is needed to use the sudoku-puzzle format; see docs/INTEROP.md. How rules map onto the engine, and how to add one, is in docs/ENGINE.md.

Supported rules

Classic sudoku from 4x4 to 25x25, irregular (jigsaw) regions, diagonals and extra regions, multi-grid layouts (samurai, twodoku, butterfly, windmill and more), killer cages, little killers, sandwich, X-sums, skyscrapers, frame sums, arrows, thermometers (normal and slow), German and Dutch whispers, renban, region-sum, palindrome, zipper, between, entropic, modular and parity lines, kropki, XV, greater-than, difference / ratio dots, anti-knight, anti-king, non-consecutive, odd / even, low / high, Rossini, Vudoku, equal sums, counting rules, and given candidates (Sukaku). Rules that cannot be translated exactly are refused, never dropped silently.

Generator

from pencilmark.gen import generate
r = generate({"size": 9, "target_band": "Hard", "seed": 1})
r["puzzle"], r["card"], r["info"]

Targets: band, difficulty range, required techniques, symmetry, given counts, and rule elements (cages, thermos, whispers, renban, between lines, arrows, kropki, XV, parity). Every result is checked for uniqueness. Multi-grid boards are not generated.

Puzzle sources

from pencilmark import sources
pj = sources.load("https://sudokupad.app/...")      # SudokuPad, f-puzzles, penpa-edit, Logic Masters, short links
card = pencilmark.rate(pj)

Loaders that fetch pages identify themselves, obey robots.txt and pause between requests. Override the user agent with the PENCILMARK_UA environment variable.

Limitations

  • Difficulty and time are models fitted to human solving data. Differences under one point of difficulty are not meaningful, and a single solve can vary a lot from the predicted time.
  • Bands depend on the technique catalogue; a puzzle that needs a technique the engine does not have is solved with Trial and error at that point and rated Extreme.
  • Very hard puzzles with many-cell rules (killers, arrows, palindromes, thermos) can take minutes while the contents list is minimised; use max_seconds to cap it (the card then says contains_truncated: true).
  • The Sudoku Explainer-style ratings (se=True) are approximate and meaningful for classic sudoku only.

License

MIT, see LICENSE.

pencilmark was written with Claude.

Metadata

Release files for pencilmark 1.0.0rc1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pencilmark 1.0.0rc1
File Size Uploaded Provenance Actions
pencilmark-1.0.0rc1.tar.gz 591.6 kB With provenance Details for pencilmark-1.0.0rc1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for pencilmark 1.0.0rc1
File Actions
pencilmark-1.0.0rc1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for pencilmark-1.0.0rc1-cp314-cp314-win_amd64.whl
pencilmark-1.0.0rc1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for pencilmark-1.0.0rc1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pencilmark-1.0.0rc1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details for pencilmark-1.0.0rc1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
pencilmark-1.0.0rc1-cp314-cp314-macosx_11_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 11.0+ x86-64 Details for pencilmark-1.0.0rc1-cp314-cp314-macosx_11_0_x86_64.whl
pencilmark-1.0.0rc1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for pencilmark-1.0.0rc1-cp314-cp314-macosx_11_0_arm64.whl
pencilmark-1.0.0rc1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pencilmark-1.0.0rc1-cp313-cp313-win_amd64.whl
pencilmark-1.0.0rc1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for pencilmark-1.0.0rc1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pencilmark-1.0.0rc1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details for pencilmark-1.0.0rc1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
pencilmark-1.0.0rc1-cp313-cp313-macosx_11_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 11.0+ x86-64 Details for pencilmark-1.0.0rc1-cp313-cp313-macosx_11_0_x86_64.whl
pencilmark-1.0.0rc1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for pencilmark-1.0.0rc1-cp313-cp313-macosx_11_0_arm64.whl
pencilmark-1.0.0rc1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pencilmark-1.0.0rc1-cp312-cp312-win_amd64.whl
pencilmark-1.0.0rc1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for pencilmark-1.0.0rc1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pencilmark-1.0.0rc1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details for pencilmark-1.0.0rc1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
pencilmark-1.0.0rc1-cp312-cp312-macosx_11_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 11.0+ x86-64 Details for pencilmark-1.0.0rc1-cp312-cp312-macosx_11_0_x86_64.whl
pencilmark-1.0.0rc1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for pencilmark-1.0.0rc1-cp312-cp312-macosx_11_0_arm64.whl
pencilmark-1.0.0rc1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pencilmark-1.0.0rc1-cp311-cp311-win_amd64.whl
pencilmark-1.0.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for pencilmark-1.0.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pencilmark-1.0.0rc1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details for pencilmark-1.0.0rc1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
pencilmark-1.0.0rc1-cp311-cp311-macosx_11_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 11.0+ x86-64 Details for pencilmark-1.0.0rc1-cp311-cp311-macosx_11_0_x86_64.whl
pencilmark-1.0.0rc1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for pencilmark-1.0.0rc1-cp311-cp311-macosx_11_0_arm64.whl
pencilmark-1.0.0rc1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pencilmark-1.0.0rc1-cp310-cp310-win_amd64.whl
pencilmark-1.0.0rc1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for pencilmark-1.0.0rc1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pencilmark-1.0.0rc1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details for pencilmark-1.0.0rc1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
pencilmark-1.0.0rc1-cp310-cp310-macosx_11_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 11.0+ x86-64 Details for pencilmark-1.0.0rc1-cp310-cp310-macosx_11_0_x86_64.whl
pencilmark-1.0.0rc1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for pencilmark-1.0.0rc1-cp310-cp310-macosx_11_0_arm64.whl

Total release size: 32.5 MB

Release files / pencilmark-1.0.0rc1.tar.gz

Download URL pencilmark-1.0.0rc1.tar.gz
Size 591.6 kB
Tags Source
SHA-256 checksum
How to use checksums
35b7ec0ed96d972e566b09817f3294ec671c9a80fa2122ae54230e2755c338bf
BLAKE2b-256 checksum
How to use checksums
ff8b708d38a6fd19ae8f8f6364dfd4037a9cb2b739e3d9b9f5140c60ef0293f1
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 log

Release files / pencilmark-1.0.0rc1-cp314-cp314-win_amd64.whl

Download URL pencilmark-1.0.0rc1-cp314-cp314-win_amd64.whl
Size 1.1 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
5d58510513c99b636a282ea9c080c64f97244349cef33f4c40409bbf8add2973
BLAKE2b-256 checksum
How to use checksums
f9ab41edbdd75d4679d83bdcdea97af87987ff40d6b7174da7d37b8c1daf6693
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 log

Release files / pencilmark-1.0.0rc1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pencilmark-1.0.0rc1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.4 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cab27c258676beb6a2ad1fed2a988d2444aee492553fb41f61e9cc6cdecb55a9
BLAKE2b-256 checksum
How to use checksums
4729a8234381f80cbb62db7ff00cf330b7537b97a21092e2afa4dc089a0b2ef7
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 log

Release files / pencilmark-1.0.0rc1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL pencilmark-1.0.0rc1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
669179a648f4275a81f7c322e746efeba2238a252a9da079f92fd0c1433a9741
BLAKE2b-256 checksum
How to use checksums
a559e69e747d1f1129888a50eee8ce2b1be0cb4059e30621f1286c82784cf7c5
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 log

Release files / pencilmark-1.0.0rc1-cp314-cp314-macosx_11_0_x86_64.whl

Download URL pencilmark-1.0.0rc1-cp314-cp314-macosx_11_0_x86_64.whl
Size 1.3 MB
Tags CPython 3.14 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
9d2a156ff6df7bb5a740ba3127be45dd4a9ee67626e0640c5a2e1ba2004dc193
BLAKE2b-256 checksum
How to use checksums
0023f5a75b97fc63f446be6497c81c09b12c3963b1858bd4a8fb976ec1abdb02
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 log

Release files / pencilmark-1.0.0rc1-cp314-cp314-macosx_11_0_arm64.whl

Download URL pencilmark-1.0.0rc1-cp314-cp314-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
03f706f1c5e6445ea4bf414593c16c132b8ea6b44194b367bf400ba8f8338531
BLAKE2b-256 checksum
How to use checksums
919423a946791046d429b43d0ecca57669ec86872c216c461b029512cd7bf0dd
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 log

Release files / pencilmark-1.0.0rc1-cp313-cp313-win_amd64.whl

Download URL pencilmark-1.0.0rc1-cp313-cp313-win_amd64.whl
Size 1.1 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
2be6ae583a72546859659a71931041fc7cafb476ad8a78c9b82f16801b58a9db
BLAKE2b-256 checksum
How to use checksums
fccfdba2d0c7c3835e7e04c9d68b97af10535aa46cba9dfe69c9bac8eaf032c0
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 log

Release files / pencilmark-1.0.0rc1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pencilmark-1.0.0rc1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.4 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b59747f9ec2e8d77a236c0a03531182bc7607e4b669fe668afe3019b71914f3e
BLAKE2b-256 checksum
How to use checksums
b23563083f738efe4042b99a0df42b32caf34a4cef44e341d6d2f147d952a9f1
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 log

Release files / pencilmark-1.0.0rc1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL pencilmark-1.0.0rc1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3fdd1e1304329ecbdc29bcf44c000d28d4ac4e9a7d34a3f51f44207816995da7
BLAKE2b-256 checksum
How to use checksums
e2fa2b0994426af671e199a33a6c54e348e1a4727b3e421083783187720beb1f
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 log

Release files / pencilmark-1.0.0rc1-cp313-cp313-macosx_11_0_x86_64.whl

Download URL pencilmark-1.0.0rc1-cp313-cp313-macosx_11_0_x86_64.whl
Size 1.3 MB
Tags CPython 3.13 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
873af1f5441514b6b1651eeff13f4bea7ec7b76777d44ec3674a3e8b6ce364e6
BLAKE2b-256 checksum
How to use checksums
376ce7c8556d14d67eac216c9128820b2d247063d9a1a0091806d1b36e9c07df
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 log

Release files / pencilmark-1.0.0rc1-cp313-cp313-macosx_11_0_arm64.whl

Download URL pencilmark-1.0.0rc1-cp313-cp313-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4ab5fec4fb493c33f044c3f5d7698d8bff8ad32e0809f4a58608885e375fd837
BLAKE2b-256 checksum
How to use checksums
51cc4019cee439d66d8853c8911c1110b9376e7f43d53d5f45c0c4f318f759b8
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 log

Release files / pencilmark-1.0.0rc1-cp312-cp312-win_amd64.whl

Download URL pencilmark-1.0.0rc1-cp312-cp312-win_amd64.whl
Size 1.1 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4bff37cf202aa7a27a23a171a564c3f2174e574847fff14d3ada924b39681487
BLAKE2b-256 checksum
How to use checksums
081ec1d6aa9477a40adcafdc5731766d9246bc3490bbe8ebce01ee94a7e8e306
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 log

Release files / pencilmark-1.0.0rc1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pencilmark-1.0.0rc1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.4 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5a40a1fef5694b362e78ee0f96b7e07cd1b2653e1dce280f682025e73ba06715
BLAKE2b-256 checksum
How to use checksums
10b8eb5b60c94ea3318fcbf828f91cdf91754a69211a1e3ee02115b6f7e9e915
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 log

Release files / pencilmark-1.0.0rc1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL pencilmark-1.0.0rc1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
90d1510050ba87cc78e6607d52195e576ccbddb7a9ac7caed074e6fbe20484bf
BLAKE2b-256 checksum
How to use checksums
ae408b432f0b454d2f65b8b2d93a3508a80cd25513d7cc4b0ce32d4628fbaf68
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 log

Release files / pencilmark-1.0.0rc1-cp312-cp312-macosx_11_0_x86_64.whl

Download URL pencilmark-1.0.0rc1-cp312-cp312-macosx_11_0_x86_64.whl
Size 1.3 MB
Tags CPython 3.12 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
538d77fb0a43e649cc7d2d0dea19a0d48a5705c380cf1b24a8ca897ac508c0c8
BLAKE2b-256 checksum
How to use checksums
ade6b6a7710f45194b2663aff9139f130fa29bb434bc3d2ec17ecdef3351e050
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 log

Release files / pencilmark-1.0.0rc1-cp312-cp312-macosx_11_0_arm64.whl

Download URL pencilmark-1.0.0rc1-cp312-cp312-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a0d08875a707556db9d488b7bacd67f1f462160f15c96fa1218ffbc6ea164525
BLAKE2b-256 checksum
How to use checksums
8e7e39bb9fa6e61cc4a4ca1ae0653583df192ef3e272b67076ad9e5035f1c702
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 log

Release files / pencilmark-1.0.0rc1-cp311-cp311-win_amd64.whl

Download URL pencilmark-1.0.0rc1-cp311-cp311-win_amd64.whl
Size 1.1 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
5e61f46925769221f0726d3803074d5f5601bc645b5cebbf37469577450efd67
BLAKE2b-256 checksum
How to use checksums
3d2c8fce910bc923656b599e8e68741e8f3ce5bd035b147d4b32887ac8c8f2c5
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 log

Release files / pencilmark-1.0.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pencilmark-1.0.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.4 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
20efc67ceb4bcc3397dfe317cc2b2cf7967cdde1cf60b3d250a821127f0763d0
BLAKE2b-256 checksum
How to use checksums
98dcea418a5548b84fe579d2d9322eac872710c2b2341ca7ae7f070d86da300c
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 log

Release files / pencilmark-1.0.0rc1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL pencilmark-1.0.0rc1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
fd0fbc63ecaf2dd71e1636c9a901a9d5a6504c0c4203d2eb4e1241adff9b8645
BLAKE2b-256 checksum
How to use checksums
8cb76879cbf3acad212ad313840b5d5609d527e2f7aee54bd6f4f1a9836098c4
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 log

Release files / pencilmark-1.0.0rc1-cp311-cp311-macosx_11_0_x86_64.whl

Download URL pencilmark-1.0.0rc1-cp311-cp311-macosx_11_0_x86_64.whl
Size 1.3 MB
Tags CPython 3.11 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
daae5063883fd81c11da0b94164cf30a176fcc72cd2c2f759a5bc559d875ea3f
BLAKE2b-256 checksum
How to use checksums
edb5f4810dc2064015dc9b7642f9cb05b26da136c47311b0e5d1e1bb585052a0
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 log

Release files / pencilmark-1.0.0rc1-cp311-cp311-macosx_11_0_arm64.whl

Download URL pencilmark-1.0.0rc1-cp311-cp311-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f89f1b82070f08ee7c3727f4e3280869c199834bbe1dcd8b370d8fd362942ccd
BLAKE2b-256 checksum
How to use checksums
731e9019f219cd74263661f66002754dd7cdfac64dc17755ffd883574f03755f
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 log

Release files / pencilmark-1.0.0rc1-cp310-cp310-win_amd64.whl

Download URL pencilmark-1.0.0rc1-cp310-cp310-win_amd64.whl
Size 1.1 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
3d25ad04f9af2d2766e8c3009c02457eb0b762e200baa2c607a3396184163463
BLAKE2b-256 checksum
How to use checksums
d22cfa28f1bb6a16631648e9040dc85d422735b6c3ca5cc88353da99f52463cb
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 log

Release files / pencilmark-1.0.0rc1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pencilmark-1.0.0rc1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.4 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
774dcab5b9255eea1b59baa32bd056b71e764e8829f9fc0f29c1e8b12215bbe3
BLAKE2b-256 checksum
How to use checksums
e7d8ec433b8ada8074648ae1f17d3949caa4bc3890c64c1e4248ad92915142b1
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 log

Release files / pencilmark-1.0.0rc1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL pencilmark-1.0.0rc1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
ea1827527e753b999591edb21a664850a7434531a2afaaa73b843aaeab11449d
BLAKE2b-256 checksum
How to use checksums
0025ca3a0b5fd9918125df60174909028f698b2390e6047ae7f570e7d6387644
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 log

Release files / pencilmark-1.0.0rc1-cp310-cp310-macosx_11_0_x86_64.whl

Download URL pencilmark-1.0.0rc1-cp310-cp310-macosx_11_0_x86_64.whl
Size 1.3 MB
Tags CPython 3.10 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
dd23bab878493876603fc2682a7f3385ef8a917a2453422293a902930cb277b5
BLAKE2b-256 checksum
How to use checksums
7b2be456d79e22354bf3969b5c7704721cd1d59ed63b645741ae29bff706c282
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 log

Release files / pencilmark-1.0.0rc1-cp310-cp310-macosx_11_0_arm64.whl

Download URL pencilmark-1.0.0rc1-cp310-cp310-macosx_11_0_arm64.whl
Size 1.2 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a977e401addf72b5bc29be2876be44cb9603bf00de643b82ab9292d1c477015f
BLAKE2b-256 checksum
How to use checksums
e06dd87ccc1dfde568aed1b80e4d3338efb214222fda65a4074b7e8a508f82c7
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 log

Security for pencilmark 1.0.0rc1

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 26 files in this release have been uploaded with provenance metadata.

Select from 26 files

Attestation for pencilmark-1.0.0rc1.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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page