atlan-application-sdk 0.1.1rc36__tar.gz → 0.1.1rc37__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 (402) hide show
  1. atlan_application_sdk-0.1.1rc37/.github/release_notes.md +7 -0
  2. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/CHANGELOG.md +9 -0
  3. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/PKG-INFO +1 -1
  4. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/common/models.py +2 -1
  5. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/inputs/parquet.py +4 -4
  6. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/outputs/__init__.py +24 -1
  7. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/outputs/json.py +57 -38
  8. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/outputs/parquet.py +116 -18
  9. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/version.py +1 -1
  10. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/workflows/metadata_extraction/sql.py +18 -5
  11. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/pyproject.toml +1 -1
  12. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/inputs/test_parquet.py +4 -1
  13. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/outputs/test_output.py +12 -3
  14. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/workflows/metadata_extraction/test_sql_workflow.py +17 -14
  15. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/uv.lock +1 -1
  16. atlan_application_sdk-0.1.1rc36/.github/release_notes.md +0 -9
  17. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.cursor/BUGBOT.md +0 -0
  18. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.cursor/rules/documentation.mdc +0 -0
  19. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.cursor/rules/exception-handling.mdc +0 -0
  20. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.cursor/rules/guidelines.mdc +0 -0
  21. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.cursor/rules/logging.mdc +0 -0
  22. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.cursor/rules/performance.mdc +0 -0
  23. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.cursor/rules/setup.mdc +0 -0
  24. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.cursor/rules/standards.mdc +0 -0
  25. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.cursor/rules/testing.mdc +0 -0
  26. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.env.example +0 -0
  27. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/CODEOWNERS +0 -0
  28. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  29. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
  30. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  31. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/actions/docgen/action.yaml +0 -0
  32. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/actions/doclint/action.yaml +0 -0
  33. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/actions/docstring-coverage/action.yaml +0 -0
  34. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/actions/e2e-apps/action.yaml +0 -0
  35. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/actions/e2e-examples/action.yaml +0 -0
  36. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/actions/setup-deps/action.yaml +0 -0
  37. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/actions/sync-branches/action.yaml +0 -0
  38. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/actions/trivy/action.yaml +0 -0
  39. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/actions/trivy-container/action.yaml +0 -0
  40. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/actions/unit-tests/action.yaml +0 -0
  41. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/dependabot.yaml +0 -0
  42. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/pull_request_template.md +0 -0
  43. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/scripts/extract_release_notes.py +0 -0
  44. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/scripts/pre_release.py +0 -0
  45. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/scripts/release.py +0 -0
  46. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/scripts/trivy-to-markdown.py +0 -0
  47. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/scripts/update_changelog.py +0 -0
  48. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/AMPM.yml +0 -0
  49. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Accessibility.yml +0 -0
  50. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Acronyms.yml +0 -0
  51. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Adverbs.yml +0 -0
  52. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Auto.yml +0 -0
  53. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Avoid.yml +0 -0
  54. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Contractions.yml +0 -0
  55. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Dashes.yml +0 -0
  56. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/DateFormat.yml +0 -0
  57. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/DateNumbers.yml +0 -0
  58. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/DateOrder.yml +0 -0
  59. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Ellipses.yml +0 -0
  60. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/FirstPerson.yml +0 -0
  61. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Foreign.yml +0 -0
  62. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Gender.yml +0 -0
  63. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/GenderBias.yml +0 -0
  64. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/GeneralURL.yml +0 -0
  65. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/HeadingAcronyms.yml +0 -0
  66. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/HeadingColons.yml +0 -0
  67. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/HeadingPunctuation.yml +0 -0
  68. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Headings.yml +0 -0
  69. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Hyphens.yml +0 -0
  70. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Negative.yml +0 -0
  71. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Ordinal.yml +0 -0
  72. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/OxfordComma.yml +0 -0
  73. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Passive.yml +0 -0
  74. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Percentages.yml +0 -0
  75. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Plurals.yml +0 -0
  76. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Quotes.yml +0 -0
  77. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/RangeTime.yml +0 -0
  78. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Semicolon.yml +0 -0
  79. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/SentenceLength.yml +0 -0
  80. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Spacing.yml +0 -0
  81. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Suspended.yml +0 -0
  82. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Terms.yml +0 -0
  83. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/URLFormat.yml +0 -0
  84. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Units.yml +0 -0
  85. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Vocab.yml +0 -0
  86. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/We.yml +0 -0
  87. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/Wordiness.yml +0 -0
  88. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/Microsoft/meta.json +0 -0
  89. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/config/vocabularies/deviations/accept.txt +0 -0
  90. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/styles/config/vocabularies/deviations/reject.txt +0 -0
  91. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/checks.properties.json +0 -0
  92. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/checks.yaml +0 -0
  93. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/codeql.properties.json +0 -0
  94. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/codeql.yaml +0 -0
  95. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/dependency-review.properties.json +0 -0
  96. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/dependency-review.yml +0 -0
  97. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/stale.properties.json +0 -0
  98. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/stale.yml +0 -0
  99. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/trivy-container.properties.json +0 -0
  100. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/trivy-container.yaml +0 -0
  101. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/trivy.properties.json +0 -0
  102. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflow-templates/trivy.yaml +0 -0
  103. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflows/codeql.yaml +0 -0
  104. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflows/pre-release.yaml +0 -0
  105. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflows/pull_request.yaml +0 -0
  106. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflows/push.yaml +0 -0
  107. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflows/release.yaml.disabled +0 -0
  108. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflows/scale-tests.yaml +0 -0
  109. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflows/schedule.yaml +0 -0
  110. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflows/tag-and-publish.yaml +0 -0
  111. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflows/trivy-container.yaml +0 -0
  112. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.github/workflows/verify-snyk-status.yml +0 -0
  113. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.gitignore +0 -0
  114. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.pre-commit-config.yaml +0 -0
  115. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/.vscode/launch.json +0 -0
  116. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/CODE_OF_CONDUCT.md +0 -0
  117. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/CONTRIBUTING.md +0 -0
  118. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/LICENSE +0 -0
  119. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/NOTICE +0 -0
  120. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/README.md +0 -0
  121. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/SECURITY.md +0 -0
  122. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/__init__.py +0 -0
  123. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/__init__.py +0 -0
  124. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/common/__init__.py +0 -0
  125. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/common/utils.py +0 -0
  126. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/lock_management.py +0 -0
  127. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/metadata_extraction/__init__.py +0 -0
  128. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/metadata_extraction/base.py +0 -0
  129. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/metadata_extraction/rest.py +0 -0
  130. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/metadata_extraction/sql.py +0 -0
  131. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/query_extraction/__init__.py +0 -0
  132. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/activities/query_extraction/sql.py +0 -0
  133. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/application/__init__.py +0 -0
  134. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/application/metadata_extraction/sql.py +0 -0
  135. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/clients/__init__.py +0 -0
  136. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/clients/async_atlan.py +0 -0
  137. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/clients/atlan.py +0 -0
  138. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/clients/atlan_auth.py +0 -0
  139. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/clients/base.py +0 -0
  140. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/clients/redis.py +0 -0
  141. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/clients/sql.py +0 -0
  142. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/clients/temporal.py +0 -0
  143. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/clients/utils.py +0 -0
  144. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/clients/workflow.py +0 -0
  145. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/common/__init__.py +0 -0
  146. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/common/aws_utils.py +0 -0
  147. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/common/dapr_utils.py +0 -0
  148. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/common/dataframe_utils.py +0 -0
  149. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/common/error_codes.py +0 -0
  150. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/common/utils.py +0 -0
  151. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/constants.py +0 -0
  152. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/decorators/__init__.py +0 -0
  153. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/decorators/locks.py +0 -0
  154. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/__init__.py +0 -0
  155. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/exporters/__init__.py +0 -0
  156. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/exporters/mkdocs.py +0 -0
  157. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/models/__init__.py +0 -0
  158. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/models/export/__init__.py +0 -0
  159. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/models/export/page.py +0 -0
  160. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/models/manifest/__init__.py +0 -0
  161. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/models/manifest/customer.py +0 -0
  162. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/models/manifest/internal.py +0 -0
  163. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/models/manifest/metadata.py +0 -0
  164. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/models/manifest/page.py +0 -0
  165. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/models/manifest/section.py +0 -0
  166. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/parsers/__init__.py +0 -0
  167. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/parsers/directory.py +0 -0
  168. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/docgen/parsers/manifest.py +0 -0
  169. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/events/__init__.py +0 -0
  170. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/events/models.py +0 -0
  171. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/handlers/__init__.py +0 -0
  172. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/handlers/base.py +0 -0
  173. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/handlers/sql.py +0 -0
  174. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/inputs/__init__.py +0 -0
  175. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/inputs/iceberg.py +0 -0
  176. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/inputs/json.py +0 -0
  177. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/inputs/sql_query.py +0 -0
  178. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/interceptors/__init__.py +0 -0
  179. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/interceptors/events.py +0 -0
  180. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/interceptors/lock.py +0 -0
  181. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/observability/__init__.py +0 -0
  182. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/observability/decorators/observability_decorator.py +0 -0
  183. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/observability/logger_adaptor.py +0 -0
  184. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/observability/metrics_adaptor.py +0 -0
  185. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/observability/observability.py +0 -0
  186. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/observability/traces_adaptor.py +0 -0
  187. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/observability/utils.py +0 -0
  188. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/outputs/iceberg.py +0 -0
  189. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/server/__init__.py +0 -0
  190. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/server/fastapi/__init__.py +0 -0
  191. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/server/fastapi/middleware/logmiddleware.py +0 -0
  192. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/server/fastapi/middleware/metrics.py +0 -0
  193. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/server/fastapi/models.py +0 -0
  194. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/server/fastapi/routers/__init__.py +0 -0
  195. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/server/fastapi/routers/server.py +0 -0
  196. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/server/fastapi/utils.py +0 -0
  197. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/services/__init__.py +0 -0
  198. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/services/atlan_storage.py +0 -0
  199. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/services/eventstore.py +0 -0
  200. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/services/objectstore.py +0 -0
  201. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/services/secretstore.py +0 -0
  202. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/services/statestore.py +0 -0
  203. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/__init__.py +0 -0
  204. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/e2e/__init__.py +0 -0
  205. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/e2e/base.py +0 -0
  206. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/e2e/client.py +0 -0
  207. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/e2e/conftest.py +0 -0
  208. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/e2e/utils.py +0 -0
  209. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/__init__.py +0 -0
  210. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/__init__.py +0 -0
  211. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/clients/__init__.py +0 -0
  212. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/clients/sql.py +0 -0
  213. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/common/__init__.py +0 -0
  214. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/common/logger.py +0 -0
  215. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/handlers/__init__.py +0 -0
  216. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/__init__.py +0 -0
  217. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_metadata.py +0 -0
  218. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_preflight.py +0 -0
  219. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/inputs/__init__.py +0 -0
  220. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/inputs/json_input.py +0 -0
  221. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/inputs/parquet_input.py +0 -0
  222. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/outputs/__init__.py +0 -0
  223. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/outputs/json_output.py +0 -0
  224. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/outputs/statestore.py +0 -0
  225. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/server/__init__.py +0 -0
  226. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/server/fastapi/__init__.py +0 -0
  227. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/sql_client.py +0 -0
  228. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/hypothesis/strategies/temporal.py +0 -0
  229. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/README.md +0 -0
  230. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/__init__.py +0 -0
  231. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/config_loader.py +0 -0
  232. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/data_generator.py +0 -0
  233. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/driver.py +0 -0
  234. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/examples/config.yaml +0 -0
  235. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/output_handler/__init__.py +0 -0
  236. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/output_handler/base.py +0 -0
  237. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/output_handler/csv_handler.py +0 -0
  238. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/output_handler/json_handler.py +0 -0
  239. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/scale_data_generator/output_handler/parquet_handler.py +0 -0
  240. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/test_utils/workflow_monitoring.py +0 -0
  241. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/__init__.py +0 -0
  242. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/atlas/__init__.py +0 -0
  243. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/atlas/sql.py +0 -0
  244. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/common/__init__.py +0 -0
  245. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/common/utils.py +0 -0
  246. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/query/__init__.py +0 -0
  247. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/query/templates/column.yaml +0 -0
  248. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/query/templates/database.yaml +0 -0
  249. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/query/templates/extras-procedure.yaml +0 -0
  250. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/query/templates/function.yaml +0 -0
  251. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/query/templates/schema.yaml +0 -0
  252. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/query/templates/table.yaml +0 -0
  253. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/transformers/query/templates/tag_attachment.yaml +0 -0
  254. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/worker.py +0 -0
  255. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/workflows/__init__.py +0 -0
  256. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/workflows/metadata_extraction/__init__.py +0 -0
  257. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/workflows/query_extraction/__init__.py +0 -0
  258. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/application_sdk/workflows/query_extraction/sql.py +0 -0
  259. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/components/README.md +0 -0
  260. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/components/atlan-storage.yaml +0 -0
  261. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/components/aws-secrets.yaml +0 -0
  262. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/components/deployment-secrets.yaml +0 -0
  263. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/components/eventstore.yaml +0 -0
  264. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/components/objectstore.yaml +0 -0
  265. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/components/secretstore.yaml +0 -0
  266. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/components/statestore.yaml +0 -0
  267. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/activities.md +0 -0
  268. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/application.md +0 -0
  269. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/application_sql.md +0 -0
  270. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/atlanupload.md +0 -0
  271. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/clients.md +0 -0
  272. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/common.md +0 -0
  273. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/handlers.md +0 -0
  274. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/inputs.md +0 -0
  275. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/output_paths.md +0 -0
  276. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/outputs.md +0 -0
  277. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/server.md +0 -0
  278. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/services.md +0 -0
  279. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/temporal_auth.md +0 -0
  280. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/worker.md +0 -0
  281. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/concepts/workflows.md +0 -0
  282. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/configuration.md +0 -0
  283. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/guides/architecture.md +0 -0
  284. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/guides/atlantis.md +0 -0
  285. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/guides/best-practices.md +0 -0
  286. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/guides/getting-started.md +0 -0
  287. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/guides/index.md +0 -0
  288. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/guides/partners.md +0 -0
  289. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/guides/secretstores.md +0 -0
  290. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/guides/sql-application-guide.md +0 -0
  291. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/guides/test-framework.md +0 -0
  292. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/index.md +0 -0
  293. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/setup/LINUX.md +0 -0
  294. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/setup/MAC.md +0 -0
  295. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/setup/WINDOWS.md +0 -0
  296. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/setup/troubleshooting.md +0 -0
  297. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/static/assets/logo.svg +0 -0
  298. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/static/images/phoenix-sdk-featureset.png +0 -0
  299. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/static/javascripts/mathjax.js +0 -0
  300. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/docs/static/stylesheets/extra.css +0 -0
  301. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/docs/mkdocs.yml +0 -0
  302. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/examples/README.md +0 -0
  303. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/examples/application_custom_fastapi.py +0 -0
  304. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/examples/application_fastapi.py +0 -0
  305. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/examples/application_hello_world.py +0 -0
  306. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/examples/application_sql.py +0 -0
  307. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/examples/application_sql_miner.py +0 -0
  308. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/examples/application_sql_with_custom_pyatlan_transformer.py +0 -0
  309. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/examples/application_sql_with_custom_transformer.py +0 -0
  310. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/examples/run_examples.py +0 -0
  311. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/examples/sql_query_templates/database.yaml +0 -0
  312. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/__init__.py +0 -0
  313. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/conftest.py +0 -0
  314. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/__init__.py +0 -0
  315. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/activities/__init__.py +0 -0
  316. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/activities/common/__init__.py +0 -0
  317. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/activities/common/test_utils.py +0 -0
  318. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/activities/metadata_extraction/__init__.py +0 -0
  319. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/activities/metadata_extraction/test_sql.py +0 -0
  320. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/activities/query_extraction/__init__.py +0 -0
  321. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/activities/test_activities.py +0 -0
  322. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/activities/test_lock_management.py +0 -0
  323. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/application/__init__.py +0 -0
  324. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/application/metadata_extraction/test_sql.py +0 -0
  325. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/application/test_application.py +0 -0
  326. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/clients/__init__.py +0 -0
  327. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/clients/test_async_atlan.py +0 -0
  328. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/clients/test_async_sql_client.py +0 -0
  329. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/clients/test_atlan_auth.py +0 -0
  330. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/clients/test_atlan_client.py +0 -0
  331. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/clients/test_atlanauth.py +0 -0
  332. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/clients/test_base_client.py +0 -0
  333. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/clients/test_redis_client.py +0 -0
  334. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/clients/test_sql_client.py +0 -0
  335. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/clients/test_temporal_client.py +0 -0
  336. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/common/test_aws_utils.py +0 -0
  337. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/common/test_credential_utils.py +0 -0
  338. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/common/test_utils.py +0 -0
  339. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/docgen/parsers/test_directory_parser.py +0 -0
  340. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/docgen/parsers/test_manifest_parser.py +0 -0
  341. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/handlers/__init__.py +0 -0
  342. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/handlers/sql/test_auth.py +0 -0
  343. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/handlers/sql/test_check_schemas_and_databases.py +0 -0
  344. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/handlers/sql/test_extract_allowed_schemas.py +0 -0
  345. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/handlers/sql/test_metadata.py +0 -0
  346. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/handlers/sql/test_preflight_check.py +0 -0
  347. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/handlers/sql/test_prepare_metadata.py +0 -0
  348. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/handlers/sql/test_tables_check.py +0 -0
  349. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/handlers/sql/test_validate_filters.py +0 -0
  350. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/handlers/test_base_handler.py +0 -0
  351. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/inputs/test_json.py +0 -0
  352. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/observability/__init__.py +0 -0
  353. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/observability/test_logger_adaptor.py +0 -0
  354. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/observability/test_metrics_adaptor.py +0 -0
  355. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/observability/test_traces_adaptor.py +0 -0
  356. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/outputs/test_iceberg.py +0 -0
  357. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/outputs/test_json_output.py +0 -0
  358. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/server/__init__.py +0 -0
  359. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/server/fastapi/routers/__init__.py +0 -0
  360. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/server/fastapi/routers/server.py +0 -0
  361. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/server/fastapi/test_fastapi.py +0 -0
  362. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/services/test_atlan_storage.py +0 -0
  363. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/services/test_eventstore.py +0 -0
  364. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/services/test_objectstore.py +0 -0
  365. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/services/test_statestore.py +0 -0
  366. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/test_worker.py +0 -0
  367. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/__init__.py +0 -0
  368. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/__init__.py +0 -0
  369. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/raw_columns.json +0 -0
  370. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/raw_databases.json +0 -0
  371. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/raw_functions.json +0 -0
  372. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/raw_procedures.json +0 -0
  373. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/raw_schemas.json +0 -0
  374. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/raw_tables.json +0 -0
  375. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/transformed_columns.json +0 -0
  376. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/transformed_databases.json +0 -0
  377. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/transformed_functions.json +0 -0
  378. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/transformed_procedures.json +0 -0
  379. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/transformed_schemas.json +0 -0
  380. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/resources/transformed_tables.json +0 -0
  381. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/test_column.py +0 -0
  382. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/test_database.py +0 -0
  383. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/test_function.py +0 -0
  384. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/test_procedure.py +0 -0
  385. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/test_schema.py +0 -0
  386. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/atlas/test_table.py +0 -0
  387. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/raw/column.json +0 -0
  388. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/raw/database.json +0 -0
  389. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/raw/extras-procedure.json +0 -0
  390. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/raw/function.json +0 -0
  391. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/raw/schema.json +0 -0
  392. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/raw/table.json +0 -0
  393. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/transformed/column.json +0 -0
  394. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/transformed/database.json +0 -0
  395. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/transformed/extras-procedure.json +0 -0
  396. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/transformed/function.json +0 -0
  397. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/transformed/schema.json +0 -0
  398. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/resources/transformed/table.json +0 -0
  399. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/test_sql_transformer.py +0 -0
  400. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/transformers/query/test_sql_transformer_output_validation.py +0 -0
  401. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/workflows/query_extraction/__init__.py +0 -0
  402. {atlan_application_sdk-0.1.1rc36 → atlan_application_sdk-0.1.1rc37}/tests/unit/workflows/query_extraction/test_sql.py +0 -0
@@ -0,0 +1,7 @@
1
+ ## v0.1.1rc37 (September 03, 2025)
2
+
3
+ Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc36...v0.1.1rc37
4
+
5
+ ### Features
6
+
7
+ - add file size-based chunking to JsonOutput (#650) (by @Nishchith Shetty in [7e7685b](https://github.com/atlanhq/application-sdk/commit/7e7685b))
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.1.1rc37 (September 03, 2025)
4
+
5
+ Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc36...v0.1.1rc37
6
+
7
+ ### Features
8
+
9
+ - add file size-based chunking to JsonOutput (#650) (by @Nishchith Shetty in [7e7685b](https://github.com/atlanhq/application-sdk/commit/7e7685b))
10
+
11
+
3
12
 
4
13
  ## v0.1.1rc36 (September 01, 2025)
5
14
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atlan-application-sdk
3
- Version: 0.1.1rc36
3
+ Version: 0.1.1rc37
4
4
  Summary: Atlan Application SDK is a Python library for developing applications on the Atlan Platform
5
5
  Project-URL: Repository, https://github.com/atlanhq/application-sdk
6
6
  Project-URL: Documentation, https://github.com/atlanhq/application-sdk/README.md
@@ -4,7 +4,7 @@ This module contains Pydantic models used to represent various data structures
4
4
  needed by activities, such as statistics and configuration.
5
5
  """
6
6
 
7
- from typing import Optional
7
+ from typing import List, Optional
8
8
 
9
9
  from pydantic import BaseModel
10
10
 
@@ -34,4 +34,5 @@ class ActivityStatistics(BaseModel):
34
34
 
35
35
  total_record_count: int = 0
36
36
  chunk_count: int = 0
37
+ partitions: Optional[List[int]] = []
37
38
  typename: Optional[str] = None
@@ -10,7 +10,7 @@ from application_sdk.services.objectstore import ObjectStore
10
10
  logger = get_logger(__name__)
11
11
 
12
12
  if TYPE_CHECKING:
13
- import daft
13
+ import daft # type: ignore
14
14
  import pandas as pd
15
15
 
16
16
 
@@ -136,7 +136,7 @@ class ParquetInput(Input):
136
136
  daft.DataFrame: Combined daft dataframe from all parquet files.
137
137
  """
138
138
  try:
139
- import daft
139
+ import daft # type: ignore
140
140
 
141
141
  if self.file_names:
142
142
  path = f"{self.path}/{self.file_names[0].split('/')[0]}"
@@ -161,11 +161,11 @@ class ParquetInput(Input):
161
161
  a batch of data from the parquet file(s).
162
162
  """
163
163
  try:
164
- import daft
164
+ import daft # type: ignore
165
165
 
166
166
  if self.file_names:
167
167
  for file_name in self.file_names:
168
- path = f"{self.path}/{file_name.replace('.json', '.parquet')}"
168
+ path = f"{self.path}/{file_name}"
169
169
  if self.input_prefix and path:
170
170
  await self.download_files(path)
171
171
  yield daft.read_parquet(path)
@@ -13,6 +13,7 @@ from typing import (
13
13
  Dict,
14
14
  Generator,
15
15
  List,
16
+ Literal,
16
17
  Optional,
17
18
  Union,
18
19
  cast,
@@ -31,7 +32,7 @@ logger = get_logger(__name__)
31
32
  activity.logger = logger
32
33
 
33
34
  if TYPE_CHECKING:
34
- import daft
35
+ import daft # type: ignore
35
36
  import pandas as pd
36
37
 
37
38
 
@@ -52,6 +53,27 @@ class Output(ABC):
52
53
  output_prefix: str
53
54
  total_record_count: int
54
55
  chunk_count: int
56
+ statistics: List[int] = []
57
+
58
+ def estimate_dataframe_file_size(
59
+ self, dataframe: "pd.DataFrame", file_type: Literal["json", "parquet"]
60
+ ) -> int:
61
+ """Estimate File size of a DataFrame by sampling a few records."""
62
+ if len(dataframe) == 0:
63
+ return 0
64
+
65
+ # Sample up to 10 records to estimate average size
66
+ sample_size = min(10, len(dataframe))
67
+ sample = dataframe.head(sample_size)
68
+ if file_type == "json":
69
+ sample_file = sample.to_json(orient="records", lines=True)
70
+ else:
71
+ sample_file = sample.to_parquet(index=False, compression="snappy")
72
+ if sample_file is not None:
73
+ avg_record_size = len(sample_file) / sample_size
74
+ return int(avg_record_size * len(dataframe))
75
+
76
+ return 0
55
77
 
56
78
  def process_null_fields(
57
79
  self,
@@ -217,6 +239,7 @@ class Output(ABC):
217
239
  statistics = {
218
240
  "total_record_count": self.total_record_count,
219
241
  "chunk_count": self.chunk_count,
242
+ "partitions": self.statistics,
220
243
  }
221
244
 
222
245
  # Write the statistics to a json file
@@ -6,6 +6,7 @@ import orjson
6
6
  from temporalio import activity
7
7
 
8
8
  from application_sdk.activities.common.utils import get_object_store_prefix
9
+ from application_sdk.constants import DAPR_MAX_GRPC_MESSAGE_LENGTH
9
10
  from application_sdk.observability.logger_adaptor import get_logger
10
11
  from application_sdk.observability.metrics_adaptor import MetricType, get_metrics
11
12
  from application_sdk.outputs import Output
@@ -15,7 +16,7 @@ logger = get_logger(__name__)
15
16
  activity.logger = logger
16
17
 
17
18
  if TYPE_CHECKING:
18
- import daft
19
+ import daft # type: ignore
19
20
  import pandas as pd
20
21
 
21
22
 
@@ -32,7 +33,7 @@ def path_gen(chunk_start: int | None, chunk_count: int) -> str:
32
33
  if chunk_start is None:
33
34
  return f"{str(chunk_count)}.json"
34
35
  else:
35
- return f"{str(chunk_start+chunk_count)}.json"
36
+ return f"chunk-{chunk_start}-part{chunk_count}.json"
36
37
 
37
38
 
38
39
  def convert_datetime_to_epoch(data: Any) -> Any:
@@ -124,6 +125,10 @@ class JsonOutput(Output):
124
125
  self.chunk_size = chunk_size or 100000
125
126
  self.buffer: List[Union["pd.DataFrame", "daft.DataFrame"]] = [] # noqa: F821
126
127
  self.current_buffer_size = 0
128
+ self.current_buffer_size_bytes = 0 # Track estimated buffer size in bytes
129
+ self.max_file_size_bytes = int(
130
+ DAPR_MAX_GRPC_MESSAGE_LENGTH * 0.9
131
+ ) # 90% of DAPR limit as safety buffer
127
132
  self.path_gen = path_gen
128
133
  self.start_marker = start_marker
129
134
  self.end_marker = end_marker
@@ -172,8 +177,21 @@ class JsonOutput(Output):
172
177
  ]
173
178
 
174
179
  for chunk in chunks:
180
+ # Estimate size of this chunk
181
+ chunk_size_bytes = self.estimate_dataframe_file_size(chunk, "json")
182
+
183
+ # Check if adding this chunk would exceed size limit
184
+ if (
185
+ self.current_buffer_size_bytes + chunk_size_bytes
186
+ > self.max_file_size_bytes
187
+ and self.current_buffer_size > 0
188
+ ):
189
+ # Flush current buffer before adding this chunk
190
+ await self._flush_buffer()
191
+
175
192
  self.buffer.append(chunk)
176
193
  self.current_buffer_size += len(chunk)
194
+ self.current_buffer_size_bytes += chunk_size_bytes
177
195
 
178
196
  if self.current_buffer_size >= partition:
179
197
  await self._flush_buffer()
@@ -237,45 +255,19 @@ class JsonOutput(Output):
237
255
  row, preserve_fields, null_to_empty_dict_fields
238
256
  )
239
257
  # Serialize the row and add it to the buffer
240
- buffer.append(
241
- orjson.dumps(cleaned_row, option=orjson.OPT_APPEND_NEWLINE).decode(
242
- "utf-8"
243
- )
244
- )
245
-
246
- # If the buffer reaches the specified size, write it to the file
247
- if self.chunk_size and len(buffer) >= self.chunk_size:
248
- self.chunk_count += 1
249
- output_file_name = f"{self.output_path}/{self.path_gen(self.chunk_start, self.chunk_count)}"
250
- with open(output_file_name, "w") as f:
251
- f.writelines(buffer)
252
- buffer.clear() # Clear the buffer
253
-
254
- # Record chunk metrics
255
- self.metrics.record_metric(
256
- name="json_chunks_written",
257
- value=1,
258
- metric_type=MetricType.COUNTER,
259
- labels={"type": "daft"},
260
- description="Number of chunks written to JSON files",
261
- )
258
+ serialized_row = orjson.dumps(
259
+ cleaned_row, option=orjson.OPT_APPEND_NEWLINE
260
+ ).decode("utf-8")
261
+ buffer.append(serialized_row)
262
+ self.current_buffer_size_bytes += len(serialized_row)
263
+ if (self.chunk_size and len(buffer) >= self.chunk_size) or (
264
+ self.current_buffer_size_bytes > self.max_file_size_bytes
265
+ ):
266
+ await self.flush_daft_buffer(buffer)
262
267
 
263
268
  # Write any remaining rows in the buffer
264
269
  if buffer:
265
- self.chunk_count += 1
266
- output_file_name = f"{self.output_path}/{self.path_gen(self.chunk_start, self.chunk_count)}"
267
- with open(output_file_name, "w") as f:
268
- f.writelines(buffer)
269
- buffer.clear()
270
-
271
- # Record chunk metrics
272
- self.metrics.record_metric(
273
- name="json_chunks_written",
274
- value=1,
275
- metric_type=MetricType.COUNTER,
276
- labels={"type": "daft"},
277
- description="Number of chunks written to JSON files",
278
- )
270
+ await self.flush_daft_buffer(buffer)
279
271
 
280
272
  # Record metrics for successful write
281
273
  self.metrics.record_metric(
@@ -303,6 +295,32 @@ class JsonOutput(Output):
303
295
  )
304
296
  logger.error(f"Error writing daft dataframe to json: {str(e)}")
305
297
 
298
+ async def flush_daft_buffer(self, buffer: List[str]):
299
+ """Flush the current buffer to a JSON file.
300
+
301
+ This method combines all DataFrames in the buffer, writes them to a JSON file,
302
+ and uploads the file to the object store.
303
+ """
304
+ self.chunk_count += 1
305
+ output_file_name = (
306
+ f"{self.output_path}/{self.path_gen(self.chunk_start, self.chunk_count)}"
307
+ )
308
+ with open(output_file_name, "w") as f:
309
+ f.writelines(buffer)
310
+ buffer.clear() # Clear the buffer
311
+
312
+ self.current_buffer_size = 0
313
+ self.current_buffer_size_bytes = 0
314
+
315
+ # Record chunk metrics
316
+ self.metrics.record_metric(
317
+ name="json_chunks_written",
318
+ value=1,
319
+ metric_type=MetricType.COUNTER,
320
+ labels={"type": "daft"},
321
+ description="Number of chunks written to JSON files",
322
+ )
323
+
306
324
  async def _flush_buffer(self):
307
325
  """Flush the current buffer to a JSON file.
308
326
 
@@ -353,6 +371,7 @@ class JsonOutput(Output):
353
371
 
354
372
  self.buffer.clear()
355
373
  self.current_buffer_size = 0
374
+ self.current_buffer_size_bytes = 0
356
375
 
357
376
  except Exception as e:
358
377
  # Record metrics for failed write
@@ -1,9 +1,10 @@
1
1
  import os
2
- from typing import TYPE_CHECKING, Literal, Optional
2
+ from typing import TYPE_CHECKING, List, Literal, Optional, Union
3
3
 
4
4
  from temporalio import activity
5
5
 
6
6
  from application_sdk.activities.common.utils import get_object_store_prefix
7
+ from application_sdk.constants import DAPR_MAX_GRPC_MESSAGE_LENGTH
7
8
  from application_sdk.observability.logger_adaptor import get_logger
8
9
  from application_sdk.observability.metrics_adaptor import MetricType, get_metrics
9
10
  from application_sdk.outputs import Output
@@ -13,7 +14,7 @@ logger = get_logger(__name__)
13
14
  activity.logger = logger
14
15
 
15
16
  if TYPE_CHECKING:
16
- import daft
17
+ import daft # type: ignore
17
18
  import pandas as pd
18
19
 
19
20
 
@@ -46,6 +47,7 @@ class ParquetOutput(Output):
46
47
  typename: Optional[str] = None,
47
48
  write_mode: Literal["append", "overwrite", "overwrite-partitions"] = "append",
48
49
  chunk_size: Optional[int] = 100000,
50
+ buffer_size: Optional[int] = 100000,
49
51
  total_record_count: int = 0,
50
52
  chunk_count: int = 0,
51
53
  chunk_start: Optional[int] = None,
@@ -78,11 +80,19 @@ class ParquetOutput(Output):
78
80
  self.typename = typename
79
81
  self.write_mode = write_mode
80
82
  self.chunk_size = chunk_size
83
+ self.buffer_size = buffer_size
84
+ self.buffer: List[Union["pd.DataFrame", "daft.DataFrame"]] = [] # noqa: F821
81
85
  self.total_record_count = total_record_count
82
86
  self.chunk_count = chunk_count
87
+ self.current_buffer_size = 0
88
+ self.current_buffer_size_bytes = 0 # Track estimated buffer size in bytes
89
+ self.max_file_size_bytes = int(
90
+ DAPR_MAX_GRPC_MESSAGE_LENGTH * 0.9
91
+ ) # 90% of DAPR limit as safety buffer
83
92
  self.chunk_start = chunk_start
84
93
  self.start_marker = start_marker
85
94
  self.end_marker = end_marker
95
+ self.statistics = []
86
96
  self.metrics = get_metrics()
87
97
 
88
98
  # Create output directory
@@ -117,7 +127,7 @@ class ParquetOutput(Output):
117
127
  if chunk_start is None:
118
128
  return f"{str(chunk_count)}.parquet"
119
129
  else:
120
- return f"{str(chunk_start+chunk_count)}.parquet"
130
+ return f"chunk-{str(chunk_start)}-part{str(chunk_count)}.parquet"
121
131
 
122
132
  async def write_dataframe(self, dataframe: "pd.DataFrame"):
123
133
  """Write a pandas DataFrame to Parquet files and upload to object store.
@@ -126,20 +136,46 @@ class ParquetOutput(Output):
126
136
  dataframe (pd.DataFrame): The DataFrame to write.
127
137
  """
128
138
  try:
139
+ chunk_part = 0
129
140
  if len(dataframe) == 0:
130
141
  return
131
142
 
132
- # Update counters
133
- self.chunk_count += 1
134
- self.total_record_count += len(dataframe)
135
- file_path = f"{self.output_path}/{self.path_gen(self.chunk_start, self.chunk_count, self.start_marker, self.end_marker)}"
136
-
137
- # Write the dataframe to parquet using pandas native method
138
- dataframe.to_parquet(
139
- file_path,
140
- index=False,
141
- compression="snappy", # Using snappy compression by default
143
+ # Split the DataFrame into chunks
144
+ partition = (
145
+ self.chunk_size
146
+ if self.chunk_start is None
147
+ else min(self.chunk_size, self.buffer_size)
142
148
  )
149
+ chunks = [
150
+ dataframe[i : i + partition] # type: ignore
151
+ for i in range(0, len(dataframe), partition)
152
+ ]
153
+
154
+ for chunk in chunks:
155
+ # Estimate size of this chunk
156
+ chunk_size_bytes = self.estimate_dataframe_file_size(chunk, "parquet")
157
+
158
+ # Check if adding this chunk would exceed size limit
159
+ if (
160
+ self.current_buffer_size_bytes + chunk_size_bytes
161
+ > self.max_file_size_bytes
162
+ and self.current_buffer_size > 0
163
+ ):
164
+ # Flush current buffer before adding this chunk
165
+ chunk_part += 1
166
+ await self._flush_buffer(chunk_part)
167
+
168
+ self.buffer.append(chunk)
169
+ self.current_buffer_size += len(chunk)
170
+ self.current_buffer_size_bytes += chunk_size_bytes
171
+
172
+ if self.current_buffer_size >= partition: # type: ignore
173
+ chunk_part += 1
174
+ await self._flush_buffer(chunk_part)
175
+
176
+ if self.buffer and self.current_buffer_size > 0:
177
+ chunk_part += 1
178
+ await self._flush_buffer(chunk_part)
143
179
 
144
180
  # Record metrics for successful write
145
181
  self.metrics.record_metric(
@@ -159,11 +195,8 @@ class ParquetOutput(Output):
159
195
  description="Number of chunks written to Parquet files",
160
196
  )
161
197
 
162
- # Upload the file to object store
163
- await ObjectStore.upload_file(
164
- source=file_path,
165
- destination=get_object_store_prefix(file_path),
166
- )
198
+ self.chunk_count += 1
199
+ self.statistics.append(chunk_part)
167
200
  except Exception as e:
168
201
  # Record metrics for failed write
169
202
  self.metrics.record_metric(
@@ -245,3 +278,68 @@ class ParquetOutput(Output):
245
278
  str: The full path of the output file.
246
279
  """
247
280
  return self.output_path
281
+
282
+ async def _flush_buffer(self, chunk_part):
283
+ """Flush the current buffer to a Parquet file.
284
+
285
+ This method combines all DataFrames in the buffer, writes them to a Parquet file,
286
+ and uploads the file to the object store.
287
+
288
+ Note:
289
+ If the buffer is empty or has no records, the method returns without writing.
290
+ """
291
+ import pandas as pd
292
+
293
+ if not self.buffer or not self.current_buffer_size:
294
+ return
295
+
296
+ if not all(isinstance(df, pd.DataFrame) for df in self.buffer):
297
+ raise TypeError(
298
+ "_flush_buffer encountered non-DataFrame elements in buffer. This should not happen."
299
+ )
300
+
301
+ try:
302
+ # Now it's safe to cast for pd.concat
303
+ pd_buffer: List[pd.DataFrame] = self.buffer # type: ignore
304
+ combined_dataframe = pd.concat(pd_buffer)
305
+
306
+ # Write DataFrame to Parquet file
307
+ if not combined_dataframe.empty:
308
+ self.total_record_count += len(combined_dataframe)
309
+ output_file_name = (
310
+ f"{self.output_path}/{self.path_gen(self.chunk_count, chunk_part)}"
311
+ )
312
+ combined_dataframe.to_parquet(
313
+ output_file_name, index=False, compression="snappy"
314
+ )
315
+
316
+ # Record chunk metrics
317
+ self.metrics.record_metric(
318
+ name="parquet_chunks_written",
319
+ value=1,
320
+ metric_type=MetricType.COUNTER,
321
+ labels={"type": "pandas"},
322
+ description="Number of chunks written to Parquet files",
323
+ )
324
+
325
+ # Push the file to the object store
326
+ await ObjectStore.upload_file(
327
+ source=output_file_name,
328
+ destination=get_object_store_prefix(output_file_name),
329
+ )
330
+
331
+ self.buffer.clear()
332
+ self.current_buffer_size = 0
333
+ self.current_buffer_size_bytes = 0
334
+
335
+ except Exception as e:
336
+ # Record metrics for failed write
337
+ self.metrics.record_metric(
338
+ name="parquet_write_errors",
339
+ value=1,
340
+ metric_type=MetricType.COUNTER,
341
+ labels={"type": "pandas", "error": str(e)},
342
+ description="Number of errors while writing to Parquet files",
343
+ )
344
+ logger.error(f"Error flushing buffer to parquet: {str(e)}")
345
+ raise e
@@ -2,4 +2,4 @@
2
2
  Version information for the application_sdk package.
3
3
  """
4
4
 
5
- __version__ = "0.1.1rc36"
5
+ __version__ = "0.1.1rc37"
@@ -107,7 +107,11 @@ class BaseSQLMetadataExtractionWorkflow(MetadataExtractionWorkflow):
107
107
  activity_statistics = ActivityStatistics.model_validate(raw_statistics)
108
108
  transform_activities: List[Any] = []
109
109
 
110
- if activity_statistics is None or activity_statistics.chunk_count == 0:
110
+ if (
111
+ activity_statistics is None
112
+ or activity_statistics.chunk_count == 0
113
+ or not activity_statistics.partitions
114
+ ):
111
115
  # to handle the case where the fetch_fn returns None or no chunks
112
116
  return
113
117
 
@@ -115,7 +119,9 @@ class BaseSQLMetadataExtractionWorkflow(MetadataExtractionWorkflow):
115
119
  raise ValueError("Invalid typename")
116
120
 
117
121
  batches, chunk_starts = self.get_transform_batches(
118
- activity_statistics.chunk_count, activity_statistics.typename
122
+ activity_statistics.chunk_count,
123
+ activity_statistics.typename,
124
+ activity_statistics.partitions,
119
125
  )
120
126
 
121
127
  for i in range(len(batches)):
@@ -144,7 +150,9 @@ class BaseSQLMetadataExtractionWorkflow(MetadataExtractionWorkflow):
144
150
  total_record_count += metadata_model.total_record_count
145
151
  chunk_count += metadata_model.chunk_count
146
152
 
147
- def get_transform_batches(self, chunk_count: int, typename: str):
153
+ def get_transform_batches(
154
+ self, chunk_count: int, typename: str, partitions: List[int]
155
+ ):
148
156
  """Get batches for parallel transformation processing.
149
157
 
150
158
  Args:
@@ -159,12 +167,17 @@ class BaseSQLMetadataExtractionWorkflow(MetadataExtractionWorkflow):
159
167
  batches: List[List[str]] = []
160
168
  chunk_start_numbers: List[int] = []
161
169
 
162
- for i in range(chunk_count):
170
+ for i, partition in enumerate(partitions):
163
171
  # Track starting chunk number (which is just i)
164
172
  chunk_start_numbers.append(i)
165
173
 
166
174
  # Each batch contains exactly one chunk
167
- batches.append([f"{typename}/{i+1}.json"])
175
+ batches.append(
176
+ [
177
+ f"{typename}/chunk-{i}-part{file+1}.parquet"
178
+ for file in range(partition)
179
+ ]
180
+ )
168
181
 
169
182
  return batches, chunk_start_numbers
170
183
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "atlan-application-sdk"
3
- version = "0.1.1rc36"
3
+ version = "0.1.1rc37"
4
4
  description = "Atlan Application SDK is a Python library for developing applications on the Atlan Platform"
5
5
  license = "Apache-2.0"
6
6
  authors = [
@@ -620,7 +620,10 @@ async def test_get_batched_daft_dataframe_with_file_names(monkeypatch) -> None:
620
620
  "glob.glob", return_value=[]
621
621
  ), patch("application_sdk.services.objectstore.ObjectStore.download_file"):
622
622
  path = "/data"
623
- file_names = ["one.json", "two.json"] # Note: .json extension gets replaced
623
+ file_names = [
624
+ "one.parquet",
625
+ "two.parquet",
626
+ ] # Note: .json extension gets replaced
624
627
  input_prefix = "remote"
625
628
 
626
629
  parquet_input = ParquetInput(
@@ -107,11 +107,12 @@ class TestOutput:
107
107
  """Test write_statistics successful case."""
108
108
  self.output.total_record_count = 100
109
109
  self.output.chunk_count = 5
110
+ self.output.statistics = [1, 2, 1, 2, 1]
110
111
 
111
112
  # Mock the open function, orjson.dumps, and object store upload
112
113
  with patch("builtins.open", mock_open()) as mock_file, patch(
113
114
  "orjson.dumps",
114
- return_value=b'{"total_record_count": 100, "chunk_count": 5}',
115
+ return_value=b'{"total_record_count": 100, "chunk_count": 5, "partitions": [1,2,1,2,1]}',
115
116
  ) as mock_orjson, patch(
116
117
  "application_sdk.outputs.get_object_store_prefix",
117
118
  return_value="path/statistics.json.ignore",
@@ -123,10 +124,18 @@ class TestOutput:
123
124
  stats = await self.output.write_statistics()
124
125
 
125
126
  # Assertions
126
- assert stats == {"total_record_count": 100, "chunk_count": 5}
127
+ assert stats == {
128
+ "total_record_count": 100,
129
+ "chunk_count": 5,
130
+ "partitions": [1, 2, 1, 2, 1],
131
+ }
127
132
  mock_file.assert_called_once_with("/test/path/statistics.json.ignore", "w")
128
133
  mock_orjson.assert_called_once_with(
129
- {"total_record_count": 100, "chunk_count": 5}
134
+ {
135
+ "total_record_count": 100,
136
+ "chunk_count": 5,
137
+ "partitions": [1, 2, 1, 2, 1],
138
+ }
130
139
  )
131
140
  # Verify the upload call
132
141
  mock_push.assert_awaited_once()