Metadata-Version: 2.4
Name: email-to-calendar
Version: 1.0.34
Summary: Takes emails from an IMAP server, parses the body, and creates event(s) in a CalDAV calendar
Author-email: jnstockley <jnstockley@users.noreply.github.com>
Project-URL: Homepage, https://github.com/jnstockley/email-to-calendar
Project-URL: Repository, https://github.com/jnstockley/email-to-calendar.git
Project-URL: Issues, https://github.com/jnstockley/email-to-calendar/issues
Keywords: starter,template,python
Classifier: Programming Language :: Python :: 3
Requires-Python: <4.0,>=3.13
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: apprise==1.9.9
Requires-Dist: caldav==3.1.0
Requires-Dist: imapclient==3.1.0
Requires-Dist: markdownify==1.2.2
Requires-Dist: pydantic-ai-slim[openai]==1.84.1
Requires-Dist: pydantic-settings==2.14.0
Requires-Dist: pydantic[email]==2.13.2
Requires-Dist: sqlmodel==0.0.38
Requires-Dist: tzlocal==5.3.1
Requires-Dist: vobject==0.9.9
Requires-Dist: python-dotenv==1.2.2
Dynamic: license-file

# E-Mail to calendar Converter
The point of this application is to search an IMAP account, look for emails based on certain criteria(s), and parse 
the content, using regex, and automatically create calendar events in an iCal account.

## TO-DO
- [X] Get e-mails, and save ID to sqlite db to avoid duplicates
- [X] Save calendar events to sqlite db to avoid duplicates
- [X] Add config to backfill (check all emails from an optional certain date), or use most recent email
  - [X] If using most recent, when new email arrives, remove events not present, and add new ones
- [ ] If new email comes in with updated events, update event in calendar instead of creating a new one
- [ ] Using email summary check for words like `Cancelled`, etc. to delete events
- [ ] If event already exists, check if details have changed, and update if necessary
- [ ] Investigate IMAP IDLE (push instead of poll)
- [X] Make sure all day events are handled correctly
- [ ] Add Docker Model Runner support
- [ ] Add 'validate' function for events, and if it fails, have AI re-process that event


## Environment Variables
| Name | Description | Type | Default Value | Allowed Values |
|------|-------------|------|---------------|----------------|
|      |             |      |               |                |
|      |             |      |               |                |
|      |             |      |               |                |
