Namishu Calendar
Printable monthly calendars, ready for your plans.
English · 简体中文
Namishu Calendar is a small command-line tool that creates printable monthly calendars. Choose a year or month to get a PDF with one month per page and room to write in each day. Use it to put a family schedule on the fridge, display classroom activities on a noticeboard, or keep a study plan beside your desk.
The dates and page layout are prepared for you, so you can print a fresh calendar whenever you need one without drawing a grid or updating an old template. The default is A4 landscape with English labels and weeks starting on Monday. You can also change the labels, first weekday, colors, and margins to suit the way you plan.
Download the sample PDF. Print at actual size on A4 paper.
Installation
Requires Python 3.10+.
Install with either uv or pip:
uv tool install namishu-calendar
python -m pip install namishu-calendar
Both methods provide the namishu-calendar command. The Noto Sans Light font and default
layout are included, so English calendars need no separate font installation.
Quick start
Generate the current year, January through December, as calendar.pdf:
namishu-calendar
Choose a different year:
namishu-calendar --year 2027
Generate one month by adding --month:
namishu-calendar --year 2027 --month 9
Omit --year to use the current year. Choose a different output path with -o:
namishu-calendar --year 2027 --month 9 -o calendars/september.pdf
The command prints the saved file location and page count. Relative paths are resolved from your current directory; parent directories are created as needed. An existing PDF at the output path is replaced.
Options
| Option | Purpose | Default |
|---|---|---|
--year YEAR |
Year from 1 to 9999 | Current year |
--month MONTH |
Generate just this month, from 1 to 12 | All 12 months |
-o, --output PATH |
PDF file location | calendar.pdf |
--config PATH |
YAML file with layout or font overrides | Built-in settings |
--help |
Show usage | |
--version |
Show the installed version |
Customize the calendar
Write only the settings you want to change. Save this as calendar.yaml to start
weeks on Sunday and use narrower side margins:
weekdays:
week_start: sunday
page:
margin_left: 15
margin_right: 15
namishu-calendar --year 2027 --month 9 --config calendar.yaml
Unspecified settings keep their defaults, including the bundled font.
Download the complete example configuration
for all settings and comments. It works as downloaded with the bundled font;
edit it and pass its local path to --config.
| Setting | How to customize it |
|---|---|
| Paper and margins | page: dimensions and margins in millimeters |
| Month labels | title.months: 12 names, January through December |
| Weekday labels | weekdays.names: 7 names, Monday through Sunday |
| First weekday | weekdays.week_start: monday through sunday |
| Text | font_size in points and color, for title, weekdays, and day_numbers |
| Day boxes | grid: spacing, border width, radius, and border color |
| Empty boxes | grid.empty_opacity: 0 for invisible, 1 for a full border |
| Day numbers | day_numbers.position: top_left, top_right, bottom_left, bottom_right, or center; padding sets the inset from the inside edge of each border |
| Vertical spacing | title.gap_after and weekdays.gap_after: space below each text row, measured from visible glyph bounds |
| Custom font | font: a TrueType font path, relative to the YAML file or absolute |
Distances other than font sizes are in millimeters. Day-number padding is ignored
when centered. Grid gaps are measured between the outside edges of borders.
Layouts that leave insufficient room for text or cells produce an error before
the output file is created or replaced. Quote hex colors, such as
"#5f667e". The bundled Noto Sans Light font supports the default English labels;
it does not include Chinese characters. For Chinese calendars, change the month
and weekday names in YAML and supply a font with Chinese glyphs, such as Noto Sans SC.
To use a custom font, add its path to your YAML configuration:
font: fonts/MyFont.ttf
Font paths are relative to the YAML file, or they can be absolute. Fonts are embedded in the PDF, so recipients do not need to install them. Invalid settings, unreadable fonts, or missing characters produce an error.
License
Code and original documentation use the MIT License. The bundled Noto Sans Light font uses the SIL Open Font License 1.1. The same file includes the font's attribution and source information. Generated calendars may be printed, shared, modified, and sold.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file namishu_calendar-0.1.0.tar.gz.
File metadata
- Download URL: namishu_calendar-0.1.0.tar.gz
- Upload date:
- Size: 408.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff386a030fb35efdb0bf0083252e291f62c3bf341d38456d4b0ccf67a2f8db2d
|
|
| MD5 |
fbf330371f5390674d182ab3215c118b
|
|
| BLAKE2b-256 |
1d5a5aa2e14fffc59578d7380ece63c9da50f358b83e715b248815580cc63a69
|
Provenance
The following attestation bundles were made for namishu_calendar-0.1.0.tar.gz:
Publisher:
publish.yml on namishu/calendar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
namishu_calendar-0.1.0.tar.gz -
Subject digest:
ff386a030fb35efdb0bf0083252e291f62c3bf341d38456d4b0ccf67a2f8db2d - Sigstore transparency entry: 2782283576
- Sigstore integration time:
-
Permalink:
namishu/calendar@0da630995ead4ad4858fb1d1877bdaa39602c870 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/namishu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0da630995ead4ad4858fb1d1877bdaa39602c870 -
Trigger Event:
release
-
Statement type:
File details
Details for the file namishu_calendar-0.1.0-py3-none-any.whl.
File metadata
- Download URL: namishu_calendar-0.1.0-py3-none-any.whl
- Upload date:
- Size: 300.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c18d3188c2d7945cf790d516db7b408f7fc2fadb95d71c2833a74baaccc55294
|
|
| MD5 |
0a74f4d9e2088be1df7c41db1ae0b2d0
|
|
| BLAKE2b-256 |
4302d6a6414170d1af31f45ca1d024490966ba1ecbfa299a0cfbc9630434b0ac
|
Provenance
The following attestation bundles were made for namishu_calendar-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on namishu/calendar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
namishu_calendar-0.1.0-py3-none-any.whl -
Subject digest:
c18d3188c2d7945cf790d516db7b408f7fc2fadb95d71c2833a74baaccc55294 - Sigstore transparency entry: 2782283648
- Sigstore integration time:
-
Permalink:
namishu/calendar@0da630995ead4ad4858fb1d1877bdaa39602c870 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/namishu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0da630995ead4ad4858fb1d1877bdaa39602c870 -
Trigger Event:
release
-
Statement type: