{"adoption": {"forks": 442, "observed_at": "2026-08-28T04:05:55.359033+00:00", "stars": 1923}, "canonical_url": "https://ross.abutalabs.com/products/python-o365", "card": {"archived": false, "artifact_type": "library", "description": "A simple python library to interact with Microsoft Graph and Office 365 API", "domain": ["apis", "developer-tools", "email"], "enriched": true, "function": ["http-client", "email", "auth", "sdk"], "health_score": 74, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["O365/python-o365"], "name": "O365/python-o365", "platform": ["python", "cross-platform"], "pushed_at": "2026-03-10T13:15:31+00:00", "repo": "O365/python-o365", "stars": 1923, "tags": ["microsoft-graph", "office-365", "onedrive", "sharepoint", "outlook", "oauth", "api-wrapper", "automation"], "topics": ["python", "microsoft-graph-api", "onedrive", "mailbox", "office-365-rest-api", "microsoft-api", "sharepoint", "calendar", "outlook", "planner", "excel", "email", "graph", "oauth-authentication", "microsoft", "addressbook", "calendars", "oauth", "microsoft-teams"], "urls": [], "use_cases": ["send emails programmatically via outlook", "read and manage office 365 calendar events", "upload and download files from onedrive", "access sharepoint documents from python", "automate microsoft teams and mailbox tasks", "query microsoft graph api with oauth"], "what_it_is": "A Python library providing a Pythonic wrapper around the Microsoft Graph and Office 365 REST APIs. It supports email, calendar, contacts, OneDrive, SharePoint, Teams, and Planner with full OAuth handling and OData query building.", "when_to_avoid": ["you use Google Workspace or other non-Microsoft cloud suites", "you need raw low-level control over Graph API calls beyond the abstraction", "your project is not in Python"], "when_to_choose": ["you need to interact with Microsoft 365 services from Python", "you want automatic OAuth token refresh and timezone handling", "you need pagination and OData filtering against Graph API"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/python-o365", "repo": "O365/python-o365", "role": "main", "score": 55}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:09:37.308615+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be3f85602039c5218e18d5895fce3133a4ec6bb21fab1db595b458c89212d1af", "fetched_at": "2026-08-28T04:05:55.359033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/O365/python-o365"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:09:37.308615+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be3f85602039c5218e18d5895fce3133a4ec6bb21fab1db595b458c89212d1af", "fetched_at": "2026-08-28T04:05:55.359033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/O365/python-o365"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:09:37.308615+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be3f85602039c5218e18d5895fce3133a4ec6bb21fab1db595b458c89212d1af", "fetched_at": "2026-08-28T04:05:55.359033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/O365/python-o365"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:09:37.308615+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be3f85602039c5218e18d5895fce3133a4ec6bb21fab1db595b458c89212d1af", "fetched_at": "2026-08-28T04:05:55.359033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/O365/python-o365"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:09:37.308615+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be3f85602039c5218e18d5895fce3133a4ec6bb21fab1db595b458c89212d1af", "fetched_at": "2026-08-28T04:05:55.359033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/O365/python-o365"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:09:37.308615+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be3f85602039c5218e18d5895fce3133a4ec6bb21fab1db595b458c89212d1af", "fetched_at": "2026-08-28T04:05:55.359033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/O365/python-o365"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:55.359033+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:09:37.308615+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be3f85602039c5218e18d5895fce3133a4ec6bb21fab1db595b458c89212d1af", "fetched_at": "2026-08-28T04:05:55.359033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/O365/python-o365"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:09:37.308615+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be3f85602039c5218e18d5895fce3133a4ec6bb21fab1db595b458c89212d1af", "fetched_at": "2026-08-28T04:05:55.359033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/O365/python-o365"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:09:37.308615+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be3f85602039c5218e18d5895fce3133a4ec6bb21fab1db595b458c89212d1af", "fetched_at": "2026-08-28T04:05:55.359033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/O365/python-o365"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:09:37.308615+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be3f85602039c5218e18d5895fce3133a4ec6bb21fab1db595b458c89212d1af", "fetched_at": "2026-08-28T04:05:55.359033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/O365/python-o365"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 71, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4214, "days_push": 176, "days_rel": 568, "gap_med": null, "n_releases_24m": 1}, "score": 55, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}