Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
ad633a2
feat: read arrow table
Martozar Mar 17, 2026
706fdbd
feat: convert Arrow IPC result to DataFrame
Martozar Mar 17, 2026
8b9eb7f
feat: return DataFrameMetadata from for_exec_def_arrow
Martozar Mar 17, 2026
9a87fbc
test: add ground-truth fixture tests for Arrow converter
Martozar Mar 17, 2026
9f168ba
refactor: simplify
Martozar Mar 20, 2026
314d1c2
refactor: optional arrow
Martozar Mar 20, 2026
e943384
feat: add type mapper
Martozar Mar 20, 2026
88dea4b
feat: primary labels, for_arrow_table(), and public API exports
Martozar Mar 30, 2026
13baee7
feat: ExportService.get_raw_export_bytes() for Arrow IPC polling
Martozar Mar 30, 2026
0423ca9
fix: address review findings in Arrow path
Martozar Mar 30, 2026
737064a
fix: align with repo structure
Martozar Mar 30, 2026
89f5861
fix: correct TOML structure and regenerate lockfile
Martozar Mar 30, 2026
3a0c402
fix: resolve ty type-check errors in gooddata-pandas
Martozar Mar 30, 2026
0380d40
fix: add pyarrow to test deps
Martozar Mar 30, 2026
eabbab3
fix: revert AfmExecutionResponse to positional arg
Martozar Mar 30, 2026
f670c8a
fix: remove unnecessary type: ignore suppressions from dataframe.py
Martozar Mar 30, 2026
29810e3
test: improve arrow coverage — primary labels, for_arrow_table, error…
Martozar Mar 30, 2026
990ecfd
test: improve code coverage
Martozar Mar 30, 2026
a1d2dc1
refactor: remove magic strings
Martozar Mar 31, 2026
19938cf
test: test missing metadata keys
Martozar Mar 31, 2026
9111af3
refactor: increase pyarrow version
Martozar Mar 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion packages/gooddata-pandas/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ dependencies = [
"gooddata-sdk~=1.62.0",
"pandas>=2.0.0,<3.0.0",
]

classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
Expand All @@ -47,6 +46,9 @@ classifiers = [
"Typing :: Typed",
]

[project.optional-dependencies]
arrow = ["pyarrow>=23.0.1"]

[project.urls]
Documentation = "https://gooddata-pandas.readthedocs.io/en/v1.62.0"
Source = "https://github.com/gooddata/gooddata-python-sdk"
Expand All @@ -63,6 +65,7 @@ test = [
"python-dotenv~=1.0.0",
"pyyaml",
"tests_support",
"pyarrow>=16.1.0",
]

[tool.ty.analysis]
Expand Down
10 changes: 10 additions & 0 deletions packages/gooddata-pandas/src/gooddata_pandas/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
# (C) 2021 GoodData Corporation

from gooddata_pandas._arrow_types import TypesMapper
from gooddata_pandas._version import __version__

try:
from gooddata_pandas.arrow_convertor import convert_arrow_table_to_dataframe
except ImportError:

def convert_arrow_table_to_dataframe(*args, **kwargs):
raise ImportError("pyarrow is required for Arrow support. Install it with: pip install gooddata-pandas[arrow]")


from gooddata_pandas.dataframe import DataFrameFactory
from gooddata_pandas.good_pandas import GoodPandas
from gooddata_pandas.result_convertor import LabelOverrides
Expand Down
21 changes: 21 additions & 0 deletions packages/gooddata-pandas/src/gooddata_pandas/_arrow_types.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# (C) 2026 GoodData Corporation
from __future__ import annotations

from enum import Enum


class TypesMapper(Enum):
"""
Controls how Arrow column types are mapped to pandas dtypes during conversion.

DEFAULT — no remapping; produces float64 and object strings, identical to
the JSON execution path. Safe default, fully backward compatible.
ARROW_STRINGS — strings use Arrow-backed StringDtype (lower memory, faster);
all numeric types unchanged. Recommended next step for services.
CUSTOM — use the custom_mapping dict passed alongside. Raises ValueError
if custom_mapping is not provided.
"""

DEFAULT = "default"
ARROW_STRINGS = "arrow_strings"
CUSTOM = "custom"
Loading
Loading