{"id":13648405,"url":"https://github.com/OfflineIMAP/imapfw","last_synced_at":"2025-04-22T07:31:27.265Z","repository":{"id":52489900,"uuid":"43858266","full_name":"OfflineIMAP/imapfw","owner":"OfflineIMAP","description":"imapfw (IMAP/mail framework)","archived":true,"fork":false,"pushed_at":"2018-03-31T20:47:42.000Z","size":487,"stargazers_count":468,"open_issues_count":4,"forks_count":33,"subscribers_count":43,"default_branch":"master","last_synced_at":"2025-04-10T17:38:10.810Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://imapfw.offlineimap.org","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/OfflineIMAP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-10-08T02:45:19.000Z","updated_at":"2025-04-08T13:46:20.000Z","dependencies_parsed_at":"2022-09-13T21:41:04.902Z","dependency_job_id":null,"html_url":"https://github.com/OfflineIMAP/imapfw","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OfflineIMAP%2Fimapfw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OfflineIMAP%2Fimapfw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OfflineIMAP%2Fimapfw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OfflineIMAP%2Fimapfw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OfflineIMAP","download_url":"https://codeload.github.com/OfflineIMAP/imapfw/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248992873,"owners_count":21195104,"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":[],"created_at":"2024-08-02T01:04:13.308Z","updated_at":"2025-04-22T07:31:27.245Z","avatar_url":"https://github.com/OfflineIMAP.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\n[![imapfw](logo.png)](https://github.com/OfflineIMAP/imapfw)\n\n**imapfw is a simple and powerful framework to work with mails.**\n\nAlso, it comes as a replacement to the [OfflineIMAP syncer][offlineimap].\n**Check out the [official website][website] to get last news *([RSS][feed])* about imapfw.**\nAlso, we have room at\n[![Gitter](https://badges.gitter.im/OfflineIMAP/imapfw.svg)](https://gitter.im/OfflineIMAP/imapfw?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\nfor more instant chatting.\n\n\u003c!--\n\nI'm tired to update this. Will reborn once a script for releases will be written.\n\n[![Latest release](https://img.shields.io/badge/latest release-v0.020-blue.svg)](https://github.com/OfflineIMAP/imapfw/releases)\n\n--\u003e\n\n\n\u003c!-- Markdown sucks for tables without headers. --\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e Author \u003c/td\u003e\n    \u003ctd\u003e Nicolas Sebrecht \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e Source \u003c/td\u003e\n    \u003ctd\u003e http://github.com/OfflineIMAP/imapfw \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e Website \u003c/td\u003e\n    \u003ctd\u003e http://imapfw.offlineimap.org \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e License \u003c/td\u003e\n    \u003ctd\u003e The MIT License (MIT) \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e Status \u003c/td\u003e\n    \u003ctd\u003e \u003ci\u003e Work In Progress \u003c/i\u003e \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n* [![Build Status: \"master\" branch](https://travis-ci.org/OfflineIMAP/imapfw.svg?branch=master)](https://travis-ci.org/OfflineIMAP/imapfw) (master)\n* [![codecov.io](https://codecov.io/github/OfflineIMAP/imapfw/coverage.svg?branch=master)](https://codecov.io/github/OfflineIMAP/imapfw?branch=master) (master)\n* [![Coverage Status](https://coveralls.io/repos/github/OfflineIMAP/imapfw/badge.svg?branch=master)](https://coveralls.io/github/OfflineIMAP/imapfw?branch=master) (master)\n* [![Build Status: \"next\" branch](https://travis-ci.org/OfflineIMAP/imapfw.svg?branch=next)](https://travis-ci.org/OfflineIMAP/imapfw) (next)\n* [![codecov.io \"next\" branch](https://codecov.io/github/OfflineIMAP/imapfw/coverage.svg?branch=next)](https://codecov.io/github/OfflineIMAP/imapfw?branch=next) (next)\n* [![Coverage Status \"next\" branch](https://coveralls.io/repos/github/OfflineIMAP/imapfw/badge.svg?branch=next)](https://coveralls.io/github/OfflineIMAP/imapfw?branch=next) (next)\n\n\n\n![demo](https://raw.githubusercontent.com/OfflineIMAP/imapfw.github.io/gh-pages/images/imapfw.gif)\n\n\n# Features\n\n#### Scalable\n\nAs a framework, imapfw allows you to take control on what gets done:\n\n* Embedded actions (softwares) requiring to write few to no Python code at all.\n* For more control, a dedicated API allows to redefine the key parts of the\n  frame in one file (called the *rascal*).\n* Finally, most experienced users might rather directly import one or more\n  modules and use them to write full softwares, using the framework as a\n  \"master-library\": imapfw is written with **separation of concerns** in mind.\n\nThe choice of the level of control is left to the user.\n\n#### All batteries included\n\nThe framework is intended to provide everything is needed. If any key library is\nmissing, it's welcome to make requests.\n\n#### Simple\n\nimapfw provides nice embedded actions. They can be used like any other software\nsharing the same purpose.\n\n#### Fast\n\nMainly relying on UIDs greatly helps to be fast.\n\nAlso, imapfw is designed to be fully concurrent. It even let the choice of the\nconcurrency backend (multiprocessing or threading, for now). To take real\nadvantage of this, implementation is made asynchronous almost everywhere.\n\n#### Good documentation\n\nProviding good documentation is a concern.\n\n#### Quality\n\n* Testing the framework is done with both static and dynamic testing. Each is\n  used where it's the most relevant:\n  - low-level code and modules have unit tests;\n  - features like *actions* have black box tests.\n\n* Continous intergration is done with [Travis CI][travis].\n\n* The project is developed with a proven release cycle and release candidates.\n\n#### Code\n\nIn order to offer the best, imapfw relies on the latest Python 3 technologies.\nIt uses the most usefull of what Python 3 provides.\n\n\n# Requirements\n\n* Python 3 (starting from v3.3)\n* typing (for Python \u003c 3.5)\n\n\n# Status\n\nimapfw is **WORK IN PROGRESS**. Running imapfw should not hurt but all the\nfeatures are not yet implemented. This is still early stage of development.\n\nLast WIP is in the [`next`\nbranch](https://github.com/OfflineIMAP/imapfw/tree/next).  Also, you might like\nto read our [CONTRIBUTING page][contributing] and check the [TODO list][wiki]\nonline.\n\n\n# Supporting\n\nPlease, support the efforts! Staring the project at github is a good start.\nReviews, feedbacks and pull requests are welcome, too. ,-)\n\n\u003e Side note: I'm convinced that sooner is better when it's about reviews and\n\u003e feedbacks. Once features you need will be implemented, it might be harder\n\u003e to get things improved or take more time to get imapfw to fit your needs.\n\n\n# Screencasts\n\n[Channel of all the screencasts](http://www.dailymotion.com/offlineimap-project).\n\n* [introduce imapfw syncAccounts](http://www.dailymotion.com/video/x3gpqqs_introduce-imapfw-syncaccounts_tech)\n\n[![Introduce imapfw syncAccounts](https://raw.githubusercontent.com/OfflineIMAP/imapfw.github.io/gh-pages/images/dev-introduce-syncAccounts.png)](http://www.dailymotion.com/video/x3gpqqs_introduce-imapfw-syncaccounts_tech)\n\n[subscribe]: http://lists.alioth.debian.org/mailman/listinfo/offlineimap-project\n[offlineimap]: https://github.com/OfflineIMAP/offlineimap\n[imapfw]: https://github.com/OfflineIMAP/imapfw\n[website]: http://imapfw.offlineimap.org\n[feed]: http://imapfw.offlineimap.org/feed.xml\n[travis]: https://travis-ci.org/OfflineIMAP/imapfw\n[wiki]: https://github.com/OfflineIMAP/imapfw/wiki\n[contributing]: https://github.com/OfflineIMAP/imapfw/blob/next/CONTRIBUTING.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOfflineIMAP%2Fimapfw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOfflineIMAP%2Fimapfw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOfflineIMAP%2Fimapfw/lists"}