atlan-application-sdk 1.0.2__tar.gz → 1.0.4__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 (426) hide show
  1. atlan_application_sdk-1.0.4/.github/release_notes.md +7 -0
  2. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/CHANGELOG.md +19 -0
  3. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/PKG-INFO +1 -1
  4. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/__init__.py +4 -0
  5. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/services/objectstore.py +39 -4
  6. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/version.py +1 -1
  7. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/pyproject.toml +1 -1
  8. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/activities/test_activities.py +65 -0
  9. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/services/test_objectstore.py +255 -0
  10. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/uv.lock +1 -1
  11. atlan_application_sdk-1.0.2/.github/release_notes.md +0 -7
  12. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.cursor/BUGBOT.md +0 -0
  13. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.cursor/rules/documentation.mdc +0 -0
  14. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.cursor/rules/exception-handling.mdc +0 -0
  15. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.cursor/rules/guidelines.mdc +0 -0
  16. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.cursor/rules/logging.mdc +0 -0
  17. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.cursor/rules/performance.mdc +0 -0
  18. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.cursor/rules/setup.mdc +0 -0
  19. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.cursor/rules/standards.mdc +0 -0
  20. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.cursor/rules/testing.mdc +0 -0
  21. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.env.example +0 -0
  22. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/CODEOWNERS +0 -0
  23. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  24. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
  25. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  26. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/actions/docgen/action.yaml +0 -0
  27. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/actions/doclint/action.yaml +0 -0
  28. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/actions/docstring-coverage/action.yaml +0 -0
  29. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/actions/e2e-apps/action.yaml +0 -0
  30. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/actions/e2e-examples/action.yaml +0 -0
  31. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/actions/setup-deps/action.yaml +0 -0
  32. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/actions/sync-branches/action.yaml +0 -0
  33. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/actions/trivy/action.yaml +0 -0
  34. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/actions/trivy-container/action.yaml +0 -0
  35. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/actions/unit-tests/action.yaml +0 -0
  36. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/dependabot.yaml +0 -0
  37. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/pull_request_template.md +0 -0
  38. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/scripts/extract_release_notes.py +0 -0
  39. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/scripts/release.py +0 -0
  40. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/scripts/trivy-to-markdown.py +0 -0
  41. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/scripts/update_changelog.py +0 -0
  42. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/AMPM.yml +0 -0
  43. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Accessibility.yml +0 -0
  44. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Acronyms.yml +0 -0
  45. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Adverbs.yml +0 -0
  46. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Auto.yml +0 -0
  47. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Avoid.yml +0 -0
  48. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Contractions.yml +0 -0
  49. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Dashes.yml +0 -0
  50. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/DateFormat.yml +0 -0
  51. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/DateNumbers.yml +0 -0
  52. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/DateOrder.yml +0 -0
  53. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Ellipses.yml +0 -0
  54. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/FirstPerson.yml +0 -0
  55. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Foreign.yml +0 -0
  56. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Gender.yml +0 -0
  57. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/GenderBias.yml +0 -0
  58. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/GeneralURL.yml +0 -0
  59. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/HeadingAcronyms.yml +0 -0
  60. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/HeadingColons.yml +0 -0
  61. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/HeadingPunctuation.yml +0 -0
  62. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Headings.yml +0 -0
  63. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Hyphens.yml +0 -0
  64. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Negative.yml +0 -0
  65. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Ordinal.yml +0 -0
  66. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/OxfordComma.yml +0 -0
  67. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Passive.yml +0 -0
  68. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Percentages.yml +0 -0
  69. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Plurals.yml +0 -0
  70. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Quotes.yml +0 -0
  71. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/RangeTime.yml +0 -0
  72. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Semicolon.yml +0 -0
  73. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/SentenceLength.yml +0 -0
  74. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Spacing.yml +0 -0
  75. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Suspended.yml +0 -0
  76. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Terms.yml +0 -0
  77. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/URLFormat.yml +0 -0
  78. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Units.yml +0 -0
  79. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Vocab.yml +0 -0
  80. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/We.yml +0 -0
  81. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/Wordiness.yml +0 -0
  82. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/Microsoft/meta.json +0 -0
  83. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/config/vocabularies/deviations/accept.txt +0 -0
  84. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/styles/config/vocabularies/deviations/reject.txt +0 -0
  85. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/checks.properties.json +0 -0
  86. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/checks.yaml +0 -0
  87. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/codeql.properties.json +0 -0
  88. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/codeql.yaml +0 -0
  89. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/dependency-review.properties.json +0 -0
  90. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/dependency-review.yml +0 -0
  91. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/stale.properties.json +0 -0
  92. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/stale.yml +0 -0
  93. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/trivy-container.properties.json +0 -0
  94. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/trivy-container.yaml +0 -0
  95. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/trivy.properties.json +0 -0
  96. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflow-templates/trivy.yaml +0 -0
  97. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflows/codeql.yaml +0 -0
  98. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflows/pull_request.yaml +0 -0
  99. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflows/push.yaml +0 -0
  100. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflows/release.yaml +0 -0
  101. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflows/scale-tests.yaml +0 -0
  102. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflows/schedule.yaml +0 -0
  103. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflows/tag-and-publish.yaml +0 -0
  104. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflows/trivy-container.yaml +0 -0
  105. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.github/workflows/verify-snyk-status.yml +0 -0
  106. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.gitignore +0 -0
  107. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.pre-commit-config.yaml +0 -0
  108. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/.vscode/launch.json +0 -0
  109. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/CODE_OF_CONDUCT.md +0 -0
  110. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/CONTRIBUTING.md +0 -0
  111. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/LICENSE +0 -0
  112. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/NOTICE +0 -0
  113. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/README.md +0 -0
  114. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/SECURITY.md +0 -0
  115. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/__init__.py +0 -0
  116. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/.cursor/BUGBOT.md +0 -0
  117. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/common/__init__.py +0 -0
  118. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/common/models.py +0 -0
  119. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/common/utils.py +0 -0
  120. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/lock_management.py +0 -0
  121. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/metadata_extraction/__init__.py +0 -0
  122. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/metadata_extraction/base.py +0 -0
  123. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/metadata_extraction/rest.py +0 -0
  124. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/metadata_extraction/sql.py +0 -0
  125. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/query_extraction/__init__.py +0 -0
  126. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/activities/query_extraction/sql.py +0 -0
  127. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/application/__init__.py +0 -0
  128. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/application/metadata_extraction/sql.py +0 -0
  129. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/.cursor/BUGBOT.md +0 -0
  130. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/__init__.py +0 -0
  131. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/atlan.py +0 -0
  132. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/atlan_auth.py +0 -0
  133. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/base.py +0 -0
  134. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/models.py +0 -0
  135. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/redis.py +0 -0
  136. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/sql.py +0 -0
  137. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/temporal.py +0 -0
  138. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/utils.py +0 -0
  139. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/clients/workflow.py +0 -0
  140. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/common/.cursor/BUGBOT.md +0 -0
  141. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/common/__init__.py +0 -0
  142. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/common/aws_utils.py +0 -0
  143. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/common/dapr_utils.py +0 -0
  144. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/common/dataframe_utils.py +0 -0
  145. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/common/error_codes.py +0 -0
  146. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/common/file_converter.py +0 -0
  147. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/common/utils.py +0 -0
  148. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/constants.py +0 -0
  149. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/decorators/.cursor/BUGBOT.md +0 -0
  150. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/decorators/__init__.py +0 -0
  151. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/decorators/locks.py +0 -0
  152. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/decorators/mcp_tool.py +0 -0
  153. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/__init__.py +0 -0
  154. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/exporters/__init__.py +0 -0
  155. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/exporters/mkdocs.py +0 -0
  156. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/models/__init__.py +0 -0
  157. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/models/export/__init__.py +0 -0
  158. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/models/export/page.py +0 -0
  159. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/models/manifest/__init__.py +0 -0
  160. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/models/manifest/customer.py +0 -0
  161. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/models/manifest/internal.py +0 -0
  162. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/models/manifest/metadata.py +0 -0
  163. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/models/manifest/page.py +0 -0
  164. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/models/manifest/section.py +0 -0
  165. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/parsers/__init__.py +0 -0
  166. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/parsers/directory.py +0 -0
  167. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/docgen/parsers/manifest.py +0 -0
  168. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/events/__init__.py +0 -0
  169. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/events/models.py +0 -0
  170. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/handlers/__init__.py +0 -0
  171. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/handlers/base.py +0 -0
  172. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/handlers/sql.py +0 -0
  173. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/inputs/.cursor/BUGBOT.md +0 -0
  174. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/inputs/__init__.py +0 -0
  175. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/inputs/iceberg.py +0 -0
  176. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/inputs/json.py +0 -0
  177. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/inputs/parquet.py +0 -0
  178. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/inputs/sql_query.py +0 -0
  179. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/interceptors/.cursor/BUGBOT.md +0 -0
  180. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/interceptors/__init__.py +0 -0
  181. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/interceptors/cleanup.py +0 -0
  182. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/interceptors/events.py +0 -0
  183. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/interceptors/lock.py +0 -0
  184. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/observability/__init__.py +0 -0
  185. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/observability/decorators/observability_decorator.py +0 -0
  186. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/observability/logger_adaptor.py +0 -0
  187. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/observability/metrics_adaptor.py +0 -0
  188. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/observability/observability.py +0 -0
  189. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/observability/traces_adaptor.py +0 -0
  190. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/observability/utils.py +0 -0
  191. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/outputs/.cursor/BUGBOT.md +0 -0
  192. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/outputs/__init__.py +0 -0
  193. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/outputs/iceberg.py +0 -0
  194. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/outputs/json.py +0 -0
  195. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/outputs/parquet.py +0 -0
  196. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/.cursor/BUGBOT.md +0 -0
  197. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/__init__.py +0 -0
  198. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/fastapi/__init__.py +0 -0
  199. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/fastapi/middleware/logmiddleware.py +0 -0
  200. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/fastapi/middleware/metrics.py +0 -0
  201. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/fastapi/models.py +0 -0
  202. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/fastapi/routers/__init__.py +0 -0
  203. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/fastapi/routers/server.py +0 -0
  204. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/fastapi/utils.py +0 -0
  205. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/mcp/__init__.py +0 -0
  206. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/mcp/models.py +0 -0
  207. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/server/mcp/server.py +0 -0
  208. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/services/__init__.py +0 -0
  209. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/services/atlan_storage.py +0 -0
  210. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/services/eventstore.py +0 -0
  211. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/services/secretstore.py +0 -0
  212. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/services/statestore.py +0 -0
  213. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/__init__.py +0 -0
  214. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/e2e/__init__.py +0 -0
  215. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/e2e/base.py +0 -0
  216. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/e2e/client.py +0 -0
  217. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/e2e/conftest.py +0 -0
  218. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/e2e/utils.py +0 -0
  219. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/__init__.py +0 -0
  220. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/__init__.py +0 -0
  221. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/clients/__init__.py +0 -0
  222. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/clients/sql.py +0 -0
  223. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/common/__init__.py +0 -0
  224. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/common/logger.py +0 -0
  225. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/handlers/__init__.py +0 -0
  226. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/__init__.py +0 -0
  227. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_metadata.py +0 -0
  228. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_preflight.py +0 -0
  229. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/inputs/__init__.py +0 -0
  230. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/inputs/json_input.py +0 -0
  231. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/inputs/parquet_input.py +0 -0
  232. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/outputs/__init__.py +0 -0
  233. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/outputs/json_output.py +0 -0
  234. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/outputs/statestore.py +0 -0
  235. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/server/__init__.py +0 -0
  236. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/server/fastapi/__init__.py +0 -0
  237. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/sql_client.py +0 -0
  238. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/hypothesis/strategies/temporal.py +0 -0
  239. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/README.md +0 -0
  240. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/__init__.py +0 -0
  241. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/config_loader.py +0 -0
  242. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/data_generator.py +0 -0
  243. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/driver.py +0 -0
  244. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/examples/config.yaml +0 -0
  245. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/output_handler/__init__.py +0 -0
  246. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/output_handler/base.py +0 -0
  247. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/output_handler/csv_handler.py +0 -0
  248. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/output_handler/json_handler.py +0 -0
  249. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/scale_data_generator/output_handler/parquet_handler.py +0 -0
  250. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/test_utils/workflow_monitoring.py +0 -0
  251. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/__init__.py +0 -0
  252. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/atlas/__init__.py +0 -0
  253. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/atlas/sql.py +0 -0
  254. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/common/__init__.py +0 -0
  255. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/common/utils.py +0 -0
  256. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/query/__init__.py +0 -0
  257. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/query/templates/column.yaml +0 -0
  258. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/query/templates/database.yaml +0 -0
  259. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/query/templates/extras-procedure.yaml +0 -0
  260. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/query/templates/function.yaml +0 -0
  261. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/query/templates/schema.yaml +0 -0
  262. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/query/templates/table.yaml +0 -0
  263. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/transformers/query/templates/tag_attachment.yaml +0 -0
  264. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/worker.py +0 -0
  265. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/workflows/.cursor/BUGBOT.md +0 -0
  266. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/workflows/__init__.py +0 -0
  267. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/workflows/metadata_extraction/__init__.py +0 -0
  268. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/workflows/metadata_extraction/sql.py +0 -0
  269. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/workflows/query_extraction/__init__.py +0 -0
  270. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/application_sdk/workflows/query_extraction/sql.py +0 -0
  271. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/components/README.md +0 -0
  272. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/components/atlan-storage.yaml +0 -0
  273. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/components/aws-secrets.yaml +0 -0
  274. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/components/configuration.yaml +0 -0
  275. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/components/deployment-secrets.yaml +0 -0
  276. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/components/eventstore.yaml +0 -0
  277. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/components/objectstore.yaml +0 -0
  278. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/components/secretstore.yaml +0 -0
  279. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/components/statestore.yaml +0 -0
  280. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/API.md +0 -0
  281. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/activities.md +0 -0
  282. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/application.md +0 -0
  283. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/application_sql.md +0 -0
  284. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/atlanupload.md +0 -0
  285. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/clients.md +0 -0
  286. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/common.md +0 -0
  287. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/handlers.md +0 -0
  288. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/inputs.md +0 -0
  289. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/mcp.md +0 -0
  290. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/output_paths.md +0 -0
  291. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/outputs.md +0 -0
  292. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/server.md +0 -0
  293. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/services.md +0 -0
  294. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/temporal_auth.md +0 -0
  295. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/worker.md +0 -0
  296. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/concepts/workflows.md +0 -0
  297. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/configuration.md +0 -0
  298. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/guides/architecture.md +0 -0
  299. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/guides/atlantis.md +0 -0
  300. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/guides/best-practices.md +0 -0
  301. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/guides/getting-started.md +0 -0
  302. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/guides/index.md +0 -0
  303. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/guides/partners.md +0 -0
  304. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/guides/secretstores.md +0 -0
  305. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/guides/sql-application-guide.md +0 -0
  306. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/guides/test-framework.md +0 -0
  307. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/index.md +0 -0
  308. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/setup/LINUX.md +0 -0
  309. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/setup/MAC.md +0 -0
  310. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/setup/WINDOWS.md +0 -0
  311. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/setup/troubleshooting.md +0 -0
  312. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/static/assets/logo.svg +0 -0
  313. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/static/images/phoenix-sdk-featureset.png +0 -0
  314. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/static/javascripts/mathjax.js +0 -0
  315. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/docs/static/stylesheets/extra.css +0 -0
  316. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/docs/mkdocs.yml +0 -0
  317. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/examples/README.md +0 -0
  318. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/examples/application_custom_fastapi.py +0 -0
  319. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/examples/application_fastapi.py +0 -0
  320. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/examples/application_hello_world.py +0 -0
  321. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/examples/application_sql.py +0 -0
  322. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/examples/application_sql_miner.py +0 -0
  323. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/examples/application_sql_with_custom_pyatlan_transformer.py +0 -0
  324. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/examples/application_sql_with_custom_transformer.py +0 -0
  325. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/examples/run_examples.py +0 -0
  326. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/examples/sql_query_templates/database.yaml +0 -0
  327. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/.cursor/BUGBOT.md +0 -0
  328. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/__init__.py +0 -0
  329. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/conftest.py +0 -0
  330. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/__init__.py +0 -0
  331. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/activities/__init__.py +0 -0
  332. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/activities/common/__init__.py +0 -0
  333. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/activities/common/test_utils.py +0 -0
  334. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/activities/metadata_extraction/__init__.py +0 -0
  335. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/activities/metadata_extraction/test_sql.py +0 -0
  336. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/activities/query_extraction/__init__.py +0 -0
  337. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/activities/test_lock_management.py +0 -0
  338. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/application/__init__.py +0 -0
  339. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/application/metadata_extraction/test_sql.py +0 -0
  340. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/application/test_application.py +0 -0
  341. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/clients/__init__.py +0 -0
  342. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/clients/test_async_sql_client.py +0 -0
  343. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/clients/test_atlan_auth.py +0 -0
  344. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/clients/test_atlan_client.py +0 -0
  345. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/clients/test_atlanauth.py +0 -0
  346. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/clients/test_base_client.py +0 -0
  347. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/clients/test_redis_client.py +0 -0
  348. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/clients/test_sql_client.py +0 -0
  349. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/clients/test_temporal_client.py +0 -0
  350. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/common/test_aws_utils.py +0 -0
  351. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/common/test_credential_utils.py +0 -0
  352. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/common/test_file_converter.py +0 -0
  353. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/common/test_utils.py +0 -0
  354. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/common/test_utils_file_discovery.py +0 -0
  355. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/decorators/__init__.py +0 -0
  356. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/decorators/test_mcp_tool.py +0 -0
  357. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/docgen/parsers/test_directory_parser.py +0 -0
  358. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/docgen/parsers/test_manifest_parser.py +0 -0
  359. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/handlers/__init__.py +0 -0
  360. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/handlers/sql/test_auth.py +0 -0
  361. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/handlers/sql/test_check_schemas_and_databases.py +0 -0
  362. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/handlers/sql/test_extract_allowed_schemas.py +0 -0
  363. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/handlers/sql/test_metadata.py +0 -0
  364. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/handlers/sql/test_preflight_check.py +0 -0
  365. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/handlers/sql/test_prepare_metadata.py +0 -0
  366. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/handlers/sql/test_tables_check.py +0 -0
  367. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/handlers/sql/test_validate_filters.py +0 -0
  368. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/handlers/test_base_handler.py +0 -0
  369. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/inputs/test_base_input.py +0 -0
  370. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/inputs/test_json.py +0 -0
  371. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/inputs/test_parquet.py +0 -0
  372. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/observability/__init__.py +0 -0
  373. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/observability/test_logger_adaptor.py +0 -0
  374. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/observability/test_metrics_adaptor.py +0 -0
  375. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/observability/test_traces_adaptor.py +0 -0
  376. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/outputs/test_iceberg.py +0 -0
  377. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/outputs/test_json_output.py +0 -0
  378. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/outputs/test_output.py +0 -0
  379. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/outputs/test_parquet_output.py +0 -0
  380. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/server/__init__.py +0 -0
  381. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/server/fastapi/routers/__init__.py +0 -0
  382. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/server/fastapi/routers/server.py +0 -0
  383. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/server/fastapi/test_fastapi.py +0 -0
  384. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/server/mcp/__init__.py +0 -0
  385. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/server/mcp/test_mcp_server.py +0 -0
  386. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/services/test_atlan_storage.py +0 -0
  387. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/services/test_eventstore.py +0 -0
  388. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/services/test_statestore.py +0 -0
  389. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/test_worker.py +0 -0
  390. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/__init__.py +0 -0
  391. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/__init__.py +0 -0
  392. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/raw_columns.json +0 -0
  393. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/raw_databases.json +0 -0
  394. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/raw_functions.json +0 -0
  395. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/raw_procedures.json +0 -0
  396. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/raw_schemas.json +0 -0
  397. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/raw_tables.json +0 -0
  398. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/transformed_columns.json +0 -0
  399. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/transformed_databases.json +0 -0
  400. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/transformed_functions.json +0 -0
  401. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/transformed_procedures.json +0 -0
  402. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/transformed_schemas.json +0 -0
  403. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/resources/transformed_tables.json +0 -0
  404. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/test_column.py +0 -0
  405. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/test_database.py +0 -0
  406. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/test_function.py +0 -0
  407. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/test_procedure.py +0 -0
  408. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/test_schema.py +0 -0
  409. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/atlas/test_table.py +0 -0
  410. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/raw/column.json +0 -0
  411. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/raw/database.json +0 -0
  412. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/raw/extras-procedure.json +0 -0
  413. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/raw/function.json +0 -0
  414. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/raw/schema.json +0 -0
  415. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/raw/table.json +0 -0
  416. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/transformed/column.json +0 -0
  417. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/transformed/database.json +0 -0
  418. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/transformed/extras-procedure.json +0 -0
  419. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/transformed/function.json +0 -0
  420. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/transformed/schema.json +0 -0
  421. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/resources/transformed/table.json +0 -0
  422. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/test_sql_transformer.py +0 -0
  423. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/transformers/query/test_sql_transformer_output_validation.py +0 -0
  424. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/workflows/metadata_extraction/test_sql_workflow.py +0 -0
  425. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/workflows/query_extraction/__init__.py +0 -0
  426. {atlan_application_sdk-1.0.2 → atlan_application_sdk-1.0.4}/tests/unit/workflows/query_extraction/test_sql.py +0 -0
@@ -0,0 +1,7 @@
1
+ ## v1.0.4 (December 11, 2025)
2
+
3
+ Full Changelog: https://github.com/atlanhq/application-sdk/compare/v1.0.3...v1.0.4
4
+
5
+ ### Bug Fixes
6
+
7
+ - add automatic gRPC message size limit handling for large file uploads (#878) (by @SanilK2108 in [4d76838](https://github.com/atlanhq/application-sdk/commit/4d76838))
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.0.4 (December 11, 2025)
4
+
5
+ Full Changelog: https://github.com/atlanhq/application-sdk/compare/v1.0.3...v1.0.4
6
+
7
+ ### Bug Fixes
8
+
9
+ - add automatic gRPC message size limit handling for large file uploads (#878) (by @SanilK2108 in [4d76838](https://github.com/atlanhq/application-sdk/commit/4d76838))
10
+
11
+
12
+ ## v1.0.3 (December 09, 2025)
13
+
14
+ Full Changelog: https://github.com/atlanhq/application-sdk/compare/v1.0.2...v1.0.3
15
+
16
+ ### Bug Fixes
17
+
18
+ - handle Azure Blob and GCP response formats in list_files method in objectstore service (#875) (by @hamza-atlan in [19d26a3](https://github.com/atlanhq/application-sdk/commit/19d26a3))
19
+ - error handling on connection failures (#877) (by @sachi-atlan in [8108186](https://github.com/atlanhq/application-sdk/commit/8108186))
20
+
21
+
3
22
  ## v1.0.2 (December 09, 2025)
4
23
 
5
24
  Full Changelog: https://github.com/atlanhq/application-sdk/compare/v1.0.1...v1.0.2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atlan-application-sdk
3
- Version: 1.0.2
3
+ Version: 1.0.4
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
@@ -151,6 +151,10 @@ class ActivitiesInterface(ABC, Generic[ActivitiesStateType]):
151
151
  )
152
152
  await self._clean_state()
153
153
  raise
154
+ except Exception as err:
155
+ logger.error(f"Error getting state: {str(err)}", exc_info=err)
156
+ await self._clean_state()
157
+ raise
154
158
 
155
159
  async def _clean_state(self):
156
160
  """Remove the state data for the current workflow.
@@ -85,7 +85,15 @@ class ObjectStore:
85
85
 
86
86
  # Extract paths based on response type
87
87
  if isinstance(file_list, list):
88
- paths = file_list
88
+ # Handle list format: strings OR Azure Blob/GCP dicts with "Name" field
89
+ paths = []
90
+ for item in file_list:
91
+ if isinstance(item, str):
92
+ paths.append(item)
93
+ elif isinstance(item, dict) and isinstance(item.get("Name"), str):
94
+ paths.append(item["Name"])
95
+ else:
96
+ logger.warning(f"Skipping invalid path entry: {item}")
89
97
  elif isinstance(file_list, dict) and "Contents" in file_list:
90
98
  paths = [item["Key"] for item in file_list["Contents"] if "Key" in item]
91
99
  elif isinstance(file_list, dict):
@@ -98,6 +106,7 @@ class ObjectStore:
98
106
  if not isinstance(path, str):
99
107
  logger.warning(f"Skipping non-string path: {path}")
100
108
  continue
109
+
101
110
  valid_list.append(
102
111
  path[path.find(prefix) :]
103
112
  if prefix and prefix in path
@@ -460,9 +469,35 @@ class ObjectStore:
460
469
  Exception: If there's an error with the Dapr binding operation.
461
470
  """
462
471
  try:
463
- with DaprClient(
464
- max_grpc_message_length=DAPR_MAX_GRPC_MESSAGE_LENGTH
465
- ) as client:
472
+ # Calculate data size (handle both bytes and str)
473
+ if isinstance(data, bytes):
474
+ data_size = len(data)
475
+ elif isinstance(data, str):
476
+ data_size = len(data.encode("utf-8"))
477
+ else:
478
+ data_size = 0
479
+
480
+ # Check if data size exceeds DAPR limit and log warning
481
+ if data_size > DAPR_MAX_GRPC_MESSAGE_LENGTH:
482
+ # gRPC adds overhead (headers, metadata, etc.) to messages
483
+ # Add a buffer of 5% or at least 1KB to account for this overhead
484
+ grpc_overhead_buffer = max(int(data_size * 0.05), 1024)
485
+ required_max_length = data_size + grpc_overhead_buffer
486
+ logger.warning(
487
+ f"Data size ({data_size:,} bytes / {data_size / (1024 * 1024):.2f}MB) "
488
+ f"exceeds DAPR_MAX_GRPC_MESSAGE_LENGTH ({DAPR_MAX_GRPC_MESSAGE_LENGTH:,} bytes / "
489
+ f"{DAPR_MAX_GRPC_MESSAGE_LENGTH / (1024 * 1024):.2f}MB). "
490
+ f"Increasing max_grpc_message_length to {required_max_length:,} bytes "
491
+ f"(data size + {grpc_overhead_buffer:,} bytes overhead buffer). "
492
+ f"This may cause issues with Dapr gRPC communication."
493
+ )
494
+ # Set max_grpc_message_length to accommodate the data size plus gRPC overhead
495
+ max_message_length = required_max_length
496
+ else:
497
+ # Data is within limit, use default DAPR limit
498
+ max_message_length = DAPR_MAX_GRPC_MESSAGE_LENGTH
499
+
500
+ with DaprClient(max_grpc_message_length=max_message_length) as client:
466
501
  response = client.invoke_binding(
467
502
  binding_name=store_name,
468
503
  operation=operation,
@@ -2,4 +2,4 @@
2
2
  Version information for the application_sdk package.
3
3
  """
4
4
 
5
- __version__ = "1.0.2"
5
+ __version__ = "1.0.4"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "atlan-application-sdk"
3
- version = "1.0.2"
3
+ version = "1.0.4"
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 = [
@@ -299,3 +299,68 @@ class TestMockActivities:
299
299
  state = await mock_activities._get_state(workflow_args)
300
300
  assert state.handler is not None
301
301
  assert isinstance(state.handler, MockHandler)
302
+
303
+
304
+ class MockActivitiesImplementation(ActivitiesInterface):
305
+ """Minimal concrete implementation for testing base methods."""
306
+
307
+ pass
308
+
309
+
310
+ class TestActivitiesInterfaceErrorHandling:
311
+ """Test error handling in ActivitiesInterface."""
312
+
313
+ @pytest.fixture
314
+ def activities(self):
315
+ return MockActivitiesImplementation()
316
+
317
+ @patch("application_sdk.activities.get_workflow_id")
318
+ async def test_get_state_cleans_up_on_general_exception(
319
+ self, mock_get_workflow_id, activities
320
+ ):
321
+ """Test that _get_state cleans up state if _set_state raises a general Exception."""
322
+ workflow_id = "wf-1"
323
+ mock_get_workflow_id.return_value = workflow_id
324
+
325
+ # Simulate the state being "dirty" (entry created) before _set_state fails.
326
+ async def set_state_side_effect(workflow_args):
327
+ activities._state[workflow_id] = ActivitiesState()
328
+ raise Exception("DB Connection Failed")
329
+
330
+ with patch.object(
331
+ activities, "_set_state", side_effect=set_state_side_effect
332
+ ) as mock_set_state:
333
+ # Ensure state is empty initially
334
+ assert workflow_id not in activities._state
335
+
336
+ # Call _get_state, expect exception re-raised
337
+ with pytest.raises(Exception, match="DB Connection Failed"):
338
+ await activities._get_state({})
339
+
340
+ # Verify state was cleaned up (entry removed)
341
+ assert workflow_id not in activities._state
342
+ mock_set_state.assert_called_once()
343
+
344
+ @patch("application_sdk.activities.get_workflow_id")
345
+ async def test_get_state_cleans_up_on_orchestrator_error(
346
+ self, mock_get_workflow_id, activities
347
+ ):
348
+ """Test that _get_state cleans up state if _set_state raises OrchestratorError."""
349
+ workflow_id = "wf-2"
350
+ mock_get_workflow_id.return_value = workflow_id
351
+
352
+ from application_sdk.common.error_codes import OrchestratorError
353
+
354
+ async def set_state_side_effect(workflow_args):
355
+ activities._state[workflow_id] = ActivitiesState()
356
+ raise OrchestratorError(
357
+ OrchestratorError.ORCHESTRATOR_CLIENT_ACTIVITY_ERROR.code,
358
+ "Orchestrator Fail",
359
+ )
360
+
361
+ with patch.object(activities, "_set_state", side_effect=set_state_side_effect):
362
+ with pytest.raises(Exception) as excinfo:
363
+ await activities._get_state({})
364
+
365
+ assert isinstance(excinfo.value, OrchestratorError)
366
+ assert workflow_id not in activities._state
@@ -4,6 +4,7 @@ from unittest.mock import AsyncMock, MagicMock, mock_open, patch
4
4
 
5
5
  import pytest
6
6
 
7
+ from application_sdk.constants import DAPR_MAX_GRPC_MESSAGE_LENGTH
7
8
  from application_sdk.services.objectstore import ObjectStore
8
9
 
9
10
 
@@ -301,6 +302,123 @@ class TestObjectStore:
301
302
 
302
303
  assert result is None
303
304
 
305
+ @patch("application_sdk.services.objectstore.DaprClient")
306
+ @patch("application_sdk.services.objectstore.logger")
307
+ async def test_invoke_dapr_binding_with_large_data_warning(
308
+ self, mock_logger: MagicMock, mock_dapr_client: MagicMock
309
+ ) -> None:
310
+ """Test that a warning is logged when data size exceeds DAPR_MAX_GRPC_MESSAGE_LENGTH."""
311
+
312
+ mock_client = MagicMock()
313
+ mock_response = MagicMock()
314
+ mock_response.data = b"response data"
315
+ mock_client.invoke_binding.return_value = mock_response
316
+ mock_dapr_client.return_value.__enter__.return_value = mock_client
317
+
318
+ # Create data that exceeds the DAPR limit
319
+ large_data = b"x" * (DAPR_MAX_GRPC_MESSAGE_LENGTH + 1)
320
+
321
+ result = await ObjectStore._invoke_dapr_binding(
322
+ operation="create",
323
+ metadata={"key": "test"},
324
+ data=large_data,
325
+ )
326
+
327
+ # Verify warning was logged
328
+ mock_logger.warning.assert_called_once()
329
+ warning_call = mock_logger.warning.call_args[0][0]
330
+ assert "exceeds DAPR_MAX_GRPC_MESSAGE_LENGTH" in warning_call
331
+ assert f"{DAPR_MAX_GRPC_MESSAGE_LENGTH + 1:,}" in warning_call
332
+
333
+ # Verify DaprClient was called with increased max_grpc_message_length
334
+ # With 5% buffer: (DAPR_MAX_GRPC_MESSAGE_LENGTH + 1) + 5% of (DAPR_MAX_GRPC_MESSAGE_LENGTH + 1)
335
+ mock_dapr_client.assert_called_once()
336
+ call_kwargs = mock_dapr_client.call_args[1]
337
+ expected_data_size = DAPR_MAX_GRPC_MESSAGE_LENGTH + 1
338
+ expected_buffer = max(
339
+ int(expected_data_size * 0.05), 1024
340
+ ) # 5% buffer, min 1KB
341
+ expected_max_length = expected_data_size + expected_buffer
342
+ assert call_kwargs["max_grpc_message_length"] == expected_max_length
343
+
344
+ # Verify the binding was invoked
345
+ mock_client.invoke_binding.assert_called_once()
346
+ assert result == b"response data"
347
+
348
+ @patch("application_sdk.services.objectstore.DaprClient")
349
+ @patch("application_sdk.services.objectstore.logger")
350
+ async def test_invoke_dapr_binding_with_small_data_no_warning(
351
+ self, mock_logger: MagicMock, mock_dapr_client: MagicMock
352
+ ) -> None:
353
+ """Test that no warning is logged when data size is within DAPR_MAX_GRPC_MESSAGE_LENGTH."""
354
+ from application_sdk.constants import DAPR_MAX_GRPC_MESSAGE_LENGTH
355
+
356
+ mock_client = MagicMock()
357
+ mock_response = MagicMock()
358
+ mock_response.data = b"response data"
359
+ mock_client.invoke_binding.return_value = mock_response
360
+ mock_dapr_client.return_value.__enter__.return_value = mock_client
361
+
362
+ # Create data that is within the DAPR limit
363
+ small_data = b"x" * (DAPR_MAX_GRPC_MESSAGE_LENGTH - 1000)
364
+
365
+ result = await ObjectStore._invoke_dapr_binding(
366
+ operation="create",
367
+ metadata={"key": "test"},
368
+ data=small_data,
369
+ )
370
+
371
+ # Verify no warning was logged
372
+ mock_logger.warning.assert_not_called()
373
+
374
+ # Verify DaprClient was called with default max_grpc_message_length
375
+ mock_dapr_client.assert_called_once()
376
+ call_kwargs = mock_dapr_client.call_args[1]
377
+ assert call_kwargs["max_grpc_message_length"] == DAPR_MAX_GRPC_MESSAGE_LENGTH
378
+
379
+ # Verify the binding was invoked
380
+ mock_client.invoke_binding.assert_called_once()
381
+ assert result == b"response data"
382
+
383
+ @patch("application_sdk.services.objectstore.DaprClient")
384
+ @patch("application_sdk.services.objectstore.logger")
385
+ async def test_invoke_dapr_binding_with_string_data(
386
+ self, mock_logger: MagicMock, mock_dapr_client: MagicMock
387
+ ) -> None:
388
+ """Test that string data is properly handled and size is calculated correctly."""
389
+ from application_sdk.constants import DAPR_MAX_GRPC_MESSAGE_LENGTH
390
+
391
+ mock_client = MagicMock()
392
+ mock_response = MagicMock()
393
+ mock_response.data = b"response data"
394
+ mock_client.invoke_binding.return_value = mock_response
395
+ mock_dapr_client.return_value.__enter__.return_value = mock_client
396
+
397
+ # Create a string that when encoded exceeds the DAPR limit
398
+ # Each character in UTF-8 is typically 1 byte, but we'll use a large string
399
+ large_string = "x" * (DAPR_MAX_GRPC_MESSAGE_LENGTH + 1)
400
+
401
+ result = await ObjectStore._invoke_dapr_binding(
402
+ operation="create",
403
+ metadata={"key": "test"},
404
+ data=large_string,
405
+ )
406
+
407
+ # Verify warning was logged
408
+ mock_logger.warning.assert_called_once()
409
+
410
+ # Verify DaprClient was called with increased max_grpc_message_length
411
+ mock_dapr_client.assert_called_once()
412
+ call_kwargs = mock_dapr_client.call_args[1]
413
+ # The encoded string size should be accounted for
414
+ assert (
415
+ call_kwargs["max_grpc_message_length"] >= DAPR_MAX_GRPC_MESSAGE_LENGTH + 1
416
+ )
417
+
418
+ # Verify the binding was invoked
419
+ mock_client.invoke_binding.assert_called_once()
420
+ assert result == b"response data"
421
+
304
422
  # @patch("application_sdk.services.objectstore.ObjectStore.list_files", new_callable=AsyncMock)
305
423
  # @patch("application_sdk.services.objectstore.ObjectStore._download_file", new_callable=AsyncMock)
306
424
  # async def test_download_directory_success(
@@ -312,3 +430,140 @@ class TestObjectStore:
312
430
  # destination="/tmp",
313
431
  # )
314
432
  # assert mock_download_file.await_count == 2
433
+
434
+ @pytest.mark.parametrize(
435
+ "response_json, prefix, expected_paths",
436
+ [
437
+ # 1: Standard List of Strings
438
+ (["file1.txt", "sub/file2.txt"], "", ["file1.txt", "sub/file2.txt"]),
439
+ # 2: AWS S3 Format (Dict with Contents)
440
+ (
441
+ {"Contents": [{"Key": "s3-file.txt"}, {"Key": "folder/s3-file2.txt"}]},
442
+ "",
443
+ ["s3-file.txt", "folder/s3-file2.txt"],
444
+ ),
445
+ # 3: Azure/GCP Format (List of Dicts with "Name")
446
+ (
447
+ [
448
+ {"Name": "az-blob.txt", "etag": "123"},
449
+ {"Name": "folder/az-blob2.txt"},
450
+ {"Name": "folder/gcs.parquet"},
451
+ ],
452
+ "",
453
+ ["az-blob.txt", "folder/az-blob2.txt", "folder/gcs.parquet"],
454
+ ),
455
+ # 4: Generic Wrapper "files"
456
+ ({"files": ["generic1.txt"]}, "", ["generic1.txt"]),
457
+ # 5: Generic Wrapper "keys"
458
+ ({"keys": ["key1.txt"]}, "", ["key1.txt"]),
459
+ # 6: Mixed Invalid Types (Integers, None, Boolean)
460
+ (
461
+ ["valid.txt", 123, None, True, "valid2.txt"],
462
+ "",
463
+ ["valid.txt", "valid2.txt"],
464
+ ),
465
+ # 7: Malformed Dictionaries (Missing "Name")
466
+ (
467
+ [{"Name": "valid.txt"}, {"etag": "no-name"}, {"size": 500}],
468
+ "",
469
+ ["valid.txt"],
470
+ ),
471
+ # 8: Dict with non-string "Name" value (None, int, nested dict)
472
+ (
473
+ [
474
+ {"Name": "valid.txt"},
475
+ {"Name": None},
476
+ {"Name": 123},
477
+ {"Name": {"nested": "dict"}},
478
+ {},
479
+ ],
480
+ "",
481
+ ["valid.txt"],
482
+ ),
483
+ # 9: S3 Items Missing "Key" (Filtered by list comprehension)
484
+ (
485
+ {"Contents": [{"Key": "good.txt"}, {"Size": 500}]},
486
+ "",
487
+ ["good.txt"],
488
+ ),
489
+ # 10: Unknown Structure (Empty Fallback)
490
+ ({"random": "data"}, "", []),
491
+ # 11: Prefix Slicing (Prefix Exists in Path)
492
+ # Logic: Returns substring starting from prefix
493
+ (
494
+ ["root/my-folder/image.png"],
495
+ "my-folder",
496
+ ["my-folder/image.png"],
497
+ ),
498
+ # 12: Prefix Fallback (Prefix NOT in Path)
499
+ # Logic: Returns os.path.basename if prefix is provided but not found
500
+ (
501
+ ["other-location/image.png"],
502
+ "my-folder/",
503
+ ["image.png"],
504
+ ),
505
+ # 13: No Prefix Provided
506
+ # Logic: Returns full original path
507
+ (
508
+ ["/full/path/to/file.txt"],
509
+ "",
510
+ ["/full/path/to/file.txt"],
511
+ ),
512
+ ],
513
+ )
514
+ @patch("application_sdk.services.objectstore.ObjectStore._invoke_dapr_binding")
515
+ async def test_list_files_parsing_and_logic(
516
+ self,
517
+ mock_invoke: AsyncMock,
518
+ response_json,
519
+ prefix,
520
+ expected_paths,
521
+ ) -> None:
522
+ """
523
+ 1. JSON Structure parsing (List vs Dict vs S3 vs Azure)
524
+ 2. Item validation (Skipping invalid types)
525
+ 3. Prefix path transformation logic
526
+ """
527
+ # Arrange
528
+ import orjson
529
+
530
+ mock_invoke.return_value = orjson.dumps(response_json)
531
+
532
+ # Act
533
+ result = await ObjectStore.list_files(prefix=prefix)
534
+
535
+ # Assert
536
+ assert result == expected_paths
537
+ mock_invoke.assert_called_once()
538
+
539
+ @patch("application_sdk.services.objectstore.ObjectStore._invoke_dapr_binding")
540
+ async def test_list_files_empty_response(self, mock_invoke: AsyncMock) -> None:
541
+ """14: Test handling of empty/None response from Dapr."""
542
+ # Arrange: simulate empty byte response
543
+ mock_invoke.return_value = b""
544
+
545
+ # Act
546
+ result = await ObjectStore.list_files(prefix="test")
547
+
548
+ # Assert
549
+ assert result == []
550
+
551
+ @patch("application_sdk.services.objectstore.ObjectStore._invoke_dapr_binding")
552
+ async def test_list_files_malformed_json(self, mock_invoke: AsyncMock) -> None:
553
+ """15: Test handling of corrupt JSON response."""
554
+ # Arrange: simulate invalid JSON
555
+ mock_invoke.return_value = b"{invalid-json..."
556
+
557
+ # Act & Assert
558
+ with pytest.raises(Exception): # Expecting JSONDecodeError wrapped or raised
559
+ await ObjectStore.list_files(prefix="test")
560
+
561
+ @patch("application_sdk.services.objectstore.ObjectStore._invoke_dapr_binding")
562
+ async def test_list_files_binding_failure(self, mock_invoke: AsyncMock) -> None:
563
+ """16: Test handling of Dapr binding exception."""
564
+ # Arrange
565
+ mock_invoke.side_effect = Exception("Network Error")
566
+
567
+ # Act & Assert
568
+ with pytest.raises(Exception, match="Network Error"):
569
+ await ObjectStore.list_files(prefix="test")
@@ -182,7 +182,7 @@ wheels = [
182
182
 
183
183
  [[package]]
184
184
  name = "atlan-application-sdk"
185
- version = "1.0.2"
185
+ version = "1.0.4"
186
186
  source = { editable = "." }
187
187
  dependencies = [
188
188
  { name = "aiohttp" },
@@ -1,7 +0,0 @@
1
- ## v1.0.2 (December 09, 2025)
2
-
3
- Full Changelog: https://github.com/atlanhq/application-sdk/compare/v1.0.1...v1.0.2
4
-
5
- ### Bug Fixes
6
-
7
- - release version bump (#871) (by @inishchith in [0cf4305](https://github.com/atlanhq/application-sdk/commit/0cf4305))