Search notes:

cal.py

cal.py uses the Python standard library calendar to print the calendar with colors (sunday is red).
#!/usr/bin/env python3
#
# V.1
#
# Print a calendar and highlight Sundays in red.
# Compare with
#    python -m calendar
#    python -m calendar 2025
#    python -m calendar 2025 8
#

import calendar
import sys
import datetime

try:
   year  = int(sys.argv[1])
   month = int(sys.argv[2])
except (IndexError, ValueError):
   today = datetime.datetime.today()
   year  = today.year
   month = today.month

# Use the standard library's Sunday-first month grid directly.
# weeks is an array of arrays
# [
#    [ 0,  0,  0,  0,  0,  0,  1],
#    [ 2,  3,  4,  5,  6,  7,  8],
#    [ 9, 10, 11, 12, 13, 14, 15],
#    [16, 17, 18, 19, 20, 21, 22],
#    [23, 24, 25, 26, 27, 28, 29],
#    [30, 31,  0,  0,  0,  0,  0]
# ]
#
weeks = calendar.Calendar(firstweekday=6).monthdayscalendar(year, month)

# Print the month header in blue.
print(f'\033[94m     {month}  {year}\033[0m')

# Print Sundays in red to match the Sunday date column.
print(f'\033[91mSu\033[0m Mo Tu We Th Fr Sa')

for week in weeks:
    formatted_week = []

    for date in week:
        if date == 0:
            formatted_week.append('  ')
        else:
            formatted_week.append(str(date).rjust(2))

  # Keep Sunday values bright red without introducing a dedicated constant.
    formatted_week[0] = f'\033[91m{formatted_week[0]}\033[0m'
    print('%s %s %s %s %s %s %s' % tuple(formatted_week))

print('')
Github repository scripts-and-utilities, path: /cal.py

See also

Scripts such as dt.
The shell command cal.

Index

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php:51 Stack trace: #0 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(51): PDOStatement->execute(Array) #1 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(66): id_of(Object(PDO), 'uri', '/notes/developm...') #2 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(30): insert_webrequest_('/notes/developm...', 1788364726, '216.73.217.21', 'Mozilla/5.0 App...', NULL) #3 /home/httpd/vhosts/renenyffenegger.ch/httpsdocs/notes/development/tools/scripts/personal/cal(99): insert_webrequest() #4 {main} thrown in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php on line 51