Skip to main content

Beautiful terminal calendar with seasonal colors

Project description

PPCalendar - Pure Python Calendar

Month view and events for the day

A modern replacement for your system's cal command with Python-powered features.

Installation

# Recommended (requires uv 0.1.0+):
uv tool install ppcalendar

# Alternative:
pip install ppcalendar

Colorful 3-months calendar

Usage

# Show current month, also will work as just `cal`
ppcal

# Show 3-month view (previous/current/next)
ppcal 3

# Show specific year
ppcal 2025

# Show specific month (June 2024 example)
ppcal 6 2026

# Add events for a day (also supports yearly and monthly events)
ppcal add

# Will open an interactive menu for adding an event.
# XXXX-XX-XX - will add an event.
#      XX-XX - good for birthdays, once a year event
#         XX - an every month event 

# Delete an event from your list
ppcal del

Usage via cal command year view

Key Features

Seasonal Colors
Months change background by season:

  • 🌸 Spring: Green
  • ☀️ Summer: Red
  • 🍂 Autumn: Yellow
  • ❄️ Winter: Blue

📅 Multiple Views

  • Single month (default)
  • 3-month context view
  • Full year overview
  • Specific month/year

🔄 Drop-in Replacement
Add to your shell config:

alias cal='ppcal'  # Add to ~/.bashrc or ~/.zshrc

Why PPCalendar?

It is simply just better!

  • colors for year, months, weekdays and Sundays
  • add events for today
  • suppots emoji
  • minimalist
  • fast

For Developers

from ppcalendar import cal

# All these work like the CLI:
cal()           # Current month
cal(3)          # 3-month view
cal(2025)       # Year view
cal(6, 2024)    # June 2024

Contributing

We welcome contributions! Here's how to help:

  1. Report bugs or suggest features in Issues
  2. Submit Pull Requests for:
    • Holiday markers 🎄
    • Week numbers 🔢
    • Moon phases 🌕
  3. Improve test coverage
# Development setup:
git clone https://github.com/yourusername/PPCalendar.git
cd PPCalendar
pip install -e '.[dev]'

FAQ

Q: Why not call it just cal?
A: Avoids conflicts with system commands. Use alias cal='ppcal' if desired.

Q: How to uninstall?

uv tool uninstall ppcalendar  # or pip uninstall ppcalendar

Q: Windows support?
✅ Yes! Works in all terminals that support ANSI colors.


"The Unix philosophy meets Python beauty"

– For terminal lovers who appreciate design

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

ppcalendar-0.2.2.tar.gz (20.8 kB view details)

Uploaded Source

Built Distribution

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

ppcalendar-0.2.2-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file ppcalendar-0.2.2.tar.gz.

File metadata

  • Download URL: ppcalendar-0.2.2.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for ppcalendar-0.2.2.tar.gz
Algorithm Hash digest
SHA256 3039b7c903811ff2e7646757638b9a87e0b4129f8ae0c5e15cbe028a96514dc6
MD5 10aca4b66a5b5f73f610fe0e9a44ebb9
BLAKE2b-256 25f1c2b6657f5ed4b1f5d79b44296cdc34564a72e57bc5d0f7aa35dc39332a9c

See more details on using hashes here.

File details

Details for the file ppcalendar-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: ppcalendar-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for ppcalendar-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3fbabf078fb607fc511b1484549f5565beec83affd803a461af776876120bfac
MD5 347a8eafb0c0fdefbab2af80764cbcdd
BLAKE2b-256 da0858e8b89ae4ba58a09620f014812d69172e4ef5c46756741588d05263600e

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