Skip to main content

A module which unfolds ICalendar events.

Project description

Travis Build and Tests Status Python Package Version on Pypi Downloads from Pypi

ICal has some complexity to it: Events can be repeated, removed from the feed and edited later on. This tool takes care of these circumstances.

Let’s put our expertise together and build a tool that can solve this!

  • day light saving time (DONE)

  • recurring events (DONE)

  • recurring events with edits (DONE)

  • recurring events where events are omitted (DONE)

  • recurring events events where the edit took place later (DONE)

  • normal events (DONE)

  • recurrence of dates but not hours, minutes, and smaller (DONE)

  • endless recurrence (DONE)

  • ending recurrence (DONE)

  • events with start date and no end date (DONE)

  • events with start as date and start as datetime (DONE)

  • RRULE (DONE)

  • RDATE

  • EXRULE

  • EXDATE (DONE)

Installation

pip install python-recurring-ical-events

Example

import icalendar
import recurring_ical_events
import urllib.request

start_date = (2019, 3, 5)
end_date =   (2019, 4, 1)
url = "http://tinyurl.com/y24m3r8f"

ical_string = urllib.request.urlopen(url).read()
calendar = icalendar.Calendar.from_ical(ical_string)
events = recurring_ical_events.of(calendar).between(start_date, end_date)
for event in events:
    start = event["DTSTART"].dt
    duration = event["DTEND"].dt - event["DTSTART"].dt
    print("start {} duration {}".format(start, duration))

Output:

start 2019-03-18 04:00:00+01:00 duration 1:00:00
start 2019-03-20 04:00:00+01:00 duration 1:00:00
start 2019-03-19 04:00:00+01:00 duration 1:00:00
start 2019-03-07 02:00:00+01:00 duration 1:00:00
start 2019-03-08 01:00:00+01:00 duration 2:00:00
start 2019-03-09 03:00:00+01:00 duration 0:30:00
start 2019-03-10 duration 1 day, 0:00:00

Development

  1. Optional: Install virtualenv and Python3 and create a virtual environment.
    virtualenv -p python3 ENV
    source ENV/bin/activate
  2. Install the packages.
    pip install -r requirements.txt -r test-requirements.txt
  3. Run the tests
    pytest

To release new versions, edit setup.py, the __version__ variable and run

python3 setup.py tag_and_deploy

Research

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

recurring_ical_events-0.1.3a0.tar.gz (15.3 kB view details)

Uploaded Source

File details

Details for the file recurring_ical_events-0.1.3a0.tar.gz.

File metadata

  • Download URL: recurring_ical_events-0.1.3a0.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for recurring_ical_events-0.1.3a0.tar.gz
Algorithm Hash digest
SHA256 99037e3f50129dbf3ca9e8eef11c3c934a044e8065b5b8350ab9ac1981d3266d
MD5 89da65bc3f838819aa91526fe6516ae5
BLAKE2b-256 196dc3833de25120182b65fd3a4469b7439d46cb6ec7e12757331ec06e5a54d2

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