Skip to main content

A notepad calculator that evaluates expressions in text files

Project description

calced logo

calced

A notepad calculator that evaluates math expressions in plain text files. Available as a CLI tool and a web app.

Why calced?

Spreadsheets are overkill for quick calculations. REPLs lose context once you close them. calced keeps your math in plain text files where results stay next to the expressions, files can be versioned and diffed, and you use whatever editor you want.

Compared to other notepad calculators:

  • Tiny, no dependencies — the CLI is a single 33KB Python file (stdlib only), the web app is a single 26KB HTML file. No build step, no node_modules, no Electron.
  • Works offline — both versions run entirely locally. Save the HTML file or install the CLI and you're set.
  • Both CLI and web — same syntax, same test suite, but well adapted to each environment.
  • Stable results — files store results inline so they're always visible. Shared web URLs include the major version, so they won't break on updates.

Web

Open the web app in a browser — no install required.

CLI

calced <file>           # evaluate and update file in place
calced -s <file>        # print result to stdout (don't modify file)
calced -w <file>        # watch for changes and auto-update
calced -w -s <file>     # watch and print (clears screen on change)
calced -u <file>        # print shareable web URL

Installation

Requires Python 3.9+. Any typical Python install method works (pip install calced, etc.).

# Install as a CLI tool
uv tool install calced

# Or run without installing
uvx calced <file>

# Or just grab the single-file script and run it directly
python calced.py <file>

How it works

Write math anywhere in a plain text file. Results are appended inline as # => result comments. Non-math lines are left untouched.

rent 1500                               # => 1_500
groceries 200 + 150                     # => 350
utilities 80 + 45 + 30                  # => 155
total                                   # => 2_005

Try in web app

Results are aligned and updated in place each time you run the CLI (or automatically in watch mode), or live as you type in the web app.

Features

Basic arithmetic

2 + 3                                   # => 5
10 * (4 + 6)                            # => 100
2 ^ 10                                  # => 1_024
17 % 5                                  # => 2

Try in web app

Variables

income = 5000                           # => 5_000
tax_rate = 22%                          # => 0.22
tax = income * tax_rate                 # => 1_100
after_tax = income - tax                # => 3_900

Try in web app

Percentages

50% of 300                              # => 150
200 + 15%                               # => 230
200 - 10%                               # => 180

Try in web app

SI prefixes

1k                                      # => 1_000
1M                                      # => 1_000_000
1.5G                                    # => 1_500_000_000
500n * 2                                # => 0.000001

Try in web app

Supported: k/K (kilo), M (mega), G (giga), T (tera), P (peta), E (exa), m (milli), u/μ (micro), n (nano), p (pico), f (femto), and more.

Unit conversions

5 km in miles                           # => 3.11
100 C in F                              # => 212
1 gib in mib                            # => 1_024
60 min in hr                            # => 1
1 gal in l                              # => 3.79

Try in web app

Supported dimensions: length, mass, temperature, data, time, volume. Use in or to.

Functions

sqrt(16)                                # => 4
round(3.14159, 2)                       # => 3.14
min(5, 2, 8)                            # => 2
max(1, 9, 3)                            # => 9
log10(1000)                             # => 3
sin(0)                                  # => 0

Try in web app

Available: sqrt, abs, floor, ceil, round, log, log2, log10, sin, cos, tan, asin, acos, atan, exp, min, max

Constants

pi * 2                                  # => 6.28
e ^ 1                                   # => 2.72

Try in web app

Totals

The total (or sum) keyword sums all numeric results since the last # heading or start of file.

rent 1500                               # => 1_500
groceries 350                           # => 350
utilities 155                           # => 155
total                                   # => 2_005

Try in web app

Blank lines are ignored in the total; headings reset it.

Number formats

Numbers can be written with commas or underscores as separators (1,000 or 1_000), in hex/binary/octal (0xFF, 0b1010, 0o77), or in scientific notation (1.5e3).

Trailing annotations

Parenthetical notes after an expression are ignored:

celo_price = 0.08 (see http://coinmarketcap.com)  # => 0.08

Try in web app

Format directives

Control output formatting with @format and @separator directives. These apply to all subsequent lines until changed.

1000000                                 # => 1_000_000
@format = fixed(2)
1000000                                 # => 1_000_000.00
@format = scientific
1000000                                 # => 1.00e+06
@separator = comma
@format = minSig(3)
1000000                                 # => 1,000,000

Try in web app

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

calced-0.2.0.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

calced-0.2.0-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

Details for the file calced-0.2.0.tar.gz.

File metadata

  • Download URL: calced-0.2.0.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for calced-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3e86df10c74c6ac99f4bfc7abc2e35442b7a63491bc53bf886611c0192d88b00
MD5 934a7d65ec1117a741ea89f1b5114845
BLAKE2b-256 ee56a755c59cc20a18e580c687f14b935568d70c36796336576d8b9c6474e6b8

See more details on using hashes here.

File details

Details for the file calced-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: calced-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 18.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for calced-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 78c2332c06d8ba9cab491b7060605f3f2d824395f606c28412f5e4b37fab694a
MD5 396888faa451c91a9685f310cfc3bd4a
BLAKE2b-256 9d42c6cae17ed7ac985a15720ff3494cf49c2050bd3a74e8deba42334112bdaa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page