atlan-application-sdk 0.1.1rc21__tar.gz → 0.1.1rc22__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 (369) hide show
  1. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/actions/e2e-examples/action.yaml +1 -0
  2. atlan_application_sdk-0.1.1rc22/.github/release_notes.md +11 -0
  3. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/CHANGELOG.md +13 -0
  4. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/PKG-INFO +2 -2
  5. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/activities/__init__.py +17 -3
  6. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/activities/common/utils.py +29 -0
  7. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/activities/metadata_extraction/sql.py +2 -2
  8. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/activities/query_extraction/sql.py +2 -2
  9. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/clients/temporal.py +5 -4
  10. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/common/credential_utils.py +3 -1
  11. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/common/utils.py +0 -34
  12. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/constants.py +23 -5
  13. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/inputs/objectstore.py +5 -0
  14. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/inputs/secretstore.py +39 -27
  15. atlan_application_sdk-0.1.1rc22/application_sdk/inputs/statestore.py +98 -0
  16. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/observability/logger_adaptor.py +12 -3
  17. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/observability/metrics_adaptor.py +5 -3
  18. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/observability/observability.py +10 -8
  19. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/observability/traces_adaptor.py +2 -2
  20. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/observability/utils.py +22 -0
  21. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/outputs/objectstore.py +2 -0
  22. atlan_application_sdk-0.1.1rc22/application_sdk/outputs/secretstore.py +38 -0
  23. atlan_application_sdk-0.1.1rc22/application_sdk/outputs/statestore.py +109 -0
  24. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/server/fastapi/__init__.py +19 -8
  25. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/server/fastapi/models.py +3 -11
  26. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/e2e/__init__.py +0 -3
  27. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/version.py +1 -1
  28. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/workflows/metadata_extraction/sql.py +0 -4
  29. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/workflows/query_extraction/sql.py +0 -5
  30. atlan_application_sdk-0.1.1rc22/docs/docs/concepts/output_paths.md +143 -0
  31. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/configuration.md +0 -1
  32. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/guides/getting-started.md +5 -0
  33. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/guides/test-framework.md +1 -1
  34. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/pyproject.toml +2 -2
  35. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/activities/test_activities.py +23 -8
  36. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/clients/test_temporal_client.py +20 -9
  37. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/common/test_credential_utils.py +40 -10
  38. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/common/test_utils.py +1 -48
  39. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/observability/test_metrics_adaptor.py +0 -1
  40. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/observability/test_traces_adaptor.py +0 -1
  41. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/outputs/test_objectstore.py +4 -2
  42. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/outputs/test_statestore.py +7 -62
  43. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/workflows/query_extraction/test_sql.py +2 -4
  44. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/uv.lock +498 -381
  45. atlan_application_sdk-0.1.1rc21/.github/release_notes.md +0 -12
  46. atlan_application_sdk-0.1.1rc21/application_sdk/inputs/statestore.py +0 -66
  47. atlan_application_sdk-0.1.1rc21/application_sdk/outputs/secretstore.py +0 -29
  48. atlan_application_sdk-0.1.1rc21/application_sdk/outputs/statestore.py +0 -55
  49. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.cursor/rules/documentation.mdc +0 -0
  50. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.cursor/rules/guidelines.mdc +0 -0
  51. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.cursor/rules/logging.mdc +0 -0
  52. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.cursor/rules/setup.mdc +0 -0
  53. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.cursor/rules/standards.mdc +0 -0
  54. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.cursor/rules/testing.mdc +0 -0
  55. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.env.example +0 -0
  56. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/CODEOWNERS +0 -0
  57. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  58. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
  59. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  60. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/actions/docgen/action.yaml +0 -0
  61. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/actions/doclint/action.yaml +0 -0
  62. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/actions/docstring-coverage/action.yaml +0 -0
  63. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/actions/e2e-apps/action.yaml +0 -0
  64. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/actions/setup-deps/action.yaml +0 -0
  65. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/actions/sync-branches/action.yaml +0 -0
  66. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/actions/trivy/action.yaml +0 -0
  67. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/actions/trivy-container/action.yaml +0 -0
  68. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/actions/unit-tests/action.yaml +0 -0
  69. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/dependabot.yaml +0 -0
  70. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/pull_request_template.md +0 -0
  71. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/scripts/extract_release_notes.py +0 -0
  72. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/scripts/pre_release.py +0 -0
  73. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/scripts/release.py +0 -0
  74. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/scripts/trivy-to-markdown.py +0 -0
  75. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/scripts/update_changelog.py +0 -0
  76. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/AMPM.yml +0 -0
  77. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Accessibility.yml +0 -0
  78. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Acronyms.yml +0 -0
  79. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Adverbs.yml +0 -0
  80. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Auto.yml +0 -0
  81. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Avoid.yml +0 -0
  82. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Contractions.yml +0 -0
  83. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Dashes.yml +0 -0
  84. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/DateFormat.yml +0 -0
  85. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/DateNumbers.yml +0 -0
  86. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/DateOrder.yml +0 -0
  87. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Ellipses.yml +0 -0
  88. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/FirstPerson.yml +0 -0
  89. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Foreign.yml +0 -0
  90. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Gender.yml +0 -0
  91. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/GenderBias.yml +0 -0
  92. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/GeneralURL.yml +0 -0
  93. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/HeadingAcronyms.yml +0 -0
  94. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/HeadingColons.yml +0 -0
  95. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/HeadingPunctuation.yml +0 -0
  96. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Headings.yml +0 -0
  97. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Hyphens.yml +0 -0
  98. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Negative.yml +0 -0
  99. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Ordinal.yml +0 -0
  100. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/OxfordComma.yml +0 -0
  101. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Passive.yml +0 -0
  102. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Percentages.yml +0 -0
  103. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Plurals.yml +0 -0
  104. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Quotes.yml +0 -0
  105. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/RangeTime.yml +0 -0
  106. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Semicolon.yml +0 -0
  107. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/SentenceLength.yml +0 -0
  108. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Spacing.yml +0 -0
  109. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Suspended.yml +0 -0
  110. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Terms.yml +0 -0
  111. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/URLFormat.yml +0 -0
  112. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Units.yml +0 -0
  113. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Vocab.yml +0 -0
  114. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/We.yml +0 -0
  115. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/Wordiness.yml +0 -0
  116. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/Microsoft/meta.json +0 -0
  117. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/config/vocabularies/deviations/accept.txt +0 -0
  118. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/styles/config/vocabularies/deviations/reject.txt +0 -0
  119. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/checks.properties.json +0 -0
  120. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/checks.yaml +0 -0
  121. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/codeql.properties.json +0 -0
  122. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/codeql.yaml +0 -0
  123. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/dependency-review.properties.json +0 -0
  124. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/dependency-review.yml +0 -0
  125. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/stale.properties.json +0 -0
  126. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/stale.yml +0 -0
  127. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/trivy-container.properties.json +0 -0
  128. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/trivy-container.yaml +0 -0
  129. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/trivy.properties.json +0 -0
  130. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflow-templates/trivy.yaml +0 -0
  131. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflows/codeql.yaml +0 -0
  132. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflows/pre-release.yaml +0 -0
  133. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflows/pull_request.yaml +0 -0
  134. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflows/push.yaml +0 -0
  135. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflows/release.yaml.disabled +0 -0
  136. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflows/scale-tests.yaml +0 -0
  137. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflows/schedule.yaml +0 -0
  138. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflows/tag-and-publish.yaml +0 -0
  139. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.github/workflows/trivy-container.yaml +0 -0
  140. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.gitignore +0 -0
  141. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.pre-commit-config.yaml +0 -0
  142. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/.vscode/launch.json +0 -0
  143. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/CODE_OF_CONDUCT.md +0 -0
  144. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/CONTRIBUTING.md +0 -0
  145. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/LICENSE +0 -0
  146. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/NOTICE +0 -0
  147. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/README.md +0 -0
  148. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/SECURITY.md +0 -0
  149. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/__init__.py +0 -0
  150. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/activities/common/__init__.py +0 -0
  151. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/activities/common/models.py +0 -0
  152. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/activities/metadata_extraction/__init__.py +0 -0
  153. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/activities/metadata_extraction/rest.py +0 -0
  154. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/activities/query_extraction/__init__.py +0 -0
  155. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/application/__init__.py +0 -0
  156. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/application/metadata_extraction/sql.py +0 -0
  157. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/clients/__init__.py +0 -0
  158. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/clients/sql.py +0 -0
  159. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/clients/utils.py +0 -0
  160. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/clients/workflow.py +0 -0
  161. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/common/__init__.py +0 -0
  162. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/common/aws_utils.py +0 -0
  163. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/common/dataframe_utils.py +0 -0
  164. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/common/error_codes.py +0 -0
  165. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/__init__.py +0 -0
  166. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/exporters/__init__.py +0 -0
  167. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/exporters/mkdocs.py +0 -0
  168. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/models/__init__.py +0 -0
  169. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/models/export/__init__.py +0 -0
  170. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/models/export/page.py +0 -0
  171. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/models/manifest/__init__.py +0 -0
  172. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/models/manifest/customer.py +0 -0
  173. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/models/manifest/internal.py +0 -0
  174. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/models/manifest/metadata.py +0 -0
  175. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/models/manifest/page.py +0 -0
  176. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/models/manifest/section.py +0 -0
  177. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/parsers/__init__.py +0 -0
  178. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/parsers/directory.py +0 -0
  179. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/docgen/parsers/manifest.py +0 -0
  180. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/handlers/__init__.py +0 -0
  181. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/handlers/sql.py +0 -0
  182. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/inputs/__init__.py +0 -0
  183. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/inputs/iceberg.py +0 -0
  184. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/inputs/json.py +0 -0
  185. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/inputs/parquet.py +0 -0
  186. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/inputs/sql_query.py +0 -0
  187. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/observability/__init__.py +0 -0
  188. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/observability/decorators/observability_decorator.py +0 -0
  189. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/outputs/__init__.py +0 -0
  190. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/outputs/eventstore.py +0 -0
  191. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/outputs/iceberg.py +0 -0
  192. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/outputs/json.py +0 -0
  193. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/outputs/parquet.py +0 -0
  194. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/server/__init__.py +0 -0
  195. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/server/fastapi/middleware/logmiddleware.py +0 -0
  196. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/server/fastapi/middleware/metrics.py +0 -0
  197. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/server/fastapi/routers/__init__.py +0 -0
  198. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/server/fastapi/routers/server.py +0 -0
  199. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/server/fastapi/utils.py +0 -0
  200. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/__init__.py +0 -0
  201. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/e2e/base.py +0 -0
  202. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/e2e/client.py +0 -0
  203. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/e2e/conftest.py +0 -0
  204. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/e2e/utils.py +0 -0
  205. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/__init__.py +0 -0
  206. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/__init__.py +0 -0
  207. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/clients/__init__.py +0 -0
  208. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/clients/sql.py +0 -0
  209. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/common/__init__.py +0 -0
  210. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/common/logger.py +0 -0
  211. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/handlers/__init__.py +0 -0
  212. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/__init__.py +0 -0
  213. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_metadata.py +0 -0
  214. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_preflight.py +0 -0
  215. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/inputs/__init__.py +0 -0
  216. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/inputs/json_input.py +0 -0
  217. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/outputs/__init__.py +0 -0
  218. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/outputs/json_output.py +0 -0
  219. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/outputs/statestore.py +0 -0
  220. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/server/__init__.py +0 -0
  221. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/server/fastapi/__init__.py +0 -0
  222. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/sql_client.py +0 -0
  223. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/hypothesis/strategies/temporal.py +0 -0
  224. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/README.md +0 -0
  225. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/__init__.py +0 -0
  226. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/config_loader.py +0 -0
  227. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/data_generator.py +0 -0
  228. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/driver.py +0 -0
  229. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/examples/config.yaml +0 -0
  230. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/output_handler/__init__.py +0 -0
  231. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/output_handler/base.py +0 -0
  232. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/output_handler/csv_handler.py +0 -0
  233. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/output_handler/json_handler.py +0 -0
  234. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/scale_data_generator/output_handler/parquet_handler.py +0 -0
  235. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/test_utils/workflow_monitoring.py +0 -0
  236. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/__init__.py +0 -0
  237. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/atlas/__init__.py +0 -0
  238. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/atlas/sql.py +0 -0
  239. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/common/__init__.py +0 -0
  240. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/common/utils.py +0 -0
  241. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/query/__init__.py +0 -0
  242. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/query/templates/column.yaml +0 -0
  243. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/query/templates/database.yaml +0 -0
  244. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/query/templates/extras-procedure.yaml +0 -0
  245. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/query/templates/function.yaml +0 -0
  246. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/query/templates/schema.yaml +0 -0
  247. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/query/templates/table.yaml +0 -0
  248. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/transformers/query/templates/tag_attachment.yaml +0 -0
  249. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/worker.py +0 -0
  250. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/workflows/__init__.py +0 -0
  251. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/workflows/metadata_extraction/__init__.py +0 -0
  252. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/application_sdk/workflows/query_extraction/__init__.py +0 -0
  253. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/components/README.md +0 -0
  254. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/components/aws-secrets.yaml +0 -0
  255. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/components/eventstore.yaml +0 -0
  256. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/components/objectstore.yaml +0 -0
  257. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/components/secretstore.yaml +0 -0
  258. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/components/statestore.yaml +0 -0
  259. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/activities.md +0 -0
  260. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/application.md +0 -0
  261. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/application_sql.md +0 -0
  262. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/clients.md +0 -0
  263. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/common.md +0 -0
  264. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/handlers.md +0 -0
  265. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/inputs.md +0 -0
  266. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/outputs.md +0 -0
  267. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/server.md +0 -0
  268. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/worker.md +0 -0
  269. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/concepts/workflows.md +0 -0
  270. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/guides/architecture.md +0 -0
  271. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/guides/atlantis.md +0 -0
  272. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/guides/best-practices.md +0 -0
  273. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/guides/index.md +0 -0
  274. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/guides/partners.md +0 -0
  275. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/guides/secretstores.md +0 -0
  276. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/guides/sql-application-guide.md +0 -0
  277. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/index.md +0 -0
  278. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/setup/LINUX.md +0 -0
  279. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/setup/MAC.md +0 -0
  280. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/setup/WINDOWS.md +0 -0
  281. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/setup/troubleshooting.md +0 -0
  282. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/static/assets/logo.svg +0 -0
  283. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/static/images/phoenix-sdk-featureset.png +0 -0
  284. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/static/javascripts/mathjax.js +0 -0
  285. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/docs/static/stylesheets/extra.css +0 -0
  286. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/docs/mkdocs.yml +0 -0
  287. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/examples/README.md +0 -0
  288. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/examples/application_custom_fastapi.py +0 -0
  289. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/examples/application_fastapi.py +0 -0
  290. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/examples/application_hello_world.py +0 -0
  291. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/examples/application_sql.py +0 -0
  292. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/examples/application_sql_miner.py +0 -0
  293. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/examples/application_sql_with_custom_pyatlan_transformer.py +0 -0
  294. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/examples/application_sql_with_custom_transformer.py +0 -0
  295. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/examples/run_examples.py +0 -0
  296. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/examples/sql_query_templates/database.yaml +0 -0
  297. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/__init__.py +0 -0
  298. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/__init__.py +0 -0
  299. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/activities/__init__.py +0 -0
  300. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/activities/common/__init__.py +0 -0
  301. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/activities/common/test_utils.py +0 -0
  302. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/activities/metadata_extraction/__init__.py +0 -0
  303. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/activities/metadata_extraction/test_sql.py +0 -0
  304. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/activities/query_extraction/__init__.py +0 -0
  305. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/application/__init__.py +0 -0
  306. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/application/metadata_extraction/test_sql.py +0 -0
  307. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/application/test_application.py +0 -0
  308. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/clients/__init__.py +0 -0
  309. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/clients/test_async_sql_client.py +0 -0
  310. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/clients/test_sql_client.py +0 -0
  311. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/common/test_aws_utils.py +0 -0
  312. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/docgen/parsers/test_directory_parser.py +0 -0
  313. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/docgen/parsers/test_manifest_parser.py +0 -0
  314. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/handlers/__init__.py +0 -0
  315. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/handlers/sql/test_auth.py +0 -0
  316. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/handlers/sql/test_check_schemas_and_databases.py +0 -0
  317. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/handlers/sql/test_extract_allowed_schemas.py +0 -0
  318. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/handlers/sql/test_metadata.py +0 -0
  319. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/handlers/sql/test_preflight_check.py +0 -0
  320. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/handlers/sql/test_prepare_metadata.py +0 -0
  321. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/handlers/sql/test_tables_check.py +0 -0
  322. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/handlers/sql/test_validate_filters.py +0 -0
  323. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/inputs/test_json.py +0 -0
  324. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/observability/__init__.py +0 -0
  325. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/observability/test_logger_adaptor.py +0 -0
  326. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/outputs/test_iceberg.py +0 -0
  327. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/outputs/test_json_output.py +0 -0
  328. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/outputs/test_output.py +0 -0
  329. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/server/__init__.py +0 -0
  330. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/server/fastapi/routers/__init__.py +0 -0
  331. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/server/fastapi/routers/server.py +0 -0
  332. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/server/fastapi/test_fastapi.py +0 -0
  333. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/test_worker.py +0 -0
  334. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/__init__.py +0 -0
  335. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/__init__.py +0 -0
  336. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/raw_columns.json +0 -0
  337. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/raw_databases.json +0 -0
  338. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/raw_functions.json +0 -0
  339. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/raw_procedures.json +0 -0
  340. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/raw_schemas.json +0 -0
  341. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/raw_tables.json +0 -0
  342. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/transformed_columns.json +0 -0
  343. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/transformed_databases.json +0 -0
  344. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/transformed_functions.json +0 -0
  345. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/transformed_procedures.json +0 -0
  346. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/transformed_schemas.json +0 -0
  347. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/resources/transformed_tables.json +0 -0
  348. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/test_column.py +0 -0
  349. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/test_database.py +0 -0
  350. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/test_function.py +0 -0
  351. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/test_procedure.py +0 -0
  352. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/test_schema.py +0 -0
  353. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/atlas/test_table.py +0 -0
  354. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/raw/column.json +0 -0
  355. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/raw/database.json +0 -0
  356. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/raw/extras-procedure.json +0 -0
  357. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/raw/function.json +0 -0
  358. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/raw/schema.json +0 -0
  359. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/raw/table.json +0 -0
  360. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/transformed/column.json +0 -0
  361. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/transformed/database.json +0 -0
  362. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/transformed/extras-procedure.json +0 -0
  363. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/transformed/function.json +0 -0
  364. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/transformed/schema.json +0 -0
  365. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/resources/transformed/table.json +0 -0
  366. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/test_sql_transformer.py +0 -0
  367. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/transformers/query/test_sql_transformer_output_validation.py +0 -0
  368. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/workflows/metadata_extraction/test_sql.py +0 -0
  369. {atlan_application_sdk-0.1.1rc21 → atlan_application_sdk-0.1.1rc22}/tests/unit/workflows/query_extraction/__init__.py +0 -0
@@ -125,6 +125,7 @@ runs:
125
125
  SNOWFLAKE_ACCOUNT_ID: ${{ inputs.snowflake-account-id }}
126
126
  SNOWFLAKE_USER: ${{ inputs.snowflake-user }}
127
127
  SNOWFLAKE_PASSWORD: ${{ inputs.snowflake-password }}
128
+ ATLAN_LOCAL_DEVELOPMENT: true
128
129
  run: |
129
130
  cd examples
130
131
  uv run run_examples.py
@@ -0,0 +1,11 @@
1
+ ## v0.1.1rc22 (July 21, 2025)
2
+
3
+ Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc21...v0.1.1rc22
4
+
5
+ ### Features
6
+
7
+ - use object store as state store, path update and fixes (#618) (by @Nishchith Shetty in [d439cb4](https://github.com/atlanhq/application-sdk/commit/d439cb4))
8
+
9
+ ### Bug Fixes
10
+
11
+ - suppress daft dependency loggers (#611) (by @Nishchith Shetty in [3e379d4](https://github.com/atlanhq/application-sdk/commit/3e379d4))
@@ -1,6 +1,19 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## v0.1.1rc22 (July 21, 2025)
5
+
6
+ Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc21...v0.1.1rc22
7
+
8
+ ### Features
9
+
10
+ - use object store as state store, path update and fixes (#618) (by @Nishchith Shetty in [d439cb4](https://github.com/atlanhq/application-sdk/commit/d439cb4))
11
+
12
+ ### Bug Fixes
13
+
14
+ - suppress daft dependency loggers (#611) (by @Nishchith Shetty in [3e379d4](https://github.com/atlanhq/application-sdk/commit/3e379d4))
15
+
16
+
4
17
  ## v0.1.1rc21 (July 10, 2025)
5
18
 
6
19
  Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc20...v0.1.1rc21
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atlan-application-sdk
3
- Version: 0.1.1rc21
3
+ Version: 0.1.1rc22
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
@@ -25,7 +25,7 @@ Requires-Dist: fastapi[standard]>=0.115.0
25
25
  Requires-Dist: loguru>=0.7.3
26
26
  Requires-Dist: opentelemetry-exporter-otlp>=1.27.0
27
27
  Requires-Dist: psutil>=7.0.0
28
- Requires-Dist: pyatlan==7.1.1
28
+ Requires-Dist: pyatlan>=7.1.1
29
29
  Requires-Dist: pydantic>=2.10.6
30
30
  Requires-Dist: python-dotenv>=1.1.0
31
31
  Requires-Dist: uvloop>=0.21.0; sys_platform != 'win32'
@@ -13,16 +13,22 @@ Example:
13
13
  ... await state.handler.do_something()
14
14
  """
15
15
 
16
+ import os
16
17
  from abc import ABC
17
18
  from typing import Any, Dict, Generic, Optional, TypeVar
18
19
 
19
20
  from pydantic import BaseModel
20
21
  from temporalio import activity
21
22
 
22
- from application_sdk.activities.common.utils import auto_heartbeater, get_workflow_id
23
+ from application_sdk.activities.common.utils import (
24
+ auto_heartbeater,
25
+ build_output_path,
26
+ get_workflow_id,
27
+ )
23
28
  from application_sdk.common.error_codes import OrchestratorError
29
+ from application_sdk.constants import TEMPORARY_PATH
24
30
  from application_sdk.handlers import HandlerInterface
25
- from application_sdk.inputs.statestore import StateStoreInput
31
+ from application_sdk.inputs.statestore import StateStoreInput, StateType
26
32
  from application_sdk.observability.logger_adaptor import get_logger
27
33
 
28
34
  logger = get_logger(__name__)
@@ -183,7 +189,15 @@ class ActivitiesInterface(ABC, Generic[ActivitiesStateType]):
183
189
 
184
190
  try:
185
191
  # This already handles the Dapr call internally
186
- return StateStoreInput.extract_configuration(workflow_id)
192
+ workflow_args = StateStoreInput.get_state(workflow_id, StateType.WORKFLOWS)
193
+ workflow_args["output_prefix"] = workflow_args.get(
194
+ "output_prefix", TEMPORARY_PATH
195
+ )
196
+ workflow_args["output_path"] = os.path.join(
197
+ workflow_args["output_prefix"], build_output_path()
198
+ )
199
+ return workflow_args
200
+
187
201
  except Exception as e:
188
202
  logger.error(
189
203
  f"Failed to retrieve workflow configuration for {workflow_id}: {str(e)}",
@@ -11,6 +11,7 @@ from typing import Any, Awaitable, Callable, Optional, TypeVar, cast
11
11
 
12
12
  from temporalio import activity
13
13
 
14
+ from application_sdk.constants import APPLICATION_NAME, WORKFLOW_OUTPUT_PATH_TEMPLATE
14
15
  from application_sdk.observability.logger_adaptor import get_logger
15
16
 
16
17
  logger = get_logger(__name__)
@@ -43,6 +44,34 @@ def get_workflow_id() -> str:
43
44
  raise Exception("Failed to get workflow id")
44
45
 
45
46
 
47
+ def get_workflow_run_id() -> str:
48
+ """Get the workflow run ID from the current activity."""
49
+ try:
50
+ return activity.info().workflow_run_id
51
+ except Exception as e:
52
+ logger.error("Failed to get workflow run id", exc_info=e)
53
+ raise Exception("Failed to get workflow run id")
54
+
55
+
56
+ def build_output_path() -> str:
57
+ """Build a standardized output path for workflow artifacts.
58
+
59
+ This method creates a consistent output path format across all workflows using the WORKFLOW_OUTPUT_PATH_TEMPLATE constant.
60
+
61
+ Returns:
62
+ str: The standardized output path.
63
+
64
+ Example:
65
+ >>> build_output_path()
66
+ "artifacts/apps/appName/workflows/wf-123/run-456"
67
+ """
68
+ return WORKFLOW_OUTPUT_PATH_TEMPLATE.format(
69
+ application_name=APPLICATION_NAME,
70
+ workflow_id=get_workflow_id(),
71
+ run_id=get_workflow_run_id(),
72
+ )
73
+
74
+
46
75
  def auto_heartbeater(fn: F) -> F:
47
76
  """Decorator that automatically sends heartbeats during activity execution.
48
77
 
@@ -137,8 +137,8 @@ class BaseSQLMetadataExtractionActivities(ActivitiesInterface):
137
137
  self._state[workflow_id].handler = handler
138
138
 
139
139
  if "credential_guid" in workflow_args:
140
- credentials = SecretStoreInput.extract_credentials(
141
- workflow_args["credential_guid"]
140
+ credentials = await SecretStoreInput.fetch_secret(
141
+ secret_key=workflow_args["credential_guid"]
142
142
  )
143
143
  await sql_client.load(credentials)
144
144
 
@@ -128,8 +128,8 @@ class SQLQueryExtractionActivities(ActivitiesInterface):
128
128
  workflow_id = get_workflow_id()
129
129
  sql_client = self.sql_client_class()
130
130
  if "credential_guid" in workflow_args:
131
- credentials = SecretStoreInput.extract_credentials(
132
- workflow_args["credential_guid"]
131
+ credentials = await SecretStoreInput.fetch_secret(
132
+ secret_key=workflow_args["credential_guid"]
133
133
  )
134
134
  await sql_client.load(credentials)
135
135
 
@@ -28,6 +28,7 @@ from application_sdk.constants import (
28
28
  WORKFLOW_NAMESPACE,
29
29
  WORKFLOW_PORT,
30
30
  )
31
+ from application_sdk.inputs.statestore import StateType
31
32
  from application_sdk.observability.logger_adaptor import get_logger
32
33
  from application_sdk.outputs.eventstore import (
33
34
  ApplicationEventNames,
@@ -312,13 +313,12 @@ class TemporalWorkflowClient(WorkflowClient):
312
313
  """
313
314
  if "credentials" in workflow_args:
314
315
  # remove credentials from workflow_args and add reference to credentials
315
- workflow_args["credential_guid"] = SecretStoreOutput.store_credentials(
316
+ workflow_args["credential_guid"] = await SecretStoreOutput.save_secret(
316
317
  workflow_args["credentials"]
317
318
  )
318
319
  del workflow_args["credentials"]
319
320
 
320
321
  workflow_id = workflow_args.get("workflow_id")
321
- output_prefix = workflow_args.get("output_prefix", "/tmp/output")
322
322
  if not workflow_id:
323
323
  # if workflow_id is not provided, create a new one
324
324
  workflow_id = workflow_args.get("argo_workflow_name", str(uuid.uuid4()))
@@ -327,11 +327,12 @@ class TemporalWorkflowClient(WorkflowClient):
327
327
  {
328
328
  "application_name": self.application_name,
329
329
  "workflow_id": workflow_id,
330
- "output_prefix": output_prefix,
331
330
  }
332
331
  )
333
332
 
334
- StateStoreOutput.store_configuration(workflow_id, workflow_args)
333
+ await StateStoreOutput.save_state_object(
334
+ id=workflow_id, value=workflow_args, type=StateType.WORKFLOWS
335
+ )
335
336
 
336
337
  logger.info(f"Created workflow config with ID: {workflow_id}")
337
338
 
@@ -43,7 +43,9 @@ async def resolve_credentials(credentials: Dict[str, Any]) -> Dict[str, Any]:
43
43
  )
44
44
 
45
45
  # Fetch and apply secret using SecretStoreInput
46
- secret_data = await SecretStoreInput.fetch_secret(credential_source, secret_key)
46
+ secret_data = await SecretStoreInput.fetch_secret(
47
+ secret_key=secret_key, component_name=credential_source
48
+ )
47
49
  return SecretStoreInput.apply_secret_values(credentials, secret_data)
48
50
 
49
51
  except Exception as e:
@@ -18,9 +18,7 @@ from typing import (
18
18
  )
19
19
 
20
20
  from application_sdk.common.error_codes import CommonError
21
- from application_sdk.inputs.statestore import StateStoreInput
22
21
  from application_sdk.observability.logger_adaptor import get_logger
23
- from application_sdk.outputs.statestore import StateStoreOutput
24
22
 
25
23
  logger = get_logger(__name__)
26
24
 
@@ -268,38 +266,6 @@ def normalize_filters(
268
266
  return normalized_filter_list
269
267
 
270
268
 
271
- def get_workflow_config(config_id: str) -> Dict[str, Any]:
272
- """Gets the workflow configuration from the state store using config id.
273
-
274
- Args:
275
- config_id: The configuration ID to retrieve.
276
-
277
- Returns:
278
- dict: The workflow configuration.
279
- """
280
- return StateStoreInput.extract_configuration(config_id)
281
-
282
-
283
- def update_workflow_config(config_id: str, config: Dict[str, Any]) -> Dict[str, Any]:
284
- """Updates the workflow configuration.
285
-
286
- Args:
287
- config_id: The configuration ID to update.
288
- config: The new configuration dictionary.
289
-
290
- Returns:
291
- dict: The updated workflow configuration.
292
- """
293
- extracted_config = get_workflow_config(config_id)
294
-
295
- for key in extracted_config.keys():
296
- if key in config and config[key] is not None:
297
- extracted_config[key] = config[key]
298
-
299
- StateStoreOutput.store_configuration(config_id, extracted_config)
300
- return extracted_config
301
-
302
-
303
269
  def read_sql_files(
304
270
  queries_prefix: str = f"{os.path.dirname(os.path.abspath(__file__))}/queries",
305
271
  ) -> Dict[str, str]:
@@ -44,6 +44,28 @@ APP_DASHBOARD_PORT = int(os.getenv("ATLAN_APP_DASHBOARD_PORT", "8000"))
44
44
  SQL_SERVER_MIN_VERSION = os.getenv("ATLAN_SQL_SERVER_MIN_VERSION")
45
45
  #: Path to the SQL queries directory
46
46
  SQL_QUERIES_PATH = os.getenv("ATLAN_SQL_QUERIES_PATH", "app/sql")
47
+ #: Whether to use local development mode (used for instance to fetch secrets from the local state store)
48
+ LOCAL_DEVELOPMENT = os.getenv("ATLAN_LOCAL_DEVELOPMENT", "false").lower() == "true"
49
+
50
+
51
+ # Output Path Constants
52
+ #: Output path format for workflows (example: objectstore://bucket/artifacts/apps/{application_name}/workflows/{workflow_id}/{workflow_run_id})
53
+ WORKFLOW_OUTPUT_PATH_TEMPLATE = (
54
+ "artifacts/apps/{application_name}/workflows/{workflow_id}/{run_id}"
55
+ )
56
+
57
+ # Temporary Path (used to store intermediate files)
58
+ TEMPORARY_PATH = os.getenv("ATLAN_TEMPORARY_PATH", "./local/tmp/")
59
+
60
+ # State Store Constants
61
+ #: Path template for state store files (example: objectstore://bucket/persistent-artifacts/apps/{application_name}/{state_type}/{id}/config.json)
62
+ STATE_STORE_PATH_TEMPLATE = (
63
+ "persistent-artifacts/apps/{application_name}/{state_type}/{id}/config.json"
64
+ )
65
+
66
+ # Observability Constants
67
+ #: Directory for storing observability data
68
+ OBSERVABILITY_DIR = "artifacts/apps/{application_name}/observability"
47
69
 
48
70
  # Workflow Client Constants
49
71
  #: Host address for the Temporal server
@@ -87,6 +109,7 @@ OBJECT_STORE_NAME = os.getenv("OBJECT_STORE_NAME", "objectstore")
87
109
  #: Name of the pubsub component in DAPR
88
110
  EVENT_STORE_NAME = os.getenv("EVENT_STORE_NAME", "eventstore")
89
111
 
112
+
90
113
  # Logger Constants
91
114
  #: Log level for the application (DEBUG, INFO, WARNING, ERROR, CRITICAL)
92
115
  LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper()
@@ -120,10 +143,6 @@ OTEL_QUEUE_SIZE = int(os.getenv("OTEL_QUEUE_SIZE", "2048"))
120
143
  #: AWS Session Name
121
144
  AWS_SESSION_NAME = os.getenv("AWS_SESSION_NAME", "temp-session")
122
145
 
123
- # Observability Constants
124
- #: Directory for storing observability data
125
- OBSERVABILITY_DIR = os.environ.get("ATLAN_OBSERVABILITY_DIR", "/tmp/observability")
126
-
127
146
  # Log batching configuration
128
147
  LOG_BATCH_SIZE = int(os.environ.get("ATLAN_LOG_BATCH_SIZE", 100))
129
148
  LOG_FLUSH_INTERVAL_SECONDS = int(os.environ.get("ATLAN_LOG_FLUSH_INTERVAL_SECONDS", 10))
@@ -133,7 +152,6 @@ LOG_RETENTION_DAYS = int(os.environ.get("ATLAN_LOG_RETENTION_DAYS", 30))
133
152
  LOG_CLEANUP_ENABLED = bool(os.environ.get("ATLAN_LOG_CLEANUP_ENABLED", False))
134
153
 
135
154
  # Log Location configuration
136
- LOG_DIR = os.environ.get("ATLAN_LOG_DIR", "/tmp/observability")
137
155
  LOG_FILE_NAME = os.environ.get("ATLAN_LOG_FILE_NAME", "log.parquet")
138
156
  # Hive Partitioning Configuration
139
157
  ENABLE_HIVE_PARTITIONING = (
@@ -88,11 +88,16 @@ class ObjectStoreInput:
88
88
 
89
89
  Args:
90
90
  download_file_prefix (str): The base path to calculate relative paths from.
91
+ example: /tmp/output
91
92
  file_path (str): The full path to where the file should be downloaded.
93
+ example: /tmp/output/persistent-artifacts/apps/myapp/data/wf-123/state.json
92
94
 
93
95
  Raises:
94
96
  Exception: If there's an error downloading the file from the object store.
95
97
  """
98
+ if not os.path.exists(os.path.dirname(file_path)):
99
+ os.makedirs(os.path.dirname(file_path), exist_ok=True)
100
+
96
101
  with DaprClient() as client:
97
102
  relative_path = os.path.relpath(file_path, download_file_prefix)
98
103
  metadata = {"key": relative_path, "fileName": relative_path}
@@ -7,7 +7,8 @@ from typing import Any, Dict
7
7
 
8
8
  from dapr.clients import DaprClient
9
9
 
10
- from application_sdk.inputs.statestore import StateStoreInput
10
+ from application_sdk.constants import LOCAL_DEVELOPMENT, SECRET_STORE_NAME
11
+ from application_sdk.inputs.statestore import StateStoreInput, StateType
11
12
  from application_sdk.observability.logger_adaptor import get_logger
12
13
 
13
14
  logger = get_logger(__name__)
@@ -15,7 +16,34 @@ logger = get_logger(__name__)
15
16
 
16
17
  class SecretStoreInput:
17
18
  @classmethod
18
- async def fetch_secret(cls, component_name: str, secret_key: str) -> Dict[str, Any]:
19
+ def get_secret(
20
+ cls, secret_key: str, component_name: str = SECRET_STORE_NAME
21
+ ) -> Dict[str, Any]:
22
+ """Get secret from the Dapr component.
23
+
24
+ Args:
25
+ secret_key: Key of the secret to fetch
26
+ component_name: Name of the Dapr component to fetch from
27
+
28
+ Returns:
29
+ Dict with processed secret data
30
+ """
31
+ try:
32
+ with DaprClient() as client:
33
+ dapr_secret_object = client.get_secret(
34
+ store_name=component_name, key=secret_key
35
+ )
36
+ return cls._process_secret_data(dapr_secret_object.secret)
37
+ except Exception as e:
38
+ logger.error(
39
+ f"Failed to fetch secret using component {component_name}: {str(e)}"
40
+ )
41
+ raise
42
+
43
+ @classmethod
44
+ async def fetch_secret(
45
+ cls, secret_key: str, component_name: str = SECRET_STORE_NAME
46
+ ) -> Dict[str, Any]:
19
47
  """Fetch secret using the Dapr component.
20
48
 
21
49
  Args:
@@ -29,9 +57,15 @@ class SecretStoreInput:
29
57
  Exception: If secret fetching fails
30
58
  """
31
59
  try:
32
- with DaprClient() as client:
33
- secret = client.get_secret(store_name=component_name, key=secret_key)
34
- return cls._process_secret_data(secret.secret)
60
+ secret = {}
61
+ if not LOCAL_DEVELOPMENT:
62
+ secret = cls.get_secret(secret_key, component_name)
63
+
64
+ credential_config = StateStoreInput.get_state(
65
+ secret_key, StateType.CREDENTIALS
66
+ )
67
+ secret.update(credential_config)
68
+ return secret
35
69
  except Exception as e:
36
70
  logger.error(
37
71
  f"Failed to fetch secret using component {component_name}: {str(e)}"
@@ -93,25 +127,3 @@ class SecretStoreInput:
93
127
  result_data["extra"][key] = secret_data[value]
94
128
 
95
129
  return result_data
96
-
97
- @classmethod
98
- def extract_credentials(cls, credential_guid: str) -> Dict[str, Any]:
99
- """Extract credentials from the state store using the credential GUID.
100
-
101
- Args:
102
- credential_guid: The unique identifier for the credentials.
103
-
104
- Returns:
105
- Dict[str, Any]: The credentials if found.
106
-
107
- Raises:
108
- ValueError: If the credential_guid is invalid or credentials are not found.
109
- Exception: If there's an error with the Dapr client operations.
110
-
111
- Examples:
112
- >>> SecretStoreInput.extract_credentials("1234567890")
113
- {"username": "admin", "password": "password"}
114
- """
115
- if not credential_guid:
116
- raise ValueError("Invalid credential GUID provided.")
117
- return StateStoreInput.get_state(f"credential_{credential_guid}")
@@ -0,0 +1,98 @@
1
+ """State store for the application."""
2
+
3
+ import json
4
+ import os
5
+ from enum import Enum
6
+ from typing import Any, Dict
7
+
8
+ from temporalio import activity
9
+
10
+ from application_sdk.constants import (
11
+ APPLICATION_NAME,
12
+ STATE_STORE_PATH_TEMPLATE,
13
+ TEMPORARY_PATH,
14
+ )
15
+ from application_sdk.inputs.objectstore import ObjectStoreInput
16
+ from application_sdk.observability.logger_adaptor import get_logger
17
+
18
+ logger = get_logger(__name__)
19
+ activity.logger = logger
20
+
21
+
22
+ class StateType(Enum):
23
+ WORKFLOWS = "workflows"
24
+ CREDENTIALS = "credentials"
25
+
26
+ @classmethod
27
+ def is_member(cls, type: str) -> bool:
28
+ return type in cls._value2member_map_
29
+
30
+
31
+ def build_state_store_path(id: str, state_type: StateType) -> str:
32
+ """Build the state file path for the given id and type.
33
+
34
+ Args:
35
+ id: The unique identifier for the state.
36
+ state_type: The type of state (workflows, credentials, etc.).
37
+
38
+ Returns:
39
+ str: The constructed state file path.
40
+
41
+ Example:
42
+ >>> build_state_store_path("wf-123", "workflows")
43
+ 'persistent-artifacts/apps/my-app/workflows/wf-123/config.json'
44
+ """
45
+ return STATE_STORE_PATH_TEMPLATE.format(
46
+ application_name=APPLICATION_NAME, state_type=state_type.value, id=id
47
+ )
48
+
49
+
50
+ class StateStoreInput:
51
+ @classmethod
52
+ def get_state(cls, id: str, type: StateType) -> Dict[str, Any]:
53
+ """Get state from the store.
54
+
55
+ Args:
56
+ id: The key to retrieve the state for.
57
+ type: The type of state to retrieve.
58
+
59
+ Returns:
60
+ Dict[str, Any]: The retrieved state data.
61
+
62
+ Raises:
63
+ ValueError: If no state is found for the given key.
64
+ IOError: If there's an error with the Dapr client operations.
65
+
66
+ Example:
67
+ >>> from application_sdk.inputs.statestore import StateStoreInput
68
+
69
+ >>> state = StateStoreInput.get_state("wf-123")
70
+ >>> print(state)
71
+ {'test': 'test'}
72
+ """
73
+
74
+ state_file_path = build_state_store_path(id, type)
75
+ state = {}
76
+
77
+ try:
78
+ local_state_file_path = os.path.join(TEMPORARY_PATH, state_file_path)
79
+ ObjectStoreInput.download_file_from_object_store(
80
+ download_file_prefix=TEMPORARY_PATH,
81
+ file_path=local_state_file_path,
82
+ )
83
+
84
+ with open(local_state_file_path, "r") as file:
85
+ state = json.load(file)
86
+
87
+ except Exception as e:
88
+ # local error message is "file not found", while in object store it is "object not found"
89
+ if "not found" in str(e).lower():
90
+ logger.debug(
91
+ f"No state found for {type.value} with id '{id}', returning empty dict"
92
+ )
93
+ pass
94
+ else:
95
+ logger.error(f"Failed to extract state: {str(e)}")
96
+ raise
97
+
98
+ return state
@@ -24,7 +24,6 @@ from application_sdk.constants import (
24
24
  LOG_FLUSH_INTERVAL_SECONDS,
25
25
  LOG_LEVEL,
26
26
  LOG_RETENTION_DAYS,
27
- OBSERVABILITY_DIR,
28
27
  OTEL_BATCH_DELAY_MS,
29
28
  OTEL_BATCH_SIZE,
30
29
  OTEL_EXPORTER_OTLP_ENDPOINT,
@@ -36,7 +35,10 @@ from application_sdk.constants import (
36
35
  SERVICE_VERSION,
37
36
  )
38
37
  from application_sdk.observability.observability import AtlanObservability
39
- from application_sdk.observability.utils import get_workflow_context
38
+ from application_sdk.observability.utils import (
39
+ get_observability_dir,
40
+ get_workflow_context,
41
+ )
40
42
 
41
43
 
42
44
  class LogExtraModel(BaseModel):
@@ -200,6 +202,13 @@ logging.basicConfig(
200
202
  level=logging.getLevelNamesMapping()[LOG_LEVEL], handlers=[InterceptHandler()]
201
203
  )
202
204
 
205
+ DEPENDENCY_LOGGERS = ["daft_io.stats", "tracing.span"]
206
+
207
+ # Configure external dependency loggers to reduce noise
208
+ for logger_name in DEPENDENCY_LOGGERS:
209
+ logging.getLogger(logger_name).setLevel(logging.WARNING)
210
+
211
+
203
212
  # Add these constants
204
213
  SEVERITY_MAPPING = {
205
214
  "DEBUG": SeverityNumber.DEBUG,
@@ -245,7 +254,7 @@ class AtlanLoggerAdapter(AtlanObservability[LogRecordModel]):
245
254
  flush_interval=LOG_FLUSH_INTERVAL_SECONDS,
246
255
  retention_days=LOG_RETENTION_DAYS,
247
256
  cleanup_enabled=LOG_CLEANUP_ENABLED,
248
- data_dir=OBSERVABILITY_DIR,
257
+ data_dir=get_observability_dir(),
249
258
  file_name=LOG_FILE_NAME,
250
259
  )
251
260
  self.logger_name = logger_name
@@ -19,7 +19,6 @@ from application_sdk.constants import (
19
19
  METRICS_FILE_NAME,
20
20
  METRICS_FLUSH_INTERVAL_SECONDS,
21
21
  METRICS_RETENTION_DAYS,
22
- OBSERVABILITY_DIR,
23
22
  OTEL_BATCH_DELAY_MS,
24
23
  OTEL_EXPORTER_OTLP_ENDPOINT,
25
24
  OTEL_EXPORTER_TIMEOUT_SECONDS,
@@ -30,7 +29,10 @@ from application_sdk.constants import (
30
29
  )
31
30
  from application_sdk.observability.logger_adaptor import get_logger
32
31
  from application_sdk.observability.observability import AtlanObservability
33
- from application_sdk.observability.utils import get_workflow_context
32
+ from application_sdk.observability.utils import (
33
+ get_observability_dir,
34
+ get_workflow_context,
35
+ )
34
36
 
35
37
 
36
38
  class MetricType(Enum):
@@ -165,7 +167,7 @@ class AtlanMetricsAdapter(AtlanObservability[MetricRecord]):
165
167
  flush_interval=METRICS_FLUSH_INTERVAL_SECONDS,
166
168
  retention_days=METRICS_RETENTION_DAYS,
167
169
  cleanup_enabled=METRICS_CLEANUP_ENABLED,
168
- data_dir=OBSERVABILITY_DIR,
170
+ data_dir=get_observability_dir(),
169
171
  file_name=METRICS_FILE_NAME,
170
172
  )
171
173
 
@@ -20,10 +20,11 @@ from application_sdk.constants import (
20
20
  LOG_FILE_NAME,
21
21
  METRICS_FILE_NAME,
22
22
  OBJECT_STORE_NAME,
23
- OBSERVABILITY_DIR,
24
23
  STATE_STORE_NAME,
24
+ TEMPORARY_PATH,
25
25
  TRACES_FILE_NAME,
26
26
  )
27
+ from application_sdk.observability.utils import get_observability_dir
27
28
 
28
29
 
29
30
  class LogRecord(BaseModel):
@@ -440,8 +441,8 @@ class AtlanObservability(Generic[T], ABC):
440
441
  with open(parquet_path, "rb") as f:
441
442
  file_content = f.read()
442
443
  metadata = {
443
- "key": os.path.relpath(parquet_path, self.data_dir),
444
- "blobName": os.path.relpath(parquet_path, self.data_dir),
444
+ "key": os.path.relpath(parquet_path, TEMPORARY_PATH),
445
+ "blobName": os.path.relpath(parquet_path, TEMPORARY_PATH),
445
446
  "fileName": os.path.basename(parquet_path),
446
447
  }
447
448
  with DaprClient() as client:
@@ -614,9 +615,10 @@ class AtlanObservability(Generic[T], ABC):
614
615
  class DuckDBUI:
615
616
  """Class to handle DuckDB UI functionality."""
616
617
 
617
- def __init__(self, db_path="/tmp/observability/observability.db"):
618
+ def __init__(self):
618
619
  """Initialize the DuckDB UI handler."""
619
- self.db_path = db_path
620
+ self.observability_dir = get_observability_dir()
621
+ self.db_path = self.observability_dir + "/observability.db"
620
622
  self._duckdb_ui_con = None
621
623
 
622
624
  def _is_duckdb_ui_running(self, host="0.0.0.0", port=4213):
@@ -628,10 +630,10 @@ class DuckDBUI:
628
630
  result = sock.connect_ex((host, port))
629
631
  return result == 0
630
632
 
631
- def start_ui(self, db_path=OBSERVABILITY_DIR):
633
+ def start_ui(self):
632
634
  """Start DuckDB UI and create views for Hive partitioned parquet files."""
633
635
  if not self._is_duckdb_ui_running():
634
- os.makedirs(OBSERVABILITY_DIR, exist_ok=True)
636
+ os.makedirs(self.observability_dir, exist_ok=True)
635
637
  con = duckdb.connect(self.db_path)
636
638
 
637
639
  def process_partitioned_files(directory, prefix=""):
@@ -660,7 +662,7 @@ class DuckDBUI:
660
662
 
661
663
  # Process each type of data
662
664
  for data_type in ["logs", "metrics", "traces"]:
663
- data_dir = os.path.join(OBSERVABILITY_DIR, data_type)
665
+ data_dir = os.path.join(self.observability_dir, data_type)
664
666
  if os.path.exists(data_dir):
665
667
  process_partitioned_files(data_dir, data_type)
666
668