atlan-application-sdk 0.1.1rc29__tar.gz → 0.1.1rc31__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.
- atlan_application_sdk-0.1.1rc31/.github/release_notes.md +11 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/CHANGELOG.md +22 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/PKG-INFO +1 -1
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/application/__init__.py +1 -1
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/clients/temporal.py +82 -51
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/constants.py +6 -0
- atlan_application_sdk-0.1.1rc31/application_sdk/events/__init__.py +5 -0
- atlan_application_sdk-0.1.1rc31/application_sdk/events/models.py +176 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/inputs/objectstore.py +4 -18
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/inputs/secretstore.py +16 -1
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/observability/observability.py +2 -1
- atlan_application_sdk-0.1.1rc31/application_sdk/outputs/eventstore.py +109 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/server/fastapi/__init__.py +1 -1
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/server/fastapi/models.py +1 -1
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/server/fastapi/__init__.py +1 -1
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/version.py +1 -1
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/worker.py +32 -0
- atlan_application_sdk-0.1.1rc31/components/eventstore.yaml +23 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/pyproject.toml +1 -1
- atlan_application_sdk-0.1.1rc31/tests/conftest.py +34 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/application/metadata_extraction/test_sql.py +35 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/application/test_application.py +14 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/clients/test_atlan_client.py +22 -22
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/clients/test_temporal_client.py +4 -2
- atlan_application_sdk-0.1.1rc31/tests/unit/outputs/test_eventstore.py +253 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/test_worker.py +5 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/uv.lock +1 -1
- atlan_application_sdk-0.1.1rc29/.github/release_notes.md +0 -11
- atlan_application_sdk-0.1.1rc29/application_sdk/outputs/eventstore.py +0 -177
- atlan_application_sdk-0.1.1rc29/components/eventstore.yaml +0 -8
- atlan_application_sdk-0.1.1rc29/tests/conftest.py +0 -15
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.cursor/rules/documentation.mdc +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.cursor/rules/exception-handling.mdc +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.cursor/rules/guidelines.mdc +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.cursor/rules/logging.mdc +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.cursor/rules/performance.mdc +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.cursor/rules/setup.mdc +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.cursor/rules/standards.mdc +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.cursor/rules/testing.mdc +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.env.example +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/CODEOWNERS +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/actions/docgen/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/actions/doclint/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/actions/docstring-coverage/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/actions/e2e-apps/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/actions/e2e-examples/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/actions/setup-deps/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/actions/sync-branches/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/actions/trivy/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/actions/trivy-container/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/actions/unit-tests/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/dependabot.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/pull_request_template.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/scripts/extract_release_notes.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/scripts/pre_release.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/scripts/release.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/scripts/trivy-to-markdown.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/scripts/update_changelog.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/AMPM.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Accessibility.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Acronyms.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Adverbs.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Auto.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Avoid.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Contractions.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Dashes.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/DateFormat.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/DateNumbers.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/DateOrder.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Ellipses.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/FirstPerson.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Foreign.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Gender.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/GenderBias.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/GeneralURL.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/HeadingAcronyms.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/HeadingColons.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/HeadingPunctuation.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Headings.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Hyphens.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Negative.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Ordinal.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/OxfordComma.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Passive.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Percentages.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Plurals.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Quotes.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/RangeTime.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Semicolon.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/SentenceLength.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Spacing.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Suspended.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Terms.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/URLFormat.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Units.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Vocab.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/We.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/Wordiness.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/Microsoft/meta.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/config/vocabularies/deviations/accept.txt +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/styles/config/vocabularies/deviations/reject.txt +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/checks.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/checks.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/codeql.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/codeql.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/dependency-review.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/dependency-review.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/stale.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/stale.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/trivy-container.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/trivy-container.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/trivy.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflow-templates/trivy.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflows/codeql.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflows/pre-release.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflows/pull_request.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflows/push.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflows/release.yaml.disabled +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflows/scale-tests.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflows/schedule.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflows/tag-and-publish.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.github/workflows/trivy-container.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.gitignore +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.pre-commit-config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/.vscode/launch.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/CODE_OF_CONDUCT.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/CONTRIBUTING.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/LICENSE +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/NOTICE +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/README.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/SECURITY.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/activities/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/activities/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/activities/common/models.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/activities/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/activities/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/activities/metadata_extraction/rest.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/activities/metadata_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/activities/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/activities/query_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/application/metadata_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/clients/__init__.py +0 -0
- /atlan_application_sdk-0.1.1rc29/application_sdk/clients/atlan_client.py → /atlan_application_sdk-0.1.1rc31/application_sdk/clients/atlan.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/clients/atlan_auth.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/clients/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/clients/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/clients/workflow.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/common/aws_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/common/credential_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/common/dapr_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/common/dataframe_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/common/error_codes.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/exporters/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/exporters/mkdocs.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/models/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/models/export/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/models/export/page.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/models/manifest/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/models/manifest/customer.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/models/manifest/internal.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/models/manifest/metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/models/manifest/page.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/models/manifest/section.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/parsers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/parsers/directory.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/docgen/parsers/manifest.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/handlers/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/inputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/inputs/iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/inputs/json.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/inputs/parquet.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/inputs/sql_query.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/inputs/statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/observability/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/observability/decorators/observability_decorator.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/observability/logger_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/observability/metrics_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/observability/traces_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/observability/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/outputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/outputs/atlan_storage.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/outputs/iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/outputs/json.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/outputs/objectstore.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/outputs/parquet.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/outputs/secretstore.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/outputs/statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/server/fastapi/middleware/logmiddleware.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/server/fastapi/middleware/metrics.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/server/fastapi/routers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/server/fastapi/routers/server.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/server/fastapi/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/e2e/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/e2e/base.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/e2e/client.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/e2e/conftest.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/e2e/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/clients/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/common/logger.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_preflight.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/inputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/inputs/json_input.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/outputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/outputs/json_output.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/outputs/statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/hypothesis/strategies/temporal.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/README.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/config_loader.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/data_generator.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/driver.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/examples/config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/output_handler/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/output_handler/base.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/output_handler/csv_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/output_handler/json_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/scale_data_generator/output_handler/parquet_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/test_utils/workflow_monitoring.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/atlas/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/atlas/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/query/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/query/templates/column.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/query/templates/database.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/query/templates/extras-procedure.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/query/templates/function.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/query/templates/schema.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/query/templates/table.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/transformers/query/templates/tag_attachment.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/workflows/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/workflows/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/workflows/metadata_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/workflows/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/workflows/query_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/components/README.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/components/atlan-storage.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/components/aws-secrets.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/components/deployment-secrets.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/components/objectstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/components/secretstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/components/statestore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/activities.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/application.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/application_sql.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/atlanupload.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/clients.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/common.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/handlers.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/inputs.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/output_paths.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/outputs.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/server.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/temporal_auth.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/worker.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/concepts/workflows.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/configuration.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/guides/architecture.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/guides/atlantis.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/guides/best-practices.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/guides/getting-started.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/guides/index.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/guides/partners.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/guides/secretstores.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/guides/sql-application-guide.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/guides/test-framework.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/index.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/setup/LINUX.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/setup/MAC.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/setup/WINDOWS.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/setup/troubleshooting.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/static/assets/logo.svg +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/static/images/phoenix-sdk-featureset.png +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/static/javascripts/mathjax.js +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/docs/static/stylesheets/extra.css +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/docs/mkdocs.yml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/examples/README.md +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/examples/application_custom_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/examples/application_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/examples/application_hello_world.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/examples/application_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/examples/application_sql_miner.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/examples/application_sql_with_custom_pyatlan_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/examples/application_sql_with_custom_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/examples/run_examples.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/examples/sql_query_templates/database.yaml +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/activities/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/activities/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/activities/common/test_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/activities/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/activities/metadata_extraction/test_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/activities/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/activities/test_activities.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/application/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/clients/test_async_sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/clients/test_atlan_auth.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/clients/test_atlanauth.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/clients/test_sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/common/test_aws_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/common/test_credential_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/common/test_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/docgen/parsers/test_directory_parser.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/docgen/parsers/test_manifest_parser.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/handlers/sql/test_auth.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/handlers/sql/test_check_schemas_and_databases.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/handlers/sql/test_extract_allowed_schemas.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/handlers/sql/test_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/handlers/sql/test_preflight_check.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/handlers/sql/test_prepare_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/handlers/sql/test_tables_check.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/handlers/sql/test_validate_filters.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/inputs/test_json.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/observability/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/observability/test_logger_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/observability/test_metrics_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/observability/test_traces_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/outputs/test_atlanstorage.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/outputs/test_iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/outputs/test_json_output.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/outputs/test_objectstore.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/outputs/test_output.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/outputs/test_statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/server/fastapi/routers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/server/fastapi/routers/server.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/server/fastapi/test_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/raw_columns.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/raw_databases.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/raw_functions.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/raw_procedures.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/raw_schemas.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/raw_tables.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/transformed_columns.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/transformed_databases.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/transformed_functions.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/transformed_procedures.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/transformed_schemas.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/resources/transformed_tables.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/test_column.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/test_database.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/test_function.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/test_procedure.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/test_schema.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/atlas/test_table.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/raw/column.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/raw/database.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/raw/extras-procedure.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/raw/function.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/raw/schema.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/raw/table.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/transformed/column.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/transformed/database.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/transformed/extras-procedure.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/transformed/function.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/transformed/schema.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/resources/transformed/table.json +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/test_sql_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/transformers/query/test_sql_transformer_output_validation.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/workflows/metadata_extraction/test_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/workflows/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/tests/unit/workflows/query_extraction/test_sql.py +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
## v0.1.1rc31 (August 14, 2025)
|
|
2
|
+
|
|
3
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc30...v0.1.1rc31
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- support for app registration via events (#635) (by @Nishant Munjal in [330b585](https://github.com/atlanhq/application-sdk/commit/330b585))
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- error logs related to deployment secrets (#651) (by @Nishchith Shetty in [09f6e5c](https://github.com/atlanhq/application-sdk/commit/09f6e5c))
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.1.1rc31 (August 14, 2025)
|
|
4
|
+
|
|
5
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc30...v0.1.1rc31
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- support for app registration via events (#635) (by @Nishant Munjal in [330b585](https://github.com/atlanhq/application-sdk/commit/330b585))
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
- error logs related to deployment secrets (#651) (by @Nishchith Shetty in [09f6e5c](https://github.com/atlanhq/application-sdk/commit/09f6e5c))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## v0.1.1rc30 (August 13, 2025)
|
|
18
|
+
|
|
19
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc29...v0.1.1rc30
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
- download_files_from_object_store with correct files list (#652) (by @Nishchith Shetty in [e2ed7bd](https://github.com/atlanhq/application-sdk/commit/e2ed7bd))
|
|
24
|
+
|
|
3
25
|
## v0.1.1rc29 (August 13, 2025)
|
|
4
26
|
|
|
5
27
|
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc28...v0.1.1rc29
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atlan-application-sdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1rc31
|
|
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
|
|
@@ -3,8 +3,8 @@ from typing import Any, Dict, List, Optional, Tuple, Type
|
|
|
3
3
|
|
|
4
4
|
from application_sdk.activities import ActivitiesInterface
|
|
5
5
|
from application_sdk.clients.utils import get_workflow_client
|
|
6
|
+
from application_sdk.events.models import EventRegistration
|
|
6
7
|
from application_sdk.observability.logger_adaptor import get_logger
|
|
7
|
-
from application_sdk.outputs.eventstore import EventRegistration
|
|
8
8
|
from application_sdk.server import ServerInterface
|
|
9
9
|
from application_sdk.server.fastapi import APIServer, HttpWorkflowTrigger
|
|
10
10
|
from application_sdk.server.fastapi.models import EventWorkflowTrigger
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import uuid
|
|
3
3
|
from concurrent.futures import ThreadPoolExecutor
|
|
4
|
+
from datetime import timedelta
|
|
4
5
|
from typing import Any, Dict, Optional, Sequence, Type
|
|
5
6
|
|
|
6
7
|
from temporalio import activity, workflow
|
|
7
8
|
from temporalio.client import Client, WorkflowExecutionStatus, WorkflowFailureError
|
|
9
|
+
from temporalio.common import RetryPolicy
|
|
8
10
|
from temporalio.types import CallableType, ClassType
|
|
9
11
|
from temporalio.worker import (
|
|
10
12
|
ActivityInboundInterceptor,
|
|
@@ -33,17 +35,17 @@ from application_sdk.constants import (
|
|
|
33
35
|
WORKFLOW_PORT,
|
|
34
36
|
WORKFLOW_TLS_ENABLED_KEY,
|
|
35
37
|
)
|
|
36
|
-
from application_sdk.
|
|
37
|
-
from application_sdk.inputs.statestore import StateType
|
|
38
|
-
from application_sdk.observability.logger_adaptor import get_logger
|
|
39
|
-
from application_sdk.outputs.eventstore import (
|
|
38
|
+
from application_sdk.events.models import (
|
|
40
39
|
ApplicationEventNames,
|
|
41
40
|
Event,
|
|
42
41
|
EventMetadata,
|
|
43
|
-
EventStore,
|
|
44
42
|
EventTypes,
|
|
45
43
|
WorkflowStates,
|
|
46
44
|
)
|
|
45
|
+
from application_sdk.inputs.secretstore import SecretStoreInput
|
|
46
|
+
from application_sdk.inputs.statestore import StateType
|
|
47
|
+
from application_sdk.observability.logger_adaptor import get_logger
|
|
48
|
+
from application_sdk.outputs.eventstore import EventStore
|
|
47
49
|
from application_sdk.outputs.secretstore import SecretStoreOutput
|
|
48
50
|
from application_sdk.outputs.statestore import StateStoreOutput
|
|
49
51
|
from application_sdk.workflows import WorkflowInterface
|
|
@@ -55,11 +57,30 @@ TEMPORAL_NOT_FOUND_FAILURE = (
|
|
|
55
57
|
)
|
|
56
58
|
|
|
57
59
|
|
|
60
|
+
# Activity for publishing events (runs outside sandbox)
|
|
61
|
+
@activity.defn
|
|
62
|
+
async def publish_event(event_data: dict) -> None:
|
|
63
|
+
"""Activity to publish events outside the workflow sandbox.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
event_data (dict): Event data to publish containing event_type, event_name,
|
|
67
|
+
metadata, and data fields.
|
|
68
|
+
"""
|
|
69
|
+
try:
|
|
70
|
+
event = Event(**event_data)
|
|
71
|
+
await EventStore.publish_event(event)
|
|
72
|
+
activity.logger.info(f"Published event: {event_data.get('event_name','')}")
|
|
73
|
+
except Exception as e:
|
|
74
|
+
activity.logger.error(f"Failed to publish event: {e}")
|
|
75
|
+
raise
|
|
76
|
+
|
|
77
|
+
|
|
58
78
|
class EventActivityInboundInterceptor(ActivityInboundInterceptor):
|
|
59
79
|
"""Interceptor for tracking activity execution events.
|
|
60
80
|
|
|
61
81
|
This interceptor captures the start and end of activity executions,
|
|
62
82
|
creating events that can be used for monitoring and tracking.
|
|
83
|
+
Activities run outside the sandbox so they can directly call EventStore.
|
|
63
84
|
"""
|
|
64
85
|
|
|
65
86
|
async def execute_activity(self, input: ExecuteActivityInput) -> Any:
|
|
@@ -71,31 +92,28 @@ class EventActivityInboundInterceptor(ActivityInboundInterceptor):
|
|
|
71
92
|
Returns:
|
|
72
93
|
Any: The result of the activity execution.
|
|
73
94
|
"""
|
|
74
|
-
|
|
95
|
+
# Extract activity information for tracking
|
|
96
|
+
|
|
97
|
+
start_event = Event(
|
|
75
98
|
event_type=EventTypes.APPLICATION_EVENT.value,
|
|
76
99
|
event_name=ApplicationEventNames.ACTIVITY_START.value,
|
|
77
100
|
data={},
|
|
78
101
|
)
|
|
79
|
-
EventStore.publish_event(
|
|
102
|
+
await EventStore.publish_event(start_event)
|
|
80
103
|
|
|
81
104
|
output = None
|
|
82
105
|
try:
|
|
83
106
|
output = await super().execute_activity(input)
|
|
84
|
-
except Exception
|
|
107
|
+
except Exception:
|
|
108
|
+
raise
|
|
109
|
+
finally:
|
|
85
110
|
end_event = Event(
|
|
86
111
|
event_type=EventTypes.APPLICATION_EVENT.value,
|
|
87
112
|
event_name=ApplicationEventNames.ACTIVITY_END.value,
|
|
88
113
|
data={},
|
|
89
114
|
)
|
|
90
|
-
EventStore.publish_event(end_event)
|
|
91
|
-
raise e
|
|
115
|
+
await EventStore.publish_event(end_event)
|
|
92
116
|
|
|
93
|
-
end_event = Event(
|
|
94
|
-
event_type=EventTypes.APPLICATION_EVENT.value,
|
|
95
|
-
event_name=ApplicationEventNames.ACTIVITY_END.value,
|
|
96
|
-
data={},
|
|
97
|
-
)
|
|
98
|
-
EventStore.publish_event(end_event)
|
|
99
117
|
return output
|
|
100
118
|
|
|
101
119
|
|
|
@@ -104,6 +122,7 @@ class EventWorkflowInboundInterceptor(WorkflowInboundInterceptor):
|
|
|
104
122
|
|
|
105
123
|
This interceptor captures the start and end of workflow executions,
|
|
106
124
|
creating events that can be used for monitoring and tracking.
|
|
125
|
+
Uses activities to publish events to avoid sandbox restrictions.
|
|
107
126
|
"""
|
|
108
127
|
|
|
109
128
|
async def execute_workflow(self, input: ExecuteWorkflowInput) -> Any:
|
|
@@ -115,47 +134,56 @@ class EventWorkflowInboundInterceptor(WorkflowInboundInterceptor):
|
|
|
115
134
|
Returns:
|
|
116
135
|
Any: The result of the workflow execution.
|
|
117
136
|
"""
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
137
|
+
|
|
138
|
+
# Publish workflow start event via activity
|
|
139
|
+
try:
|
|
140
|
+
await workflow.execute_activity(
|
|
141
|
+
publish_event,
|
|
142
|
+
{
|
|
143
|
+
"metadata": EventMetadata(
|
|
144
|
+
workflow_state=WorkflowStates.RUNNING.value
|
|
145
|
+
),
|
|
146
|
+
"event_type": EventTypes.APPLICATION_EVENT.value,
|
|
147
|
+
"event_name": ApplicationEventNames.WORKFLOW_START.value,
|
|
148
|
+
"data": {},
|
|
149
|
+
},
|
|
150
|
+
schedule_to_close_timeout=timedelta(seconds=30),
|
|
151
|
+
retry_policy=RetryPolicy(maximum_attempts=3),
|
|
126
152
|
)
|
|
153
|
+
except Exception as e:
|
|
154
|
+
workflow.logger.warning(f"Failed to publish workflow start event: {e}")
|
|
155
|
+
# Don't fail the workflow if event publishing fails
|
|
127
156
|
|
|
128
157
|
output = None
|
|
158
|
+
workflow_state = WorkflowStates.FAILED.value # Default to failed
|
|
159
|
+
|
|
129
160
|
try:
|
|
130
161
|
output = await super().execute_workflow(input)
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
162
|
+
workflow_state = (
|
|
163
|
+
WorkflowStates.COMPLETED.value
|
|
164
|
+
) # Update to completed on success
|
|
165
|
+
except Exception:
|
|
166
|
+
workflow_state = WorkflowStates.FAILED.value # Keep as failed
|
|
167
|
+
raise
|
|
168
|
+
finally:
|
|
169
|
+
# Always publish workflow end event
|
|
170
|
+
try:
|
|
171
|
+
await workflow.execute_activity(
|
|
172
|
+
publish_event,
|
|
173
|
+
{
|
|
174
|
+
"metadata": EventMetadata(workflow_state=workflow_state),
|
|
175
|
+
"event_type": EventTypes.APPLICATION_EVENT.value,
|
|
176
|
+
"event_name": ApplicationEventNames.WORKFLOW_END.value,
|
|
177
|
+
"data": {},
|
|
178
|
+
},
|
|
179
|
+
schedule_to_close_timeout=timedelta(seconds=30),
|
|
180
|
+
retry_policy=RetryPolicy(maximum_attempts=3),
|
|
181
|
+
)
|
|
182
|
+
except Exception as publish_error:
|
|
183
|
+
workflow.logger.warning(
|
|
184
|
+
f"Failed to publish workflow end event: {publish_error}"
|
|
142
185
|
)
|
|
143
|
-
raise e
|
|
144
186
|
|
|
145
|
-
with workflow.unsafe.sandbox_unrestricted():
|
|
146
|
-
EventStore.publish_event(
|
|
147
|
-
Event(
|
|
148
|
-
metadata=EventMetadata(
|
|
149
|
-
workflow_state=WorkflowStates.COMPLETED.value
|
|
150
|
-
),
|
|
151
|
-
event_type=EventTypes.APPLICATION_EVENT.value,
|
|
152
|
-
event_name=ApplicationEventNames.WORKFLOW_END.value,
|
|
153
|
-
data={
|
|
154
|
-
"workflow_id": workflow.info().workflow_id,
|
|
155
|
-
"workflow_run_id": workflow.info().run_id,
|
|
156
|
-
},
|
|
157
|
-
),
|
|
158
|
-
)
|
|
159
187
|
return output
|
|
160
188
|
|
|
161
189
|
|
|
@@ -513,11 +541,14 @@ class TemporalWorkflowClient(WorkflowClient):
|
|
|
513
541
|
f"Started token refresh loop with dynamic interval (initial: {self._token_refresh_interval}s)"
|
|
514
542
|
)
|
|
515
543
|
|
|
544
|
+
# Add the publish_event to the activities list
|
|
545
|
+
extended_activities = list(activities) + [publish_event]
|
|
546
|
+
|
|
516
547
|
return Worker(
|
|
517
548
|
self.client,
|
|
518
549
|
task_queue=self.worker_task_queue,
|
|
519
550
|
workflows=workflow_classes,
|
|
520
|
-
activities=activities
|
|
551
|
+
activities=extended_activities, # Use extended activities list
|
|
521
552
|
workflow_runner=SandboxedWorkflowRunner(
|
|
522
553
|
restrictions=SandboxRestrictions.default.with_passthrough_modules(
|
|
523
554
|
*passthrough_modules
|
{atlan_application_sdk-0.1.1rc29 → atlan_application_sdk-0.1.1rc31}/application_sdk/constants.py
RENAMED
|
@@ -128,6 +128,11 @@ DEPLOYMENT_OBJECT_STORE_NAME = os.getenv("DEPLOYMENT_OBJECT_STORE_NAME", "object
|
|
|
128
128
|
UPSTREAM_OBJECT_STORE_NAME = os.getenv("UPSTREAM_OBJECT_STORE_NAME", "objectstore")
|
|
129
129
|
#: Name of the pubsub component in DAPR
|
|
130
130
|
EVENT_STORE_NAME = os.getenv("EVENT_STORE_NAME", "eventstore")
|
|
131
|
+
#: DAPR binding operation for creating resources
|
|
132
|
+
DAPR_BINDING_OPERATION_CREATE = "create"
|
|
133
|
+
#: Version of worker start events used in the application
|
|
134
|
+
WORKER_START_EVENT_VERSION = "v1"
|
|
135
|
+
|
|
131
136
|
#: Whether to enable Atlan storage upload
|
|
132
137
|
ENABLE_ATLAN_UPLOAD = os.getenv("ENABLE_ATLAN_UPLOAD", "false").lower() == "true"
|
|
133
138
|
# Dapr Client Configuration
|
|
@@ -135,6 +140,7 @@ ENABLE_ATLAN_UPLOAD = os.getenv("ENABLE_ATLAN_UPLOAD", "false").lower() == "true
|
|
|
135
140
|
DAPR_MAX_GRPC_MESSAGE_LENGTH = int(
|
|
136
141
|
os.getenv("DAPR_MAX_GRPC_MESSAGE_LENGTH", "104857600")
|
|
137
142
|
)
|
|
143
|
+
|
|
138
144
|
#: Name of the deployment secret store component in DAPR
|
|
139
145
|
DEPLOYMENT_SECRET_STORE_NAME = os.getenv(
|
|
140
146
|
"DEPLOYMENT_SECRET_STORE_NAME", "deployment-secret-store"
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"""Base event classes and models.
|
|
2
|
+
|
|
3
|
+
This module contains the base classes and models for all events in the application.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from abc import ABC
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import Any, Dict, List, Optional
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, Field
|
|
11
|
+
|
|
12
|
+
from application_sdk.constants import APPLICATION_NAME, WORKER_START_EVENT_VERSION
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class EventTypes(Enum):
|
|
16
|
+
"""Enumeration of event types."""
|
|
17
|
+
|
|
18
|
+
APPLICATION_EVENT = "application_events"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ApplicationEventNames(Enum):
|
|
22
|
+
"""Enumeration of application event names."""
|
|
23
|
+
|
|
24
|
+
WORKFLOW_END = "workflow_end"
|
|
25
|
+
WORKFLOW_START = "workflow_start"
|
|
26
|
+
ACTIVITY_START = "activity_start"
|
|
27
|
+
ACTIVITY_END = "activity_end"
|
|
28
|
+
WORKER_START = "worker_start"
|
|
29
|
+
WORKER_END = "worker_end"
|
|
30
|
+
APPLICATION_START = "application_start"
|
|
31
|
+
APPLICATION_END = "application_end"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class WorkflowStates(Enum):
|
|
35
|
+
"""Enumeration of workflow states."""
|
|
36
|
+
|
|
37
|
+
UNKNOWN = "unknown"
|
|
38
|
+
RUNNING = "running"
|
|
39
|
+
COMPLETED = "completed"
|
|
40
|
+
FAILED = "failed"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class EventMetadata(BaseModel):
|
|
44
|
+
"""Metadata for events.
|
|
45
|
+
|
|
46
|
+
Attributes:
|
|
47
|
+
application_name: Name of the application the event belongs to.
|
|
48
|
+
created_timestamp: Timestamp when the event was created.
|
|
49
|
+
workflow_type: Type of the workflow.
|
|
50
|
+
workflow_id: ID of the workflow.
|
|
51
|
+
workflow_run_id: Run ID of the workflow.
|
|
52
|
+
workflow_state: State of the workflow.
|
|
53
|
+
activity_type: Type of the activity.
|
|
54
|
+
activity_id: ID of the activity.
|
|
55
|
+
attempt: Attempt number for the activity.
|
|
56
|
+
topic_name: Name of the topic for the event.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
application_name: str = Field(init=True, default=APPLICATION_NAME)
|
|
60
|
+
created_timestamp: int = Field(init=True, default=0)
|
|
61
|
+
|
|
62
|
+
# Workflow information
|
|
63
|
+
workflow_type: str | None = Field(init=True, default=None)
|
|
64
|
+
workflow_id: str | None = Field(init=True, default=None)
|
|
65
|
+
workflow_run_id: str | None = Field(init=True, default=None)
|
|
66
|
+
workflow_state: str | None = Field(init=True, default=WorkflowStates.UNKNOWN.value)
|
|
67
|
+
|
|
68
|
+
# Activity information (Only when in an activity flow)
|
|
69
|
+
activity_type: str | None = Field(init=True, default=None)
|
|
70
|
+
activity_id: str | None = Field(init=True, default=None)
|
|
71
|
+
attempt: int | None = Field(init=True, default=None)
|
|
72
|
+
|
|
73
|
+
topic_name: str | None = Field(init=False, default=None)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class EventFilter(BaseModel):
|
|
77
|
+
"""Filter for events.
|
|
78
|
+
|
|
79
|
+
Attributes:
|
|
80
|
+
path: Path to filter on.
|
|
81
|
+
operator: Operator to use for filtering.
|
|
82
|
+
value: Value to filter by.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
path: str
|
|
86
|
+
operator: str
|
|
87
|
+
value: str
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class Consumes(BaseModel):
|
|
91
|
+
"""Model for event consumption configuration.
|
|
92
|
+
|
|
93
|
+
Attributes:
|
|
94
|
+
event_id: ID of the event.
|
|
95
|
+
event_type: Type of the event.
|
|
96
|
+
event_name: Name of the event.
|
|
97
|
+
version: Version of the event.
|
|
98
|
+
filters: List of filters to apply.
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
event_id: str = Field(alias="eventId")
|
|
102
|
+
event_type: str = Field(alias="eventType")
|
|
103
|
+
event_name: str = Field(alias="eventName")
|
|
104
|
+
version: str = Field()
|
|
105
|
+
filters: List[EventFilter] = Field(init=True, default=[])
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class EventRegistration(BaseModel):
|
|
109
|
+
"""Model for event registration.
|
|
110
|
+
|
|
111
|
+
Attributes:
|
|
112
|
+
consumes: List of events to consume.
|
|
113
|
+
produces: List of events to produce.
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
consumes: List[Consumes] = Field(init=True, default=[])
|
|
117
|
+
produces: List[Dict[str, Any]] = Field(init=True, default=[])
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class Event(BaseModel, ABC):
|
|
121
|
+
"""Base class for all events.
|
|
122
|
+
|
|
123
|
+
Attributes:
|
|
124
|
+
metadata: Metadata for the event.
|
|
125
|
+
event_type: Type of the event.
|
|
126
|
+
event_name: Name of the event.
|
|
127
|
+
data: Data payload of the event.
|
|
128
|
+
"""
|
|
129
|
+
|
|
130
|
+
metadata: EventMetadata = Field(init=True, default_factory=EventMetadata)
|
|
131
|
+
|
|
132
|
+
event_type: str
|
|
133
|
+
event_name: str
|
|
134
|
+
|
|
135
|
+
data: Dict[str, Any]
|
|
136
|
+
|
|
137
|
+
def get_topic_name(self):
|
|
138
|
+
"""Get the topic name for this event.
|
|
139
|
+
|
|
140
|
+
Returns:
|
|
141
|
+
str: The topic name.
|
|
142
|
+
"""
|
|
143
|
+
return self.event_type
|
|
144
|
+
|
|
145
|
+
class Config:
|
|
146
|
+
extra = "allow"
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
class WorkerStartEventData(BaseModel):
|
|
150
|
+
"""Model for worker creation event data.
|
|
151
|
+
|
|
152
|
+
This model represents the data structure used when publishing worker creation events.
|
|
153
|
+
It contains information about the worker configuration and environment.
|
|
154
|
+
|
|
155
|
+
Attributes:
|
|
156
|
+
application_name: Name of the application the worker belongs to.
|
|
157
|
+
task_queue: Task queue name for the worker.
|
|
158
|
+
namespace: Temporal namespace for the worker.
|
|
159
|
+
host: Host address of the Temporal server.
|
|
160
|
+
port: Port number of the Temporal server.
|
|
161
|
+
connection_string: Connection string for the Temporal server.
|
|
162
|
+
max_concurrent_activities: Maximum number of concurrent activities.
|
|
163
|
+
workflow_count: Number of workflow classes registered.
|
|
164
|
+
activity_count: Number of activity functions registered.
|
|
165
|
+
"""
|
|
166
|
+
|
|
167
|
+
version: str = WORKER_START_EVENT_VERSION
|
|
168
|
+
application_name: str
|
|
169
|
+
task_queue: str
|
|
170
|
+
namespace: str
|
|
171
|
+
host: str
|
|
172
|
+
port: str
|
|
173
|
+
connection_string: str
|
|
174
|
+
max_concurrent_activities: Optional[int]
|
|
175
|
+
workflow_count: int
|
|
176
|
+
activity_count: int
|
|
@@ -79,25 +79,11 @@ class ObjectStoreInput:
|
|
|
79
79
|
try:
|
|
80
80
|
# List all files in the object store path
|
|
81
81
|
relative_path = os.path.relpath(file_path, download_file_prefix)
|
|
82
|
-
|
|
82
|
+
file_list = cls.list_all_files(relative_path, object_store_name)
|
|
83
83
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
operation=cls.OBJECT_LIST_OPERATION, metadata=metadata
|
|
88
|
-
)
|
|
89
|
-
file_list = orjson.loads(response_data.decode("utf-8"))
|
|
90
|
-
except Exception as e:
|
|
91
|
-
logger.error(
|
|
92
|
-
f"Error listing files in object store path {download_file_prefix}: {str(e)}"
|
|
93
|
-
)
|
|
94
|
-
raise e
|
|
95
|
-
|
|
96
|
-
if not file_list:
|
|
97
|
-
logger.info(
|
|
98
|
-
f"No files found in object store path: {download_file_prefix}"
|
|
99
|
-
)
|
|
100
|
-
return
|
|
84
|
+
logger.info(
|
|
85
|
+
f"Found list of files: {file_list} from: {download_file_prefix}"
|
|
86
|
+
)
|
|
101
87
|
|
|
102
88
|
# Download each file
|
|
103
89
|
for relative_path in file_list:
|
|
@@ -7,6 +7,7 @@ from typing import Any, Dict
|
|
|
7
7
|
|
|
8
8
|
from dapr.clients import DaprClient
|
|
9
9
|
|
|
10
|
+
from application_sdk.common.dapr_utils import is_component_registered
|
|
10
11
|
from application_sdk.constants import (
|
|
11
12
|
DEPLOYMENT_NAME,
|
|
12
13
|
DEPLOYMENT_SECRET_PATH,
|
|
@@ -22,7 +23,21 @@ logger = get_logger(__name__)
|
|
|
22
23
|
class SecretStoreInput:
|
|
23
24
|
@classmethod
|
|
24
25
|
def get_deployment_secret(cls) -> Dict[str, Any]:
|
|
25
|
-
"""Get deployment config
|
|
26
|
+
"""Get deployment config from the deployment secret store.
|
|
27
|
+
|
|
28
|
+
Validates that the deployment secret store component is registered
|
|
29
|
+
before attempting to fetch secrets to prevent errors.
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
Dict[str, Any]: Deployment configuration data, or empty dict if
|
|
33
|
+
component is unavailable or fetch fails.
|
|
34
|
+
"""
|
|
35
|
+
if not is_component_registered(DEPLOYMENT_SECRET_STORE_NAME):
|
|
36
|
+
logger.warning(
|
|
37
|
+
f"Deployment secret store component '{DEPLOYMENT_SECRET_STORE_NAME}' is not registered"
|
|
38
|
+
)
|
|
39
|
+
return {}
|
|
40
|
+
|
|
26
41
|
try:
|
|
27
42
|
return cls.get_secret(DEPLOYMENT_SECRET_PATH, DEPLOYMENT_SECRET_STORE_NAME)
|
|
28
43
|
except Exception as e:
|
|
@@ -16,6 +16,7 @@ from dapr.clients import DaprClient
|
|
|
16
16
|
from pydantic import BaseModel
|
|
17
17
|
|
|
18
18
|
from application_sdk.constants import (
|
|
19
|
+
DAPR_BINDING_OPERATION_CREATE,
|
|
19
20
|
DEPLOYMENT_OBJECT_STORE_NAME,
|
|
20
21
|
ENABLE_OBSERVABILITY_DAPR_SINK,
|
|
21
22
|
LOG_FILE_NAME,
|
|
@@ -449,7 +450,7 @@ class AtlanObservability(Generic[T], ABC):
|
|
|
449
450
|
with DaprClient() as client:
|
|
450
451
|
client.invoke_binding(
|
|
451
452
|
binding_name=DEPLOYMENT_OBJECT_STORE_NAME,
|
|
452
|
-
operation=
|
|
453
|
+
operation=DAPR_BINDING_OPERATION_CREATE,
|
|
453
454
|
data=file_content,
|
|
454
455
|
binding_metadata=metadata,
|
|
455
456
|
)
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"""Event store module for handling application events.
|
|
2
|
+
|
|
3
|
+
This module provides the EventStore class for publishing application events
|
|
4
|
+
to a pub/sub system with automatic fallback to HTTP binding.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
from datetime import datetime
|
|
9
|
+
|
|
10
|
+
from dapr import clients
|
|
11
|
+
from temporalio import activity, workflow
|
|
12
|
+
|
|
13
|
+
from application_sdk.clients.atlan_auth import AtlanAuthClient
|
|
14
|
+
from application_sdk.common.dapr_utils import is_component_registered
|
|
15
|
+
from application_sdk.constants import (
|
|
16
|
+
APPLICATION_NAME,
|
|
17
|
+
DAPR_BINDING_OPERATION_CREATE,
|
|
18
|
+
EVENT_STORE_NAME,
|
|
19
|
+
)
|
|
20
|
+
from application_sdk.events.models import Event, EventMetadata, WorkflowStates
|
|
21
|
+
from application_sdk.observability.logger_adaptor import get_logger
|
|
22
|
+
|
|
23
|
+
logger = get_logger(__name__)
|
|
24
|
+
activity.logger = logger
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class EventStore:
|
|
28
|
+
"""Event store for publishing application events.
|
|
29
|
+
|
|
30
|
+
This class provides functionality to publish events to a pub/sub system.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
@classmethod
|
|
34
|
+
def enrich_event_metadata(cls, event: Event):
|
|
35
|
+
"""Enrich the event metadata with the workflow and activity information.
|
|
36
|
+
|
|
37
|
+
Args:
|
|
38
|
+
event (Event): Event data.
|
|
39
|
+
"""
|
|
40
|
+
if not event.metadata:
|
|
41
|
+
event.metadata = EventMetadata()
|
|
42
|
+
|
|
43
|
+
event.metadata.application_name = APPLICATION_NAME
|
|
44
|
+
event.metadata.created_timestamp = int(datetime.now().timestamp())
|
|
45
|
+
event.metadata.topic_name = event.get_topic_name()
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
workflow_info = workflow.info()
|
|
49
|
+
if workflow_info:
|
|
50
|
+
event.metadata.workflow_type = workflow_info.workflow_type
|
|
51
|
+
event.metadata.workflow_id = workflow_info.workflow_id
|
|
52
|
+
event.metadata.workflow_run_id = workflow_info.run_id
|
|
53
|
+
except Exception:
|
|
54
|
+
logger.debug("Not in workflow context, cannot set workflow metadata")
|
|
55
|
+
|
|
56
|
+
try:
|
|
57
|
+
activity_info = activity.info()
|
|
58
|
+
if activity_info:
|
|
59
|
+
event.metadata.activity_type = activity_info.activity_type
|
|
60
|
+
event.metadata.activity_id = activity_info.activity_id
|
|
61
|
+
event.metadata.attempt = activity_info.attempt
|
|
62
|
+
event.metadata.workflow_type = activity_info.workflow_type
|
|
63
|
+
event.metadata.workflow_id = activity_info.workflow_id
|
|
64
|
+
event.metadata.workflow_run_id = activity_info.workflow_run_id
|
|
65
|
+
event.metadata.workflow_state = WorkflowStates.RUNNING.value
|
|
66
|
+
except Exception:
|
|
67
|
+
logger.debug("Not in activity context, cannot set activity metadata")
|
|
68
|
+
|
|
69
|
+
return event
|
|
70
|
+
|
|
71
|
+
@classmethod
|
|
72
|
+
async def publish_event(cls, event: Event):
|
|
73
|
+
"""Publish event with automatic fallback between pub/sub and HTTP binding.
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
event (Event): Event data to publish.
|
|
77
|
+
"""
|
|
78
|
+
if not is_component_registered(EVENT_STORE_NAME):
|
|
79
|
+
logger.warning(
|
|
80
|
+
"Skipping event publish because event store component is not registered",
|
|
81
|
+
)
|
|
82
|
+
return
|
|
83
|
+
try:
|
|
84
|
+
event = cls.enrich_event_metadata(event)
|
|
85
|
+
|
|
86
|
+
payload = json.dumps(event.model_dump(mode="json"))
|
|
87
|
+
|
|
88
|
+
# Prepare binding metadata with auth token for HTTP bindings
|
|
89
|
+
binding_metadata = {"content-type": "application/json"}
|
|
90
|
+
|
|
91
|
+
# Add auth token - HTTP bindings will use it, others will ignore it
|
|
92
|
+
auth_client = AtlanAuthClient()
|
|
93
|
+
binding_metadata.update(await auth_client.get_authenticated_headers())
|
|
94
|
+
|
|
95
|
+
with clients.DaprClient() as client:
|
|
96
|
+
client.invoke_binding(
|
|
97
|
+
binding_name=EVENT_STORE_NAME,
|
|
98
|
+
operation=DAPR_BINDING_OPERATION_CREATE,
|
|
99
|
+
data=payload,
|
|
100
|
+
binding_metadata=binding_metadata,
|
|
101
|
+
)
|
|
102
|
+
logger.info(
|
|
103
|
+
f"Published event via binding on topic: {event.get_topic_name()}"
|
|
104
|
+
)
|
|
105
|
+
except Exception as e:
|
|
106
|
+
logger.error(
|
|
107
|
+
f"Failed to publish event on topic {event.get_topic_name()}: {e}",
|
|
108
|
+
exc_info=True,
|
|
109
|
+
)
|