atlan-application-sdk 0.1.1rc45__tar.gz → 0.1.1rc47__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.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/actions/trivy-container/action.yaml +1 -1
- atlan_application_sdk-0.1.1rc47/.github/release_notes.md +9 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/trivy-container.yaml +1 -1
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflows/scale-tests.yaml +1 -1
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/CHANGELOG.md +20 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/PKG-INFO +1 -1
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/lock_management.py +43 -42
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/interceptors/lock.py +10 -5
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/outputs/parquet.py +10 -8
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/version.py +1 -1
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/pyproject.toml +1 -1
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/activities/test_lock_management.py +19 -2
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/outputs/test_parquet_output.py +22 -12
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/uv.lock +1 -1
- atlan_application_sdk-0.1.1rc45/.github/release_notes.md +0 -9
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/documentation.mdc +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/exception-handling.mdc +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/guidelines.mdc +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/logging.mdc +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/performance.mdc +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/setup.mdc +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/standards.mdc +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/testing.mdc +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.env.example +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/CODEOWNERS +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/actions/docgen/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/actions/doclint/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/actions/docstring-coverage/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/actions/e2e-apps/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/actions/e2e-examples/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/actions/setup-deps/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/actions/sync-branches/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/actions/trivy/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/actions/unit-tests/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/dependabot.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/pull_request_template.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/scripts/extract_release_notes.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/scripts/pre_release.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/scripts/release.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/scripts/trivy-to-markdown.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/scripts/update_changelog.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/AMPM.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Accessibility.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Acronyms.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Adverbs.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Auto.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Avoid.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Contractions.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Dashes.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/DateFormat.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/DateNumbers.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/DateOrder.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Ellipses.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/FirstPerson.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Foreign.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Gender.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/GenderBias.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/GeneralURL.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/HeadingAcronyms.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/HeadingColons.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/HeadingPunctuation.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Headings.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Hyphens.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Negative.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Ordinal.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/OxfordComma.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Passive.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Percentages.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Plurals.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Quotes.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/RangeTime.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Semicolon.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/SentenceLength.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Spacing.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Suspended.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Terms.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/URLFormat.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Units.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Vocab.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/We.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/Wordiness.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/Microsoft/meta.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/config/vocabularies/deviations/accept.txt +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/styles/config/vocabularies/deviations/reject.txt +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/checks.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/checks.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/codeql.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/codeql.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/dependency-review.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/dependency-review.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/stale.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/stale.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/trivy-container.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/trivy.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflow-templates/trivy.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflows/codeql.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflows/pre-release.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflows/pull_request.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflows/push.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflows/release.yaml.disabled +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflows/schedule.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflows/tag-and-publish.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflows/trivy-container.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/workflows/verify-snyk-status.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.gitignore +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.pre-commit-config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.vscode/launch.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/CODE_OF_CONDUCT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/CONTRIBUTING.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/LICENSE +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/NOTICE +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/README.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/SECURITY.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/common/models.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/metadata_extraction/base.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/metadata_extraction/rest.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/metadata_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/activities/query_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/application/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/application/metadata_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/atlan.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/atlan_auth.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/base.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/models.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/redis.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/temporal.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/clients/workflow.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/common/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/common/aws_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/common/dapr_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/common/dataframe_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/common/error_codes.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/constants.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/decorators/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/decorators/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/decorators/locks.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/decorators/mcp_tool.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/exporters/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/exporters/mkdocs.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/models/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/models/export/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/models/export/page.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/models/manifest/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/models/manifest/customer.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/models/manifest/internal.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/models/manifest/metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/models/manifest/page.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/models/manifest/section.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/parsers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/parsers/directory.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/docgen/parsers/manifest.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/events/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/events/models.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/handlers/base.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/handlers/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/inputs/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/inputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/inputs/iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/inputs/json.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/inputs/parquet.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/inputs/sql_query.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/interceptors/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/interceptors/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/interceptors/cleanup.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/interceptors/events.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/observability/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/observability/decorators/observability_decorator.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/observability/logger_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/observability/metrics_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/observability/observability.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/observability/traces_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/observability/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/outputs/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/outputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/outputs/iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/outputs/json.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/fastapi/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/fastapi/middleware/logmiddleware.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/fastapi/middleware/metrics.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/fastapi/models.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/fastapi/routers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/fastapi/routers/server.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/fastapi/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/mcp/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/mcp/models.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/server/mcp/server.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/services/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/services/atlan_storage.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/services/eventstore.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/services/objectstore.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/services/secretstore.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/services/statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/e2e/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/e2e/base.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/e2e/client.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/e2e/conftest.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/e2e/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/clients/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/common/logger.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_preflight.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/inputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/inputs/json_input.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/inputs/parquet_input.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/outputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/outputs/json_output.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/outputs/statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/server/fastapi/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/hypothesis/strategies/temporal.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/README.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/config_loader.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/data_generator.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/driver.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/examples/config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/output_handler/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/output_handler/base.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/output_handler/csv_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/output_handler/json_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/scale_data_generator/output_handler/parquet_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/test_utils/workflow_monitoring.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/atlas/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/atlas/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/query/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/query/templates/column.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/query/templates/database.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/query/templates/extras-procedure.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/query/templates/function.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/query/templates/schema.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/query/templates/table.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/transformers/query/templates/tag_attachment.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/worker.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/workflows/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/workflows/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/workflows/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/workflows/metadata_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/workflows/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/application_sdk/workflows/query_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/components/README.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/components/atlan-storage.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/components/aws-secrets.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/components/deployment-secrets.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/components/eventstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/components/objectstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/components/secretstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/components/statestore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/API.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/activities.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/application.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/application_sql.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/atlanupload.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/clients.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/common.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/handlers.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/inputs.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/mcp.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/output_paths.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/outputs.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/server.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/services.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/temporal_auth.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/worker.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/concepts/workflows.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/configuration.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/guides/architecture.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/guides/atlantis.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/guides/best-practices.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/guides/getting-started.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/guides/index.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/guides/partners.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/guides/secretstores.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/guides/sql-application-guide.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/guides/test-framework.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/index.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/setup/LINUX.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/setup/MAC.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/setup/WINDOWS.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/setup/troubleshooting.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/static/assets/logo.svg +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/static/images/phoenix-sdk-featureset.png +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/static/javascripts/mathjax.js +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/docs/static/stylesheets/extra.css +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/docs/mkdocs.yml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/examples/README.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/examples/application_custom_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/examples/application_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/examples/application_hello_world.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/examples/application_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/examples/application_sql_miner.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/examples/application_sql_with_custom_pyatlan_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/examples/application_sql_with_custom_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/examples/run_examples.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/examples/sql_query_templates/database.yaml +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/.cursor/BUGBOT.md +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/conftest.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/activities/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/activities/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/activities/common/test_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/activities/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/activities/metadata_extraction/test_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/activities/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/activities/test_activities.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/application/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/application/metadata_extraction/test_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/application/test_application.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/clients/test_async_sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/clients/test_atlan_auth.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/clients/test_atlan_client.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/clients/test_atlanauth.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/clients/test_base_client.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/clients/test_redis_client.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/clients/test_sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/clients/test_temporal_client.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/common/test_aws_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/common/test_credential_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/common/test_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/common/test_utils_file_discovery.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/decorators/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/decorators/test_mcp_tool.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/docgen/parsers/test_directory_parser.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/docgen/parsers/test_manifest_parser.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/handlers/sql/test_auth.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/handlers/sql/test_check_schemas_and_databases.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/handlers/sql/test_extract_allowed_schemas.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/handlers/sql/test_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/handlers/sql/test_preflight_check.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/handlers/sql/test_prepare_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/handlers/sql/test_tables_check.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/handlers/sql/test_validate_filters.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/handlers/test_base_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/inputs/test_base_input.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/inputs/test_json.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/inputs/test_parquet.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/observability/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/observability/test_logger_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/observability/test_metrics_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/observability/test_traces_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/outputs/test_iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/outputs/test_json_output.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/outputs/test_output.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/server/fastapi/routers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/server/fastapi/routers/server.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/server/fastapi/test_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/server/mcp/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/server/mcp/test_mcp_server.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/services/test_atlan_storage.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/services/test_eventstore.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/services/test_objectstore.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/services/test_statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/test_worker.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/raw_columns.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/raw_databases.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/raw_functions.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/raw_procedures.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/raw_schemas.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/raw_tables.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/transformed_columns.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/transformed_databases.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/transformed_functions.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/transformed_procedures.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/transformed_schemas.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/resources/transformed_tables.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/test_column.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/test_database.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/test_function.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/test_procedure.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/test_schema.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/atlas/test_table.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/raw/column.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/raw/database.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/raw/extras-procedure.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/raw/function.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/raw/schema.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/raw/table.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/transformed/column.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/transformed/database.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/transformed/extras-procedure.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/transformed/function.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/transformed/schema.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/resources/transformed/table.json +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/test_sql_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/transformers/query/test_sql_transformer_output_validation.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/workflows/metadata_extraction/test_sql_workflow.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/workflows/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/tests/unit/workflows/query_extraction/test_sql.py +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
## v0.1.1rc47 (September 24, 2025)
|
|
2
|
+
|
|
3
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc46...v0.1.1rc47
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
- partition columns defaults for daft write_parquet (#728) (by @Nishchith Shetty in [7ed4949](https://github.com/atlanhq/application-sdk/commit/7ed4949))
|
|
8
|
+
- Update ParquetOutput to handle file uploads correctly (#732) (by @Mustafa in [b4b2953](https://github.com/atlanhq/application-sdk/commit/b4b2953))
|
|
9
|
+
- CI build path (#733) (by @Nishchith Shetty in [6d04006](https://github.com/atlanhq/application-sdk/commit/6d04006))
|
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.1.1rc47 (September 24, 2025)
|
|
4
|
+
|
|
5
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc46...v0.1.1rc47
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- partition columns defaults for daft write_parquet (#728) (by @Nishchith Shetty in [7ed4949](https://github.com/atlanhq/application-sdk/commit/7ed4949))
|
|
10
|
+
- Update ParquetOutput to handle file uploads correctly (#732) (by @Mustafa in [b4b2953](https://github.com/atlanhq/application-sdk/commit/b4b2953))
|
|
11
|
+
- CI build path (#733) (by @Nishchith Shetty in [6d04006](https://github.com/atlanhq/application-sdk/commit/6d04006))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## v0.1.1rc46 (September 18, 2025)
|
|
16
|
+
|
|
17
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc45...v0.1.1rc46
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- Fix semaphore implementation to allow multiple batching without getting into max_concurrent_activities issue (#725) (by @Mustafa in [2a66f13](https://github.com/atlanhq/application-sdk/commit/2a66f13))
|
|
22
|
+
|
|
3
23
|
## v0.1.1rc45 (September 18, 2025)
|
|
4
24
|
|
|
5
25
|
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc44...v0.1.1rc45
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atlan-application-sdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1rc47
|
|
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
|
|
@@ -5,15 +5,15 @@ allowing the workflow to orchestrate locking without hitting Temporal's
|
|
|
5
5
|
deadlock timeout.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
import asyncio
|
|
9
8
|
import random
|
|
10
9
|
from typing import Any, Dict
|
|
11
10
|
|
|
12
11
|
from temporalio import activity
|
|
12
|
+
from temporalio.exceptions import ApplicationError
|
|
13
13
|
|
|
14
14
|
from application_sdk.clients.redis import RedisClientAsync
|
|
15
15
|
from application_sdk.common.error_codes import ActivityError
|
|
16
|
-
from application_sdk.constants import APPLICATION_NAME
|
|
16
|
+
from application_sdk.constants import APPLICATION_NAME
|
|
17
17
|
from application_sdk.observability.logger_adaptor import get_logger
|
|
18
18
|
|
|
19
19
|
logger = get_logger(__name__)
|
|
@@ -45,40 +45,41 @@ async def acquire_distributed_lock(
|
|
|
45
45
|
"""
|
|
46
46
|
# Input validation
|
|
47
47
|
if max_locks <= 0:
|
|
48
|
-
raise
|
|
49
|
-
f"{ActivityError.LOCK_ACQUISITION_ERROR}: max_locks must be greater than 0, got {max_locks}"
|
|
48
|
+
raise ApplicationError(
|
|
49
|
+
f"{ActivityError.LOCK_ACQUISITION_ERROR}: max_locks must be greater than 0, got {max_locks}",
|
|
50
|
+
non_retryable=True,
|
|
51
|
+
)
|
|
52
|
+
slot = random.randint(0, max_locks - 1)
|
|
53
|
+
resource_id = f"{APPLICATION_NAME}:{lock_name}:{slot}"
|
|
54
|
+
|
|
55
|
+
try:
|
|
56
|
+
async with RedisClientAsync() as redis_client:
|
|
57
|
+
# Acquire lock - connection will stay open until context exits
|
|
58
|
+
acquired = await redis_client._acquire_lock(
|
|
59
|
+
resource_id, owner_id, ttl_seconds
|
|
60
|
+
)
|
|
61
|
+
if acquired:
|
|
62
|
+
logger.info(f"Lock acquired for slot {slot}, resource: {resource_id}")
|
|
63
|
+
return {
|
|
64
|
+
"status": True,
|
|
65
|
+
"slot_id": slot,
|
|
66
|
+
"resource_id": resource_id,
|
|
67
|
+
"owner_id": owner_id,
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
raise ActivityError(
|
|
71
|
+
f"{ActivityError.LOCK_ACQUISITION_ERROR}: Lock not acquired for {resource_id}, will retry after some time"
|
|
72
|
+
)
|
|
73
|
+
except Exception as e:
|
|
74
|
+
# Redis connection or operation failed - propagate as activity error
|
|
75
|
+
if isinstance(e, (ActivityError)):
|
|
76
|
+
raise e
|
|
77
|
+
logger.error(f"Redis error during lock acquisition: {e}")
|
|
78
|
+
raise ApplicationError(
|
|
79
|
+
f"Redis error during lock acquisition for {resource_id}, error: {e}",
|
|
80
|
+
non_retryable=True,
|
|
81
|
+
type=type(e).__name__,
|
|
50
82
|
)
|
|
51
|
-
|
|
52
|
-
async with RedisClientAsync() as redis_client:
|
|
53
|
-
while True:
|
|
54
|
-
slot = random.randint(0, max_locks - 1)
|
|
55
|
-
resource_id = f"{APPLICATION_NAME}:{lock_name}:{slot}"
|
|
56
|
-
|
|
57
|
-
try:
|
|
58
|
-
# Acquire lock - connection will stay open until context exits
|
|
59
|
-
acquired = await redis_client._acquire_lock(
|
|
60
|
-
resource_id, owner_id, ttl_seconds
|
|
61
|
-
)
|
|
62
|
-
if acquired:
|
|
63
|
-
logger.info(
|
|
64
|
-
f"Lock acquired for slot {slot}, resource: {resource_id}"
|
|
65
|
-
)
|
|
66
|
-
return {
|
|
67
|
-
"slot_id": slot,
|
|
68
|
-
"resource_id": resource_id,
|
|
69
|
-
"owner_id": owner_id,
|
|
70
|
-
}
|
|
71
|
-
# If not acquired, continue retrying (lock held by another owner)
|
|
72
|
-
|
|
73
|
-
except Exception as e:
|
|
74
|
-
# Redis connection or operation failed - propagate as activity error
|
|
75
|
-
logger.error(f"Redis error during lock acquisition: {e}")
|
|
76
|
-
raise ActivityError(
|
|
77
|
-
f"{ActivityError.LOCK_ACQUISITION_ERROR}: Redis error during lock acquisition for {resource_id}"
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
# Wait before retrying
|
|
81
|
-
await asyncio.sleep(LOCK_RETRY_INTERVAL)
|
|
82
83
|
|
|
83
84
|
|
|
84
85
|
@activity.defn
|
|
@@ -94,8 +95,8 @@ async def release_distributed_lock(
|
|
|
94
95
|
Returns:
|
|
95
96
|
True if lock was released successfully, False otherwise
|
|
96
97
|
"""
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
try:
|
|
99
|
+
async with RedisClientAsync() as redis_client:
|
|
99
100
|
released, result = await redis_client._release_lock(resource_id, owner_id)
|
|
100
101
|
if released:
|
|
101
102
|
logger.info(
|
|
@@ -103,8 +104,8 @@ async def release_distributed_lock(
|
|
|
103
104
|
)
|
|
104
105
|
return released
|
|
105
106
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
except Exception as e:
|
|
108
|
+
logger.error(f"Redis error during lock release for {resource_id}: {e}")
|
|
109
|
+
# Don't raise exception for lock release failures - log and return False
|
|
110
|
+
# Lock release is best-effort and shouldn't fail the workflow
|
|
111
|
+
return False
|
|
@@ -22,6 +22,7 @@ from application_sdk.constants import (
|
|
|
22
22
|
APPLICATION_NAME,
|
|
23
23
|
IS_LOCKING_DISABLED,
|
|
24
24
|
LOCK_METADATA_KEY,
|
|
25
|
+
LOCK_RETRY_INTERVAL,
|
|
25
26
|
)
|
|
26
27
|
from application_sdk.observability.logger_adaptor import get_logger
|
|
27
28
|
|
|
@@ -106,13 +107,17 @@ class RedisLockOutboundInterceptor(WorkflowOutboundInterceptor):
|
|
|
106
107
|
lock_result = None
|
|
107
108
|
|
|
108
109
|
try:
|
|
109
|
-
# Step 1: Acquire lock via dedicated activity
|
|
110
|
-
|
|
111
|
-
lock_result = await workflow.
|
|
110
|
+
# Step 1: Acquire lock via dedicated activity with Temporal retry policy
|
|
111
|
+
schedule_to_close_timeout = workflow.info().execution_timeout
|
|
112
|
+
lock_result = await workflow.execute_local_activity(
|
|
112
113
|
"acquire_distributed_lock",
|
|
113
114
|
args=[lock_name, max_locks, ttl_seconds, owner_id],
|
|
114
|
-
start_to_close_timeout=
|
|
115
|
-
retry_policy=RetryPolicy(
|
|
115
|
+
start_to_close_timeout=timedelta(seconds=30),
|
|
116
|
+
retry_policy=RetryPolicy(
|
|
117
|
+
initial_interval=timedelta(seconds=int(LOCK_RETRY_INTERVAL)),
|
|
118
|
+
backoff_coefficient=1.0,
|
|
119
|
+
),
|
|
120
|
+
schedule_to_close_timeout=schedule_to_close_timeout,
|
|
116
121
|
)
|
|
117
122
|
|
|
118
123
|
logger.debug(f"Lock acquired: {lock_result}, executing {input.activity}")
|
|
@@ -221,17 +221,19 @@ class ParquetOutput(Output):
|
|
|
221
221
|
if row_count == 0:
|
|
222
222
|
return
|
|
223
223
|
|
|
224
|
+
file_paths = []
|
|
224
225
|
# Use Daft's execution context for temporary configuration
|
|
225
226
|
with daft.execution_config_ctx(
|
|
226
227
|
parquet_target_filesize=self.max_file_size_bytes,
|
|
227
228
|
default_morsel_size=morsel_size,
|
|
228
229
|
):
|
|
229
230
|
# Daft automatically handles file splitting and naming
|
|
230
|
-
dataframe.write_parquet(
|
|
231
|
+
result = dataframe.write_parquet(
|
|
231
232
|
root_dir=self.output_path,
|
|
232
233
|
write_mode=write_mode.value,
|
|
233
|
-
partition_cols=partition_cols
|
|
234
|
+
partition_cols=partition_cols,
|
|
234
235
|
)
|
|
236
|
+
file_paths = result.to_pydict().get("path", [])
|
|
235
237
|
|
|
236
238
|
# Update counters
|
|
237
239
|
self.chunk_count += 1
|
|
@@ -266,12 +268,12 @@ class ParquetOutput(Output):
|
|
|
266
268
|
logger.info(
|
|
267
269
|
f"No files found under prefix {get_object_store_prefix(self.output_path)}: {str(e)}"
|
|
268
270
|
)
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
271
|
+
for path in file_paths:
|
|
272
|
+
await ObjectStore.upload_file(
|
|
273
|
+
source=path,
|
|
274
|
+
destination=get_object_store_prefix(path),
|
|
275
|
+
retain_local_copy=self.retain_local_copy,
|
|
276
|
+
)
|
|
275
277
|
|
|
276
278
|
except Exception as e:
|
|
277
279
|
# Record metrics for failed write
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from unittest.mock import AsyncMock, patch
|
|
4
4
|
|
|
5
5
|
import pytest
|
|
6
|
+
from temporalio.exceptions import ApplicationError
|
|
6
7
|
|
|
7
8
|
from application_sdk.activities.lock_management import (
|
|
8
9
|
acquire_distributed_lock,
|
|
@@ -27,6 +28,7 @@ class TestAcquireDistributedLock:
|
|
|
27
28
|
result = await acquire_distributed_lock("test_resource", 5, 100, "owner1")
|
|
28
29
|
|
|
29
30
|
# Verify
|
|
31
|
+
assert result["status"] is True
|
|
30
32
|
assert "slot_id" in result
|
|
31
33
|
assert "resource_id" in result
|
|
32
34
|
assert "owner_id" in result
|
|
@@ -36,7 +38,7 @@ class TestAcquireDistributedLock:
|
|
|
36
38
|
@patch("application_sdk.activities.lock_management.RedisClientAsync")
|
|
37
39
|
async def test_acquire_lock_invalid_max_locks(self, mock_redis_client_class):
|
|
38
40
|
"""Test lock acquisition with invalid max_locks."""
|
|
39
|
-
with pytest.raises(
|
|
41
|
+
with pytest.raises(ApplicationError) as exc_info:
|
|
40
42
|
await acquire_distributed_lock("test_resource", 0, 100, "owner1")
|
|
41
43
|
|
|
42
44
|
assert "ATLAN-ACTIVITY-503-01" in str(exc_info.value)
|
|
@@ -50,12 +52,27 @@ class TestAcquireDistributedLock:
|
|
|
50
52
|
mock_client._acquire_lock.side_effect = Exception("Redis connection failed")
|
|
51
53
|
mock_redis_client_class.return_value.__aenter__.return_value = mock_client
|
|
52
54
|
|
|
55
|
+
# Execute and verify
|
|
56
|
+
with pytest.raises(ApplicationError) as exc_info:
|
|
57
|
+
await acquire_distributed_lock("test_resource", 5, 100, "owner1")
|
|
58
|
+
|
|
59
|
+
assert "Redis error during lock acquisition" in str(exc_info.value)
|
|
60
|
+
assert "Redis connection failed" in str(exc_info.value)
|
|
61
|
+
|
|
62
|
+
@patch("application_sdk.activities.lock_management.RedisClientAsync")
|
|
63
|
+
async def test_acquire_lock_not_available(self, mock_redis_client_class):
|
|
64
|
+
"""Test lock acquisition when lock is not available."""
|
|
65
|
+
# Setup mock to return False (lock not acquired)
|
|
66
|
+
mock_client = AsyncMock()
|
|
67
|
+
mock_client._acquire_lock.return_value = False
|
|
68
|
+
mock_redis_client_class.return_value.__aenter__.return_value = mock_client
|
|
69
|
+
|
|
53
70
|
# Execute and verify
|
|
54
71
|
with pytest.raises(ActivityError) as exc_info:
|
|
55
72
|
await acquire_distributed_lock("test_resource", 5, 100, "owner1")
|
|
56
73
|
|
|
57
74
|
assert "ATLAN-ACTIVITY-503-01" in str(exc_info.value)
|
|
58
|
-
assert "
|
|
75
|
+
assert "Lock not acquired" in str(exc_info.value)
|
|
59
76
|
|
|
60
77
|
|
|
61
78
|
class TestReleaseDistributedLock:
|
|
@@ -300,7 +300,7 @@ class TestParquetOutputWriteDaftDataframe:
|
|
|
300
300
|
async def test_write_daft_dataframe_success(self, base_output_path: str):
|
|
301
301
|
"""Test successful daft DataFrame writing."""
|
|
302
302
|
with patch("daft.execution_config_ctx") as mock_ctx, patch(
|
|
303
|
-
"application_sdk.services.objectstore.ObjectStore.
|
|
303
|
+
"application_sdk.services.objectstore.ObjectStore.upload_file"
|
|
304
304
|
) as mock_upload, patch(
|
|
305
305
|
"application_sdk.outputs.parquet.get_object_store_prefix"
|
|
306
306
|
) as mock_prefix:
|
|
@@ -312,7 +312,9 @@ class TestParquetOutputWriteDaftDataframe:
|
|
|
312
312
|
# Mock daft DataFrame
|
|
313
313
|
mock_df = MagicMock()
|
|
314
314
|
mock_df.count_rows.return_value = 1000
|
|
315
|
-
|
|
315
|
+
mock_result = MagicMock()
|
|
316
|
+
mock_result.to_pydict.return_value = {"path": ["test.parquet"]}
|
|
317
|
+
mock_df.write_parquet.return_value = mock_result
|
|
316
318
|
|
|
317
319
|
parquet_output = ParquetOutput(
|
|
318
320
|
output_path=base_output_path,
|
|
@@ -327,7 +329,7 @@ class TestParquetOutputWriteDaftDataframe:
|
|
|
327
329
|
mock_df.write_parquet.assert_called_once_with(
|
|
328
330
|
root_dir=parquet_output.output_path,
|
|
329
331
|
write_mode="append", # Uses method default value "append"
|
|
330
|
-
partition_cols=
|
|
332
|
+
partition_cols=None,
|
|
331
333
|
)
|
|
332
334
|
|
|
333
335
|
# Check that upload_prefix was called
|
|
@@ -339,7 +341,7 @@ class TestParquetOutputWriteDaftDataframe:
|
|
|
339
341
|
):
|
|
340
342
|
"""Test daft DataFrame writing with parameter overrides."""
|
|
341
343
|
with patch("daft.execution_config_ctx") as mock_ctx, patch(
|
|
342
|
-
"application_sdk.services.objectstore.ObjectStore.
|
|
344
|
+
"application_sdk.services.objectstore.ObjectStore.upload_file"
|
|
343
345
|
) as mock_upload, patch(
|
|
344
346
|
"application_sdk.services.objectstore.ObjectStore.delete_prefix"
|
|
345
347
|
) as mock_delete, patch(
|
|
@@ -354,7 +356,9 @@ class TestParquetOutputWriteDaftDataframe:
|
|
|
354
356
|
# Mock daft DataFrame
|
|
355
357
|
mock_df = MagicMock()
|
|
356
358
|
mock_df.count_rows.return_value = 500
|
|
357
|
-
|
|
359
|
+
mock_result = MagicMock()
|
|
360
|
+
mock_result.to_pydict.return_value = {"path": ["test.parquet"]}
|
|
361
|
+
mock_df.write_parquet.return_value = mock_result
|
|
358
362
|
|
|
359
363
|
parquet_output = ParquetOutput(
|
|
360
364
|
output_path=base_output_path,
|
|
@@ -381,7 +385,7 @@ class TestParquetOutputWriteDaftDataframe:
|
|
|
381
385
|
):
|
|
382
386
|
"""Test daft DataFrame writing with default parameters (uses method default write_mode='append')."""
|
|
383
387
|
with patch("daft.execution_config_ctx") as mock_ctx, patch(
|
|
384
|
-
"application_sdk.services.objectstore.ObjectStore.
|
|
388
|
+
"application_sdk.services.objectstore.ObjectStore.upload_file"
|
|
385
389
|
) as mock_upload, patch(
|
|
386
390
|
"application_sdk.outputs.parquet.get_object_store_prefix"
|
|
387
391
|
) as mock_prefix:
|
|
@@ -393,7 +397,9 @@ class TestParquetOutputWriteDaftDataframe:
|
|
|
393
397
|
# Mock daft DataFrame
|
|
394
398
|
mock_df = MagicMock()
|
|
395
399
|
mock_df.count_rows.return_value = 500
|
|
396
|
-
|
|
400
|
+
mock_result = MagicMock()
|
|
401
|
+
mock_result.to_pydict.return_value = {"path": ["test.parquet"]}
|
|
402
|
+
mock_df.write_parquet.return_value = mock_result
|
|
397
403
|
|
|
398
404
|
parquet_output = ParquetOutput(
|
|
399
405
|
output_path=base_output_path,
|
|
@@ -406,7 +412,7 @@ class TestParquetOutputWriteDaftDataframe:
|
|
|
406
412
|
mock_df.write_parquet.assert_called_once_with(
|
|
407
413
|
root_dir=parquet_output.output_path,
|
|
408
414
|
write_mode="append", # Uses method default value "append"
|
|
409
|
-
partition_cols=
|
|
415
|
+
partition_cols=None,
|
|
410
416
|
)
|
|
411
417
|
|
|
412
418
|
@pytest.mark.asyncio
|
|
@@ -415,7 +421,7 @@ class TestParquetOutputWriteDaftDataframe:
|
|
|
415
421
|
):
|
|
416
422
|
"""Test that DAPR limit is properly configured."""
|
|
417
423
|
with patch("daft.execution_config_ctx") as mock_ctx, patch(
|
|
418
|
-
"application_sdk.services.objectstore.ObjectStore.
|
|
424
|
+
"application_sdk.services.objectstore.ObjectStore.upload_file"
|
|
419
425
|
) as mock_upload, patch(
|
|
420
426
|
"application_sdk.outputs.parquet.get_object_store_prefix"
|
|
421
427
|
) as mock_prefix:
|
|
@@ -427,7 +433,9 @@ class TestParquetOutputWriteDaftDataframe:
|
|
|
427
433
|
# Mock daft DataFrame
|
|
428
434
|
mock_df = MagicMock()
|
|
429
435
|
mock_df.count_rows.return_value = 1000
|
|
430
|
-
|
|
436
|
+
mock_result = MagicMock()
|
|
437
|
+
mock_result.to_pydict.return_value = {"path": ["test.parquet"]}
|
|
438
|
+
mock_df.write_parquet.return_value = mock_result
|
|
431
439
|
|
|
432
440
|
parquet_output = ParquetOutput(output_path=base_output_path)
|
|
433
441
|
|
|
@@ -488,7 +496,7 @@ class TestParquetOutputMetrics:
|
|
|
488
496
|
async def test_daft_write_metrics(self, base_output_path: str):
|
|
489
497
|
"""Test that metrics are recorded for daft DataFrame writes."""
|
|
490
498
|
with patch("daft.execution_config_ctx") as mock_ctx, patch(
|
|
491
|
-
"application_sdk.services.objectstore.ObjectStore.
|
|
499
|
+
"application_sdk.services.objectstore.ObjectStore.upload_file"
|
|
492
500
|
) as mock_upload, patch(
|
|
493
501
|
"application_sdk.outputs.parquet.get_metrics"
|
|
494
502
|
) as mock_get_metrics, patch(
|
|
@@ -504,7 +512,9 @@ class TestParquetOutputMetrics:
|
|
|
504
512
|
# Mock daft DataFrame
|
|
505
513
|
mock_df = MagicMock()
|
|
506
514
|
mock_df.count_rows.return_value = 1000
|
|
507
|
-
|
|
515
|
+
mock_result = MagicMock()
|
|
516
|
+
mock_result.to_pydict.return_value = {"path": ["test.parquet"]}
|
|
517
|
+
mock_df.write_parquet.return_value = mock_result
|
|
508
518
|
|
|
509
519
|
parquet_output = ParquetOutput(output_path=base_output_path)
|
|
510
520
|
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
## v0.1.1rc45 (September 18, 2025)
|
|
2
|
-
|
|
3
|
-
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc44...v0.1.1rc45
|
|
4
|
-
|
|
5
|
-
### Features
|
|
6
|
-
|
|
7
|
-
- add MCP (Model Context Protocol) integration to application-sdk (#698) (by @AdvitXAtlan in [a5d496e](https://github.com/atlanhq/application-sdk/commit/a5d496e))
|
|
8
|
-
- fix credentials and extra field information in docs (#724) (by @Nishchith Shetty in [a0808db](https://github.com/atlanhq/application-sdk/commit/a0808db))
|
|
9
|
-
- add minimal API docs for endpoints exposed (#721) (by @Nishchith Shetty in [3301b61](https://github.com/atlanhq/application-sdk/commit/3301b61))
|
|
File without changes
|
{atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/documentation.mdc
RENAMED
|
File without changes
|
|
File without changes
|
{atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/guidelines.mdc
RENAMED
|
File without changes
|
{atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/logging.mdc
RENAMED
|
File without changes
|
{atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/performance.mdc
RENAMED
|
File without changes
|
|
File without changes
|
{atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/standards.mdc
RENAMED
|
File without changes
|
{atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.cursor/rules/testing.mdc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/pull_request_template.md
RENAMED
|
File without changes
|
|
File without changes
|
{atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/scripts/pre_release.py
RENAMED
|
File without changes
|
{atlan_application_sdk-0.1.1rc45 → atlan_application_sdk-0.1.1rc47}/.github/scripts/release.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|