{"id":21481692,"url":"https://github.com/jorricks/ical-library","last_synced_at":"2025-07-15T12:33:26.751Z","repository":{"id":41338328,"uuid":"508162851","full_name":"Jorricks/iCal-library","owner":"Jorricks","description":"ICalLibrary - Fast, yet simple, iCalendar reader with excellent recurrence support in Python","archived":false,"fork":false,"pushed_at":"2024-02-04T14:49:12.000Z","size":983,"stargazers_count":12,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-21T17:47:18.726Z","etag":null,"topics":["calendar","client","events","ical","ical-parser","icalendar","icalendar-parsing","icalendar-rfc","mkdocs-material","pendulum","python","python-dateutil","python-types","recurring","recurring-events","rfc","rfc5545"],"latest_commit_sha":null,"homepage":"https://jorricks.github.io/iCal-library/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jorricks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-06-28T05:11:33.000Z","updated_at":"2024-08-17T14:08:43.000Z","dependencies_parsed_at":"2023-02-01T02:16:06.421Z","dependency_job_id":null,"html_url":"https://github.com/Jorricks/iCal-library","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jorricks%2FiCal-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jorricks%2FiCal-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jorricks%2FiCal-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jorricks%2FiCal-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jorricks","download_url":"https://codeload.github.com/Jorricks/iCal-library/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226042060,"owners_count":17564598,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calendar","client","events","ical","ical-parser","icalendar","icalendar-parsing","icalendar-rfc","mkdocs-material","pendulum","python","python-dateutil","python-types","recurring","recurring-events","rfc","rfc5545"],"created_at":"2024-11-23T12:27:49.244Z","updated_at":"2024-11-23T12:27:49.769Z","avatar_url":"https://github.com/Jorricks.png","language":"Python","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://jorricks.github.io/iCal-library\"\u003e\u003cimg src=\"https://github.com/Jorricks/iCal-library/raw/main/docs/ical-library.png\" alt=\"iCal-library\" width=\"600px\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cem\u003eFast, yet simple, iCalendar reader with excellent recurrence support. \u003ca href=\"https://www.ietf.org/rfc/rfc5545.txt\"\u003eRFC 5545\u003c/a\u003e compliant.\u003c/em\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://codecov.io/gh/Jorricks/iCal-library\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/codecov/c/github/Jorricks/iCal-library/main\" alt=\"Coverage\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/iCal-library\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/v/iCal-library?color=%2334D058\u0026label=pypi%20package\" alt=\"Package version\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/iCal-library\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/pyversions/iCal-library.svg?color=%2334D058\" alt=\"Supported Python versions\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n\n---\n\n**Documentation**: [https://jorricks.github.io/iCal-library/](https://jorricks.github.io/iCal-library/)\n\n**Source Code**: [https://github.com/Jorricks/iCal-library](https://github.com/Jorricks/iCal-library)\n\n\n## Features\n- 🚀 Easy python interface. It's as simple as '`client.load_ics_file(\"\u003cmy_file\u003e\").timeline`' to show all your events of that week.\n- 📈 Timeline support. Show exactly what is planned for a specific week.\n- ✨ ***Fully functional*** support for recurring iCal components. E.g. Any recurring event will show up as intended within the timeline interface. This includes:\n    1. Recurring components/events based on RRule.\n    2. Recurring components/events based on RDate.\n    3. Excluding components/events based on EXDate.\n    4. Any combination of the above three.\n    5. Redefined/changed components/events correctly show the latest version. \n- ⏩ Very fast parsing due to lazy evaluation of iCal properties.\n- ⁉️ Debugger supported. Any issues? Open up a debugger and inspect all values.\n- 🔅 Minimal dependencies. Only `python-dateutil` and `pendulum`.\n- 🆎 Fully typed code base.\n\n\n## Requirements\nPython 3.8+\n\niCal-library uses two major libraries for their date and time utilities:\n- [Pendulum](https://github.com/sdispater/pendulum) for its extensions on datetime objects and parsing of durations.\n- [Python-Dateutil](https://github.com/dateutil/dateutil) for its RRule support.\n\n\n## Installation\n\nTo use iCal-library, first install it using pip:\n\n    pip install iCal-library\n\n\n## Example\nA simple example. Please look [in the docs](https://jorricks.github.io/iCal-library/) for more examples.\n\n```python3\nfrom ical_library import client\n\ncalendar = client.parse_icalendar_file(\"/home/user/my_icalendar.ics\")\nprint(calendar.events)\nprint(calendar.todos)\nprint(calendar.journals)\nprint(calendar.free_busy_list)\nprint(calendar.time_zones)\n```\n\nNote: iCal-library is fully Debugger compliant, meaning it is very easy to use a debugger with this project. It will be much faster to see all the different attributes and functions from inside a Python debugger. If you are unsure whether your IDE supports it, take a look [here](https://wiki.python.org/moin/PythonDebuggingTools) under the sections 'IDEs with Debug Capabilities'.\n\n\n## Limitations\n- Currently, it is not supported to write ICS files. If this is a deal-breaker for you, it should be relatively straight forward to add it, so please consider submitting a PR for this :). However, this will be added shortly!\n\n\n##  Why yet another iCalendar library?\n\nI first tried several libraries for iCalendar events. However, none of them supported recurring events as well as they should be. For some libraries my calendar loaded but then didn't show my recurring events, while others simply threw stacktraces trying to load it. Furthermore, I noticed that my calendar (with over 2000 events) took ages to load.\nAfter traversing the code of the other libraries I decided I wanted to build my own. With some key principles:\n- Recurring components should be the main priority to get working.\n- No strict evaluation that could lead to errors while parsing the file.\n- Lazy evaluation for iCalendar properties to speed up the process.\n\n## Ideas for additional features\n- Support quoted property parameters containing special characters.\n- Support the new Properties for iCalendar (RFC 7986).\n- Support CalDev (RFC 4791).\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjorricks%2Fical-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjorricks%2Fical-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjorricks%2Fical-library/lists"}