Fixed
- Calendar RSVP: participant responses use
Attendee.selfonly for local
selection, omit read-only attendee fields, and putattendeesOmittedin 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 prefercredentials.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.exportendpoint. The error now explains that Google requires the
long-runningfiles.downloadoperation. - Drive shortcuts: default filenames for exported Google-native files gain
the correct extension for both short formats and full MIME types. - Docs tabs:
documents.getrequests tab content by default, parses nested
tabs, preserves/aggregates named ranges from eachdocumentTab, and supports
tab_idacross 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