Repository navigation
v0.21.1 — SDK Bug Fixes
Bug Fixes
- Truthiness bug in mutual exclusion guards —
if user_id and meeting_id:silently failed whenuser_id=0in issues, headlines, and scorecard operations (sync + async). Replaced with properis not Nonechecks. - Goal
update()overwrites owner — Previously always defaultedaccountable_userto the current user, silently overwriting the existing owner when only updating title or status. Now truly optional — if not provided, the existing owner is preserved. - Meeting
details()only found user's own meetings — Rewrote to callGET L10/{id}directly instead of filtering fromlist(). Fieldsstart_date_utc,created_date, andorganization_idare now populated from the API. - Goals Origins[0] unsafe access — Crash on empty or malformed Origins arrays in goal transforms.
- Headline create
DetailsUrl=Nonecrash — Fixed null handling forDetailsUrlin headline create (sync + async). - Whitespace-only API key accepted — Configuration now strips whitespace from API keys, rejecting whitespace-only values.
- Todo create naive datetime fallback — Changed
datetime.now()todatetime.now(UTC)for timezone-aware fallback. - Metrics transform zero-ID filtering —
if not measurable_idincorrectly filtered outID=0; fixed tois Nonecheck.
Testing
- Added 134 integration tests validated against the real Bloom Growth API
- Added 185 adversarial tests for edge cases and malformed data
- Updated existing tests for new meeting details and goal update behavior
- Total: 197 → 516 tests, coverage 95% → 98%
CI
- Integration tests excluded from CI with
-m "not integration"(require API key) - Registered
integrationpytest marker inpyproject.toml
Full Changelog: v0.21.0...v0.21.1