atlan-application-sdk 0.1.1rc33__tar.gz → 0.1.1rc34__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.1rc33 → atlan_application_sdk-0.1.1rc34}/.cursor/BUGBOT.md +60 -0
- atlan_application_sdk-0.1.1rc34/.github/release_notes.md +7 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/CHANGELOG.md +9 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/PKG-INFO +1 -1
- atlan_application_sdk-0.1.1rc34/application_sdk/activities/metadata_extraction/base.py +102 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/application/__init__.py +8 -0
- atlan_application_sdk-0.1.1rc34/application_sdk/clients/base.py +293 -0
- atlan_application_sdk-0.1.1rc34/application_sdk/handlers/base.py +50 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/server/fastapi/models.py +1 -1
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/version.py +1 -1
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/activities.md +5 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/clients.md +102 -1
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/handlers.md +102 -1
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/pyproject.toml +1 -1
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/application/test_application.py +82 -3
- atlan_application_sdk-0.1.1rc34/tests/unit/clients/test_base_client.py +392 -0
- atlan_application_sdk-0.1.1rc34/tests/unit/handlers/test_base_handler.py +203 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/uv.lock +1 -1
- atlan_application_sdk-0.1.1rc33/.github/release_notes.md +0 -3
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.cursor/rules/documentation.mdc +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.cursor/rules/exception-handling.mdc +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.cursor/rules/guidelines.mdc +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.cursor/rules/logging.mdc +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.cursor/rules/performance.mdc +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.cursor/rules/setup.mdc +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.cursor/rules/standards.mdc +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.cursor/rules/testing.mdc +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.env.example +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/CODEOWNERS +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/actions/docgen/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/actions/doclint/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/actions/docstring-coverage/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/actions/e2e-apps/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/actions/e2e-examples/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/actions/setup-deps/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/actions/sync-branches/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/actions/trivy/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/actions/trivy-container/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/actions/unit-tests/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/dependabot.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/pull_request_template.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/scripts/extract_release_notes.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/scripts/pre_release.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/scripts/release.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/scripts/trivy-to-markdown.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/scripts/update_changelog.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/AMPM.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Accessibility.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Acronyms.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Adverbs.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Auto.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Avoid.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Contractions.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Dashes.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/DateFormat.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/DateNumbers.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/DateOrder.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Ellipses.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/FirstPerson.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Foreign.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Gender.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/GenderBias.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/GeneralURL.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/HeadingAcronyms.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/HeadingColons.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/HeadingPunctuation.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Headings.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Hyphens.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Negative.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Ordinal.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/OxfordComma.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Passive.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Percentages.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Plurals.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Quotes.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/RangeTime.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Semicolon.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/SentenceLength.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Spacing.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Suspended.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Terms.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/URLFormat.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Units.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Vocab.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/We.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/Wordiness.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/Microsoft/meta.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/config/vocabularies/deviations/accept.txt +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/styles/config/vocabularies/deviations/reject.txt +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/checks.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/checks.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/codeql.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/codeql.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/dependency-review.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/dependency-review.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/stale.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/stale.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/trivy-container.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/trivy-container.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/trivy.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflow-templates/trivy.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflows/codeql.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflows/pre-release.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflows/pull_request.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflows/push.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflows/release.yaml.disabled +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflows/scale-tests.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflows/schedule.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflows/tag-and-publish.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.github/workflows/trivy-container.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.gitignore +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.pre-commit-config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/.vscode/launch.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/CODE_OF_CONDUCT.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/CONTRIBUTING.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/LICENSE +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/NOTICE +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/README.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/SECURITY.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/activities/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/activities/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/activities/common/models.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/activities/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/activities/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/activities/metadata_extraction/rest.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/activities/metadata_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/activities/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/activities/query_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/application/metadata_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/clients/async_atlan.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/clients/atlan.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/clients/atlan_auth.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/clients/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/clients/temporal.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/clients/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/clients/workflow.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/common/aws_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/common/credential_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/common/dapr_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/common/dataframe_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/common/error_codes.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/constants.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/exporters/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/exporters/mkdocs.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/models/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/models/export/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/models/export/page.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/models/manifest/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/models/manifest/customer.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/models/manifest/internal.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/models/manifest/metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/models/manifest/page.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/models/manifest/section.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/parsers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/parsers/directory.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/docgen/parsers/manifest.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/events/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/events/models.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/handlers/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/inputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/inputs/iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/inputs/json.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/inputs/objectstore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/inputs/parquet.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/inputs/secretstore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/inputs/sql_query.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/inputs/statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/observability/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/observability/decorators/observability_decorator.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/observability/logger_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/observability/metrics_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/observability/observability.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/observability/traces_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/observability/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/outputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/outputs/atlan_storage.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/outputs/eventstore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/outputs/iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/outputs/json.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/outputs/objectstore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/outputs/parquet.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/outputs/secretstore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/outputs/statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/server/fastapi/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/server/fastapi/middleware/logmiddleware.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/server/fastapi/middleware/metrics.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/server/fastapi/routers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/server/fastapi/routers/server.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/server/fastapi/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/e2e/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/e2e/base.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/e2e/client.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/e2e/conftest.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/e2e/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/clients/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/common/logger.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_preflight.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/inputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/inputs/json_input.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/inputs/parquet_input.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/outputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/outputs/json_output.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/outputs/statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/server/fastapi/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/hypothesis/strategies/temporal.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/README.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/config_loader.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/data_generator.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/driver.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/examples/config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/output_handler/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/output_handler/base.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/output_handler/csv_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/output_handler/json_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/scale_data_generator/output_handler/parquet_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/test_utils/workflow_monitoring.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/atlas/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/atlas/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/query/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/query/templates/column.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/query/templates/database.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/query/templates/extras-procedure.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/query/templates/function.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/query/templates/schema.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/query/templates/table.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/transformers/query/templates/tag_attachment.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/worker.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/workflows/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/workflows/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/workflows/metadata_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/workflows/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/application_sdk/workflows/query_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/components/README.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/components/atlan-storage.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/components/aws-secrets.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/components/deployment-secrets.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/components/eventstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/components/objectstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/components/secretstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/components/statestore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/application.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/application_sql.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/atlanupload.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/common.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/inputs.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/output_paths.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/outputs.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/server.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/temporal_auth.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/worker.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/workflows.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/configuration.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/guides/architecture.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/guides/atlantis.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/guides/best-practices.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/guides/getting-started.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/guides/index.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/guides/partners.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/guides/secretstores.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/guides/sql-application-guide.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/guides/test-framework.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/index.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/setup/LINUX.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/setup/MAC.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/setup/WINDOWS.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/setup/troubleshooting.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/static/assets/logo.svg +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/static/images/phoenix-sdk-featureset.png +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/static/javascripts/mathjax.js +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/static/stylesheets/extra.css +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/mkdocs.yml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/examples/README.md +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/examples/application_custom_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/examples/application_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/examples/application_hello_world.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/examples/application_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/examples/application_sql_miner.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/examples/application_sql_with_custom_pyatlan_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/examples/application_sql_with_custom_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/examples/run_examples.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/examples/sql_query_templates/database.yaml +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/conftest.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/activities/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/activities/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/activities/common/test_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/activities/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/activities/metadata_extraction/test_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/activities/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/activities/test_activities.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/application/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/application/metadata_extraction/test_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/clients/test_async_atlan.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/clients/test_async_sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/clients/test_atlan_auth.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/clients/test_atlan_client.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/clients/test_atlanauth.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/clients/test_sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/clients/test_temporal_client.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/common/test_aws_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/common/test_credential_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/common/test_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/docgen/parsers/test_directory_parser.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/docgen/parsers/test_manifest_parser.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/handlers/sql/test_auth.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/handlers/sql/test_check_schemas_and_databases.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/handlers/sql/test_extract_allowed_schemas.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/handlers/sql/test_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/handlers/sql/test_preflight_check.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/handlers/sql/test_prepare_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/handlers/sql/test_tables_check.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/handlers/sql/test_validate_filters.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/inputs/test_json.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/inputs/test_parquet.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/observability/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/observability/test_logger_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/observability/test_metrics_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/observability/test_traces_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/outputs/test_atlanstorage.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/outputs/test_eventstore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/outputs/test_iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/outputs/test_json_output.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/outputs/test_objectstore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/outputs/test_output.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/outputs/test_statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/server/fastapi/routers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/server/fastapi/routers/server.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/server/fastapi/test_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/test_worker.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/raw_columns.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/raw_databases.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/raw_functions.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/raw_procedures.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/raw_schemas.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/raw_tables.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/transformed_columns.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/transformed_databases.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/transformed_functions.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/transformed_procedures.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/transformed_schemas.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/resources/transformed_tables.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/test_column.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/test_database.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/test_function.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/test_procedure.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/test_schema.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/atlas/test_table.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/raw/column.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/raw/database.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/raw/extras-procedure.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/raw/function.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/raw/schema.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/raw/table.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/transformed/column.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/transformed/database.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/transformed/extras-procedure.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/transformed/function.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/transformed/schema.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/resources/transformed/table.json +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/test_sql_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/transformers/query/test_sql_transformer_output_validation.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/workflows/metadata_extraction/test_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/workflows/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/tests/unit/workflows/query_extraction/test_sql.py +0 -0
|
@@ -58,3 +58,63 @@
|
|
|
58
58
|
- **Metrics**: Key operations include appropriate metrics
|
|
59
59
|
- **Error Context**: Error logs include sufficient context for debugging
|
|
60
60
|
- **Trace Information**: Critical paths include trace information
|
|
61
|
+
|
|
62
|
+
## 🚨 Automated Pattern Detection Rules
|
|
63
|
+
|
|
64
|
+
### Unit Test Requirements
|
|
65
|
+
|
|
66
|
+
- **Mandatory Test Coverage**: PRs with titles starting with "fix:" MUST include corresponding test file changes
|
|
67
|
+
- **Test File Naming**: Test files must follow the pattern `test_*.py` and mirror source structure
|
|
68
|
+
|
|
69
|
+
### File Naming Conventions
|
|
70
|
+
|
|
71
|
+
- **Model/Dataclass Files**: Files named `base.py` containing dataclasses or pydantic models should be renamed to `models.py` or `model.py`
|
|
72
|
+
- **Descriptive Naming**: File names should clearly indicate their purpose and contents
|
|
73
|
+
- **Consistency**: Follow established naming patterns within the repository
|
|
74
|
+
|
|
75
|
+
### Directory Structure
|
|
76
|
+
|
|
77
|
+
- **Single File Directories**: Directories containing only one file should be reorganized (e.g., `events/` folder with only one file)
|
|
78
|
+
- **Logical Grouping**: Related functionality should be grouped in appropriate subdirectories
|
|
79
|
+
- **Module Organization**: Avoid creating unnecessary directory nesting for single files
|
|
80
|
+
|
|
81
|
+
### Magic String Constants
|
|
82
|
+
|
|
83
|
+
- **Operation Strings**: Hardcoded strings like `"create"`, `"update"`, `"delete"` in business logic should be extracted to constants or enums.
|
|
84
|
+
- **Configuration Values**: String literals used across multiple files that are loaded from environment variables should be defined in `constants.py`.
|
|
85
|
+
|
|
86
|
+
### Method Naming
|
|
87
|
+
|
|
88
|
+
- **Verbose Names**: Method names longer than 25 characters with redundant context should be simplified
|
|
89
|
+
- **Clear Intent**: Method names should be concise but descriptive of their primary purpose
|
|
90
|
+
- **Context Redundancy**: Avoid repeating class or module context in method names
|
|
91
|
+
|
|
92
|
+
### Dead Code Detection
|
|
93
|
+
|
|
94
|
+
- **Conditional Blocks**: Flag `if False:` blocks and suggest removal
|
|
95
|
+
- **Unused Boolean Flags**: Detect and remove unused boolean flags and conditional logic
|
|
96
|
+
- **Commented Code**: Remove commented-out code blocks that are no longer needed
|
|
97
|
+
- **Unreachable Code**: Identify and remove code that can never be executed
|
|
98
|
+
|
|
99
|
+
### Code Duplication
|
|
100
|
+
|
|
101
|
+
- **Utility Extraction**: Repeated logic should be extracted into shared utility methods
|
|
102
|
+
- **Configuration Patterns**: Similar configuration setup code should be centralized
|
|
103
|
+
|
|
104
|
+
### File Management
|
|
105
|
+
|
|
106
|
+
- **Premature Creation**: Flag new empty files or files with minimal content that aren't referenced elsewhere
|
|
107
|
+
- **Unused Files**: Detect files added then immediately marked for removal in the same PR
|
|
108
|
+
- **File Purpose**: Ensure every new file serves a clear, documented purpose
|
|
109
|
+
|
|
110
|
+
### Import Organization
|
|
111
|
+
|
|
112
|
+
- **Stale Imports**: When code is moved between files, check if old imports still reference moved code
|
|
113
|
+
- **Import Cleanup**: Remove unused imports after code reorganization
|
|
114
|
+
- **Dependency Management**: Ensure imports reflect actual code dependencies
|
|
115
|
+
|
|
116
|
+
### Async Pattern Consistency
|
|
117
|
+
|
|
118
|
+
- **Workflow Context**: In workflow/temporal contexts, flag sync method calls that should be async
|
|
119
|
+
- **Mixed Patterns**: Ensure consistent async/await usage within the same module
|
|
120
|
+
- **Temporal Best Practices**: Follow Temporal SDK guidelines for async operations
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
## v0.1.1rc34 (August 27, 2025)
|
|
2
|
+
|
|
3
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc33...v0.1.1rc34
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Generic Client and Handlers for non-SQL connectors with http request methods (allows custom retry transport) (#660) (by @Prateek Rai in [b077a90](https://github.com/atlanhq/application-sdk/commit/b077a90))
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
## v0.1.1rc34 (August 27, 2025)
|
|
5
|
+
|
|
6
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc33...v0.1.1rc34
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- Generic Client and Handlers for non-SQL connectors with http request methods (allows custom retry transport) (#660) (by @Prateek Rai in [b077a90](https://github.com/atlanhq/application-sdk/commit/b077a90))
|
|
11
|
+
|
|
3
12
|
## v0.1.1rc33 (August 26, 2025)
|
|
4
13
|
|
|
5
14
|
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc32...v0.1.1rc33
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atlan-application-sdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1rc34
|
|
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
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
from typing import Any, Dict, Optional, Type
|
|
2
|
+
|
|
3
|
+
from temporalio import activity
|
|
4
|
+
|
|
5
|
+
from application_sdk.activities import ActivitiesInterface, ActivitiesState
|
|
6
|
+
from application_sdk.activities.common.utils import get_workflow_id
|
|
7
|
+
from application_sdk.clients.base import BaseClient
|
|
8
|
+
from application_sdk.common.credential_utils import get_credentials
|
|
9
|
+
from application_sdk.constants import APP_TENANT_ID, APPLICATION_NAME
|
|
10
|
+
from application_sdk.handlers.base import BaseHandler
|
|
11
|
+
from application_sdk.observability.logger_adaptor import get_logger
|
|
12
|
+
from application_sdk.transformers import TransformerInterface
|
|
13
|
+
|
|
14
|
+
logger = get_logger(__name__)
|
|
15
|
+
activity.logger = logger
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BaseMetadataExtractionActivitiesState(ActivitiesState):
|
|
19
|
+
"""State for base metadata extraction activities."""
|
|
20
|
+
|
|
21
|
+
client: Optional[BaseClient] = None
|
|
22
|
+
handler: Optional[BaseHandler] = None
|
|
23
|
+
transformer: Optional[TransformerInterface] = None
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class BaseMetadataExtractionActivities(ActivitiesInterface):
|
|
27
|
+
"""Base activities for non-SQL metadata extraction workflows."""
|
|
28
|
+
|
|
29
|
+
_state: Dict[str, BaseMetadataExtractionActivitiesState] = {}
|
|
30
|
+
|
|
31
|
+
client_class: Type[BaseClient] = BaseClient
|
|
32
|
+
handler_class: Type[BaseHandler] = BaseHandler
|
|
33
|
+
transformer_class: Optional[Type[TransformerInterface]] = None
|
|
34
|
+
|
|
35
|
+
def __init__(
|
|
36
|
+
self,
|
|
37
|
+
client_class: Optional[Type[BaseClient]] = None,
|
|
38
|
+
handler_class: Optional[Type[BaseHandler]] = None,
|
|
39
|
+
transformer_class: Optional[Type[TransformerInterface]] = None,
|
|
40
|
+
):
|
|
41
|
+
"""Initialize the base metadata extraction activities.
|
|
42
|
+
|
|
43
|
+
Args:
|
|
44
|
+
client_class: Client class to use. Defaults to BaseClient.
|
|
45
|
+
handler_class: Handler class to use. Defaults to BaseHandler.
|
|
46
|
+
transformer_class: Transformer class to use. Users must provide their own transformer implementation.
|
|
47
|
+
"""
|
|
48
|
+
if client_class:
|
|
49
|
+
self.client_class = client_class
|
|
50
|
+
if handler_class:
|
|
51
|
+
self.handler_class = handler_class
|
|
52
|
+
if transformer_class:
|
|
53
|
+
self.transformer_class = transformer_class
|
|
54
|
+
|
|
55
|
+
super().__init__()
|
|
56
|
+
|
|
57
|
+
async def _set_state(self, workflow_args: Dict[str, Any]):
|
|
58
|
+
"""Set up the state for the current workflow.
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
workflow_args: Arguments for the workflow.
|
|
62
|
+
"""
|
|
63
|
+
workflow_id = get_workflow_id()
|
|
64
|
+
if not self._state.get(workflow_id):
|
|
65
|
+
self._state[workflow_id] = BaseMetadataExtractionActivitiesState()
|
|
66
|
+
|
|
67
|
+
await super()._set_state(workflow_args)
|
|
68
|
+
|
|
69
|
+
state = self._state[workflow_id]
|
|
70
|
+
|
|
71
|
+
# Initialize client
|
|
72
|
+
client = self.client_class()
|
|
73
|
+
# Extract credentials from state store if credential_guid is available
|
|
74
|
+
if "credential_guid" in workflow_args:
|
|
75
|
+
logger.info(
|
|
76
|
+
f"Retrieving credentials for credential_guid: {workflow_args['credential_guid']}"
|
|
77
|
+
)
|
|
78
|
+
try:
|
|
79
|
+
credentials = await get_credentials(workflow_args["credential_guid"])
|
|
80
|
+
logger.info(
|
|
81
|
+
f"Successfully retrieved credentials with keys: {list(credentials.keys())}"
|
|
82
|
+
)
|
|
83
|
+
# Load the client with credentials
|
|
84
|
+
await client.load(credentials=credentials)
|
|
85
|
+
except Exception as e:
|
|
86
|
+
logger.error(f"Failed to retrieve credentials: {e}")
|
|
87
|
+
raise
|
|
88
|
+
|
|
89
|
+
state.client = client
|
|
90
|
+
|
|
91
|
+
# Initialize handler
|
|
92
|
+
handler = self.handler_class(client=client)
|
|
93
|
+
state.handler = handler
|
|
94
|
+
|
|
95
|
+
# Initialize transformer if provided
|
|
96
|
+
if self.transformer_class:
|
|
97
|
+
transformer_params = {
|
|
98
|
+
"connector_name": APPLICATION_NAME,
|
|
99
|
+
"connector_type": APPLICATION_NAME,
|
|
100
|
+
"tenant_id": APP_TENANT_ID,
|
|
101
|
+
}
|
|
102
|
+
state.transformer = self.transformer_class(**transformer_params)
|
|
@@ -2,8 +2,10 @@ from concurrent.futures import ThreadPoolExecutor
|
|
|
2
2
|
from typing import Any, Dict, List, Optional, Tuple, Type
|
|
3
3
|
|
|
4
4
|
from application_sdk.activities import ActivitiesInterface
|
|
5
|
+
from application_sdk.clients.base import BaseClient
|
|
5
6
|
from application_sdk.clients.utils import get_workflow_client
|
|
6
7
|
from application_sdk.events.models import EventRegistration
|
|
8
|
+
from application_sdk.handlers.base import BaseHandler
|
|
7
9
|
from application_sdk.observability.logger_adaptor import get_logger
|
|
8
10
|
from application_sdk.server import ServerInterface
|
|
9
11
|
from application_sdk.server.fastapi import APIServer, HttpWorkflowTrigger
|
|
@@ -28,6 +30,8 @@ class BaseApplication:
|
|
|
28
30
|
name: str,
|
|
29
31
|
server: Optional[ServerInterface] = None,
|
|
30
32
|
application_manifest: Optional[dict] = None,
|
|
33
|
+
client_class: Optional[Type[BaseClient]] = None,
|
|
34
|
+
handler_class: Optional[Type[BaseHandler]] = None,
|
|
31
35
|
):
|
|
32
36
|
"""
|
|
33
37
|
Initialize the application.
|
|
@@ -48,6 +52,9 @@ class BaseApplication:
|
|
|
48
52
|
self.application_manifest: Dict[str, Any] = application_manifest
|
|
49
53
|
self.bootstrap_event_registration()
|
|
50
54
|
|
|
55
|
+
self.client_class = client_class or BaseClient
|
|
56
|
+
self.handler_class = handler_class or BaseHandler
|
|
57
|
+
|
|
51
58
|
def bootstrap_event_registration(self):
|
|
52
59
|
self.event_subscriptions = {}
|
|
53
60
|
if self.application_manifest is None:
|
|
@@ -168,6 +175,7 @@ class BaseApplication:
|
|
|
168
175
|
self.server = APIServer(
|
|
169
176
|
workflow_client=self.workflow_client,
|
|
170
177
|
ui_enabled=ui_enabled,
|
|
178
|
+
handler=self.handler_class(client=self.client_class()),
|
|
171
179
|
)
|
|
172
180
|
|
|
173
181
|
if self.event_subscriptions:
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
from typing import Any, Dict, Optional
|
|
2
|
+
|
|
3
|
+
import httpx
|
|
4
|
+
from httpx import Headers
|
|
5
|
+
from httpx._types import (
|
|
6
|
+
AuthTypes,
|
|
7
|
+
HeaderTypes,
|
|
8
|
+
QueryParamTypes,
|
|
9
|
+
RequestData,
|
|
10
|
+
RequestFiles,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
from application_sdk.clients import ClientInterface
|
|
14
|
+
from application_sdk.observability.logger_adaptor import get_logger
|
|
15
|
+
|
|
16
|
+
logger = get_logger(__name__)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class BaseClient(ClientInterface):
|
|
20
|
+
"""
|
|
21
|
+
Base client for non-SQL based applications.
|
|
22
|
+
|
|
23
|
+
This class provides a base implementation for clients that need to connect
|
|
24
|
+
to non-SQL data sources. It implements the ClientInterface and provides
|
|
25
|
+
basic functionality that can be extended by subclasses.
|
|
26
|
+
|
|
27
|
+
Attributes:
|
|
28
|
+
credentials (Dict[str, Any]): Client credentials for authentication.
|
|
29
|
+
http_headers (HeaderTypes): HTTP headers for all http requests made by this client. Supports dict, Headers object, or list of tuples.
|
|
30
|
+
http_retry_transporter (httpx.AsyncBaseTransport): HTTP transport for requests. Uses httpx default transport by default.
|
|
31
|
+
Can be overridden in load() method for custom retry behavior.
|
|
32
|
+
|
|
33
|
+
Extending the Client:
|
|
34
|
+
To customize retry behavior, subclasses can override the http_retry_transporter
|
|
35
|
+
in the load() method, similar to how http_headers is set:
|
|
36
|
+
|
|
37
|
+
Example:
|
|
38
|
+
>>> class MyClient(BaseClient):
|
|
39
|
+
... async def load(self, **kwargs):
|
|
40
|
+
... # Set up HTTP headers in load method for better modularity
|
|
41
|
+
... credentials = kwargs.get("credentials", {})
|
|
42
|
+
... # Can use dict, Headers object, or list of tuples
|
|
43
|
+
... self.http_headers = {
|
|
44
|
+
... "Authorization": f"Bearer {credentials.get('token')}",
|
|
45
|
+
... "User-Agent": "MyApp/1.0"
|
|
46
|
+
... }
|
|
47
|
+
... # Optionally override retry transport with custom configuration
|
|
48
|
+
... # For advanced retry logic with status code handling, use httpx-retries:
|
|
49
|
+
... # from httpx_retries import Retry, RetryTransport
|
|
50
|
+
... # retry = Retry(total=5, backoff_factor=20)
|
|
51
|
+
... # self.http_retry_transporter = RetryTransport(retry=retry) #replace transport with custom transport if needed
|
|
52
|
+
|
|
53
|
+
Advanced Retry Configuration:
|
|
54
|
+
For applications requiring advanced retry logic (e.g., status code-based retries,
|
|
55
|
+
rate limiting, custom backoff strategies), consider using httpx-retries library:
|
|
56
|
+
|
|
57
|
+
>>> class MyClient(BaseClient):
|
|
58
|
+
... async def load(self, **kwargs):
|
|
59
|
+
... # Set up headers
|
|
60
|
+
... self.http_headers = {"Authorization": f"Bearer {kwargs.get('token')}"}
|
|
61
|
+
...
|
|
62
|
+
... # Install httpx-retries: pip install httpx-retries
|
|
63
|
+
... from httpx_retries import Retry, RetryTransport
|
|
64
|
+
...
|
|
65
|
+
... # Configure retry for status codes and network errors
|
|
66
|
+
... retry = Retry(
|
|
67
|
+
... total=5,
|
|
68
|
+
... backoff_factor=10,
|
|
69
|
+
... status_forcelist=[429, 500, 502, 503, 504]
|
|
70
|
+
... )
|
|
71
|
+
... self.http_retry_transporter = RetryTransport(retry=retry)
|
|
72
|
+
|
|
73
|
+
Header Management:
|
|
74
|
+
The client supports a two-level header system using httpx Headers for merging headers:
|
|
75
|
+
- Client-level headers: Set in the load() method and used for all requests
|
|
76
|
+
- Method-level headers: Passed to individual methods and override/add to client headers
|
|
77
|
+
|
|
78
|
+
Example:
|
|
79
|
+
>>> client = MyClient()
|
|
80
|
+
>>> await client.load(credentials={"token": "initial_token"})
|
|
81
|
+
>>> # This request will use: {"Authorization": "Bearer initial_token", "User-Agent": "MyApp/1.0", "Content-Type": "application/json"}
|
|
82
|
+
>>> response = await client.execute_http_post_request(
|
|
83
|
+
... url="https://api.example.com/data",
|
|
84
|
+
... headers={"Content-Type": "application/json"}
|
|
85
|
+
... )
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
def __init__(
|
|
89
|
+
self,
|
|
90
|
+
credentials: Dict[str, Any] = {},
|
|
91
|
+
http_headers: HeaderTypes = {},
|
|
92
|
+
):
|
|
93
|
+
"""
|
|
94
|
+
Initialize the base client.
|
|
95
|
+
|
|
96
|
+
Args:
|
|
97
|
+
credentials (Dict[str, Any], optional): Client credentials for authentication. Defaults to {}.
|
|
98
|
+
http_headers (HeaderTypes, optional): HTTP headers for all requests. Defaults to {}.
|
|
99
|
+
"""
|
|
100
|
+
self.credentials = credentials
|
|
101
|
+
self.http_headers = http_headers
|
|
102
|
+
|
|
103
|
+
# Use httpx default transport (no retries on status codes)
|
|
104
|
+
self.http_retry_transport: httpx.AsyncBaseTransport = httpx.AsyncHTTPTransport()
|
|
105
|
+
|
|
106
|
+
async def load(self, **kwargs: Any) -> None:
|
|
107
|
+
"""
|
|
108
|
+
Initialize the client with credentials and necessary attributes for the client to work.
|
|
109
|
+
|
|
110
|
+
This method should be implemented by subclasses to:
|
|
111
|
+
- Set up authentication headers in self.http_headers in case of http requestss
|
|
112
|
+
- Initialize any required client state
|
|
113
|
+
- Handle credential processing
|
|
114
|
+
- Optionally override self.http_retry_transport for custom retry behavior
|
|
115
|
+
|
|
116
|
+
For advanced retry logic (status code-based retries, rate limiting, custom backoff),
|
|
117
|
+
consider using httpx-retries library and overriding http_retry_transport:
|
|
118
|
+
|
|
119
|
+
Example:
|
|
120
|
+
>>> async def load(self, **kwargs):
|
|
121
|
+
... # Set up headers
|
|
122
|
+
... self.http_headers = {"Authorization": f"Bearer {kwargs.get('token')}"}
|
|
123
|
+
...
|
|
124
|
+
... # For advanced retry logic, install httpx-retries: pip install httpx-retries
|
|
125
|
+
... from httpx_retries import Retry, RetryTransport
|
|
126
|
+
... retry = Retry(total=5, backoff_factor=10, status_forcelist=[429, 500, 502, 503, 504])
|
|
127
|
+
... self.http_retry_transport = RetryTransport(retry=retry)
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
**kwargs: Additional keyword arguments, typically including credentials.
|
|
131
|
+
May also include retry configuration parameters that can be used to
|
|
132
|
+
create a custom http_retry_transport.
|
|
133
|
+
|
|
134
|
+
Raises:
|
|
135
|
+
NotImplementedError: If the subclass does not implement this method.
|
|
136
|
+
"""
|
|
137
|
+
raise NotImplementedError("load method is not implemented")
|
|
138
|
+
|
|
139
|
+
async def execute_http_get_request(
|
|
140
|
+
self,
|
|
141
|
+
url: str,
|
|
142
|
+
headers: Optional[HeaderTypes] = None,
|
|
143
|
+
params: Optional[QueryParamTypes] = None,
|
|
144
|
+
auth: Optional[AuthTypes] = None,
|
|
145
|
+
timeout: int = 10,
|
|
146
|
+
) -> Optional[httpx.Response]:
|
|
147
|
+
"""
|
|
148
|
+
Perform an HTTP GET request using the configured transport.
|
|
149
|
+
|
|
150
|
+
This method uses httpx default transport which only retries on network-level errors
|
|
151
|
+
(connection failures, timeouts). For status code-based retries (429, 500, etc.),
|
|
152
|
+
consider overriding http_retry_transport in the load() method using httpx-retries library.
|
|
153
|
+
|
|
154
|
+
Args:
|
|
155
|
+
url (str): The URL to make the GET request to
|
|
156
|
+
headers (Optional[HeaderTypes]): HTTP headers to include in the request. Supports dict, Headers object, or list of tuples. These headers will override/add to any client-level headers set in the load() method.
|
|
157
|
+
params (Optional[QueryParamTypes]): Query parameters to include in the request. Supports dict, list of tuples, or string.
|
|
158
|
+
auth (Optional[AuthTypes]): Authentication to use for the request. Supports BasicAuth, DigestAuth, custom auth classes, or tuples for basic auth.
|
|
159
|
+
timeout (int): Request timeout in seconds. Defaults to 10.
|
|
160
|
+
|
|
161
|
+
Returns:
|
|
162
|
+
Optional[httpx.Response]: The HTTP response if successful, None if failed
|
|
163
|
+
|
|
164
|
+
Example:
|
|
165
|
+
>>> # Using Basic Authentication
|
|
166
|
+
>>> from httpx import BasicAuth
|
|
167
|
+
>>> response = await client.execute_http_get_request(
|
|
168
|
+
... url="https://api.example.com/data",
|
|
169
|
+
... auth=BasicAuth("username", "password"),
|
|
170
|
+
... params={"limit": 100}
|
|
171
|
+
... )
|
|
172
|
+
>>>
|
|
173
|
+
>>> # Using tuple for basic auth (username, password)
|
|
174
|
+
>>> response = await client.execute_http_get_request(
|
|
175
|
+
... url="https://api.example.com/data",
|
|
176
|
+
... auth=("username", "password"),
|
|
177
|
+
... params={"limit": 100}
|
|
178
|
+
... )
|
|
179
|
+
>>>
|
|
180
|
+
>>> # Using custom headers for Bearer token
|
|
181
|
+
>>> response = await client.execute_http_get_request(
|
|
182
|
+
... url="https://api.example.com/data",
|
|
183
|
+
... headers={"Authorization": "Bearer token"},
|
|
184
|
+
... params={"limit": 100}
|
|
185
|
+
... )
|
|
186
|
+
"""
|
|
187
|
+
async with httpx.AsyncClient(
|
|
188
|
+
timeout=timeout, transport=self.http_retry_transport
|
|
189
|
+
) as client:
|
|
190
|
+
merged_headers = Headers(self.http_headers)
|
|
191
|
+
if headers:
|
|
192
|
+
merged_headers.update(headers)
|
|
193
|
+
|
|
194
|
+
try:
|
|
195
|
+
response = await client.get(
|
|
196
|
+
url,
|
|
197
|
+
headers=merged_headers,
|
|
198
|
+
params=params,
|
|
199
|
+
auth=auth if auth is not None else httpx.USE_CLIENT_DEFAULT,
|
|
200
|
+
)
|
|
201
|
+
return response
|
|
202
|
+
except httpx.HTTPStatusError as e:
|
|
203
|
+
logger.error(f"HTTP error for {url}: {e.response.status_code}")
|
|
204
|
+
return None
|
|
205
|
+
except Exception as e:
|
|
206
|
+
logger.error(f"Request failed for {url}: {e}")
|
|
207
|
+
return None
|
|
208
|
+
|
|
209
|
+
async def execute_http_post_request(
|
|
210
|
+
self,
|
|
211
|
+
url: str,
|
|
212
|
+
data: Optional[RequestData] = None,
|
|
213
|
+
json_data: Optional[Any] = None,
|
|
214
|
+
content: Optional[bytes] = None,
|
|
215
|
+
files: Optional[RequestFiles] = None,
|
|
216
|
+
headers: Optional[HeaderTypes] = None,
|
|
217
|
+
params: Optional[QueryParamTypes] = None,
|
|
218
|
+
cookies: Optional[Dict[str, str]] = None,
|
|
219
|
+
auth: Optional[AuthTypes] = None,
|
|
220
|
+
follow_redirects: bool = True,
|
|
221
|
+
verify: bool = True,
|
|
222
|
+
timeout: int = 30,
|
|
223
|
+
) -> Optional[httpx.Response]:
|
|
224
|
+
"""
|
|
225
|
+
Perform an HTTP POST request using the configured transport.
|
|
226
|
+
|
|
227
|
+
This method uses httpx default transport which only retries on network-level errors
|
|
228
|
+
(connection failures, timeouts). For status code-based retries (429, 500, etc.),
|
|
229
|
+
consider overriding http_retry_transport in the load() method using httpx-retries library.
|
|
230
|
+
|
|
231
|
+
Args:
|
|
232
|
+
url (str): The URL to make the POST request to
|
|
233
|
+
data (Optional[RequestData]): Form data to send in the request body. Supports dict, list of tuples, or other httpx-compatible formats.
|
|
234
|
+
json_data (Optional[Any]): JSON data to send in the request body. Any JSON-serializable object.
|
|
235
|
+
content (Optional[bytes]): Raw binary content to send in the request body
|
|
236
|
+
files (Optional[RequestFiles]): Files to upload in the request body. Supports various file formats and tuples.
|
|
237
|
+
headers (Optional[HeaderTypes]): HTTP headers to include in the request. Supports dict, Headers object, or list of tuples. These headers will override/add to any client-level headers set in the load() method.
|
|
238
|
+
params (Optional[QueryParamTypes]): Query parameters to include in the request. Supports dict, list of tuples, or string.
|
|
239
|
+
cookies (Optional[Dict[str, str]]): Cookies to include in the request
|
|
240
|
+
auth (Optional[AuthTypes]): Authentication to use for the request. Supports BasicAuth, DigestAuth, custom auth classes, or tuples for basic auth.
|
|
241
|
+
follow_redirects (bool): Whether to follow HTTP redirects. Defaults to True.
|
|
242
|
+
verify (bool): Whether to verify SSL certificates. Defaults to True.
|
|
243
|
+
timeout (int): Request timeout in seconds. Defaults to 30.
|
|
244
|
+
|
|
245
|
+
Returns:
|
|
246
|
+
Optional[httpx.Response]: The HTTP response if successful, None if failed
|
|
247
|
+
|
|
248
|
+
Example:
|
|
249
|
+
>>> # Basic JSON POST request with authentication
|
|
250
|
+
>>> from httpx import BasicAuth
|
|
251
|
+
>>> response = await client.execute_http_post_request(
|
|
252
|
+
... url="https://api.example.com/data",
|
|
253
|
+
... json_data={"name": "test", "value": 123},
|
|
254
|
+
... headers={"Content-Type": "application/json"},
|
|
255
|
+
... auth=BasicAuth("username", "password")
|
|
256
|
+
... )
|
|
257
|
+
>>>
|
|
258
|
+
>>> # File upload with basic auth tuple
|
|
259
|
+
>>> with open("file.txt", "rb") as f:
|
|
260
|
+
... response = await client.execute_http_post_request(
|
|
261
|
+
... url="https://api.example.com/upload",
|
|
262
|
+
... data={"description": "My file"},
|
|
263
|
+
... files={"file": ("file.txt", f.read(), "text/plain")},
|
|
264
|
+
... auth=("username", "password")
|
|
265
|
+
... )
|
|
266
|
+
"""
|
|
267
|
+
async with httpx.AsyncClient(
|
|
268
|
+
timeout=timeout, transport=self.http_retry_transport, verify=verify
|
|
269
|
+
) as client:
|
|
270
|
+
merged_headers = Headers(self.http_headers)
|
|
271
|
+
if headers:
|
|
272
|
+
merged_headers.update(headers)
|
|
273
|
+
|
|
274
|
+
try:
|
|
275
|
+
response = await client.post(
|
|
276
|
+
url,
|
|
277
|
+
data=data,
|
|
278
|
+
json=json_data,
|
|
279
|
+
content=content,
|
|
280
|
+
files=files,
|
|
281
|
+
headers=merged_headers,
|
|
282
|
+
params=params,
|
|
283
|
+
cookies=cookies,
|
|
284
|
+
auth=auth if auth is not None else httpx.USE_CLIENT_DEFAULT,
|
|
285
|
+
follow_redirects=follow_redirects,
|
|
286
|
+
)
|
|
287
|
+
return response
|
|
288
|
+
except httpx.HTTPStatusError as e:
|
|
289
|
+
logger.error(f"HTTP error for {url}: {e.response.status_code}")
|
|
290
|
+
return None
|
|
291
|
+
except Exception as e:
|
|
292
|
+
logger.error(f"Request failed for {url}: {e}")
|
|
293
|
+
return None
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
from typing import Any, Dict, Optional
|
|
2
|
+
|
|
3
|
+
from application_sdk.clients.base import BaseClient
|
|
4
|
+
from application_sdk.handlers import HandlerInterface
|
|
5
|
+
from application_sdk.observability.logger_adaptor import get_logger
|
|
6
|
+
|
|
7
|
+
logger = get_logger(__name__)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class BaseHandler(HandlerInterface):
|
|
11
|
+
"""
|
|
12
|
+
Base handler for non-SQL based applications.
|
|
13
|
+
|
|
14
|
+
This class provides a base implementation for handlers that need to interact with non-SQL data sources. It implements the HandlerInterface and provides basic functionality that can be extended by subclasses.
|
|
15
|
+
|
|
16
|
+
Attributes:
|
|
17
|
+
client (BaseClient): The client instance for connecting to the target system.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def __init__(self, client: Optional[BaseClient] = None):
|
|
21
|
+
"""
|
|
22
|
+
Initialize the base handler.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
client (BaseClient, optional): The client instance to use for connections. Defaults to BaseClient().
|
|
26
|
+
"""
|
|
27
|
+
self.client = client or BaseClient()
|
|
28
|
+
|
|
29
|
+
async def load(self, credentials: Dict[str, Any]) -> None:
|
|
30
|
+
"""
|
|
31
|
+
Load and initialize the handler.
|
|
32
|
+
|
|
33
|
+
This method initializes the handler and loads the client with the provided credentials.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
credentials (Dict[str, Any]): Credentials for the client.
|
|
37
|
+
"""
|
|
38
|
+
logger.info("Loading base handler")
|
|
39
|
+
|
|
40
|
+
# Load the client with credentials
|
|
41
|
+
await self.client.load(credentials=credentials)
|
|
42
|
+
|
|
43
|
+
logger.info("Base handler loaded successfully")
|
|
44
|
+
|
|
45
|
+
# The following methods are inherited from HandlerInterface and should be implemented
|
|
46
|
+
# by subclasses to handle calls from their respective FastAPI endpoints:
|
|
47
|
+
#
|
|
48
|
+
# - test_auth(**kwargs) -> bool: Called by /workflow/v1/auth endpoint
|
|
49
|
+
# - preflight_check(**kwargs) -> Any: Called by /workflow/v1/check endpoint
|
|
50
|
+
# - fetch_metadata(**kwargs) -> Any: Called by /workflow/v1/metadata endpoint
|
{atlan_application_sdk-0.1.1rc33 → atlan_application_sdk-0.1.1rc34}/docs/docs/concepts/activities.md
RENAMED
|
@@ -34,6 +34,11 @@ The SDK provides pre-built base activity classes for common tasks, primarily foc
|
|
|
34
34
|
* **Activities:** Includes `preflight_check`, `fetch_queries`, `transform_data`.
|
|
35
35
|
* **Extensibility:** Defines `fetch_queries_sql` as a class attribute for customization.
|
|
36
36
|
|
|
37
|
+
* **`BaseMetadataExtractionActivities`** (in `application_sdk.activities.metadata_extraction.base`):
|
|
38
|
+
* **Purpose:** Provides a standard set of activities for extracting metadata from non-SQL data sources (e.g., REST APIs, file systems).
|
|
39
|
+
* **Activities:** Includes `preflight_check`, `fetch_metadata`, and `transform_data` from the parent class `ActivitiesInterface`. Adds credential handling in the set_state method along with the `handler` instances.
|
|
40
|
+
* **Extensibility:** Designed to be subclassed for specific non-SQL data sources with custom client, handler, and transformer implementations.
|
|
41
|
+
|
|
37
42
|
## Usage Patterns
|
|
38
43
|
|
|
39
44
|
### 1. Reusing Base Activities (No Customization)
|