Skip to content

Releases: SSujitX/GoogleKit

GoogleKit v0.0.4

Choose a tag to compare

@SSujitX SSujitX released this 11 Jul 21:06

Fixed

  • Calendar RSVP: participant responses use Attendee.self only for local
    selection, omit read-only attendee fields, and put attendeesOmitted in the
    event request body.
  • OAuth scopes: cached installed-app tokens are loaded with their actual
    granted scopes and trigger fresh consent when required scopes are missing.
    Granular-consent results prefer credentials.granted_scopes, and full Drive
    or Calendar grants satisfy narrower requested scopes without needless reauth.
  • Transport: configured timeouts and user agents are applied to the
    authorized HTTP transport; transient network failures and Google 403/429
    rate-limit responses are retried.
  • Drive folders: recursive uploads reuse existing folders according to the
    overwrite policy, and exported PDF collision checks use the actual .pdf
    destination.
  • Drive exports: Google Vids are no longer sent to the incompatible
    files.export endpoint. The error now explains that Google requires the
    long-running files.download operation.
  • Drive shortcuts: default filenames for exported Google-native files gain
    the correct extension for both short formats and full MIME types.
  • Docs tabs: documents.get requests tab content by default, parses nested
    tabs, preserves/aggregates named ranges from each documentTab, and supports
    tab_id across content range/location helpers.
  • Token storage: token writes are atomic and use restrictive permissions
    where supported.
  • Documentation: scope-error behavior and current Drive/Docs limitations now
    match the implementation.

Validation

  • 242 non-integration tests pass.
  • MkDocs strict build passes.
  • Wheel and source distribution build as version 0.0.4.

PyPI: https://pypi.org/project/googlekit/0.0.4/
Docs: https://ssujitx.github.io/GoogleKit/
Full Changelog: v0.0.3...v0.0.4

GoogleKit v0.0.3

Choose a tag to compare

@SSujitX SSujitX released this 11 Jul 20:49

Added

Optional convenience shortcuts (all services)

Flat helpers that delegate to managers — managers remain the full API:

  • Drive: list_files, list_folders, search_files, search_folders, create_folder, upload_file, download_file, upload_folder, delete_file / delete_folder, share, unshare, list_permissions, get_share_link
  • Sheets: create_spreadsheet, get_spreadsheet, read_values, write_values, append_values
  • Calendar: list_events, create_event, get_event, delete_event
  • Docs: create_document, get_document, append_text, insert_text
  • Slides: create_presentation, get_presentation, add_slide

Declared on DriveAPI / SheetsAPI / … protocols so client.drive. suggests shortcuts and managers, with hover docstrings.

Changed

OAuth token storage

  • Default OAuth token path is now ./token.json in the current working directory (project folder), not %APPDATA%\googlekit\
  • Optional user_config_token_path() keeps the old OS user-config location if you want it
  • GoogleKit.auto(..., token_path=...) is supported; omit token_path to use ./token.json
  • token.json remains gitignored — do not commit it

IDE autocomplete (service managers + shortcuts)

  • client.drive / client.sheets / … are typed as service protocols (DriveAPI, SheetsAPI, …)
  • After drive., editors suggest managers (files, folders, …) and optional shortcuts (list_files, upload_file, …) with hover docstrings
  • Same pattern for Sheets, Calendar, Docs, and Slides
  • Concrete clients still have factories/provider at runtime; construct DriveClient(...) when you need .provider / .transport in typed code

ClientConfig / RetryPolicy DX

  • ClientConfig and RetryPolicy are exported from the top-level googlekit package (from googlekit import ClientConfig, RetryPolicy)
  • ClientConfig(retry=5) shorthand sets RetryPolicy(max_attempts=5)
  • Rich class and field docstrings for IDE hover (timeout, retry fields, what gets retried, Calendar timezone, Shared Drives, etc.)

Public API hover docs

  • Expanded docstrings on GoogleKit factories/properties, DriveClient managers, ScopeProfile / ScopeSet, Page / PageIterator, and FilesManager.list (including empty-list / drive.file tip)
  • Service protocols (DriveAPI, SheetsAPI, …) document managers and shortcuts for hover after client.drive. / client.sheets. / …
  • Service client class docs call out managers, shortcuts, and key pitfalls (Calendar timezone, Docs UTF-16, Drive scopes)

Docs: shortcuts + managers (all services)

  • README Quick Start / Usage Examples show both manager and shortcut calls for Drive, Sheets, Calendar, Docs, and Slides
  • MkDocs service pages (docs/drive.md, sheets.md, calendar.md, docs.md, slides.md) include shortcut ↔ manager mapping tables

Docs: four auth methods

  • Auth tables list auto() as Method 4, separate from from_adc() (not combined in one row)
  • Updated in README, docs/authentication.md, docs/drive.md, docs/index.md, AGENT.md

PyPI: https://pypi.org/project/googlekit/0.0.3/
Docs: https://ssujitx.github.io/GoogleKit/
Full Changelog: v0.0.2...v0.0.3

GoogleKit v0.0.2

Choose a tag to compare

@SSujitX SSujitX released this 11 Jul 19:43

Documentation and maintainer tooling release. No breaking API changes to the library surface.

Changed

Authentication docs (README + docs site)

  • All three auth methods (ADC, service account, OAuth) now share the same Step 1–2 flow: create a Cloud project, then Step 2: Enable APIs
  • Step 2 links to APIs & Services → Library plus direct enable links for Drive, Sheets, Calendar, Docs, and Slides
  • OAuth Method 3 updated for Google’s Google Auth Platform UI:
  • Older APIs & Services → Credentials / OAuth consent screen path documented as a fallback
  • docs/authentication.md official-links and Cloud Console setup summary aligned with the same Auth Platform flow

Versioning (single source of truth)

  • Package version is read only from pyproject.toml metadata via importlib.metadata
  • googlekit.__version__, CLI --version, and default USER_AGENT (googlekit/<version>) all use package_version()no hardcoded release versions in source
  • Fallback when the package is not installed: "dev"
  • Release habit: bump pyproject.toml → update this file → uv sync → tag vX.Y.Z

Docs site & maintainer docs

  • Removed public MkDocs page /publishing/ (docs/publishing.md deleted; dropped from mkdocs.yml nav and home map)
  • Publishing / Trusted Publishing / tag checklist moved into CONTRIBUTING.md (maintainer section)
  • AGENT.md rewritten as the current architecture / LLM reference (auth rules, service quirks, CI/publish, agent do-nots) — replaces the old greenfield “build GoogleKit” prompt

CI / release workflow

  • Publish workflow run-name is now PyPI publish ${{ github.ref_name }} (e.g. PyPI publish v0.0.2) instead of the latest commit subject

Added

  • package_version() in src/googlekit/core/constants.py as the shared version helper
  • Maintainer publishing section in CONTRIBUTING.md (tag steps, pending Trusted Publisher fields, local uv build)

Removed

  • docs/publishing.md and the Publishing entry from the public documentation site

PyPI: https://pypi.org/project/googlekit/0.0.2/
Docs: https://ssujitx.github.io/GoogleKit/
Full Changelog: v0.0.1...v0.0.2

GoogleKit v0.0.1

Choose a tag to compare

@SSujitX SSujitX released this 11 Jul 19:14

First public release of GoogleKit — an unofficial Python SDK for Google Drive, Sheets, Calendar, Docs, and Slides.

Added

  • Core runtime: typed exceptions, retries, pagination, HTTP transport, client-library checks
  • Authentication: OAuth 2.0 desktop flow, service accounts, Application Default Credentials (ADC), auto-detect
  • Scope presets (metadata / readonly / readwrite / full) and ScopeSet aggregation
  • Atomic token file writes with restrictive permissions when the OS supports them
  • Unified GoogleKit client with lazy drive / sheets / calendar / docs / slides accessors
  • Per-service clients: DriveClient, SheetsClient, CalendarClient, DocsClient, SlidesClient
  • Drive — files, folders, permissions, changes, upload/download, native export, Shared Drives
  • Sheets — spreadsheets, values (A1), worksheets, formatting helpers
  • Calendar — calendars, events, Meet links, free/busy, sync tokens, attendee RSVP (response_status)
  • Docs — documents, content/tables, UTF-16-safe indexes, tab-aware get (includeTabsContent)
  • Slides — presentations, pages, shapes, images, tables, template text replace
  • Configurable HTTP timeout and custom User-Agent on authorized requests
  • Retries for transport failures and rate limits (including selected 403 rate-limit reasons)
  • Minimal CLI: googlekit --version, doctor, auth status
  • Docs site (MkDocs), examples, unit tests, CI, and PyPI publish workflow

Notes

  • Install: pip install googlekit or uv add googlekit (Google API client libraries included by default)
  • Unified constructors require explicit services= or scopes= (no all-Workspace default)
  • Not affiliated with Google LLC

PyPI: https://pypi.org/project/googlekit/0.0.1/
Docs: https://ssujitx.github.io/GoogleKit/