atlan-application-sdk 0.1.1rc25__tar.gz → 0.1.1rc26__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 (379) hide show
  1. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.cursor/BUGBOT.md +9 -2
  2. atlan_application_sdk-0.1.1rc26/.cursor/rules/exception-handling.mdc +198 -0
  3. atlan_application_sdk-0.1.1rc26/.cursor/rules/performance.mdc +294 -0
  4. atlan_application_sdk-0.1.1rc26/.github/release_notes.md +11 -0
  5. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/CHANGELOG.md +13 -0
  6. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/PKG-INFO +1 -1
  7. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/utils.py +34 -9
  8. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/handlers/sql.py +8 -5
  9. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/version.py +1 -1
  10. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/pyproject.toml +1 -1
  11. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/common/test_utils.py +36 -0
  12. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_check_schemas_and_databases.py +47 -0
  13. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/uv.lock +1 -1
  14. atlan_application_sdk-0.1.1rc25/.github/release_notes.md +0 -7
  15. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/documentation.mdc +0 -0
  16. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/guidelines.mdc +0 -0
  17. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/logging.mdc +0 -0
  18. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/setup.mdc +0 -0
  19. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/standards.mdc +0 -0
  20. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/testing.mdc +0 -0
  21. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.env.example +0 -0
  22. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/CODEOWNERS +0 -0
  23. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  24. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
  25. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  26. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/actions/docgen/action.yaml +0 -0
  27. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/actions/doclint/action.yaml +0 -0
  28. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/actions/docstring-coverage/action.yaml +0 -0
  29. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/actions/e2e-apps/action.yaml +0 -0
  30. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/actions/e2e-examples/action.yaml +0 -0
  31. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/actions/setup-deps/action.yaml +0 -0
  32. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/actions/sync-branches/action.yaml +0 -0
  33. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/actions/trivy/action.yaml +0 -0
  34. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/actions/trivy-container/action.yaml +0 -0
  35. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/actions/unit-tests/action.yaml +0 -0
  36. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/dependabot.yaml +0 -0
  37. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/pull_request_template.md +0 -0
  38. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/scripts/extract_release_notes.py +0 -0
  39. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/scripts/pre_release.py +0 -0
  40. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/scripts/release.py +0 -0
  41. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/scripts/trivy-to-markdown.py +0 -0
  42. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/scripts/update_changelog.py +0 -0
  43. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/AMPM.yml +0 -0
  44. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Accessibility.yml +0 -0
  45. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Acronyms.yml +0 -0
  46. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Adverbs.yml +0 -0
  47. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Auto.yml +0 -0
  48. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Avoid.yml +0 -0
  49. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Contractions.yml +0 -0
  50. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Dashes.yml +0 -0
  51. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/DateFormat.yml +0 -0
  52. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/DateNumbers.yml +0 -0
  53. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/DateOrder.yml +0 -0
  54. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Ellipses.yml +0 -0
  55. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/FirstPerson.yml +0 -0
  56. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Foreign.yml +0 -0
  57. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Gender.yml +0 -0
  58. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/GenderBias.yml +0 -0
  59. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/GeneralURL.yml +0 -0
  60. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/HeadingAcronyms.yml +0 -0
  61. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/HeadingColons.yml +0 -0
  62. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/HeadingPunctuation.yml +0 -0
  63. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Headings.yml +0 -0
  64. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Hyphens.yml +0 -0
  65. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Negative.yml +0 -0
  66. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Ordinal.yml +0 -0
  67. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/OxfordComma.yml +0 -0
  68. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Passive.yml +0 -0
  69. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Percentages.yml +0 -0
  70. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Plurals.yml +0 -0
  71. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Quotes.yml +0 -0
  72. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/RangeTime.yml +0 -0
  73. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Semicolon.yml +0 -0
  74. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/SentenceLength.yml +0 -0
  75. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Spacing.yml +0 -0
  76. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Suspended.yml +0 -0
  77. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Terms.yml +0 -0
  78. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/URLFormat.yml +0 -0
  79. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Units.yml +0 -0
  80. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Vocab.yml +0 -0
  81. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/We.yml +0 -0
  82. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Wordiness.yml +0 -0
  83. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/meta.json +0 -0
  84. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/config/vocabularies/deviations/accept.txt +0 -0
  85. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/styles/config/vocabularies/deviations/reject.txt +0 -0
  86. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/checks.properties.json +0 -0
  87. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/checks.yaml +0 -0
  88. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/codeql.properties.json +0 -0
  89. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/codeql.yaml +0 -0
  90. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/dependency-review.properties.json +0 -0
  91. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/dependency-review.yml +0 -0
  92. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/stale.properties.json +0 -0
  93. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/stale.yml +0 -0
  94. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/trivy-container.properties.json +0 -0
  95. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/trivy-container.yaml +0 -0
  96. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/trivy.properties.json +0 -0
  97. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/trivy.yaml +0 -0
  98. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflows/codeql.yaml +0 -0
  99. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflows/pre-release.yaml +0 -0
  100. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflows/pull_request.yaml +0 -0
  101. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflows/push.yaml +0 -0
  102. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflows/release.yaml.disabled +0 -0
  103. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflows/scale-tests.yaml +0 -0
  104. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflows/schedule.yaml +0 -0
  105. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflows/tag-and-publish.yaml +0 -0
  106. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.github/workflows/trivy-container.yaml +0 -0
  107. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.gitignore +0 -0
  108. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.pre-commit-config.yaml +0 -0
  109. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/.vscode/launch.json +0 -0
  110. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/CODE_OF_CONDUCT.md +0 -0
  111. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/CONTRIBUTING.md +0 -0
  112. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/LICENSE +0 -0
  113. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/NOTICE +0 -0
  114. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/README.md +0 -0
  115. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/SECURITY.md +0 -0
  116. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/__init__.py +0 -0
  117. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/__init__.py +0 -0
  118. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/common/__init__.py +0 -0
  119. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/common/models.py +0 -0
  120. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/common/utils.py +0 -0
  121. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/metadata_extraction/__init__.py +0 -0
  122. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/metadata_extraction/rest.py +0 -0
  123. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/metadata_extraction/sql.py +0 -0
  124. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/query_extraction/__init__.py +0 -0
  125. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/query_extraction/sql.py +0 -0
  126. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/application/__init__.py +0 -0
  127. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/application/metadata_extraction/sql.py +0 -0
  128. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/__init__.py +0 -0
  129. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/atlan_auth.py +0 -0
  130. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/sql.py +0 -0
  131. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/temporal.py +0 -0
  132. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/utils.py +0 -0
  133. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/workflow.py +0 -0
  134. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/__init__.py +0 -0
  135. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/aws_utils.py +0 -0
  136. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/credential_utils.py +0 -0
  137. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/dataframe_utils.py +0 -0
  138. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/error_codes.py +0 -0
  139. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/constants.py +0 -0
  140. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/__init__.py +0 -0
  141. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/exporters/__init__.py +0 -0
  142. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/exporters/mkdocs.py +0 -0
  143. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/__init__.py +0 -0
  144. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/export/__init__.py +0 -0
  145. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/export/page.py +0 -0
  146. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/__init__.py +0 -0
  147. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/customer.py +0 -0
  148. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/internal.py +0 -0
  149. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/metadata.py +0 -0
  150. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/page.py +0 -0
  151. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/section.py +0 -0
  152. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/parsers/__init__.py +0 -0
  153. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/parsers/directory.py +0 -0
  154. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/parsers/manifest.py +0 -0
  155. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/handlers/__init__.py +0 -0
  156. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/__init__.py +0 -0
  157. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/iceberg.py +0 -0
  158. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/json.py +0 -0
  159. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/objectstore.py +0 -0
  160. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/parquet.py +0 -0
  161. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/secretstore.py +0 -0
  162. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/sql_query.py +0 -0
  163. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/statestore.py +0 -0
  164. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/__init__.py +0 -0
  165. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/decorators/observability_decorator.py +0 -0
  166. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/logger_adaptor.py +0 -0
  167. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/metrics_adaptor.py +0 -0
  168. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/observability.py +0 -0
  169. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/traces_adaptor.py +0 -0
  170. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/utils.py +0 -0
  171. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/__init__.py +0 -0
  172. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/atlan_storage.py +0 -0
  173. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/eventstore.py +0 -0
  174. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/iceberg.py +0 -0
  175. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/json.py +0 -0
  176. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/objectstore.py +0 -0
  177. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/parquet.py +0 -0
  178. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/secretstore.py +0 -0
  179. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/statestore.py +0 -0
  180. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/__init__.py +0 -0
  181. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/__init__.py +0 -0
  182. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/middleware/logmiddleware.py +0 -0
  183. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/middleware/metrics.py +0 -0
  184. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/models.py +0 -0
  185. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/routers/__init__.py +0 -0
  186. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/routers/server.py +0 -0
  187. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/utils.py +0 -0
  188. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/__init__.py +0 -0
  189. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/e2e/__init__.py +0 -0
  190. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/e2e/base.py +0 -0
  191. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/e2e/client.py +0 -0
  192. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/e2e/conftest.py +0 -0
  193. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/e2e/utils.py +0 -0
  194. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/__init__.py +0 -0
  195. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/__init__.py +0 -0
  196. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/clients/__init__.py +0 -0
  197. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/clients/sql.py +0 -0
  198. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/common/__init__.py +0 -0
  199. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/common/logger.py +0 -0
  200. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/handlers/__init__.py +0 -0
  201. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/__init__.py +0 -0
  202. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_metadata.py +0 -0
  203. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_preflight.py +0 -0
  204. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/inputs/__init__.py +0 -0
  205. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/inputs/json_input.py +0 -0
  206. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/outputs/__init__.py +0 -0
  207. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/outputs/json_output.py +0 -0
  208. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/outputs/statestore.py +0 -0
  209. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/server/__init__.py +0 -0
  210. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/server/fastapi/__init__.py +0 -0
  211. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/sql_client.py +0 -0
  212. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/temporal.py +0 -0
  213. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/README.md +0 -0
  214. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/__init__.py +0 -0
  215. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/config_loader.py +0 -0
  216. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/data_generator.py +0 -0
  217. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/driver.py +0 -0
  218. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/examples/config.yaml +0 -0
  219. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/output_handler/__init__.py +0 -0
  220. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/output_handler/base.py +0 -0
  221. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/output_handler/csv_handler.py +0 -0
  222. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/output_handler/json_handler.py +0 -0
  223. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/output_handler/parquet_handler.py +0 -0
  224. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/workflow_monitoring.py +0 -0
  225. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/__init__.py +0 -0
  226. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/atlas/__init__.py +0 -0
  227. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/atlas/sql.py +0 -0
  228. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/common/__init__.py +0 -0
  229. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/common/utils.py +0 -0
  230. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/__init__.py +0 -0
  231. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/column.yaml +0 -0
  232. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/database.yaml +0 -0
  233. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/extras-procedure.yaml +0 -0
  234. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/function.yaml +0 -0
  235. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/schema.yaml +0 -0
  236. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/table.yaml +0 -0
  237. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/tag_attachment.yaml +0 -0
  238. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/worker.py +0 -0
  239. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/workflows/__init__.py +0 -0
  240. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/workflows/metadata_extraction/__init__.py +0 -0
  241. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/workflows/metadata_extraction/sql.py +0 -0
  242. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/workflows/query_extraction/__init__.py +0 -0
  243. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/application_sdk/workflows/query_extraction/sql.py +0 -0
  244. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/components/README.md +0 -0
  245. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/components/atlan-storage.yaml +0 -0
  246. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/components/aws-secrets.yaml +0 -0
  247. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/components/deployment-secrets.yaml +0 -0
  248. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/components/eventstore.yaml +0 -0
  249. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/components/objectstore.yaml +0 -0
  250. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/components/secretstore.yaml +0 -0
  251. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/components/statestore.yaml +0 -0
  252. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/activities.md +0 -0
  253. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/application.md +0 -0
  254. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/application_sql.md +0 -0
  255. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/atlanupload.md +0 -0
  256. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/clients.md +0 -0
  257. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/common.md +0 -0
  258. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/handlers.md +0 -0
  259. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/inputs.md +0 -0
  260. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/output_paths.md +0 -0
  261. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/outputs.md +0 -0
  262. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/server.md +0 -0
  263. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/temporal_auth.md +0 -0
  264. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/worker.md +0 -0
  265. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/workflows.md +0 -0
  266. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/configuration.md +0 -0
  267. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/architecture.md +0 -0
  268. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/atlantis.md +0 -0
  269. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/best-practices.md +0 -0
  270. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/getting-started.md +0 -0
  271. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/index.md +0 -0
  272. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/partners.md +0 -0
  273. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/secretstores.md +0 -0
  274. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/sql-application-guide.md +0 -0
  275. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/test-framework.md +0 -0
  276. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/index.md +0 -0
  277. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/setup/LINUX.md +0 -0
  278. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/setup/MAC.md +0 -0
  279. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/setup/WINDOWS.md +0 -0
  280. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/setup/troubleshooting.md +0 -0
  281. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/static/assets/logo.svg +0 -0
  282. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/static/images/phoenix-sdk-featureset.png +0 -0
  283. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/static/javascripts/mathjax.js +0 -0
  284. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/docs/static/stylesheets/extra.css +0 -0
  285. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/docs/mkdocs.yml +0 -0
  286. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/examples/README.md +0 -0
  287. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/examples/application_custom_fastapi.py +0 -0
  288. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/examples/application_fastapi.py +0 -0
  289. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/examples/application_hello_world.py +0 -0
  290. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/examples/application_sql.py +0 -0
  291. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/examples/application_sql_miner.py +0 -0
  292. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/examples/application_sql_with_custom_pyatlan_transformer.py +0 -0
  293. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/examples/application_sql_with_custom_transformer.py +0 -0
  294. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/examples/run_examples.py +0 -0
  295. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/examples/sql_query_templates/database.yaml +0 -0
  296. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/__init__.py +0 -0
  297. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/conftest.py +0 -0
  298. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/__init__.py +0 -0
  299. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/__init__.py +0 -0
  300. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/common/__init__.py +0 -0
  301. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/common/test_utils.py +0 -0
  302. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/metadata_extraction/__init__.py +0 -0
  303. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/metadata_extraction/test_sql.py +0 -0
  304. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/query_extraction/__init__.py +0 -0
  305. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/test_activities.py +0 -0
  306. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/application/__init__.py +0 -0
  307. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/application/metadata_extraction/test_sql.py +0 -0
  308. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/application/test_application.py +0 -0
  309. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/clients/__init__.py +0 -0
  310. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/clients/test_async_sql_client.py +0 -0
  311. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/clients/test_atlan_auth.py +0 -0
  312. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/clients/test_atlanauth.py +0 -0
  313. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/clients/test_sql_client.py +0 -0
  314. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/clients/test_temporal_client.py +0 -0
  315. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/common/test_aws_utils.py +0 -0
  316. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/common/test_credential_utils.py +0 -0
  317. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/docgen/parsers/test_directory_parser.py +0 -0
  318. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/docgen/parsers/test_manifest_parser.py +0 -0
  319. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/__init__.py +0 -0
  320. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_auth.py +0 -0
  321. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_extract_allowed_schemas.py +0 -0
  322. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_metadata.py +0 -0
  323. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_preflight_check.py +0 -0
  324. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_prepare_metadata.py +0 -0
  325. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_tables_check.py +0 -0
  326. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_validate_filters.py +0 -0
  327. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/inputs/test_json.py +0 -0
  328. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/observability/__init__.py +0 -0
  329. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/observability/test_logger_adaptor.py +0 -0
  330. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/observability/test_metrics_adaptor.py +0 -0
  331. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/observability/test_traces_adaptor.py +0 -0
  332. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_atlanstorage.py +0 -0
  333. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_iceberg.py +0 -0
  334. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_json_output.py +0 -0
  335. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_objectstore.py +0 -0
  336. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_output.py +0 -0
  337. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_statestore.py +0 -0
  338. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/server/__init__.py +0 -0
  339. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/server/fastapi/routers/__init__.py +0 -0
  340. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/server/fastapi/routers/server.py +0 -0
  341. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/server/fastapi/test_fastapi.py +0 -0
  342. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/test_worker.py +0 -0
  343. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/__init__.py +0 -0
  344. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/__init__.py +0 -0
  345. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_columns.json +0 -0
  346. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_databases.json +0 -0
  347. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_functions.json +0 -0
  348. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_procedures.json +0 -0
  349. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_schemas.json +0 -0
  350. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_tables.json +0 -0
  351. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_columns.json +0 -0
  352. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_databases.json +0 -0
  353. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_functions.json +0 -0
  354. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_procedures.json +0 -0
  355. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_schemas.json +0 -0
  356. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_tables.json +0 -0
  357. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_column.py +0 -0
  358. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_database.py +0 -0
  359. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_function.py +0 -0
  360. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_procedure.py +0 -0
  361. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_schema.py +0 -0
  362. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_table.py +0 -0
  363. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/column.json +0 -0
  364. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/database.json +0 -0
  365. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/extras-procedure.json +0 -0
  366. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/function.json +0 -0
  367. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/schema.json +0 -0
  368. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/table.json +0 -0
  369. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/column.json +0 -0
  370. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/database.json +0 -0
  371. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/extras-procedure.json +0 -0
  372. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/function.json +0 -0
  373. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/schema.json +0 -0
  374. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/table.json +0 -0
  375. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/test_sql_transformer.py +0 -0
  376. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/test_sql_transformer_output_validation.py +0 -0
  377. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/workflows/metadata_extraction/test_sql.py +0 -0
  378. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/workflows/query_extraction/__init__.py +0 -0
  379. {atlan_application_sdk-0.1.1rc25 → atlan_application_sdk-0.1.1rc26}/tests/unit/workflows/query_extraction/test_sql.py +0 -0
@@ -14,6 +14,7 @@
14
14
  - **Cognitive Load**: Can a new developer understand this change with less cognitive load?
15
15
  - **Magic Numbers/Strings**: All constants properly defined and named in @application_sdk/constants.py
16
16
  - **Spell Check**: No typos in code, comments, docstrings, or documentation
17
+ - **Exception Handling Standards**: All exception handling must follow these principles. See detailed guidelines in [exception-handling.mdc](mdc:.cursor/rules/exception-handling.mdc).
17
18
 
18
19
  ### 🏗️ Architecture & Design
19
20
 
@@ -42,8 +43,14 @@
42
43
  - **Input Validation**: All external inputs validated and sanitized
43
44
  - **Secrets Management**: No secrets in code; proper credential handling
44
45
  - **SQL Injection**: Parameterized queries used for all SQL operations
45
- - **Performance Impact**: Resource-intensive operations benchmarked
46
- - **Memory Leaks**: Long-running processes properly manage memory
46
+ - **Performance Standards**: All performance considerations must follow these principles. See detailed guidelines in [performance.mdc](mdc:.cursor/rules/performance.mdc).
47
+ - **Memory Management**: Resources properly closed, large datasets processed in chunks
48
+ - **DataFrame Optimization**: Appropriate dtypes, avoid unnecessary copies, use chunked processing
49
+ - **SQL Query Efficiency**: Use LIMIT, specific columns, proper WHERE clauses, connection pooling
50
+ - **Serialization Performance**: Use orjson for large datasets, implement compression
51
+ - **Algorithm Efficiency**: Use appropriate data structures, avoid O(n²) when O(n) alternatives exist
52
+ - **Caching Strategy**: Cache expensive operations and database queries
53
+ - **Async Usage**: Use async for I/O operations, sync for CPU-bound tasks
47
54
 
48
55
  ### 📊 Observability & Logging
49
56
 
@@ -0,0 +1,198 @@
1
+ ---
2
+ alwaysApply: false
3
+ globs: application_sdk/**/*.py
4
+ ---
5
+ # Exception Handling Standards
6
+
7
+ ## Core Principles
8
+
9
+ **Default Behavior: Re-raise Exceptions** - Exceptions should be re-raised by default unless explicitly handled for a specific reason. Silent exception swallowing is not allowed.
10
+
11
+ ## Critical Rules
12
+
13
+ ### **Exception Propagation**
14
+ - **Rule**: Always re-raise exceptions after logging unless in non-critical operations
15
+ - **Anti-pattern**: `except Exception as e: logger.error(f"Error: {e}")` - This swallows exceptions
16
+ - **Correct pattern**: `except Exception as e: logger.error(f"Error: {e}"); raise`
17
+
18
+ ### **Specific Exception Types**
19
+ - **Use specific exception types** instead of generic `Exception`
20
+ - **Examples**: `ValueError`, `ConnectionError`, `TimeoutError`, `FileNotFoundError`
21
+ - **Create custom exceptions** in `application_sdk/common/error_codes.py` for domain-specific errors
22
+ - **Anti-pattern**: `except Exception:` - Too broad, masks real issues
23
+
24
+ ## Exception Handling Patterns
25
+
26
+ ### **✅ DO: Proper exception handling with re-raising**
27
+ ```python
28
+ try:
29
+ result = some_operation()
30
+ return result
31
+ except ValueError as e:
32
+ logger.error(f"Invalid input: {e}")
33
+ raise # Re-raise to propagate the error
34
+ except ConnectionError as e:
35
+ logger.error(f"Connection failed: {e}")
36
+ raise # Re-raise to propagate the error
37
+ except Exception as e:
38
+ logger.error(f"Unexpected error: {e}")
39
+ raise # Re-raise to propagate the error
40
+ ```
41
+
42
+ ### **❌ DON'T: Swallowing exceptions**
43
+ ```python
44
+ try:
45
+ result = some_operation()
46
+ return result
47
+ except Exception as e:
48
+ logger.error(f"Error: {e}")
49
+ # Missing raise - this swallows the exception!
50
+ ```
51
+
52
+ ## Context-Specific Guidelines
53
+
54
+ ### **1. Critical Operations (Database, Network, File I/O)**
55
+ - **Always re-raise** exceptions after logging
56
+ - **Include context** in error messages
57
+ - **Use specific exception types**
58
+
59
+ ### **2. Non-Critical Operations (Logging, Metrics, Observability)**
60
+ - **May swallow exceptions** to prevent cascading failures
61
+ - **Log the failure** for debugging
62
+ - **Continue operation** if possible
63
+
64
+ ### **3. Resource Cleanup**
65
+ - **Use try/finally** for guaranteed cleanup
66
+ - **Log cleanup failures** but don't re-raise (to avoid masking original error)
67
+
68
+ ## Common Anti-patterns to Reject
69
+
70
+ ### **❌ Silent Exception Swallowing**
71
+ ```python
72
+ try:
73
+ operation()
74
+ except Exception:
75
+ pass # REJECT: Silent failure
76
+ ```
77
+
78
+ ### **❌ Generic Exception Catching Without Re-raising**
79
+ ```python
80
+ try:
81
+ operation()
82
+ except Exception as e:
83
+ logger.error(f"Error: {e}") # REJECT: Swallows exception
84
+ ```
85
+
86
+ ### **❌ Overly Broad Exception Handling**
87
+ ```python
88
+ try:
89
+ operation()
90
+ except Exception as e: # REJECT: Too broad
91
+ logger.error(f"Error: {e}")
92
+ raise
93
+ ```
94
+
95
+ ### **❌ Exception Handling Without Context**
96
+ ```python
97
+ try:
98
+ operation()
99
+ except Exception as e:
100
+ logger.error(f"Error: {e}") # REJECT: No context about what failed
101
+ raise
102
+ ```
103
+
104
+ ## Best Practices
105
+
106
+ ### **✅ DO: Proper exception handling with context**
107
+ ```python
108
+ try:
109
+ result = database_connection.execute_query(query)
110
+ return result
111
+ except ConnectionError as e:
112
+ logger.error(f"Database connection failed for query {query[:50]}...: {e}")
113
+ raise
114
+ except ValueError as e:
115
+ logger.error(f"Invalid query parameters: {e}")
116
+ raise
117
+ except Exception as e:
118
+ logger.error(f"Unexpected error during database operation: {e}")
119
+ raise
120
+ ```
121
+
122
+ ### **✅ DO: Resource cleanup with exception handling**
123
+ ```python
124
+ file_handle = None
125
+ try:
126
+ file_handle = open(filename, 'r')
127
+ return file_handle.read()
128
+ except FileNotFoundError as e:
129
+ logger.error(f"File not found: {filename}")
130
+ raise
131
+ finally:
132
+ if file_handle:
133
+ try:
134
+ file_handle.close()
135
+ except Exception as e:
136
+ logger.warning(f"Failed to close file {filename}: {e}")
137
+ # Don't re-raise cleanup errors
138
+ ```
139
+
140
+ ### **✅ DO: Non-critical operation exception handling**
141
+ ```python
142
+ try:
143
+ metrics.record_metric("operation_success", 1)
144
+ except Exception as e:
145
+ logger.warning(f"Failed to record metric: {e}")
146
+ # Don't re-raise for non-critical operations
147
+ ```
148
+
149
+ ## Module-Specific Guidelines
150
+
151
+ ### **Handlers (`application_sdk/handlers/`)**
152
+ - **Critical**: Always re-raise exceptions after logging
153
+ - **Include operation context** in error messages
154
+ - **Use specific exception types** for different error scenarios
155
+
156
+ ### **Outputs (`application_sdk/outputs/`)**
157
+ - **Critical**: Re-raise exceptions for data writing operations
158
+ - **Non-critical**: May swallow exceptions for metrics/logging operations
159
+ - **Resource cleanup**: Ensure files/connections are properly closed
160
+
161
+ ### **Inputs (`application_sdk/inputs/`)**
162
+ - **Critical**: Re-raise exceptions for data reading operations
163
+ - **Include file/connection context** in error messages
164
+ - **Handle specific I/O exceptions** appropriately
165
+
166
+ ### **Observability (`application_sdk/observability/`)**
167
+ - **Non-critical**: May swallow exceptions to prevent cascading failures
168
+ - **Log all failures** for debugging
169
+ - **Continue operation** when possible
170
+
171
+ ### **Workflows (`application_sdk/workflows/`)**
172
+ - **Critical**: Re-raise exceptions to trigger workflow retry logic
173
+ - **Include workflow context** in error messages
174
+ - **Handle Temporal-specific exceptions** appropriately
175
+
176
+ ### **Server (`application_sdk/server/`)**
177
+ - **Critical**: Re-raise exceptions to return proper HTTP error responses
178
+ - **Include request context** in error messages
179
+ - **Handle HTTP-specific exceptions** appropriately
180
+
181
+ ## Review Checklist
182
+
183
+ When reviewing code, check for:
184
+
185
+ 1. **Exception Propagation**: Are exceptions properly re-raised when they should be?
186
+ 2. **Specific Exception Types**: Are specific exception types used instead of generic `Exception`?
187
+ 3. **Error Context**: Do error messages include sufficient context for debugging?
188
+ 4. **Resource Cleanup**: Are resources properly cleaned up in finally blocks?
189
+ 5. **Non-Critical Operations**: Are non-critical operations (logging, metrics) handled appropriately?
190
+ 6. **Custom Exceptions**: Are domain-specific exceptions defined in `error_codes.py`?
191
+ 7. **Exception Documentation**: Are exceptions documented in function docstrings?
192
+
193
+ ## Implementation Notes
194
+
195
+ - **Custom Exceptions**: Define domain-specific exceptions in `application_sdk/common/error_codes.py`
196
+ - **Logging**: Use `AtlanLoggerAdapter` for all logging with proper context
197
+ - **Context**: Always include relevant context in error messages (query, filename, operation, etc.)
198
+ - **Documentation**: Document all exceptions that functions can raise in docstrings
@@ -0,0 +1,294 @@
1
+ ---
2
+ alwaysApply: false
3
+ globs: application_sdk/**/*.py
4
+ ---
5
+ # Performance Standards
6
+
7
+ ## Core Principles
8
+
9
+ **Performance is a Feature** - Performance issues are bugs that affect user experience and system reliability. All code must be written with performance considerations in mind.
10
+
11
+ ## Critical Performance Areas
12
+
13
+ ### **Memory Management**
14
+
15
+ #### **Memory Leaks Prevention**
16
+ - **Rule**: Always close resources (files, connections, iterators) in finally blocks
17
+ - **Anti-pattern**: Opening resources without proper cleanup
18
+ - **Correct pattern**: Use context managers or try/finally
19
+
20
+ **✅ DO: Proper resource management**
21
+ ```python
22
+ # Using context manager
23
+ with open(filename, 'r') as f:
24
+ data = f.read()
25
+
26
+ # Using try/finally
27
+ file_handle = None
28
+ try:
29
+ file_handle = open(filename, 'r')
30
+ data = file_handle.read()
31
+ finally:
32
+ if file_handle:
33
+ file_handle.close()
34
+ ```
35
+
36
+ **❌ DON'T: Resource leaks**
37
+ ```python
38
+ # REJECT: No cleanup
39
+ file_handle = open(filename, 'r')
40
+ data = file_handle.read()
41
+ # Missing file_handle.close()
42
+ ```
43
+
44
+ #### **Large Object Management**
45
+ - **Rule**: Process large datasets in chunks, not all at once
46
+ - **Anti-pattern**: Loading entire dataset into memory
47
+ - **Correct pattern**: Use generators, iterators, or chunked processing
48
+
49
+ **✅ DO: Chunked processing**
50
+ ```python
51
+ def process_large_file(filename: str, chunk_size: int = 1000):
52
+ """Process large file in chunks to avoid memory issues."""
53
+ with open(filename, 'r') as f:
54
+ chunk = []
55
+ for line in f:
56
+ chunk.append(line.strip())
57
+ if len(chunk) >= chunk_size:
58
+ yield process_chunk(chunk)
59
+ chunk = []
60
+ if chunk: # Process remaining items
61
+ yield process_chunk(chunk)
62
+ ```
63
+
64
+ **❌ DON'T: Load everything into memory**
65
+ ```python
66
+ # REJECT: Memory intensive
67
+ def process_large_file(filename: str):
68
+ with open(filename, 'r') as f:
69
+ all_lines = f.readlines() # Loads entire file into memory
70
+ return process_all_lines(all_lines)
71
+ ```
72
+
73
+ ### **DataFrame Performance**
74
+
75
+ #### **Memory-Efficient DataFrame Operations**
76
+ - **Rule**: Use appropriate data types and avoid unnecessary copies
77
+ - **Anti-pattern**: Creating multiple copies of large DataFrames
78
+ - **Correct pattern**: Use inplace operations and proper dtypes
79
+
80
+ **✅ DO: Memory-efficient DataFrame operations**
81
+ ```python
82
+ # Use appropriate dtypes
83
+ df = pd.read_csv('large_file.csv', dtype={
84
+ 'id': 'int32',
85
+ 'category': 'category', # More memory efficient than object
86
+ 'value': 'float32'
87
+ })
88
+
89
+ # Use inplace operations when possible
90
+ df.dropna(inplace=True) # Instead of df = df.dropna()
91
+ df.reset_index(drop=True, inplace=True)
92
+
93
+ # Use query() for filtering (more memory efficient)
94
+ filtered_df = df.query('value > 100 and category == "A"')
95
+ ```
96
+
97
+ **❌ DON'T: Inefficient DataFrame operations**
98
+ ```python
99
+ # REJECT: Creates unnecessary copies
100
+ df = df.dropna() # Creates copy
101
+ df = df.reset_index() # Creates another copy
102
+ df = df[df['value'] > 100] # Creates another copy
103
+ df = df[df['category'] == 'A'] # Creates another copy
104
+ ```
105
+
106
+ #### **DataFrame Chunking**
107
+ - **Rule**: Process large DataFrames in chunks
108
+ - **Anti-pattern**: Processing entire DataFrame at once
109
+ - **Correct pattern**: Use chunked reading and processing
110
+
111
+ **✅ DO: Chunked DataFrame processing**
112
+ ```python
113
+ def process_large_dataframe(filename: str, chunk_size: int = 10000):
114
+ """Process large CSV file in chunks."""
115
+ for chunk in pd.read_csv(filename, chunksize=chunk_size):
116
+ # Process each chunk
117
+ processed_chunk = process_chunk(chunk)
118
+ yield processed_chunk
119
+ ```
120
+
121
+ **❌ DON'T: Load entire DataFrame**
122
+ ```python
123
+ # REJECT: Memory intensive for large files
124
+ df = pd.read_csv('very_large_file.csv') # Loads entire file
125
+ process_dataframe(df)
126
+ ```
127
+
128
+ ### **SQL Query Performance**
129
+
130
+ #### **Query Optimization**
131
+ - **Rule**: Write efficient SQL queries with proper indexing and limiting
132
+ - **Anti-pattern**: SELECT * without LIMIT on large tables
133
+ - **Correct pattern**: Use specific columns, LIMIT, and proper WHERE clauses
134
+
135
+ **✅ DO: Optimized SQL queries**
136
+ ```python
137
+ # Use specific columns instead of SELECT *
138
+ query = "SELECT id, name, created_at FROM users WHERE status = 'active' LIMIT 1000"
139
+
140
+ # Use parameterized queries for security and performance
141
+ query = "SELECT * FROM users WHERE age > %s AND city = %s LIMIT %s"
142
+ params = (18, 'New York', 100)
143
+
144
+ # Use appropriate indexes in WHERE clauses
145
+ query = "SELECT * FROM orders WHERE user_id = %s AND created_at > %s"
146
+ ```
147
+
148
+ **❌ DON'T: Inefficient SQL queries**
149
+ ```python
150
+ # REJECT: No LIMIT on large table
151
+ query = "SELECT * FROM users" # Could return millions of rows
152
+
153
+ # REJECT: No WHERE clause on indexed columns
154
+ query = "SELECT * FROM orders WHERE amount > 0" # Should use user_id or date
155
+
156
+ # REJECT: String concatenation (SQL injection risk)
157
+ query = f"SELECT * FROM users WHERE name = '{user_input}'"
158
+ ```
159
+
160
+ #### **Connection and Transaction Management**
161
+ - **Rule**: Use connection pooling and proper transaction management
162
+ - **Anti-pattern**: Creating new connections for each query
163
+ - **Correct pattern**: Reuse connections and use transactions
164
+
165
+ **✅ DO: Proper connection management**
166
+ ```python
167
+ # Use connection pooling
168
+ async def execute_queries():
169
+ async with get_db_connection() as conn:
170
+ async with conn.transaction():
171
+ await conn.execute("INSERT INTO logs (message) VALUES ($1)", "info")
172
+ await conn.execute("UPDATE counters SET value = value + 1")
173
+ ```
174
+
175
+ **❌ DON'T: Poor connection management**
176
+ ```python
177
+ # REJECT: Creating new connection for each query
178
+ for query in queries:
179
+ conn = create_new_connection() # Expensive
180
+ conn.execute(query)
181
+ conn.close()
182
+ ```
183
+
184
+ ### **Serialization/Deserialization Performance**
185
+
186
+ #### **JSON Serialization Optimization**
187
+ - **Rule**: Use efficient serialization libraries and avoid unnecessary conversions
188
+ - **Anti-pattern**: Using default json module for large datasets
189
+ - **Correct pattern**: Use orjson, ujson, or custom serializers
190
+
191
+ **✅ DO: Efficient JSON serialization**
192
+ ```python
193
+ import orjson # Much faster than json
194
+
195
+ # Use orjson for better performance
196
+ data = orjson.dumps(large_dict, option=orjson.OPT_APPEND_NEWLINE)
197
+
198
+ # Use streaming for large datasets
199
+ def serialize_large_dataset(data_iterator):
200
+ for item in data_iterator:
201
+ yield orjson.dumps(item) + b'\n'
202
+ ```
203
+
204
+ **❌ DON'T: Inefficient serialization**
205
+ ```python
206
+ # REJECT: Using default json for large datasets
207
+ import json
208
+ data = json.dumps(large_dict) # Slower than orjson
209
+
210
+ # REJECT: Converting to string unnecessarily
211
+ data = str(orjson.dumps(large_dict)) # Unnecessary conversion
212
+ ```
213
+
214
+
215
+ ### **CPU Performance**
216
+
217
+ #### **Algorithm Efficiency**
218
+ - **Rule**: Use appropriate algorithms and data structures
219
+ - **Anti-pattern**: O(n²) algorithms when O(n) or O(log n) alternatives exist
220
+ - **Correct pattern**: Choose efficient algorithms and data structures
221
+
222
+ **✅ DO: Efficient algorithms**
223
+ ```python
224
+ # Use set for O(1) lookups
225
+ def find_duplicates(items):
226
+ seen = set()
227
+ duplicates = set()
228
+ for item in items:
229
+ if item in seen:
230
+ duplicates.add(item)
231
+ else:
232
+ seen.add(item)
233
+ return list(duplicates)
234
+
235
+ # Use list comprehension instead of loops when appropriate
236
+ squares = [x**2 for x in range(1000)] # More efficient than loop
237
+ ```
238
+
239
+ **❌ DON'T: Inefficient algorithms**
240
+ ```python
241
+ # REJECT: O(n²) algorithm
242
+ def find_duplicates(items):
243
+ duplicates = []
244
+ for i, item in enumerate(items):
245
+ if item in items[i+1:]: # O(n) lookup
246
+ duplicates.append(item)
247
+ return duplicates
248
+ ```
249
+
250
+ #### **Async/Await Performance**
251
+ - **Rule**: Use async/await for I/O operations, not CPU-bound tasks
252
+ - **Anti-pattern**: Using async for CPU-intensive operations
253
+ - **Correct pattern**: Use async for I/O, sync for CPU-bound tasks
254
+
255
+ **✅ DO: Proper async usage**
256
+ ```python
257
+ import asyncio
258
+ import aiofiles
259
+
260
+ # Async for I/O operations
261
+ async def read_files_async(filenames):
262
+ async def read_single_file(filename):
263
+ async with aiofiles.open(filename, 'r') as f:
264
+ return await f.read()
265
+
266
+ tasks = [read_single_file(filename) for filename in filenames]
267
+ return await asyncio.gather(*tasks)
268
+
269
+ # Sync for CPU-bound operations
270
+ def process_data_cpu_intensive(data):
271
+ # CPU-intensive processing
272
+ return [x * 2 for x in data]
273
+ ```
274
+
275
+ **❌ DON'T: Misusing async**
276
+ ```python
277
+ # REJECT: Using async for CPU-bound operations
278
+ async def process_data_cpu_intensive(data):
279
+ # This should be sync
280
+ return [x * 2 for x in data]
281
+ ```
282
+
283
+ ## Performance Review Checklist
284
+
285
+ When reviewing code for performance, check for:
286
+
287
+ 1. **Memory Management**: Are resources properly closed? Are large datasets processed in chunks?
288
+ 2. **DataFrame Operations**: Are appropriate dtypes used? Are unnecessary copies avoided?
289
+ 3. **SQL Queries**: Are queries optimized with LIMIT and proper WHERE clauses?
290
+ 4. **Serialization**: Are efficient libraries (orjson) used for large datasets?
291
+ 5. **Algorithm Efficiency**: Are appropriate data structures and algorithms used?
292
+ 6. **Async Usage**: Is async used for I/O operations, not CPU-bound tasks?
293
+ 7. **Connection Pooling**: Are database connections reused?
294
+ 8. **Batch Processing**: Are operations batched when possible?
@@ -0,0 +1,11 @@
1
+ ## v0.1.1rc26 (August 07, 2025)
2
+
3
+ Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc25...v0.1.1rc26
4
+
5
+ ### Features
6
+
7
+ - add cursor and bugbot rules (#636) (by @Amit Prabhu in [cbbecd9](https://github.com/atlanhq/application-sdk/commit/cbbecd9))
8
+
9
+ ### Bug Fixes
10
+
11
+ - handle str and dict types in preflight checks (#638) (by @Nishchith Shetty in [57ee9a0](https://github.com/atlanhq/application-sdk/commit/57ee9a0))
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+
4
+ ## v0.1.1rc26 (August 07, 2025)
5
+
6
+ Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc25...v0.1.1rc26
7
+
8
+ ### Features
9
+
10
+ - add cursor and bugbot rules (#636) (by @Amit Prabhu in [cbbecd9](https://github.com/atlanhq/application-sdk/commit/cbbecd9))
11
+
12
+ ### Bug Fixes
13
+
14
+ - handle str and dict types in preflight checks (#638) (by @Nishchith Shetty in [57ee9a0](https://github.com/atlanhq/application-sdk/commit/57ee9a0))
15
+
3
16
  ## v0.1.1rc25 (August 05, 2025)
4
17
 
5
18
  Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc24...v0.1.1rc25
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atlan-application-sdk
3
- Version: 0.1.1rc25
3
+ Version: 0.1.1rc26
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
@@ -195,6 +195,38 @@ def prepare_query(
195
195
  return None
196
196
 
197
197
 
198
+ def parse_filter_input(
199
+ filter_input: Union[str, Dict[str, Any], None],
200
+ ) -> Dict[str, Any]:
201
+ """
202
+ Robustly parse filter input from various formats.
203
+
204
+ Args:
205
+ filter_input: Can be None, empty string, JSON string, or dict
206
+
207
+ Returns:
208
+ Dict[str, Any]: Parsed filter dictionary (empty dict if input is invalid/empty)
209
+ """
210
+ # Handle None or empty cases
211
+ if not filter_input:
212
+ return {}
213
+
214
+ # If already a dict, return as-is
215
+ if isinstance(filter_input, dict):
216
+ return filter_input
217
+
218
+ # If it's a string, try to parse as JSON
219
+ if isinstance(filter_input, str):
220
+ # Handle empty string
221
+ if not filter_input.strip():
222
+ return {}
223
+ try:
224
+ return json.loads(filter_input)
225
+ except json.JSONDecodeError as e:
226
+ logger.warning(f"Invalid filter JSON: '{filter_input}', error: {str(e)}")
227
+ raise CommonError(f"Invalid filter JSON: {str(e)}")
228
+
229
+
198
230
  def prepare_filters(
199
231
  include_filter_str: str, exclude_filter_str: str
200
232
  ) -> Tuple[str, str]:
@@ -212,15 +244,8 @@ def prepare_filters(
212
244
  Raises:
213
245
  CommonError: If JSON parsing fails for either filter.
214
246
  """
215
- try:
216
- include_filter = json.loads(include_filter_str)
217
- except json.JSONDecodeError as e:
218
- raise CommonError(f"Invalid include filter JSON: {str(e)}")
219
-
220
- try:
221
- exclude_filter = json.loads(exclude_filter_str)
222
- except json.JSONDecodeError as e:
223
- raise CommonError(f"Invalid exclude filter JSON: {str(e)}")
247
+ include_filter = parse_filter_input(include_filter_str)
248
+ exclude_filter = parse_filter_input(exclude_filter_str)
224
249
 
225
250
  normalized_include_filter_list = normalize_filters(include_filter, True)
226
251
  normalized_exclude_filter_list = normalize_filters(exclude_filter, False)
@@ -1,5 +1,4 @@
1
1
  import asyncio
2
- import json
3
2
  import re
4
3
  from enum import Enum
5
4
  from typing import Any, Dict, List, Optional, Set, Tuple
@@ -7,7 +6,11 @@ from typing import Any, Dict, List, Optional, Set, Tuple
7
6
  from packaging import version
8
7
 
9
8
  from application_sdk.clients.sql import BaseSQLClient
10
- from application_sdk.common.utils import prepare_query, read_sql_files
9
+ from application_sdk.common.utils import (
10
+ parse_filter_input,
11
+ prepare_query,
12
+ read_sql_files,
13
+ )
11
14
  from application_sdk.constants import SQL_QUERIES_PATH, SQL_SERVER_MIN_VERSION
12
15
  from application_sdk.handlers import HandlerInterface
13
16
  from application_sdk.inputs.sql_query import SQLQueryInput
@@ -220,10 +223,10 @@ class BaseSQLHandler(HandlerInterface):
220
223
  """
221
224
  try:
222
225
  schemas_results: List[Dict[str, str]] = await self.prepare_metadata()
223
-
224
- include_filter = json.loads(
225
- payload.get("metadata", {}).get("include-filter", "{}")
226
+ include_filter = parse_filter_input(
227
+ payload.get("metadata", {}).get("include-filter", {})
226
228
  )
229
+
227
230
  allowed_databases, allowed_schemas = self.extract_allowed_schemas(
228
231
  schemas_results
229
232
  )
@@ -2,4 +2,4 @@
2
2
  Version information for the application_sdk package.
3
3
  """
4
4
 
5
- __version__ = "0.1.1rc25"
5
+ __version__ = "0.1.1rc26"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "atlan-application-sdk"
3
- version = "0.1.1rc25"
3
+ version = "0.1.1rc26"
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 = [