atlan-application-sdk 2.0.0__tar.gz → 2.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. atlan_application_sdk-2.1.0/.dockerignore +64 -0
  2. atlan_application_sdk-2.1.0/.github/actions/secure-build-push-apps/action.yaml +552 -0
  3. atlan_application_sdk-2.1.0/.github/release_notes.md +12 -0
  4. atlan_application_sdk-2.1.0/.github/workflows/build-image.yaml +98 -0
  5. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/CHANGELOG.md +14 -0
  6. atlan_application_sdk-2.1.0/Dockerfile +44 -0
  7. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/PKG-INFO +1 -1
  8. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/common/sql_utils.py +6 -2
  9. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/io/__init__.py +101 -6
  10. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/io/json.py +68 -24
  11. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/io/parquet.py +64 -8
  12. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/observability/observability.py +0 -7
  13. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/services/objectstore.py +14 -1
  14. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/version.py +1 -1
  15. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/inputs.md +57 -19
  16. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/guides/getting-started.md +21 -2
  17. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/pyproject.toml +1 -1
  18. atlan_application_sdk-2.1.0/tests/unit/activities/common/test_sql_utils.py +55 -0
  19. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/io/readers/test_json_reader.py +213 -0
  20. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/io/readers/test_parquet_reader.py +215 -0
  21. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/services/test_objectstore.py +73 -0
  22. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/uv.lock +1 -1
  23. atlan_application_sdk-2.0.0/.github/release_notes.md +0 -7
  24. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.cursor/BUGBOT.md +0 -0
  25. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.cursor/rules/commits.mdc +0 -0
  26. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.cursor/rules/documentation.mdc +0 -0
  27. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.cursor/rules/exception-handling.mdc +0 -0
  28. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.cursor/rules/guidelines.mdc +0 -0
  29. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.cursor/rules/logging.mdc +0 -0
  30. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.cursor/rules/performance.mdc +0 -0
  31. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.cursor/rules/setup.mdc +0 -0
  32. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.cursor/rules/standards.mdc +0 -0
  33. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.cursor/rules/testing.mdc +0 -0
  34. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.env.example +0 -0
  35. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/CODEOWNERS +0 -0
  36. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  37. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
  38. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  39. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/actions/docgen/action.yaml +0 -0
  40. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/actions/doclint/action.yaml +0 -0
  41. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/actions/docstring-coverage/action.yaml +0 -0
  42. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/actions/e2e-apps/action.yaml +0 -0
  43. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/actions/e2e-examples/action.yaml +0 -0
  44. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/actions/setup-deps/action.yaml +0 -0
  45. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/actions/sync-branches/action.yaml +0 -0
  46. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/actions/trivy/action.yaml +0 -0
  47. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/actions/trivy-container/action.yaml +0 -0
  48. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/actions/unit-tests/action.yaml +0 -0
  49. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/dependabot.yaml +0 -0
  50. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/pull_request_template.md +0 -0
  51. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/scripts/extract_release_notes.py +0 -0
  52. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/scripts/release.py +0 -0
  53. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/scripts/trivy-to-markdown.py +0 -0
  54. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/scripts/update_changelog.py +0 -0
  55. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/AMPM.yml +0 -0
  56. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Accessibility.yml +0 -0
  57. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Acronyms.yml +0 -0
  58. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Adverbs.yml +0 -0
  59. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Auto.yml +0 -0
  60. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Avoid.yml +0 -0
  61. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Contractions.yml +0 -0
  62. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Dashes.yml +0 -0
  63. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/DateFormat.yml +0 -0
  64. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/DateNumbers.yml +0 -0
  65. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/DateOrder.yml +0 -0
  66. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Ellipses.yml +0 -0
  67. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/FirstPerson.yml +0 -0
  68. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Foreign.yml +0 -0
  69. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Gender.yml +0 -0
  70. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/GenderBias.yml +0 -0
  71. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/GeneralURL.yml +0 -0
  72. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/HeadingAcronyms.yml +0 -0
  73. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/HeadingColons.yml +0 -0
  74. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/HeadingPunctuation.yml +0 -0
  75. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Headings.yml +0 -0
  76. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Hyphens.yml +0 -0
  77. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Negative.yml +0 -0
  78. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Ordinal.yml +0 -0
  79. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/OxfordComma.yml +0 -0
  80. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Passive.yml +0 -0
  81. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Percentages.yml +0 -0
  82. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Plurals.yml +0 -0
  83. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Quotes.yml +0 -0
  84. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/RangeTime.yml +0 -0
  85. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Semicolon.yml +0 -0
  86. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/SentenceLength.yml +0 -0
  87. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Spacing.yml +0 -0
  88. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Suspended.yml +0 -0
  89. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Terms.yml +0 -0
  90. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/URLFormat.yml +0 -0
  91. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Units.yml +0 -0
  92. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Vocab.yml +0 -0
  93. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/We.yml +0 -0
  94. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/Wordiness.yml +0 -0
  95. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/Microsoft/meta.json +0 -0
  96. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/config/vocabularies/deviations/accept.txt +0 -0
  97. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/styles/config/vocabularies/deviations/reject.txt +0 -0
  98. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/checks.properties.json +0 -0
  99. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/checks.yaml +0 -0
  100. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/codeql.properties.json +0 -0
  101. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/codeql.yaml +0 -0
  102. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/dependency-review.properties.json +0 -0
  103. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/dependency-review.yml +0 -0
  104. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/stale.properties.json +0 -0
  105. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/stale.yml +0 -0
  106. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/trivy-container.properties.json +0 -0
  107. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/trivy-container.yaml +0 -0
  108. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/trivy.properties.json +0 -0
  109. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflow-templates/trivy.yaml +0 -0
  110. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflows/codeql.yaml +0 -0
  111. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflows/pull_request.yaml +0 -0
  112. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflows/push.yaml +0 -0
  113. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflows/release.yaml +0 -0
  114. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflows/scale-tests.yaml +0 -0
  115. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflows/schedule.yaml +0 -0
  116. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflows/tag-and-publish.yaml +0 -0
  117. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflows/trivy-container.yaml +0 -0
  118. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.github/workflows/verify-snyk-status.yml +0 -0
  119. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.gitignore +0 -0
  120. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.pre-commit-config.yaml +0 -0
  121. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/.vscode/launch.json +0 -0
  122. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/CODE_OF_CONDUCT.md +0 -0
  123. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/CONTRIBUTING.md +0 -0
  124. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/LICENSE +0 -0
  125. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/NOTICE +0 -0
  126. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/README.md +0 -0
  127. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/SECURITY.md +0 -0
  128. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/__init__.py +0 -0
  129. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/.cursor/BUGBOT.md +0 -0
  130. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/__init__.py +0 -0
  131. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/common/__init__.py +0 -0
  132. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/common/models.py +0 -0
  133. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/common/utils.py +0 -0
  134. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/lock_management.py +0 -0
  135. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/metadata_extraction/__init__.py +0 -0
  136. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/metadata_extraction/base.py +0 -0
  137. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/metadata_extraction/rest.py +0 -0
  138. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/metadata_extraction/sql.py +0 -0
  139. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/query_extraction/__init__.py +0 -0
  140. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/activities/query_extraction/sql.py +0 -0
  141. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/application/__init__.py +0 -0
  142. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/application/metadata_extraction/sql.py +0 -0
  143. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/.cursor/BUGBOT.md +0 -0
  144. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/__init__.py +0 -0
  145. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/atlan.py +0 -0
  146. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/atlan_auth.py +0 -0
  147. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/base.py +0 -0
  148. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/models.py +0 -0
  149. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/redis.py +0 -0
  150. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/sql.py +0 -0
  151. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/temporal.py +0 -0
  152. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/utils.py +0 -0
  153. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/clients/workflow.py +0 -0
  154. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/common/.cursor/BUGBOT.md +0 -0
  155. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/common/__init__.py +0 -0
  156. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/common/aws_utils.py +0 -0
  157. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/common/error_codes.py +0 -0
  158. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/common/file_converter.py +0 -0
  159. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/common/types.py +0 -0
  160. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/common/utils.py +0 -0
  161. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/constants.py +0 -0
  162. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/decorators/.cursor/BUGBOT.md +0 -0
  163. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/decorators/__init__.py +0 -0
  164. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/decorators/locks.py +0 -0
  165. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/decorators/mcp_tool.py +0 -0
  166. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/__init__.py +0 -0
  167. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/exporters/__init__.py +0 -0
  168. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/exporters/mkdocs.py +0 -0
  169. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/models/__init__.py +0 -0
  170. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/models/export/__init__.py +0 -0
  171. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/models/export/page.py +0 -0
  172. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/models/manifest/__init__.py +0 -0
  173. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/models/manifest/customer.py +0 -0
  174. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/models/manifest/internal.py +0 -0
  175. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/models/manifest/metadata.py +0 -0
  176. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/models/manifest/page.py +0 -0
  177. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/models/manifest/section.py +0 -0
  178. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/parsers/__init__.py +0 -0
  179. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/parsers/directory.py +0 -0
  180. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/docgen/parsers/manifest.py +0 -0
  181. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/handlers/__init__.py +0 -0
  182. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/handlers/base.py +0 -0
  183. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/handlers/sql.py +0 -0
  184. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/interceptors/.cursor/BUGBOT.md +0 -0
  185. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/interceptors/__init__.py +0 -0
  186. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/interceptors/cleanup.py +0 -0
  187. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/interceptors/correlation_context.py +0 -0
  188. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/interceptors/events.py +0 -0
  189. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/interceptors/lock.py +0 -0
  190. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/interceptors/models.py +0 -0
  191. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/io/utils.py +0 -0
  192. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/observability/__init__.py +0 -0
  193. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/observability/context.py +0 -0
  194. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/observability/decorators/observability_decorator.py +0 -0
  195. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/observability/logger_adaptor.py +0 -0
  196. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/observability/metrics_adaptor.py +0 -0
  197. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/observability/traces_adaptor.py +0 -0
  198. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/observability/utils.py +0 -0
  199. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/.cursor/BUGBOT.md +0 -0
  200. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/__init__.py +0 -0
  201. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/fastapi/__init__.py +0 -0
  202. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/fastapi/middleware/logmiddleware.py +0 -0
  203. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/fastapi/middleware/metrics.py +0 -0
  204. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/fastapi/models.py +0 -0
  205. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/fastapi/routers/__init__.py +0 -0
  206. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/fastapi/routers/server.py +0 -0
  207. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/fastapi/utils.py +0 -0
  208. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/mcp/__init__.py +0 -0
  209. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/mcp/models.py +0 -0
  210. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/server/mcp/server.py +0 -0
  211. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/services/__init__.py +0 -0
  212. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/services/_utils.py +0 -0
  213. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/services/atlan_storage.py +0 -0
  214. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/services/eventstore.py +0 -0
  215. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/services/secretstore.py +0 -0
  216. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/services/statestore.py +0 -0
  217. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/__init__.py +0 -0
  218. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/e2e/__init__.py +0 -0
  219. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/e2e/base.py +0 -0
  220. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/e2e/client.py +0 -0
  221. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/e2e/conftest.py +0 -0
  222. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/e2e/utils.py +0 -0
  223. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/__init__.py +0 -0
  224. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/__init__.py +0 -0
  225. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/clients/__init__.py +0 -0
  226. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/clients/sql.py +0 -0
  227. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/common/__init__.py +0 -0
  228. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/common/logger.py +0 -0
  229. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/handlers/__init__.py +0 -0
  230. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/__init__.py +0 -0
  231. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_metadata.py +0 -0
  232. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_preflight.py +0 -0
  233. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/inputs/__init__.py +0 -0
  234. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/inputs/json_input.py +0 -0
  235. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/inputs/parquet_input.py +0 -0
  236. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/outputs/__init__.py +0 -0
  237. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/outputs/json_output.py +0 -0
  238. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/outputs/statestore.py +0 -0
  239. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/server/__init__.py +0 -0
  240. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/server/fastapi/__init__.py +0 -0
  241. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/sql_client.py +0 -0
  242. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/hypothesis/strategies/temporal.py +0 -0
  243. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/README.md +0 -0
  244. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/__init__.py +0 -0
  245. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/config_loader.py +0 -0
  246. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/data_generator.py +0 -0
  247. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/driver.py +0 -0
  248. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/examples/config.yaml +0 -0
  249. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/output_handler/__init__.py +0 -0
  250. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/output_handler/base.py +0 -0
  251. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/output_handler/csv_handler.py +0 -0
  252. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/output_handler/json_handler.py +0 -0
  253. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/scale_data_generator/output_handler/parquet_handler.py +0 -0
  254. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/test_utils/workflow_monitoring.py +0 -0
  255. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/__init__.py +0 -0
  256. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/atlas/__init__.py +0 -0
  257. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/atlas/sql.py +0 -0
  258. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/common/__init__.py +0 -0
  259. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/common/utils.py +0 -0
  260. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/query/__init__.py +0 -0
  261. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/query/templates/column.yaml +0 -0
  262. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/query/templates/database.yaml +0 -0
  263. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/query/templates/extras-procedure.yaml +0 -0
  264. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/query/templates/function.yaml +0 -0
  265. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/query/templates/schema.yaml +0 -0
  266. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/query/templates/table.yaml +0 -0
  267. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/transformers/query/templates/tag_attachment.yaml +0 -0
  268. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/worker.py +0 -0
  269. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/workflows/.cursor/BUGBOT.md +0 -0
  270. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/workflows/__init__.py +0 -0
  271. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/workflows/metadata_extraction/__init__.py +0 -0
  272. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/workflows/metadata_extraction/sql.py +0 -0
  273. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/workflows/query_extraction/__init__.py +0 -0
  274. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/application_sdk/workflows/query_extraction/sql.py +0 -0
  275. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/components/README.md +0 -0
  276. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/components/atlan-storage.yaml +0 -0
  277. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/components/aws-secrets.yaml +0 -0
  278. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/components/configuration.yaml +0 -0
  279. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/components/deployment-secrets.yaml +0 -0
  280. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/components/eventstore.yaml +0 -0
  281. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/components/objectstore.yaml +0 -0
  282. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/components/secretstore.yaml +0 -0
  283. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/components/statestore.yaml +0 -0
  284. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/API.md +0 -0
  285. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/activities.md +0 -0
  286. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/application.md +0 -0
  287. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/application_sql.md +0 -0
  288. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/atlanupload.md +0 -0
  289. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/clients.md +0 -0
  290. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/common.md +0 -0
  291. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/handlers.md +0 -0
  292. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/mcp.md +0 -0
  293. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/output_paths.md +0 -0
  294. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/outputs.md +0 -0
  295. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/server.md +0 -0
  296. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/services.md +0 -0
  297. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/temporal_auth.md +0 -0
  298. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/worker.md +0 -0
  299. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/concepts/workflows.md +0 -0
  300. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/configuration.md +0 -0
  301. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/guides/architecture.md +0 -0
  302. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/guides/atlantis.md +0 -0
  303. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/guides/best-practices.md +0 -0
  304. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/guides/index.md +0 -0
  305. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/guides/secretstores.md +0 -0
  306. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/guides/sql-application-guide.md +0 -0
  307. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/guides/test-framework.md +0 -0
  308. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/index.md +0 -0
  309. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/setup/LINUX.md +0 -0
  310. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/setup/MAC.md +0 -0
  311. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/setup/WINDOWS.md +0 -0
  312. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/setup/troubleshooting.md +0 -0
  313. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/static/assets/logo.svg +0 -0
  314. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/static/images/phoenix-sdk-featureset.png +0 -0
  315. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/static/javascripts/mathjax.js +0 -0
  316. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/docs/static/stylesheets/extra.css +0 -0
  317. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/docs/mkdocs.yml +0 -0
  318. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/examples/README.md +0 -0
  319. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/examples/application_custom_fastapi.py +0 -0
  320. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/examples/application_fastapi.py +0 -0
  321. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/examples/application_hello_world.py +0 -0
  322. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/examples/application_sql.py +0 -0
  323. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/examples/application_sql_miner.py +0 -0
  324. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/examples/application_sql_with_custom_pyatlan_transformer.py +0 -0
  325. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/examples/application_sql_with_custom_transformer.py +0 -0
  326. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/examples/run_examples.py +0 -0
  327. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/examples/sql_query_templates/database.yaml +0 -0
  328. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/.cursor/BUGBOT.md +0 -0
  329. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/__init__.py +0 -0
  330. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/conftest.py +0 -0
  331. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/__init__.py +0 -0
  332. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/activities/__init__.py +0 -0
  333. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/activities/common/__init__.py +0 -0
  334. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/activities/common/test_utils.py +0 -0
  335. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/activities/metadata_extraction/__init__.py +0 -0
  336. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/activities/metadata_extraction/test_sql.py +0 -0
  337. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/activities/query_extraction/__init__.py +0 -0
  338. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/activities/test_activities.py +0 -0
  339. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/activities/test_lock_management.py +0 -0
  340. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/application/__init__.py +0 -0
  341. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/application/metadata_extraction/test_sql.py +0 -0
  342. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/application/test_application.py +0 -0
  343. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/clients/__init__.py +0 -0
  344. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/clients/test_async_sql_client.py +0 -0
  345. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/clients/test_atlan_auth.py +0 -0
  346. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/clients/test_atlan_client.py +0 -0
  347. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/clients/test_atlanauth.py +0 -0
  348. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/clients/test_base_client.py +0 -0
  349. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/clients/test_redis_client.py +0 -0
  350. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/clients/test_sql_client.py +0 -0
  351. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/clients/test_temporal_client.py +0 -0
  352. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/common/test_aws_utils.py +0 -0
  353. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/common/test_credential_utils.py +0 -0
  354. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/common/test_file_converter.py +0 -0
  355. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/common/test_utils.py +0 -0
  356. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/common/test_utils_file_discovery.py +0 -0
  357. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/decorators/__init__.py +0 -0
  358. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/decorators/test_mcp_tool.py +0 -0
  359. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/docgen/parsers/test_directory_parser.py +0 -0
  360. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/docgen/parsers/test_manifest_parser.py +0 -0
  361. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/handlers/__init__.py +0 -0
  362. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/handlers/sql/test_auth.py +0 -0
  363. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/handlers/sql/test_check_schemas_and_databases.py +0 -0
  364. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/handlers/sql/test_extract_allowed_schemas.py +0 -0
  365. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/handlers/sql/test_metadata.py +0 -0
  366. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/handlers/sql/test_preflight_check.py +0 -0
  367. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/handlers/sql/test_prepare_metadata.py +0 -0
  368. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/handlers/sql/test_tables_check.py +0 -0
  369. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/handlers/sql/test_validate_filters.py +0 -0
  370. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/handlers/test_base_handler.py +0 -0
  371. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/interceptors/__init__.py +0 -0
  372. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/interceptors/test_correlation_context.py +0 -0
  373. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/io/test_base_io.py +0 -0
  374. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/io/writers/test_json_writer.py +0 -0
  375. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/io/writers/test_parquet_writer.py +0 -0
  376. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/observability/__init__.py +0 -0
  377. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/observability/test_logger_adaptor.py +0 -0
  378. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/observability/test_metrics_adaptor.py +0 -0
  379. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/observability/test_traces_adaptor.py +0 -0
  380. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/server/__init__.py +0 -0
  381. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/server/fastapi/routers/__init__.py +0 -0
  382. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/server/fastapi/routers/server.py +0 -0
  383. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/server/fastapi/test_fastapi.py +0 -0
  384. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/server/mcp/__init__.py +0 -0
  385. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/server/mcp/test_mcp_server.py +0 -0
  386. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/services/test_atlan_storage.py +0 -0
  387. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/services/test_eventstore.py +0 -0
  388. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/services/test_statestore.py +0 -0
  389. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/test_worker.py +0 -0
  390. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/__init__.py +0 -0
  391. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/__init__.py +0 -0
  392. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/raw_columns.json +0 -0
  393. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/raw_databases.json +0 -0
  394. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/raw_functions.json +0 -0
  395. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/raw_procedures.json +0 -0
  396. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/raw_schemas.json +0 -0
  397. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/raw_tables.json +0 -0
  398. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/transformed_columns.json +0 -0
  399. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/transformed_databases.json +0 -0
  400. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/transformed_functions.json +0 -0
  401. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/transformed_procedures.json +0 -0
  402. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/transformed_schemas.json +0 -0
  403. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/resources/transformed_tables.json +0 -0
  404. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/test_column.py +0 -0
  405. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/test_database.py +0 -0
  406. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/test_function.py +0 -0
  407. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/test_procedure.py +0 -0
  408. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/test_schema.py +0 -0
  409. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/atlas/test_table.py +0 -0
  410. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/raw/column.json +0 -0
  411. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/raw/database.json +0 -0
  412. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/raw/extras-procedure.json +0 -0
  413. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/raw/function.json +0 -0
  414. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/raw/schema.json +0 -0
  415. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/raw/table.json +0 -0
  416. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/transformed/column.json +0 -0
  417. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/transformed/database.json +0 -0
  418. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/transformed/extras-procedure.json +0 -0
  419. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/transformed/function.json +0 -0
  420. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/transformed/schema.json +0 -0
  421. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/resources/transformed/table.json +0 -0
  422. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/test_sql_transformer.py +0 -0
  423. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/transformers/query/test_sql_transformer_output_validation.py +0 -0
  424. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/workflows/metadata_extraction/test_sql_workflow.py +0 -0
  425. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/workflows/query_extraction/__init__.py +0 -0
  426. {atlan_application_sdk-2.0.0 → atlan_application_sdk-2.1.0}/tests/unit/workflows/query_extraction/test_sql.py +0 -0
@@ -0,0 +1,64 @@
1
+ # Git files
2
+ .git
3
+ .gitignore
4
+ .gitattributes
5
+
6
+ # Documentation
7
+ docs/
8
+ *.md
9
+ !README.md
10
+
11
+ # Test files
12
+ tests/
13
+ *.pyc
14
+ __pycache__/
15
+ .pytest_cache/
16
+ .coverage
17
+ htmlcov/
18
+ .hypothesis/
19
+
20
+ # Development files
21
+ .local/
22
+ .venv/
23
+ venv/
24
+ env/
25
+ .env
26
+ .env.local
27
+
28
+ # IDE files
29
+ .vscode/
30
+ .idea/
31
+ *.swp
32
+ *.swo
33
+ *~
34
+
35
+ # Build artifacts
36
+ build/
37
+ dist/
38
+ *.egg-info/
39
+ .eggs/
40
+
41
+ # CI/CD
42
+ .github/
43
+
44
+ # Local development
45
+ local/
46
+ temporal.db
47
+ *.db
48
+ *.db-shm
49
+ *.db-wal
50
+
51
+ # Examples (not needed in base image)
52
+ examples/
53
+
54
+ # Components (not needed in base image)
55
+ components/
56
+
57
+ # Note: uv.lock is needed by Dockerfile for uv sync --locked
58
+ # Keep it in build context (don't exclude it)
59
+
60
+ # Other
61
+ .DS_Store
62
+ *.log
63
+ *.tmp
64
+
@@ -0,0 +1,552 @@
1
+ name: 'Composite Build, Snyk/Trivy Scan, and Push'
2
+ description: 'A drop-in replacement for docker/build-push-action that adds mandatory Snyk and Trivy scans before pushing.'
3
+
4
+ #==================================================================
5
+ # == INPUTS ==
6
+ #==================================================================
7
+ inputs:
8
+ # == Custom inputs for this action's logic ==
9
+ branch:
10
+ description: "The current branch name (e.g., from github.ref_name)."
11
+ required: true
12
+ push:
13
+ description: "Set to 'true' to attempt a push after a successful scan."
14
+ required: false
15
+ default: 'false'
16
+ snyk-token:
17
+ description: 'Token for Snyk authentication.'
18
+ required: true
19
+ snyk-ghcr-integration-id:
20
+ description: 'Snyk Integration ID for GitHub Container Registry.'
21
+ required: true
22
+ snyk-docker-integration-id:
23
+ description: 'Snyk Integration ID for Docker Hub.'
24
+ required: true
25
+ snyk-integration-id:
26
+ description: 'Default Snyk Integration ID.'
27
+ required: true
28
+ snyk-org-id:
29
+ description: 'Snyk Organization ID.'
30
+ required: true
31
+
32
+ # == Complete list of inputs from docker/build-push-action ==
33
+ add-hosts:
34
+ description: 'List of custom host-to-IP mappings (host:ip).'
35
+ required: false
36
+ allow:
37
+ description: 'List of extra privileged entitlement (e.g., network.host,security.insecure).'
38
+ required: false
39
+ annotations:
40
+ description: 'List of OCI annotations to set on the image.'
41
+ required: false
42
+ attests:
43
+ description: 'List of attestations to generate (e.g., type=sbom,generator=image).'
44
+ required: false
45
+ build-args:
46
+ description: 'List of build-time variables.'
47
+ required: false
48
+ build-contexts:
49
+ description: 'List of additional build contexts (e.g., name=path).'
50
+ required: false
51
+ builder:
52
+ description: 'Builder instance to use.'
53
+ required: false
54
+ cache-from:
55
+ description: 'List of external cache sources.'
56
+ required: false
57
+ default: 'type=gha'
58
+ cache-to:
59
+ description: 'List of cache export destinations.'
60
+ required: false
61
+ default: 'type=gha,mode=min'
62
+ cgroup-parent:
63
+ description: 'Optional parent cgroup for the container.'
64
+ required: false
65
+ context:
66
+ description: 'Path to the build context.'
67
+ required: false
68
+ default: '.'
69
+ file:
70
+ description: 'Path to the Dockerfile.'
71
+ required: false
72
+ github-token:
73
+ description: 'GitHub token for authentication.'
74
+ required: false
75
+ labels:
76
+ description: 'List of metadata labels to apply to the image.'
77
+ required: false
78
+ load:
79
+ description: 'Load is a shorthand for --output=type=docker.'
80
+ required: false
81
+ default: 'false'
82
+ network:
83
+ description: 'Set the networking mode for the RUN instructions during build.'
84
+ required: false
85
+ no-cache:
86
+ description: 'Do not use cache when building the image.'
87
+ required: false
88
+ default: 'false'
89
+ no-cache-filters:
90
+ description: 'Do not cache specified stages.'
91
+ required: false
92
+ outputs:
93
+ description: 'List of output destinations (format: type=local,dest=path).'
94
+ required: false
95
+ platforms:
96
+ description: 'List of target platforms for build.'
97
+ required: false
98
+ provenance:
99
+ description: 'Generate provenance attestation for the build.'
100
+ required: false
101
+ pull:
102
+ description: 'Always attempt to pull all referenced images.'
103
+ required: false
104
+ default: 'false'
105
+ sbom:
106
+ description: 'Generate SBOM attestation for the build (shorthand for --attest=type=sbom).'
107
+ required: false
108
+ secrets:
109
+ description: 'List of secrets to expose to the build.'
110
+ required: false
111
+ secret-envs:
112
+ description: 'List of secret environment variables to expose to the build (e.g., MY_SECRET=MY_SECRET_VAR).'
113
+ required: false
114
+ shm-size:
115
+ description: 'Size of /dev/shm (e.g., 2g).'
116
+ required: false
117
+ ssh:
118
+ description: 'List of SSH agent sockets or keys to expose to the build.'
119
+ required: false
120
+ tags:
121
+ description: 'List of tags for the Docker image.'
122
+ required: true
123
+ target:
124
+ description: 'Sets the target stage to build.'
125
+ required: false
126
+ ulimit:
127
+ description: 'Ulimit options (e.g., nofile=1024:1024).'
128
+ required: false
129
+
130
+ #==================================================================
131
+ # == OUTPUTS ==
132
+ #==================================================================
133
+ outputs:
134
+ scan-passed:
135
+ description: "'true' if both scans found zero critical/high vulnerabilities, otherwise 'false'."
136
+ value: ${{ steps.decision.outputs.result }}
137
+ snyk-critical-count:
138
+ description: "Number of critical vulnerabilities found by Snyk."
139
+ value: ${{ steps.parse_snyk.outputs.critical-count }}
140
+ snyk-high-count:
141
+ description: "Number of high vulnerabilities found by Snyk."
142
+ value: ${{ steps.parse_snyk.outputs.high-count }}
143
+ trivy-critical-count:
144
+ description: "Number of critical vulnerabilities found by Trivy."
145
+ value: ${{ steps.parse_trivy.outputs.critical-count }}
146
+ trivy-high-count:
147
+ description: "Number of high vulnerabilities found by Trivy."
148
+ value: ${{ steps.parse_trivy.outputs.high-count }}
149
+
150
+ #==================================================================
151
+ # == EXECUTION LOGIC ==
152
+ #==================================================================
153
+ runs:
154
+ using: "composite"
155
+ steps:
156
+ - name: Configure Scan Policies
157
+ id: config
158
+ shell: bash
159
+ env:
160
+ SNYK_GHCR_INTEGRATION_ID: ${{ inputs.snyk-ghcr-integration-id }}
161
+ SNYK_DOCKER_INTEGRATION_ID: ${{ inputs.snyk-docker-integration-id }}
162
+ SNYK_INTEGRATION_ID: ${{ inputs.snyk-integration-id }}
163
+ SNYK_ORG_ID: ${{ inputs.snyk-org-id }}
164
+ run: |
165
+ # =================================================================
166
+ # == 🛡️ ADMIN CONFIGURATION SECTION ==
167
+ # =================================================================
168
+ #
169
+ # ENFORCEMENT_MODE:
170
+ # 'true': Fail the build if vulnerabilities are found at the
171
+ # specified severity. The image will NOT be pushed.
172
+ # 'false': Act in "Feedback Mode". Always allow the push and
173
+ # never fail the build, but still report vulnerabilities.
174
+ #
175
+ ENFORCEMENT_MODE='false'
176
+
177
+ # SEVERITY_THRESHOLD:
178
+ # Comma-separated list of severities to scan for and fail on
179
+ # when in enforcement mode.
180
+ # Examples: 'CRITICAL', 'CRITICAL,HIGH', 'CRITICAL,HIGH,MEDIUM'
181
+ #
182
+ SEVERITY_THRESHOLD='CRITICAL,HIGH'
183
+ #
184
+ # =================================================================
185
+
186
+ # ⭐ SNYK INTEGRATION ID MAPPING (from GitHub Secrets)
187
+ # Map registry hostnames to their Snyk Integration IDs.
188
+ # The script will automatically select the correct ID based on the image tag.
189
+ # - Use 'default' for Docker Hub or images without a full domain.
190
+ # - Add new entries for other registries as needed.
191
+ #
192
+ SNYK_INTEGRATION_IDS="
193
+ ghcr.io=${SNYK_GHCR_INTEGRATION_ID}
194
+ docker.io=${SNYK_DOCKER_INTEGRATION_ID}
195
+ default=${SNYK_INTEGRATION_ID}
196
+ "
197
+ #
198
+ # =================================================================
199
+
200
+ echo "ENFORCEMENT_MODE=$ENFORCEMENT_MODE" >> $GITHUB_OUTPUT
201
+ echo "SEVERITY_THRESHOLD=$SEVERITY_THRESHOLD" >> $GITHUB_OUTPUT
202
+ echo "SNYK_ORG_ID=$SNYK_ORG_ID" >> $GITHUB_OUTPUT
203
+ echo "SNYK_INTEGRATION_IDS<<EOF" >> $GITHUB_OUTPUT
204
+ echo "$SNYK_INTEGRATION_IDS" >> $GITHUB_OUTPUT
205
+ echo "EOF" >> $GITHUB_OUTPUT
206
+
207
+ # Snyk's '--severity-threshold' flag requires the LOWEST severity you want to see.
208
+ # This logic finds the last severity in the list (assuming CRITICAL,HIGH,MEDIUM order).
209
+ SNYK_LOWEST_SEVERITY=$(echo "$SEVERITY_THRESHOLD" | awk -F, '{print $NF}' | tr '[:upper:]' '[:lower:]')
210
+ echo "SNYK_SEVERITY_ARGS=--severity-threshold=$SNYK_LOWEST_SEVERITY" >> $GITHUB_OUTPUT
211
+
212
+ - name: Set up Docker Buildx
213
+ uses: docker/setup-buildx-action@v3
214
+
215
+ - name: Build single-platform image for scanning
216
+ id: build_for_scan
217
+ uses: docker/build-push-action@v6
218
+ with:
219
+ # Pass all inputs from the caller to the build action
220
+ add-hosts: ${{ inputs.add-hosts }}
221
+ allow: ${{ inputs.allow }}
222
+ annotations: ${{ inputs.annotations }}
223
+ attests: ${{ inputs.attests }}
224
+ build-args: ${{ inputs.build-args }}
225
+ build-contexts: ${{ inputs.build-contexts }}
226
+ builder: ${{ inputs.builder }}
227
+ cache-from: ${{ inputs.cache-from }}
228
+ # Cache is exported here
229
+ cache-to: ${{ inputs.cache-to }}
230
+ cgroup-parent: ${{ inputs.cgroup-parent }}
231
+ context: ${{ inputs.context }}
232
+ file: ${{ inputs.file }}
233
+ github-token: ${{ inputs.github-token }}
234
+ labels: ${{ inputs.labels }}
235
+ network: ${{ inputs.network }}
236
+ no-cache: ${{ inputs.no-cache }}
237
+ no-cache-filters: ${{ inputs.no-cache-filters }}
238
+ outputs: ${{ inputs.outputs }}
239
+ # Build only for the runner's native platform for scanning
240
+ platforms: linux/amd64
241
+ provenance: ${{ inputs.provenance }}
242
+ pull: ${{ inputs.pull }}
243
+ sbom: ${{ inputs.sbom }}
244
+ secrets: ${{ inputs.secrets }}
245
+ secret-envs: ${{ inputs.secret-envs }}
246
+ secret-files: ${{ inputs.secret-files }}
247
+ shm-size: ${{ inputs.shm-size }}
248
+ ssh: ${{ inputs.ssh }}
249
+ tags: ${{ inputs.tags }}
250
+ target: ${{ inputs.target }}
251
+ ulimit: ${{ inputs.ulimit }}
252
+ # Load the image for the scanners to use
253
+ load: true
254
+ push: false
255
+
256
+ - name: Run Snyk Scan to Generate Report
257
+ id: snyk_scan
258
+ continue-on-error: true
259
+ uses: snyk/actions/docker@0.4.0
260
+ env:
261
+ SNYK_TOKEN: ${{ inputs.snyk-token }}
262
+ SNYK_API: 'https://api.us.snyk.io'
263
+ with:
264
+ image: ${{ inputs.tags }}
265
+ args: ${{ steps.config.outputs.SNYK_SEVERITY_ARGS }} --json-file-output=snyk-results.json
266
+
267
+ # - name: DEBUG - Validate Snyk JSON
268
+ # if: always()
269
+ # shell: bash
270
+ # run: |
271
+ # echo "Validating snyk-results.json syntax..."
272
+ # jq . snyk-results.json || echo "JQ validation failed: The JSON is malformed."
273
+
274
+ # - name: DEBUG - Show Snyk JSON Content
275
+ # if: always()
276
+ # shell: bash
277
+ # run: |
278
+ # echo "--- Start of snyk-results.json ---"
279
+ # cat snyk-results.json
280
+ # echo "--- End of snyk-results.json ---"
281
+
282
+ - name: Parse Snyk Results
283
+ id: parse_snyk
284
+ shell: bash
285
+ run: |
286
+ if [ ! -f snyk-results.json ]; then
287
+ echo "Snyk scan failed to produce a report file. See 'Run Snyk Scan' step for details."
288
+ exit 1
289
+ fi
290
+
291
+ # CORRECTED: This jq query safely combines OS and all application vulnerabilities before processing.
292
+ CRITICAL_COUNT=$(jq '((.vulnerabilities // []) + ([.applications[]?.vulnerabilities // []] | flatten)) | map(select(.severity == "critical")) | unique_by(.id) | length' snyk-results.json)
293
+ HIGH_COUNT=$(jq '((.vulnerabilities // []) + ([.applications[]?.vulnerabilities // []] | flatten)) | map(select(.severity == "high")) | unique_by(.id) | length' snyk-results.json)
294
+ MEDIUM_COUNT=$(jq '((.vulnerabilities // []) + ([.applications[]?.vulnerabilities // []] | flatten)) | map(select(.severity == "medium")) | unique_by(.id) | length' snyk-results.json)
295
+
296
+ echo "Snyk Found: $CRITICAL_COUNT critical, $HIGH_COUNT high, $MEDIUM_COUNT medium vulnerabilities."
297
+
298
+ echo "critical-count=$CRITICAL_COUNT" >> $GITHUB_OUTPUT
299
+ echo "high-count=$HIGH_COUNT" >> $GITHUB_OUTPUT
300
+ echo "medium-count=$MEDIUM_COUNT" >> $GITHUB_OUTPUT
301
+
302
+ #Faced issues with Trivy not able to handle multi line inputs for image tags. Snyk handles this directly
303
+ - name: Extract Primary Image Tag for Scans
304
+ id: extract_tag
305
+ shell: bash
306
+ run: |
307
+ # Read the first line of the multi-line tags input
308
+ PRIMARY_TAG=$(echo "${{ inputs.tags }}" | head -n 1)
309
+ echo "primary_tag=$PRIMARY_TAG" >> $GITHUB_OUTPUT
310
+
311
+ - name: Run Trivy Scan
312
+ id: trivy_scan
313
+ uses: aquasecurity/trivy-action@0.24.0
314
+ with:
315
+ # UPDATED: Use the single, primary tag from the step above
316
+ image-ref: ${{ steps.extract_tag.outputs.primary_tag }}
317
+ format: 'json'
318
+ output: 'trivy-results.json'
319
+ severity: ${{ steps.config.outputs.SEVERITY_THRESHOLD }}
320
+ ignore-unfixed: true
321
+ exit-code: '0'
322
+
323
+ - name: Display Trivy Scan Results
324
+ if: always()
325
+ shell: bash
326
+ run: |
327
+ echo "Displaying full vulnerability report from trivy-results.json:"
328
+ jq '.' trivy-results.json
329
+
330
+ - name: Parse Trivy Results
331
+ id: parse_trivy
332
+ shell: bash
333
+ run: |
334
+ # Now we parse all severities, not just critical and high
335
+ CRITICAL_COUNT=$(jq '[.Results[].Vulnerabilities[]? | select(.Severity == "CRITICAL")] | length' trivy-results.json)
336
+ HIGH_COUNT=$(jq '[.Results[].Vulnerabilities[]? | select(.Severity == "HIGH")] | length' trivy-results.json)
337
+ MEDIUM_COUNT=$(jq '[.Results[].Vulnerabilities[]? | select(.Severity == "MEDIUM")] | length' trivy-results.json)
338
+ echo "Trivy Found: $CRITICAL_COUNT critical, $HIGH_COUNT high, $MEDIUM_COUNT medium vulnerabilities."
339
+ echo "critical-count=$CRITICAL_COUNT" >> $GITHUB_OUTPUT
340
+ echo "high-count=$HIGH_COUNT" >> $GITHUB_OUTPUT
341
+ echo "medium-count=$MEDIUM_COUNT" >> $GITHUB_OUTPUT
342
+
343
+ - name: Make Final Decision
344
+ id: decision
345
+ shell: bash
346
+ env:
347
+ ENFORCEMENT_MODE: ${{ steps.config.outputs.ENFORCEMENT_MODE }}
348
+ SEVERITY_THRESHOLD: ${{ steps.config.outputs.SEVERITY_THRESHOLD }}
349
+ SNYK_CRITICAL: ${{ steps.parse_snyk.outputs.critical-count }}
350
+ SNYK_HIGH: ${{ steps.parse_snyk.outputs.high-count }}
351
+ SNYK_MEDIUM: ${{ steps.parse_snyk.outputs.medium-count }}
352
+ TRIVY_CRITICAL: ${{ steps.parse_trivy.outputs.critical-count }}
353
+ TRIVY_HIGH: ${{ steps.parse_trivy.outputs.high-count }}
354
+ TRIVY_MEDIUM: ${{ steps.parse_trivy.outputs.medium-count }}
355
+ run: |
356
+ echo "Enforcement Mode: $ENFORCEMENT_MODE"
357
+ echo "Failing on severities: $SEVERITY_THRESHOLD"
358
+
359
+ VULNS_FOUND=0
360
+ if [[ "$SEVERITY_THRESHOLD" == *"CRITICAL"* && ($SNYK_CRITICAL -gt 0 || $TRIVY_CRITICAL -gt 0) ]]; then
361
+ echo "CRITICAL vulnerabilities found."
362
+ VULNS_FOUND=1
363
+ fi
364
+ if [[ "$SEVERITY_THRESHOLD" == *"HIGH"* && ($SNYK_HIGH -gt 0 || $TRIVY_HIGH -gt 0) ]]; then
365
+ echo "HIGH vulnerabilities found."
366
+ VULNS_FOUND=1
367
+ fi
368
+ if [[ "$SEVERITY_THRESHOLD" == *"MEDIUM"* && ($SNYK_MEDIUM -gt 0 || $TRIVY_MEDIUM -gt 0) ]]; then
369
+ echo "MEDIUM vulnerabilities found."
370
+ VULNS_FOUND=1
371
+ fi
372
+
373
+ if [[ "$ENFORCEMENT_MODE" == "true" && $VULNS_FOUND -eq 1 ]]; then
374
+ echo "❌ Scans failed in ENFORCEMENT mode. Vulnerabilities found at or above threshold."
375
+ echo "result=false" >> $GITHUB_OUTPUT
376
+ exit 1
377
+ else
378
+ if [[ $VULNS_FOUND -eq 1 ]]; then
379
+ echo "⚠️ Vulnerabilities found, but continuing in FEEDBACK mode."
380
+ else
381
+ echo "✅ All scans passed."
382
+ fi
383
+ echo "result=true" >> $GITHUB_OUTPUT
384
+ fi
385
+
386
+ - name: Cleanup loaded scanning image
387
+ shell: bash
388
+ run: |
389
+ PRIMARY_TAG=$(echo "${{ inputs.tags }}" | head -n 1)
390
+ docker rmi "$PRIMARY_TAG" || true
391
+
392
+ - name: Build and Push multi-platform image
393
+ id: docker_push
394
+ if: ${{ steps.decision.outputs.result == 'true' }}
395
+ uses: docker/build-push-action@v6
396
+ with:
397
+ # Pass all relevant inputs again for the final push
398
+ add-hosts: ${{ inputs.add-hosts }}
399
+ allow: ${{ inputs.allow }}
400
+ annotations: ${{ inputs.annotations }}
401
+ attests: ${{ inputs.attests }}
402
+ build-args: ${{ inputs.build-args }}
403
+ build-contexts: ${{ inputs.build-contexts }}
404
+ builder: ${{ inputs.builder }}
405
+ # Cache is imported here
406
+ cache-from: ${{ inputs.cache-from }}
407
+ cache-to: ${{ inputs.cache-to }}
408
+ cgroup-parent: ${{ inputs.cgroup-parent }}
409
+ context: ${{ inputs.context }}
410
+ file: ${{ inputs.file }}
411
+ github-token: ${{ inputs.github-token }}
412
+ labels: ${{ inputs.labels }}
413
+ network: ${{ inputs.network }}
414
+ no-cache: ${{ inputs.no-cache }}
415
+ # CORRECTED
416
+ no-cache-filters: ${{ inputs.no-cache-filters }}
417
+ outputs: ${{ inputs.outputs }}
418
+ # Use the platforms the developer originally requested
419
+ platforms: ${{ inputs.platforms }}
420
+ provenance: ${{ inputs.provenance }}
421
+ pull: ${{ inputs.pull }}
422
+ # NEW
423
+ sbom: ${{ inputs.sbom }}
424
+ secrets: ${{ inputs.secrets }}
425
+ # NEW
426
+ secret-envs: ${{ inputs.secret-envs }}
427
+ secret-files: ${{ inputs.secret-files }}
428
+ shm-size: ${{ inputs.shm-size }}
429
+ ssh: ${{ inputs.ssh }}
430
+ tags: ${{ inputs.tags }}
431
+ target: ${{ inputs.target }}
432
+ ulimit: ${{ inputs.ulimit }}
433
+ push: ${{ inputs.push }}
434
+ load: ${{ inputs.load }}
435
+
436
+ - name: Import or Monitor Image in Snyk
437
+ if: ${{ steps.docker_push.outcome == 'success' && inputs.push == 'true' && (inputs.branch == 'main' || inputs.branch == 'master') }}
438
+ shell: bash
439
+ env:
440
+ SNYK_TOKEN: ${{ inputs.snyk-token }}
441
+ SNYK_API: 'https://api.us.snyk.io'
442
+ SNYK_INTEGRATION_IDS: ${{ steps.config.outputs.SNYK_INTEGRATION_IDS }}
443
+ SNYK_ORG_ID: ${{ steps.config.outputs.SNYK_ORG_ID }}
444
+ run: |
445
+ set -euo pipefail
446
+
447
+ # Write metadata to temp file to avoid shell quoting issues
448
+ TEMP_METADATA=$(mktemp)
449
+ cat > "$TEMP_METADATA" << 'METADATA_EOF'
450
+ ${{ steps.docker_push.outputs.metadata }}
451
+ METADATA_EOF
452
+
453
+ # Verify the temp file has content
454
+ if [ ! -s "$TEMP_METADATA" ]; then
455
+ echo "❌ Build metadata was not found. Cannot import to Snyk."
456
+ rm -f "$TEMP_METADATA"
457
+ exit 1
458
+ fi
459
+
460
+ # Parse image name from the temp file
461
+ TARGET_IMAGES_LIST=$(jq -r '.["image.name"]' "$TEMP_METADATA")
462
+ rm -f "$TEMP_METADATA"
463
+
464
+ if [ -z "$TARGET_IMAGES_LIST" ] || [ "$TARGET_IMAGES_LIST" = "null" ]; then
465
+ echo "❌ Could not extract image name from build metadata."
466
+ exit 1
467
+ fi
468
+
469
+ # Find the first image that has a Snyk integration
470
+ SELECTED_IMAGE=""
471
+ SNYK_INTEGRATION_ID=""
472
+ REGISTRY_KEY=""
473
+
474
+ # Convert comma-separated list to array and check each image
475
+ IFS=',' read -ra IMAGES <<< "$TARGET_IMAGES_LIST"
476
+ for image in "${IMAGES[@]}"; do
477
+ echo "🔍 Checking image: $image"
478
+
479
+ # Check if this image matches any integration
480
+ while IFS='=' read -r key value; do
481
+ if [[ -n "$key" && "$image" == *"$key"* ]]; then
482
+ SELECTED_IMAGE="$image"
483
+ SNYK_INTEGRATION_ID="$value"
484
+ REGISTRY_KEY="$key"
485
+ echo "✅ Found integration for: $image (registry: $key)"
486
+ break 2 # Break out of both loops
487
+ fi
488
+ done <<< "$SNYK_INTEGRATION_IDS"
489
+ done
490
+
491
+ # Use selected image or fall back to first image for CLI
492
+ if [ -n "$SELECTED_IMAGE" ]; then
493
+ PRIMARY_IMAGE="$SELECTED_IMAGE"
494
+ echo "📦 Using image with integration: ${PRIMARY_IMAGE}"
495
+ else
496
+ PRIMARY_IMAGE="${IMAGES[0]}"
497
+ echo "📦 No integration found, using first image for CLI: ${PRIMARY_IMAGE}"
498
+ fi
499
+
500
+ # Format the image name based on the registry type
501
+ FORMATTED_IMAGE="$PRIMARY_IMAGE"
502
+ if [[ "$REGISTRY_KEY" == "docker.io" || "$REGISTRY_KEY" == "default" ]]; then
503
+ # Docker Hub integration expects image name WITHOUT docker.io/ prefix
504
+ FORMATTED_IMAGE=$(echo "$PRIMARY_IMAGE" | sed 's|^docker\.io/||')
505
+ echo "📝 Formatted image for Docker Hub: $FORMATTED_IMAGE"
506
+ fi
507
+
508
+ # ⭐ NEW: Universal Fallback Logic
509
+ # If no integration ID was found, use 'snyk container monitor'.
510
+ if [ -z "$SNYK_INTEGRATION_ID" ]; then
511
+ echo "ℹ️ No Snyk integration ID found for this registry. Installing Snyk CLI for fallback monitoring."
512
+
513
+ # Install Snyk CLI
514
+ curl -Lo /tmp/snyk "https://static.snyk.io/cli/latest/snyk-linux"
515
+ chmod +x /tmp/snyk
516
+ sudo mv /tmp/snyk /usr/local/bin/snyk
517
+
518
+ echo "📦 Using 'snyk container monitor' as a fallback."
519
+ snyk container monitor "$FORMATTED_IMAGE" --org="$SNYK_ORG_ID"
520
+ echo "✅ Snapshot sent to Snyk for continuous monitoring."
521
+ exit 0 # Safely exit the step with success
522
+ fi
523
+
524
+ # --- This section now only runs if an integration ID WAS found ---
525
+ echo "📋 Registry integration found. Proceeding with API import..."
526
+
527
+ JSON_PAYLOAD=$(jq -n \
528
+ --arg image "$FORMATTED_IMAGE" \
529
+ '{
530
+ target: {
531
+ name: $image
532
+ }
533
+ }')
534
+
535
+ # Import via API with proper error handling
536
+ echo "🚀 Starting import job for: $FORMATTED_IMAGE"
537
+
538
+ RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
539
+ "${SNYK_API}/v1/org/${SNYK_ORG_ID}/integrations/${SNYK_INTEGRATION_ID}/import" \
540
+ -H "Authorization: token $SNYK_TOKEN" \
541
+ -H "Content-Type: application/json" \
542
+ -d "$JSON_PAYLOAD")
543
+
544
+ HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
545
+ RESPONSE_BODY=$(echo "$RESPONSE" | head -n -1)
546
+
547
+ if [ "$HTTP_CODE" -eq 201 ]; then
548
+ echo "✅ Import job started successfully."
549
+ else
550
+ echo "❌ Failed to start import job. HTTP Code: $HTTP_CODE"
551
+ exit 1
552
+ fi
@@ -0,0 +1,12 @@
1
+ ## v2.1.0 (January 08, 2026)
2
+
3
+ Full Changelog: https://github.com/atlanhq/application-sdk/compare/v2.0.0...v2.1.0
4
+
5
+ ### Features
6
+
7
+ - improving the getting started guide (#929) (by @vaibhavatlan in [e04762b](https://github.com/atlanhq/application-sdk/commit/e04762b))
8
+ - add context manager and close() support to Reader classes (#930) (by @inishchith in [c589342](https://github.com/atlanhq/application-sdk/commit/c589342))
9
+
10
+ ### Bug Fixes
11
+
12
+ - removed logs to avoid infinite logging (#928) (by @sachi-atlan in [5710532](https://github.com/atlanhq/application-sdk/commit/5710532))