A VCARD birthday calendar integration for Home Assistant
- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
build-and-test / build (push) Successful in 50s
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/upload-artifact](https://github.com/actions/upload-artifact) | action | major | `v6` → `v7` | --- > ⚠️ **Warning** > > Some dependencies could not be looked up. Check the warning logs for more information. --- ### Release Notes <details> <summary>actions/upload-artifact (actions/upload-artifact)</summary> ### [`v7.0.1`](https://github.com/actions/upload-artifact/releases/tag/v7.0.1) [Compare Source](https://github.com/actions/upload-artifact/compare/v7...v7.0.1) ##### What's Changed - Update the readme with direct upload details by [@​danwkennedy](https://github.com/danwkennedy) in [#​795](https://github.com/actions/upload-artifact/pull/795) - Readme: bump all the example versions to v7 by [@​danwkennedy](https://github.com/danwkennedy) in [#​796](https://github.com/actions/upload-artifact/pull/796) - Include changes in typespec/ts-http-runtime 0.3.5 by [@​yacaovsnc](https://github.com/yacaovsnc) in [#​797](https://github.com/actions/upload-artifact/pull/797) **Full Changelog**: <https://github.com/actions/upload-artifact/compare/v7...v7.0.1> ### [`v7.0.0`](https://github.com/actions/upload-artifact/releases/tag/v7.0.0) [Compare Source](https://github.com/actions/upload-artifact/compare/v6.0.0...v7) ##### v7 What's new ##### Direct Uploads Adds support for uploading single files directly (unzipped). Callers can set the new `archive` parameter to `false` to skip zipping the file during upload. Right now, we only support single files. The action will fail if the glob passed resolves to multiple files. The `name` parameter is also ignored with this setting. Instead, the name of the artifact will be the name of the uploaded file. ##### ESM To support new versions of the `@actions/*` packages, we've upgraded the package to ESM. ##### What's Changed - Add proxy integration test by [@​Link-](https://github.com/Link-) in [#​754](https://github.com/actions/upload-artifact/pull/754) - Upgrade the module to ESM and bump dependencies by [@​danwkennedy](https://github.com/danwkennedy) in [#​762](https://github.com/actions/upload-artifact/pull/762) - Support direct file uploads by [@​danwkennedy](https://github.com/danwkennedy) in [#​764](https://github.com/actions/upload-artifact/pull/764) ##### New Contributors - [@​Link-](https://github.com/Link-) made their first contribution in [#​754](https://github.com/actions/upload-artifact/pull/754) **Full Changelog**: <https://github.com/actions/upload-artifact/compare/v6...v7.0.0> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNC4xIiwidXBkYXRlZEluVmVyIjoiNDQuNDguMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Reviewed-on: #3 |
||
| .forgejo/workflows | ||
| .github/workflows | ||
| custom_components/birthday_calendar | ||
| tests | ||
| .flake8 | ||
| .gitignore | ||
| hacs.json | ||
| LICENSE | ||
| pyproject.toml | ||
| pytest.ini | ||
| README.md | ||
| renovate.json | ||
| uv.lock | ||
Birthday Calendar (CardDAV)
A Home Assistant integration that creates a calendar entity from a CardDAV addressbook, extracting birthdays from contact VCards.
Features
- Connects to any standard CardDAV server (SOGo, Nextcloud, iCloud, etc.).
- Extracts
BDAYfields from VCards. - Creates a Calendar entity with all birthdays as all-day events.
- Calculates the next birthday occurrence and current age.
- Configurable look-ahead period (default 30 days).
Installation
HACS
- Open HACS.
- Add Custom Repository:
https://github.com/phbaer/ha-birthday-calendar. - Select "Integration".
- Install.
Manual Installation
- Download the
birthday_calendar.zipfrom the Latest Release. - Unzip it.
- Copy the
custom_components/birthday_calendarfolder to your Home Assistantconfig/custom_components/directory. - Restart Home Assistant.
Configuration
- Go to Settings > Devices & Services.
- Click Add Integration.
- Search for Birthday Calendar.
- Enter the following details:
- Calendar Name: Friendly name for the entity.
- CardDAV URL: Full URL to your addressbook (e.g.,
https://example.com/dav/user/contacts/). - Username: CardDAV username.
- Password: CardDAV password.
- Days to look ahead: Number of days to include in the calendar view/state (default 30).
Development
This project uses uv for dependency management and requires a recent version of Python (3.14.3+).
Prerequisites
uv- Python 3.14.3 or later
- C Compiler (
build-essential,gcc, orclang) - Required for compiling dependencies on Python 3.14.
Setup
uv sync
Testing
Run the full test suite:
uv run pytest
CI/CD
The project includes a Forgejo/GitHub Actions workflow (.github/workflows/ci.yaml) that:
- Sets up Python 3.12 and
uv. - Installs system dependencies (compilers).
- Runs tests.
- Create a HACS-compatible ZIP release artifact (
birthday_calendar.zip) on every push and tag.