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