sync_ics2gcal package

Submodules

sync_ics2gcal.gcal module

class sync_ics2gcal.gcal.ACLRule[source]

Bases: TypedDict

role: str
scope: ACLScope
class sync_ics2gcal.gcal.ACLScope[source]

Bases: TypedDict

type: str
value: str
class sync_ics2gcal.gcal.CalendarData[source]

Bases: TypedDict

description: str
id: str
summary: str
timeZone: str
class sync_ics2gcal.gcal.EventData[source]

Bases: TypedDict

created: str
description: str
end: EventDate | EventDateTime
iCalUID: str
id: str
location: str
sequence: int
start: EventDate | EventDateTime
status: str
summary: str
transparency: str
updated: str
visibility: str
class sync_ics2gcal.gcal.EventDate[source]

Bases: TypedDict

date: str
timeZone: str
class sync_ics2gcal.gcal.EventDateTime[source]

Bases: TypedDict

dateTime: str
timeZone: str
class sync_ics2gcal.gcal.EventsSearchResults(exists, new)[source]

Bases: NamedTuple

exists: List[Tuple[EventData, EventData]]

Alias for field number 0

new: List[EventData]

Alias for field number 1

class sync_ics2gcal.gcal.GoogleCalendar(service: Resource, calendar_id: str | None)[source]

Bases: object

class to interact with calendar on Google

add_owner(email: str) None[source]

add calendar owner by email

Arguments:

email – email to add

calendar_id: str
create(summary: str, time_zone: str | None = None) Any[source]

create calendar

Arguments:

summary – new calendar summary

Keyword Arguments:

timeZone – new calendar timezone as string (optional)

Returns:

calendar Resource

delete() None[source]

delete calendar

delete_events(events: List[EventData]) None[source]

delete events

Arguments:

events – list of events

find_exists(events: List[EventData]) EventsSearchResults[source]

find existing events from list, by ‘iCalUID’ field

Arguments:

events {list} – list of events

Returns:
EventsSearchResults – (events_exist, events_not_found)

events_exist - list of tuples: (new_event, exists_event)

insert_events(events: List[EventData]) None[source]

insert list of events

Arguments:

events - events list

list_events_from(start: datetime) List[EventData][source]

list events from calendar, where start date >= start

logger = <Logger GoogleCalendar (WARNING)>
make_public() None[source]

make calendar public

patch_events(event_tuples: List[Tuple[EventData, EventData]]) None[source]

patch (update) events

Arguments:

event_tuples – list of tuples: (new_event, exists_event)

service: Resource
update_events(event_tuples: List[Tuple[EventData, EventData]]) None[source]

update events

Arguments:

event_tuples – list of tuples: (new_event, exists_event)

class sync_ics2gcal.gcal.GoogleCalendarService[source]

Bases: object

class for make google calendar service Resource

Returns:

service Resource

static default() Resource[source]

make service Resource from default credentials (authorize) ( https://developers.google.com/identity/protocols/application-default-credentials ) ( https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.default )

static from_config(config: Dict[str, str] | None = None) Resource[source]

make service Resource from config dict

Arguments:

config – config with keys:

(optional) service_account: - service account filename if key not in dict then default credentials will be used ( https://developers.google.com/identity/protocols/application-default-credentials )

None: default credentials will be used

static from_srv_acc_file(service_account_file: str) Resource[source]

make service Resource from service account filename (authorize)

sync_ics2gcal.gcal.select_event_key(event: EventData) str | None[source]

select event key for logging

Arguments:

event – event resource

Returns:

key name or None if no key found

sync_ics2gcal.ical module

class sync_ics2gcal.ical.CalendarConverter(calendar: Calendar | None = None)[source]

Bases: object

Convert icalendar events to google calendar resources

events_to_gcal() List[EventData][source]

Convert events to google calendar resources

load(filename: str) None[source]

load calendar from ics file

loads(string: str) None[source]

load calendar from ics string

logger = <Logger CalendarConverter (WARNING)>
class sync_ics2gcal.ical.EventConverter(*args, **kwargs)[source]

Bases: Event

Convert icalendar event to google calendar resource ( https://developers.google.com/calendar/v3/reference/events#resource-representations )

convert() EventData[source]

Convert

Returns:

dict - google calendar#event resource

sync_ics2gcal.ical.format_datetime_utc(value: date | datetime) str[source]

utc datetime as string from date or datetime value

Arguments:

value – date or datetime value

Returns:

utc datetime value as string in iso format

sync_ics2gcal.ical.gcal_date_or_datetime(value: date | datetime, check_value: date | datetime | None = None) EventDate | EventDateTime[source]

date or datetime to gcal (start or end dict)

Arguments:

value: date or datetime check_value: optional for choose result type

Returns:

{ ‘date’: … } or { ‘dateTime’: … }

sync_ics2gcal.manage_calendars module

class sync_ics2gcal.manage_calendars.Commands(config: str = 'config.yml')[source]

Bases: object

manage google calendars in service account

add_owner(calendar_id: str, email: str) None[source]

add owner to calendar

Args:

calendar_id: calendar id email: new owner email

create(summary: str, timezone: str | None = None, public: bool = False) None[source]

create calendar

Args:

summary: new calendar summary timezone: new calendar timezone public: make calendar public

list(show_hidden: bool = False, show_deleted: bool = False) None[source]

list calendars

Args:

show_hidden: show hidden calendars show_deleted: show deleted calendars

remove(calendar_id: str) None[source]

remove calendar

Args:

calendar_id: calendar id

rename(calendar_id: str, summary: str) None[source]

rename calendar

Args:

calendar_id: calendar id summary:

class sync_ics2gcal.manage_calendars.PropertyCommands(_service: Any)[source]

Bases: object

get/set google calendar properties

get(calendar_id: str, property_name: str) None[source]

get calendar property

Args:

calendar_id: calendar id property_name: property key

set(calendar_id: str, property_name: str, property_value: str) None[source]

set calendar property

Args:

calendar_id: calendar id property_name: property key property_value: property value

sync_ics2gcal.manage_calendars.load_config(filename: str) Dict[str, Any] | None[source]
sync_ics2gcal.manage_calendars.main() None[source]

sync_ics2gcal.sync module

class sync_ics2gcal.sync.CalendarSync(gcalendar: GoogleCalendar, converter: CalendarConverter)[source]

Bases: object

class for synchronize calendar with Google

apply() None[source]

apply sync (insert, update, delete), using prepared lists of events

clear() None[source]

clear prepared sync lists (insert, update, delete)

logger = <Logger CalendarSync (WARNING)>
prepare_sync(start_date: date | datetime) None[source]

prepare sync lists by comparison of events

Arguments:

start_date – date/datetime to start sync

class sync_ics2gcal.sync.ComparedEvents(added: List[EventData], changed: List[Tuple[EventData, EventData]], deleted: List[EventData])[source]

Bases: NamedTuple

Compared events

added: List[EventData]

Alias for field number 0

changed: List[Tuple[EventData, EventData]]

Alias for field number 1

deleted: List[EventData]

Alias for field number 2

sync_ics2gcal.sync_calendar module

sync_ics2gcal.sync_calendar.get_start_date(date: str | datetime) datetime[source]
sync_ics2gcal.sync_calendar.load_config() Dict[str, Any][source]
sync_ics2gcal.sync_calendar.main() None[source]

Module contents

class sync_ics2gcal.ACLRule[source]

Bases: TypedDict

role: str
scope: ACLScope
class sync_ics2gcal.ACLScope[source]

Bases: TypedDict

type: str
value: str
class sync_ics2gcal.CalendarConverter(calendar: Calendar | None = None)[source]

Bases: object

Convert icalendar events to google calendar resources

calendar: Calendar | None
events_to_gcal() List[EventData][source]

Convert events to google calendar resources

load(filename: str) None[source]

load calendar from ics file

loads(string: str) None[source]

load calendar from ics string

logger = <Logger CalendarConverter (WARNING)>
class sync_ics2gcal.CalendarData[source]

Bases: TypedDict

description: str
id: str
summary: str
timeZone: str
class sync_ics2gcal.CalendarSync(gcalendar: GoogleCalendar, converter: CalendarConverter)[source]

Bases: object

class for synchronize calendar with Google

apply() None[source]

apply sync (insert, update, delete), using prepared lists of events

clear() None[source]

clear prepared sync lists (insert, update, delete)

converter: CalendarConverter
gcalendar: GoogleCalendar
logger = <Logger CalendarSync (WARNING)>
prepare_sync(start_date: date | datetime) None[source]

prepare sync lists by comparison of events

Arguments:

start_date – date/datetime to start sync

to_delete: List[EventData]
to_insert: List[EventData]
to_update: List[Tuple[EventData, EventData]]
class sync_ics2gcal.ComparedEvents(added: List[EventData], changed: List[Tuple[EventData, EventData]], deleted: List[EventData])[source]

Bases: NamedTuple

Compared events

added: List[EventData]

Alias for field number 0

changed: List[Tuple[EventData, EventData]]

Alias for field number 1

deleted: List[EventData]

Alias for field number 2

class sync_ics2gcal.EventConverter(*args, **kwargs)[source]

Bases: Event

Convert icalendar event to google calendar resource ( https://developers.google.com/calendar/v3/reference/events#resource-representations )

convert() EventData[source]

Convert

Returns:

dict - google calendar#event resource

class sync_ics2gcal.EventData[source]

Bases: TypedDict

created: str
description: str
end: EventDate | EventDateTime
iCalUID: str
id: str
location: str
sequence: int
start: EventDate | EventDateTime
status: str
summary: str
transparency: str
updated: str
visibility: str
class sync_ics2gcal.EventDate[source]

Bases: TypedDict

date: str
timeZone: str
class sync_ics2gcal.EventDateTime[source]

Bases: TypedDict

dateTime: str
timeZone: str
class sync_ics2gcal.EventsSearchResults(exists, new)[source]

Bases: NamedTuple

exists: List[Tuple[EventData, EventData]]

Alias for field number 0

new: List[EventData]

Alias for field number 1

class sync_ics2gcal.GoogleCalendar(service: Resource, calendar_id: str | None)[source]

Bases: object

class to interact with calendar on Google

add_owner(email: str) None[source]

add calendar owner by email

Arguments:

email – email to add

calendar_id: str
create(summary: str, time_zone: str | None = None) Any[source]

create calendar

Arguments:

summary – new calendar summary

Keyword Arguments:

timeZone – new calendar timezone as string (optional)

Returns:

calendar Resource

delete() None[source]

delete calendar

delete_events(events: List[EventData]) None[source]

delete events

Arguments:

events – list of events

find_exists(events: List[EventData]) EventsSearchResults[source]

find existing events from list, by ‘iCalUID’ field

Arguments:

events {list} – list of events

Returns:
EventsSearchResults – (events_exist, events_not_found)

events_exist - list of tuples: (new_event, exists_event)

insert_events(events: List[EventData]) None[source]

insert list of events

Arguments:

events - events list

list_events_from(start: datetime) List[EventData][source]

list events from calendar, where start date >= start

logger = <Logger GoogleCalendar (WARNING)>
make_public() None[source]

make calendar public

patch_events(event_tuples: List[Tuple[EventData, EventData]]) None[source]

patch (update) events

Arguments:

event_tuples – list of tuples: (new_event, exists_event)

service: Resource
update_events(event_tuples: List[Tuple[EventData, EventData]]) None[source]

update events

Arguments:

event_tuples – list of tuples: (new_event, exists_event)

class sync_ics2gcal.GoogleCalendarService[source]

Bases: object

class for make google calendar service Resource

Returns:

service Resource

static default() Resource[source]

make service Resource from default credentials (authorize) ( https://developers.google.com/identity/protocols/application-default-credentials ) ( https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.default )

static from_config(config: Dict[str, str] | None = None) Resource[source]

make service Resource from config dict

Arguments:

config – config with keys:

(optional) service_account: - service account filename if key not in dict then default credentials will be used ( https://developers.google.com/identity/protocols/application-default-credentials )

None: default credentials will be used

static from_srv_acc_file(service_account_file: str) Resource[source]

make service Resource from service account filename (authorize)