Skip to main content
Pre-release

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

Tests Code style: black PyPI version Python versions License Downloads

handcalcs cover art
Cover art by Joshua Hoiberg

handcalcs:
Python calculations,
as though you wrote them by hand.

handcalcs turns ordinary Python calculation code into a formatted calculation: the symbolic formula, then the formula with every value substituted in, then the result. Because the substitution step is shown, anyone can check the calculation by hand.

The same calculation can go to different renderers: Markdown and LaTeX for Jupyter and documents, HTML for web pages, ASCII text for terminals and logs, a live, formula-based Excel worksheet and Word documents. You can restyle the built-in renderers or write your own.

Read the documentation: getting started, every renderer, a cookbook of recipes, and how to customize or write a renderer.

Example

from math import sqrt   # hc: -i
## Hypotenuse of a right triangle
# Both sides are measured from the site drawings.
a = 2.5  # Side a, in m
b = 4.0  # Side b, in m
c = sqrt(a**2 + b**2)

In Jupyter this is typeset as maths. With the ASCII renderer it reads:

==============================
Hypotenuse of a right triangle
==============================

Both sides are measured from the site drawings.
a = 2.5 (Side a, in m)
b = 4 (Side b, in m)
c = √(a² + b²) = √(2.5² + 4²) = 4.717

Installing

pip install "handcalcs>=2.0.0rc1"

handcalcs 2.0 is a release candidate, so ask for it by version: a plain pip install handcalcs installs 1.x. handcalcs needs Python 3.11 or newer. Extras add the Excel and Word renderers (handcalcs[excel], handcalcs[word]) and Jupyter export options (handcalcs[exporters]). See Installation.

Quick start

In Jupyter, import handcalcs once, then start any cell with %%render:

import handcalcs
%%render
a = 2
b = 3
c = 2*a + b/3

From a script, render a string or a .py file with any renderer:

import pathlib
from handcalcs import HandCalcs
from handcalcs.renderers import LatexRenderer

latex = HandCalcs(LatexRenderer())(pathlib.Path("beam.py"))

On a function, @handcalc(renderer) returns the result and the rendered calculation.

Renderers

Markdown (the Jupyter default), LaTeX, HTML, ASCII text, a live formula-based Excel workbook, and Word documents with native equations. Subclass one to change its look, or write your own. See Renderers.

Upgrading from handcalcs 1.x

handcalcs 2 is a rewrite around a parsed node tree and pluggable renderers. Most notebooks need only a few changes: import handcalcs instead of import handcalcs.render, and # hc: comment commands instead of %%render arguments. See Coming from handcalcs v1.

Gotchas

Jupyter cells can run out of order. handcalcs looks up values in the notebook's namespace, so if you re-use variable names, a cell run out of order can render a beautiful but completely incorrect calculation. Run your notebook top to bottom before you rely on it.

If you use handcalcs for any kind of reporting that may become a legal document (e.g. design engineering calculations), it is up to YOU to ensure that the results are what you expect them to be. handcalcs is free and open-source software, and the author(s) are not responsible for incorrect calculations that result from its use.

That said, the whole point of showing the substitution is to make calculations easy to check by hand.

YouTube tutorials

These cover handcalcs 1.x; the ideas carry over.

License

Apache 2.0. See LICENSE.

Metadata

Release files for handcalcs 2.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 handcalcs 2.0.0rc1
File Size Uploaded Provenance Actions
handcalcs-2.0.0rc1.tar.gz 152.8 kB With provenance Details for handcalcs-2.0.0rc1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for handcalcs 2.0.0rc1
File Interpreter ABI Platform Actions
handcalcs-2.0.0rc1-py3-none-any.whl Python 3 none any Details for handcalcs-2.0.0rc1-py3-none-any.whl

Total release size: 326.2 kB

Release files / handcalcs-2.0.0rc1.tar.gz

Download URL handcalcs-2.0.0rc1.tar.gz
Size 152.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9beb2ea9ba2bdb97bc98c0c57b3b3a4c7c2fa570a9048e61feb39bc9b0a049cc
BLAKE2b-256 checksum
How to use checksums
4b2b0d2cde47b2ecd7dfc328bdedcbbaf661ec8a7994547063d7d67d0d90f22c
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 24, 2026.

Transparency log

Release files / handcalcs-2.0.0rc1-py3-none-any.whl

Download URL handcalcs-2.0.0rc1-py3-none-any.whl
Size 173.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30b9f8b24d1aa090f5ea4439b7a66f9b8b0e722b98751d944c00f35128cde4cf
BLAKE2b-256 checksum
How to use checksums
a3bb0df3e032c1fdeb50160bb71151ffd78fa34d0c4a4447e5bd9934d6d7d5e0
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 24, 2026.

Transparency log

Security for handcalcs 2.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 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for handcalcs-2.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 24, 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.

Release history Release notifications | RSS feed

This release
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