Skip to content

feat(gooddata-sdk): [AUTO] add Arrow binary result retrieval support (CQ-104)#1421

Closed
yenkins-admin wants to merge 1 commit intomasterfrom
feature/auto-P001-arrow-binary-result
Closed

feat(gooddata-sdk): [AUTO] add Arrow binary result retrieval support (CQ-104)#1421
yenkins-admin wants to merge 1 commit intomasterfrom
feature/auto-P001-arrow-binary-result

Conversation

@yenkins-admin
Copy link
Copy Markdown
Contributor

Add Arrow binary result retrieval to gooddata-sdk by exposing the new /result/{resultId}/binary endpoint via read_result_binary() methods on BareExecutionResponse, Execution, and ComputeService.

P001 | Workflow: https://github.com/gooddata/gdc-nas/actions/runs/23137028021

What changed in gdc-nas

Two PRs introduced Apache Arrow IPC format support to the AFM Execute Result API:

  • 78be9c1PR #21285: Added Arrow File and Arrow Stream response types; introduced ArrowResultCacheReader and ArrowResultProcessor helper classes.
  • 81eb97aPR #21382: Refactored Arrow support to a dedicated /binary sub-path. New endpoint: GET /api/v1/actions/workspaces/{workspaceId}/execution/afm/execute/result/{resultId}/binary (operationId retrieveResultBinary), supporting both application/vnd.apache.arrow.file and application/vnd.apache.arrow.stream media types via the Accept header.

What was implemented in SDK

  • Added ArrowFormat TypeAlias (Literal['application/vnd.apache.arrow.file', 'application/vnd.apache.arrow.stream']) to execution.py
  • Added BareExecutionResponse.read_result_binary(accept: ArrowFormat) -> bytes calling retrieve_result_binary() on the actions API
  • Added Execution.read_result_binary(accept: ArrowFormat) -> bytes delegating to BareExecutionResponse
  • Added ComputeService.retrieve_result_binary() convenience method for callers that bypass Execution objects
  • Exported ArrowFormat from gooddata_sdk.__init__
  • Added unit tests covering both format variants and the delegation chain

Files modified

  • packages/gooddata-sdk/src/gooddata_sdk/compute/model/execution.py
  • packages/gooddata-sdk/src/gooddata_sdk/compute/service.py
  • packages/gooddata-sdk/src/gooddata_sdk/__init__.py
  • packages/gooddata-sdk/tests/compute/test_read_result_binary.py

JIRA: PENDING (Jira ticket will be created after review)
Risk: Low

…CQ-104)

Add ArrowFormat TypeAlias and read_result_binary() methods to BareExecutionResponse
and Execution, delegating to the new retrieve_result_binary() API endpoint
(/result/{resultId}/binary). Export ArrowFormat from gooddata_sdk.__init__.
Add unit tests verifying correct accept header forwarding for both Arrow formats.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@codecov
Copy link
Copy Markdown

codecov bot commented Mar 16, 2026

Codecov Report

❌ Patch coverage is 80.00000% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 77.36%. Comparing base (b95ca11) to head (03ae1d5).

Files with missing lines Patch % Lines
...s/gooddata-sdk/src/gooddata_sdk/compute/service.py 33.33% 2 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1421   +/-   ##
=======================================
  Coverage   77.36%   77.36%           
=======================================
  Files         228      228           
  Lines       14775    14784    +9     
=======================================
+ Hits        11430    11437    +7     
- Misses       3345     3347    +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@hkad98 hkad98 closed this Mar 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants