gooddata-pandas 1.74.1.dev1__tar.gz → 1.74.1.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. gooddata_pandas-1.74.1.dev2/AGENTS.md +93 -0
  2. gooddata_pandas-1.74.1.dev2/CLAUDE.md +1 -0
  3. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/PKG-INFO +3 -3
  4. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/docs/requirements.txt +1 -1
  5. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/pyproject.toml +9 -9
  6. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/.gitignore +0 -0
  7. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/.readthedocs.yaml +0 -0
  8. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/LICENSE.txt +0 -0
  9. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/MANIFEST.in +0 -0
  10. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/Makefile +0 -0
  11. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/README.md +0 -0
  12. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/docs/_static/empty_file +0 -0
  13. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/docs/_templates/class-template.rst +0 -0
  14. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/docs/_templates/module-template.rst +0 -0
  15. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/docs/api.rst +0 -0
  16. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/docs/conf.py +0 -0
  17. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/docs/examples.rst +0 -0
  18. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/docs/index.rst +0 -0
  19. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/docs/installation.rst +0 -0
  20. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/__init__.py +0 -0
  21. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/_version.py +0 -0
  22. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/arrow_convertor.py +0 -0
  23. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/arrow_types.py +0 -0
  24. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/data_access.py +0 -0
  25. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/dataframe.py +0 -0
  26. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/good_pandas.py +0 -0
  27. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/py.typed +0 -0
  28. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/result_convertor.py +0 -0
  29. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/series.py +0 -0
  30. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/src/gooddata_pandas/utils.py +0 -0
  31. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/__init__.py +0 -0
  32. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/conftest.py +0 -0
  33. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/__init__.py +0 -0
  34. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/conftest.py +0 -0
  35. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_m_c/dataframe.parquet +0 -0
  36. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_m_c/meta.json +0 -0
  37. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_m_c/result.arrow +0 -0
  38. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_m_cs/dataframe.parquet +0 -0
  39. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_m_cs/meta.json +0 -0
  40. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_m_cs/result.arrow +0 -0
  41. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_m_csy/dataframe.parquet +0 -0
  42. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_m_csy/meta.json +0 -0
  43. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_m_csy/result.arrow +0 -0
  44. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_cm/dataframe.parquet +0 -0
  45. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_cm/meta.json +0 -0
  46. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_cm/result.arrow +0 -0
  47. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_csm/dataframe.parquet +0 -0
  48. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_csm/meta.json +0 -0
  49. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_csm/result.arrow +0 -0
  50. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_csym/dataframe.parquet +0 -0
  51. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_csym/meta.json +0 -0
  52. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_csym/result.arrow +0 -0
  53. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_m/dataframe.parquet +0 -0
  54. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_m/meta.json +0 -0
  55. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_r_m/result.arrow +0 -0
  56. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rc_m/dataframe.parquet +0 -0
  57. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rc_m/meta.json +0 -0
  58. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rc_m/result.arrow +0 -0
  59. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rcs_m/dataframe.parquet +0 -0
  60. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rcs_m/meta.json +0 -0
  61. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rcs_m/result.arrow +0 -0
  62. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rcs_ym/dataframe.parquet +0 -0
  63. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rcs_ym/meta.json +0 -0
  64. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rcs_ym/result.arrow +0 -0
  65. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rs_cm/dataframe.parquet +0 -0
  66. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rs_cm/meta.json +0 -0
  67. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rs_cm/result.arrow +0 -0
  68. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rs_cym/dataframe.parquet +0 -0
  69. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rs_cym/meta.json +0 -0
  70. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/dim_rs_cym/result.arrow +0 -0
  71. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/flat_attrs_and_metrics/dataframe.parquet +0 -0
  72. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/flat_attrs_and_metrics/meta.json +0 -0
  73. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/flat_attrs_and_metrics/result.arrow +0 -0
  74. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/manifest.json +0 -0
  75. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/metrics_only/dataframe.parquet +0 -0
  76. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/metrics_only/meta.json +0 -0
  77. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/metrics_only/result.arrow +0 -0
  78. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/single_metric_many_rows/dataframe.parquet +0 -0
  79. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/single_metric_many_rows/meta.json +0 -0
  80. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/single_metric_many_rows/result.arrow +0 -0
  81. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0_grand/dataframe.parquet +0 -0
  82. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0_grand/meta.json +0 -0
  83. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0_grand/result.arrow +0 -0
  84. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0_sub/dataframe.parquet +0 -0
  85. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0_sub/meta.json +0 -0
  86. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0_sub/result.arrow +0 -0
  87. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0_sub_grand/dataframe.parquet +0 -0
  88. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0_sub_grand/meta.json +0 -0
  89. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0_sub_grand/result.arrow +0 -0
  90. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0grand_d1grand/dataframe.parquet +0 -0
  91. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0grand_d1grand/meta.json +0 -0
  92. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0grand_d1grand/result.arrow +0 -0
  93. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0grand_d1sub/dataframe.parquet +0 -0
  94. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0grand_d1sub/meta.json +0 -0
  95. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0grand_d1sub/result.arrow +0 -0
  96. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0sub_d1grand/dataframe.parquet +0 -0
  97. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0sub_d1grand/meta.json +0 -0
  98. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0sub_d1grand/result.arrow +0 -0
  99. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0sub_d1sub/dataframe.parquet +0 -0
  100. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0sub_d1sub/meta.json +0 -0
  101. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d0sub_d1sub/result.arrow +0 -0
  102. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d1_grand/dataframe.parquet +0 -0
  103. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d1_grand/meta.json +0 -0
  104. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d1_grand/result.arrow +0 -0
  105. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d1_sub/dataframe.parquet +0 -0
  106. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d1_sub/meta.json +0 -0
  107. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d1_sub/result.arrow +0 -0
  108. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d1_sub_grand/dataframe.parquet +0 -0
  109. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d1_sub_grand/meta.json +0 -0
  110. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/tot_d1_sub_grand/result.arrow +0 -0
  111. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_both_dims/dataframe.parquet +0 -0
  112. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_both_dims/meta.json +0 -0
  113. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_both_dims/result.arrow +0 -0
  114. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_col_sum/dataframe.parquet +0 -0
  115. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_col_sum/meta.json +0 -0
  116. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_col_sum/result.arrow +0 -0
  117. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_col_two_row_labels/dataframe.parquet +0 -0
  118. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_col_two_row_labels/meta.json +0 -0
  119. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_col_two_row_labels/result.arrow +0 -0
  120. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_row_sum/dataframe.parquet +0 -0
  121. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_row_sum/meta.json +0 -0
  122. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_row_sum/result.arrow +0 -0
  123. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_row_two_col_labels/dataframe.parquet +0 -0
  124. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_row_two_col_labels/meta.json +0 -0
  125. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_grand_row_two_col_labels/result.arrow +0 -0
  126. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_multi_agg/dataframe.parquet +0 -0
  127. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_multi_agg/meta.json +0 -0
  128. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_multi_agg/result.arrow +0 -0
  129. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_subtotal_col/dataframe.parquet +0 -0
  130. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_subtotal_col/meta.json +0 -0
  131. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_subtotal_col/result.arrow +0 -0
  132. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_subtotal_row/dataframe.parquet +0 -0
  133. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_subtotal_row/meta.json +0 -0
  134. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/totals_subtotal_row/result.arrow +0 -0
  135. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/two_dim_metrics_in_cols/dataframe.parquet +0 -0
  136. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/two_dim_metrics_in_cols/meta.json +0 -0
  137. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/two_dim_metrics_in_cols/result.arrow +0 -0
  138. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/two_dim_metrics_in_rows/dataframe.parquet +0 -0
  139. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/two_dim_metrics_in_rows/meta.json +0 -0
  140. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/two_dim_metrics_in_rows/result.arrow +0 -0
  141. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/wide_few_rows_many_cols/dataframe.parquet +0 -0
  142. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/wide_few_rows_many_cols/meta.json +0 -0
  143. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/arrow/wide_few_rows_many_cols/result.arrow +0 -0
  144. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_bytes_limits_failure.yaml +0 -0
  145. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_dimensions_limits_failure.yaml +0 -0
  146. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_one_dim1.yaml +0 -0
  147. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_one_dim2.yaml +0 -0
  148. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_totals1.yaml +0 -0
  149. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_totals2.yaml +0 -0
  150. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_totals3.yaml +0 -0
  151. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_totals4.yaml +0 -0
  152. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim1.yaml +0 -0
  153. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim2.yaml +0 -0
  154. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim3.yaml +0 -0
  155. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_items.yaml +0 -0
  156. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_items_no_index.yaml +0 -0
  157. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_visualization.yaml +0 -0
  158. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_visualization_date.yaml +0 -0
  159. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/dataframe_for_visualization_no_index.yaml +0 -0
  160. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/empty_indexed_dataframe.yaml +0 -0
  161. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/empty_not_indexed_dataframe.yaml +0 -0
  162. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/filtered_empty_df.yaml +0 -0
  163. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label.yaml +0 -0
  164. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label_reuse.yaml +0 -0
  165. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/multi_index_metrics.yaml +0 -0
  166. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/multi_index_metrics_and_label.yaml +0 -0
  167. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/not_indexed_filtered_metrics_and_labels.yaml +0 -0
  168. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/not_indexed_metrics.yaml +0 -0
  169. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/not_indexed_metrics_and_labels.yaml +0 -0
  170. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/simple_index_filtered_metrics_and_label.yaml +0 -0
  171. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/simple_index_metrics.yaml +0 -0
  172. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/simple_index_metrics_and_label.yaml +0 -0
  173. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/fixtures/simple_index_metrics_no_duplicate.yaml +0 -0
  174. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/analytical_dashboards/b2f2d436-9831-4fe0-81df-8c59fd33242b.yaml +0 -0
  175. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/filter_contexts/4717b786-2c2e-4596-adb5-4f8b0ab0e19a.yaml +0 -0
  176. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/filter_contexts/9f2b1f37-befa-450e-a6cc-dc576845c412.yaml +0 -0
  177. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/amount_of_active_customers.yaml +0 -0
  178. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/amount_of_orders.yaml +0 -0
  179. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/amount_of_top_customers.yaml +0 -0
  180. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/amount_of_valid_orders.yaml +0 -0
  181. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/campaign_spend.yaml +0 -0
  182. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/order_amount.yaml +0 -0
  183. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/percent_revenue.yaml +0 -0
  184. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml +0 -0
  185. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml +0 -0
  186. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml +0 -0
  187. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/percent_revenue_from_top_10_products.yaml +0 -0
  188. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/percent_revenue_in_category.yaml +0 -0
  189. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/percent_revenue_per_product.yaml +0 -0
  190. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/revenue-clothing.yaml +0 -0
  191. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/revenue-electronic.yaml +0 -0
  192. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/revenue-home.yaml +0 -0
  193. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/revenue-outdoor.yaml +0 -0
  194. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/revenue.yaml +0 -0
  195. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/revenue_per_customer.yaml +0 -0
  196. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/revenue_per_dollar_spent.yaml +0 -0
  197. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/revenue_top_10.yaml +0 -0
  198. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/revenue_top_10_percent.yaml +0 -0
  199. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/total_revenue-no_filters.yaml +0 -0
  200. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/metrics/total_revenue.yaml +0 -0
  201. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/campaign_spend.yaml +0 -0
  202. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/customers_trend.yaml +0 -0
  203. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml +0 -0
  204. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml +0 -0
  205. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/product_breakdown.yaml +0 -0
  206. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/product_categories_pie_chart.yaml +0 -0
  207. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml +0 -0
  208. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/product_saleability.yaml +0 -0
  209. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml +0 -0
  210. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/revenue_by_category_trend.yaml +0 -0
  211. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/revenue_by_product.yaml +0 -0
  212. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml +0 -0
  213. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/revenue_trend.yaml +0 -0
  214. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/top_10_customers.yaml +0 -0
  215. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/analytics_model/visualization_objects/top_10_products.yaml +0 -0
  216. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/ldm/datasets/campaign_channels.yaml +0 -0
  217. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/ldm/datasets/campaigns.yaml +0 -0
  218. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/ldm/datasets/customers.yaml +0 -0
  219. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/ldm/datasets/order_lines.yaml +0 -0
  220. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/ldm/datasets/products.yaml +0 -0
  221. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/load/ai/ldm/date_instances/date.yaml +0 -0
  222. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/test_dataframe_for_created_visualization.py +0 -0
  223. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/test_dataframe_for_exec_def.py +0 -0
  224. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/test_dataframe_for_exec_def_arrow.py +0 -0
  225. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/test_dataframe_for_insight.py +0 -0
  226. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/test_dataframe_for_items.py +0 -0
  227. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/test_indexed_dataframe.py +0 -0
  228. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/dataframe/test_not_indexed_dataframe.py +0 -0
  229. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/gd_test_config.yaml +0 -0
  230. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/good_pandas/__init__.py +0 -0
  231. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/good_pandas/profiles/profiles.yaml +0 -0
  232. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/good_pandas/test_good_pandas.py +0 -0
  233. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/overview.md +0 -0
  234. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/__init__.py +0 -0
  235. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/conftest.py +0 -0
  236. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/fixtures/multi_index_filtered_series.yaml +0 -0
  237. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/fixtures/multi_index_metric_series.yaml +0 -0
  238. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/fixtures/not_indexed_filtered_metric_series.yaml +0 -0
  239. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/fixtures/not_indexed_label_series.yaml +0 -0
  240. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/fixtures/not_indexed_label_series_with_granularity.yaml +0 -0
  241. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/fixtures/not_indexed_metric_series.yaml +0 -0
  242. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/fixtures/not_indexed_metric_series_with_granularity.yaml +0 -0
  243. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/fixtures/simple_index_filtered_series.yaml +0 -0
  244. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/fixtures/simple_index_label_series.yaml +0 -0
  245. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/fixtures/simple_index_metric_series.yaml +0 -0
  246. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/test_indexed_series.py +0 -0
  247. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/series/test_not_indexed_series.py +0 -0
  248. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/utils/__init__.py +0 -0
  249. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/utils/fixtures/test_get_catalog_attributes_for_extract.yaml +0 -0
  250. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tests/utils/test_utils.py +0 -0
  251. {gooddata_pandas-1.74.1.dev1 → gooddata_pandas-1.74.1.dev2}/tox.ini +0 -0
@@ -0,0 +1,93 @@
1
+ # gooddata-pandas
2
+
3
+ A thin adapter layer over `gooddata-sdk` that turns GoodData executions into pandas
4
+ `Series` and `DataFrame` objects. `GoodPandas` wraps an SDK client and, per workspace,
5
+ hands out two factories: `SeriesFactory` and `DataFrameFactory`. Underneath, an execution
6
+ definition is built from user-friendly column and index specs, and the result is converted
7
+ to pandas either by paging through JSON or — with the optional `arrow` extra — by pulling a
8
+ single Arrow IPC table.
9
+
10
+ ## Owns
11
+
12
+ - Creating pandas `Series` and `DataFrame` objects from GoodData data
13
+ - Translating user-friendly column/index specs into an SDK `ExecutionDefinition`
14
+ - Converting execution results (JSON-paged or Arrow) into pandas structures, including
15
+ grand-total and subtotal handling
16
+
17
+ ## Does NOT Own
18
+
19
+ - Core SDK behavior → `gooddata-sdk`
20
+ - Raw generated endpoints → `gooddata-api-client`
21
+
22
+ ## Architecture
23
+
24
+ | Module | Role |
25
+ |---|---|
26
+ | `good_pandas.py` | `GoodPandas` entry point; hands out the two factories |
27
+ | `series.py` | `SeriesFactory` |
28
+ | `dataframe.py` | `DataFrameFactory` |
29
+ | `data_access.py` | `ExecutionDefinitionBuilder`; spec → execution, JSON paging |
30
+ | `result_convertor.py` | paged JSON result → pandas |
31
+ | `arrow_convertor.py`, `arrow_types.py` | Arrow table → pandas |
32
+ | `utils.py` | index construction, column naming |
33
+
34
+ ```python
35
+ from gooddata_pandas import GoodPandas
36
+
37
+ gp = GoodPandas(host="https://example.gooddata.com", token="...")
38
+ df = gp.data_frames(workspace_id="demo").for_visualization(visualization_id="...")
39
+ ```
40
+
41
+ `GoodPandas.create_from_profile()` is an alternative constructor reading a profile file.
42
+
43
+ ### The two factories are not symmetric
44
+
45
+ `data_frames(workspace_id)` and `series(workspace_id)` both return factories, but they
46
+ expose different method sets:
47
+
48
+ - **`SeriesFactory`** — `indexed`, `not_indexed`. That is all. There is no series
49
+ equivalent of `for_visualization` or `for_exec_def`; reaching for one gets an
50
+ `AttributeError`.
51
+ - **`DataFrameFactory`** — `indexed`, `not_indexed`, `for_items`, `for_visualization`,
52
+ `for_created_visualization`, `for_exec_def`, `for_exec_def_arrow`, `for_arrow_table`,
53
+ `for_exec_result_id`, `result_cache_metadata_for_exec_result_id`.
54
+
55
+ ### `indexed` vs `not_indexed`
56
+
57
+ `indexed()` builds a pandas `Index` or `MultiIndex` from one or more labels and returns the
58
+ remaining columns as data. `not_indexed()` returns a default integer-indexed frame in which
59
+ the requested attribute labels appear as ordinary columns alongside the metrics.
60
+ `for_items()` and `for_visualization()` choose between the two automatically via
61
+ `auto_index`, depending on whether both attributes and measures are present.
62
+
63
+ ## Gotchas
64
+
65
+ **Return types differ by method family.** `indexed`, `not_indexed`, `for_items` and
66
+ `for_visualization` return a bare `pandas.DataFrame`. `for_exec_def`, `for_exec_def_arrow`,
67
+ `for_arrow_table`, `for_exec_result_id` and `for_created_visualization` return a
68
+ `(DataFrame, DataFrameMetadata)` tuple, where the metadata carries totals-row indexes, the
69
+ execution response and primary-label info. `df = factory.for_exec_def(...)` gets you a
70
+ tuple, not a frame.
71
+
72
+ **The Arrow path is a second, opt-in execution path.** `GoodPandas(use_arrow=True,
73
+ arrow_config=ArrowConfig(...))`, the `use_arrow` flag on the factory methods, and
74
+ `for_exec_def_arrow` / `for_arrow_table` all route through `arrow_convertor.py` instead of
75
+ the JSON pager. It requires the `arrow` extra (`gooddata-pandas[arrow]`, which pulls
76
+ `pyarrow` and `orjson`). Several parameters — `result_page_len`, `page_size`,
77
+ `result_size_dimensions_limits`, `optimized` — are ignored or warned about under
78
+ `use_arrow=True`, so a caller tuning them there is tuning nothing.
79
+
80
+ **Two independent pagination knobs with different defaults.** `indexed`, `not_indexed`,
81
+ `for_items`, `for_visualization` and the `SeriesFactory` methods page via `result_page_len`
82
+ (default 1000, in `data_access.py`). `for_exec_def` and `for_exec_result_id` page via
83
+ `page_size` (default 100, in `result_convertor.py`). These are separate mechanisms — do not
84
+ assume one unified default.
85
+
86
+ **`index_by` cannot reference a metric.** `ExecutionDefinitionBuilder` raises `ValueError`
87
+ if you try. Index specs take labels; metrics are data.
88
+
89
+ ## Testing
90
+
91
+ Uses VCR cassettes under `tests/dataframe/fixtures/` and `tests/series/fixtures/` — the
92
+ second-largest cassette set in the repo (91 files, behind `gooddata-sdk`'s 689). See the
93
+ root `AGENTS.md` for the recording procedure.
@@ -0,0 +1 @@
1
+ @AGENTS.md
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gooddata-pandas
3
- Version: 1.74.1.dev1
3
+ Version: 1.74.1.dev2
4
4
  Summary: GoodData Cloud to pandas
5
- Project-URL: Documentation, https://gooddata-pandas.readthedocs.io/en/v1.74.1.dev1
5
+ Project-URL: Documentation, https://gooddata-pandas.readthedocs.io/en/v1.74.1.dev2
6
6
  Project-URL: Source, https://github.com/gooddata/gooddata-python-sdk
7
7
  Author-email: GoodData <support@gooddata.com>
8
8
  License-Expression: MIT
@@ -20,7 +20,7 @@ Classifier: Topic :: Scientific/Engineering
20
20
  Classifier: Topic :: Software Development
21
21
  Classifier: Typing :: Typed
22
22
  Requires-Python: >=3.10
23
- Requires-Dist: gooddata-sdk~=1.74.1.dev1
23
+ Requires-Dist: gooddata-sdk~=1.74.1.dev2
24
24
  Requires-Dist: pandas<3.0.0,>=2.0.0
25
25
  Provides-Extra: arrow
26
26
  Requires-Dist: orjson>=3.11.0; extra == 'arrow'
@@ -1,4 +1,4 @@
1
- Sphinx~=5.1.1
1
+ Sphinx~=9.1.0
2
2
  pallets-sphinx-themes
3
3
  sphinx-rtd-theme
4
4
  # Dependencies to the other projects in the repository
@@ -1,7 +1,7 @@
1
1
  # (C) 2025 GoodData Corporation
2
2
  [project]
3
3
  name = "gooddata-pandas"
4
- version = "1.74.1.dev1"
4
+ version = "1.74.1.dev2"
5
5
  description = "GoodData Cloud to pandas"
6
6
  readme = "README.md"
7
7
  license = "MIT"
@@ -29,7 +29,7 @@ keywords = [
29
29
  ]
30
30
  requires-python = ">=3.10"
31
31
  dependencies = [
32
- "gooddata-sdk~=1.74.1.dev1",
32
+ "gooddata-sdk~=1.74.1.dev2",
33
33
  "pandas>=2.0.0,<3.0.0",
34
34
  ]
35
35
  classifiers = [
@@ -50,19 +50,19 @@ classifiers = [
50
50
  arrow = ["pyarrow>=23.0.1", "orjson>=3.11.0"]
51
51
 
52
52
  [project.urls]
53
- Documentation = "https://gooddata-pandas.readthedocs.io/en/v1.74.1.dev1"
53
+ Documentation = "https://gooddata-pandas.readthedocs.io/en/v1.74.1.dev2"
54
54
  Source = "https://github.com/gooddata/gooddata-python-sdk"
55
55
 
56
56
  [dependency-groups]
57
57
  test = [
58
- "pytest~=8.3.4",
59
- "pytest-cov~=6.0.0",
58
+ "pytest~=9.1.1",
59
+ "pytest-cov~=7.1.0",
60
60
  "pytest-json-report==1.5.0",
61
61
  "pytest-snapshot==0.9.0",
62
- "pytest-order~=1.3.0",
63
- "vcrpy~=8.2.1",
64
- "urllib3~=2.6.0",
65
- "python-dotenv~=1.0.0",
62
+ "pytest-order~=1.5.0",
63
+ "vcrpy~=8.3.0",
64
+ "urllib3~=2.7.0",
65
+ "python-dotenv~=1.2.3",
66
66
  "pyyaml",
67
67
  "tests_support",
68
68
  "pyarrow>=23.0.1",