Skip to main content

Thin EventKit wrapper for macOS Calendar access.

Project description

pycalbuddy

Small macOS-only wrapper around EventKit (via pyobjc-framework-EventKit) for listing and updating Calendar events without any external binaries.

Installation

uv sync

Runtime dependency:

  • macOS EventKit (provided by the OS, surfaced through pyobjc-framework-EventKit; installed automatically on macOS)

Grant Calendar permissions to the calling terminal/app in System Settings → Privacy & Security → Automation/Calendars if commands are denied.

CLI usage

uv run pycalbuddy daily --json
uv run pycalbuddy weekly --start 2024-01-01 --days 10
uv run pycalbuddy add --calendar Work --title "Demo" --start 2024-02-01T10:00:00 --end 2024-02-01T11:00:00
uv run pycalbuddy add --calendar Work --title "Offsite" --start 2024-02-03T00:00:00 --end 2024-02-04T00:00:00 --all-day
uv run pycalbuddy update --uid ABC123 --title "Updated title"
uv run pycalbuddy update --uid ABC123 --move-to Archive

Use --json on listing commands for machine-readable output. Add --calendar NAME multiple times to filter specific calendars. --no-all-day excludes all-day entries.

Library usage

import datetime as dt
from pycalbuddy import list_daily_events, add_event, update_event

events = list_daily_events()

uid = add_event(
    calendar="Work",
    title="Planning",
    start=dt.datetime(2024, 2, 1, 9, 0),
    end=dt.datetime(2024, 2, 1, 10, 0),
)

update_event(uid=uid, notes="Bring slides", target_calendar="Archive")

Testing

All external commands are mocked; no real Calendar access is needed.

uv run pytest
uv run pytest --cov=pycalbuddy --cov-report=term-missing

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

pycalbuddy-0.1.5.tar.gz (29.1 kB view details)

Uploaded Source

Built Distribution

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

pycalbuddy-0.1.5-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file pycalbuddy-0.1.5.tar.gz.

File metadata

  • Download URL: pycalbuddy-0.1.5.tar.gz
  • Upload date:
  • Size: 29.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pycalbuddy-0.1.5.tar.gz
Algorithm Hash digest
SHA256 a59b1d420d05f968e613138ffe5ace60ab781bb7483de2cb01db9527343cc623
MD5 5883a2fac637f3b7be1558af14f26eb3
BLAKE2b-256 b5c0a8c324bd8e3c5609556127f04a5bf8cba923595f6a96871de757e9e237bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pycalbuddy-0.1.5.tar.gz:

Publisher: publish.yml on aia/pycalbuddy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pycalbuddy-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: pycalbuddy-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pycalbuddy-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 ed11182feea2da8b2251548e0e2180fd6b726d0e11a9543b0661fdff1183b36e
MD5 4ec727f0281eb88c81ec96e6857d10d6
BLAKE2b-256 bb9600142f3bf60aab9d52c41433f735ffe53a0e03a55b6f1eec62bad50c4f01

See more details on using hashes here.

Provenance

The following attestation bundles were made for pycalbuddy-0.1.5-py3-none-any.whl:

Publisher: publish.yml on aia/pycalbuddy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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