atlan-application-sdk 0.1.1rc24__tar.gz → 0.1.1rc26__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.1rc26/.cursor/BUGBOT.md +60 -0
- atlan_application_sdk-0.1.1rc26/.cursor/rules/exception-handling.mdc +198 -0
- atlan_application_sdk-0.1.1rc26/.cursor/rules/performance.mdc +294 -0
- atlan_application_sdk-0.1.1rc26/.env.example +37 -0
- atlan_application_sdk-0.1.1rc26/.github/release_notes.md +11 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/CHANGELOG.md +22 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/PKG-INFO +2 -1
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/metadata_extraction/sql.py +67 -6
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/query_extraction/sql.py +9 -6
- atlan_application_sdk-0.1.1rc26/application_sdk/clients/atlan_auth.py +232 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/sql.py +16 -23
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/temporal.py +123 -22
- atlan_application_sdk-0.1.1rc26/application_sdk/common/credential_utils.py +85 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/error_codes.py +12 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/utils.py +34 -9
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/constants.py +33 -3
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/handlers/sql.py +8 -5
- atlan_application_sdk-0.1.1rc26/application_sdk/inputs/objectstore.py +252 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/secretstore.py +20 -35
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/statestore.py +2 -1
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/observability.py +7 -6
- atlan_application_sdk-0.1.1rc26/application_sdk/outputs/atlan_storage.py +166 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/objectstore.py +13 -5
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/statestore.py +7 -3
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/version.py +1 -1
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/workflows/metadata_extraction/sql.py +26 -5
- atlan_application_sdk-0.1.1rc26/components/atlan-storage.yaml +20 -0
- atlan_application_sdk-0.1.1rc26/components/deployment-secrets.yaml +7 -0
- atlan_application_sdk-0.1.1rc26/docs/docs/concepts/atlanupload.md +339 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/inputs.md +0 -2
- atlan_application_sdk-0.1.1rc26/docs/docs/concepts/temporal_auth.md +534 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/pyproject.toml +6 -1
- atlan_application_sdk-0.1.1rc26/tests/conftest.py +15 -0
- atlan_application_sdk-0.1.1rc26/tests/unit/clients/test_atlan_auth.py +131 -0
- atlan_application_sdk-0.1.1rc26/tests/unit/clients/test_atlanauth.py +121 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/clients/test_sql_client.py +8 -8
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/clients/test_temporal_client.py +31 -24
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/common/test_credential_utils.py +5 -94
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/common/test_utils.py +36 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_check_schemas_and_databases.py +47 -0
- atlan_application_sdk-0.1.1rc26/tests/unit/outputs/test_atlanstorage.py +253 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_objectstore.py +10 -21
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_statestore.py +0 -21
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/workflows/metadata_extraction/test_sql.py +2 -1
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/uv.lock +3 -1
- atlan_application_sdk-0.1.1rc24/.env.example +0 -15
- atlan_application_sdk-0.1.1rc24/.github/release_notes.md +0 -12
- atlan_application_sdk-0.1.1rc24/application_sdk/common/credential_utils.py +0 -56
- atlan_application_sdk-0.1.1rc24/application_sdk/inputs/objectstore.py +0 -122
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/documentation.mdc +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/guidelines.mdc +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/logging.mdc +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/setup.mdc +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/standards.mdc +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.cursor/rules/testing.mdc +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/CODEOWNERS +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/actions/docgen/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/actions/doclint/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/actions/docstring-coverage/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/actions/e2e-apps/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/actions/e2e-examples/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/actions/setup-deps/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/actions/sync-branches/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/actions/trivy/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/actions/trivy-container/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/actions/unit-tests/action.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/dependabot.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/pull_request_template.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/scripts/extract_release_notes.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/scripts/pre_release.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/scripts/release.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/scripts/trivy-to-markdown.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/scripts/update_changelog.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/AMPM.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Accessibility.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Acronyms.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Adverbs.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Auto.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Avoid.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Contractions.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Dashes.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/DateFormat.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/DateNumbers.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/DateOrder.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Ellipses.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/FirstPerson.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Foreign.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Gender.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/GenderBias.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/GeneralURL.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/HeadingAcronyms.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/HeadingColons.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/HeadingPunctuation.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Headings.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Hyphens.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Negative.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Ordinal.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/OxfordComma.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Passive.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Percentages.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Plurals.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Quotes.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/RangeTime.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Semicolon.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/SentenceLength.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Spacing.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Suspended.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Terms.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/URLFormat.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Units.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Vocab.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/We.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/Wordiness.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/Microsoft/meta.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/config/vocabularies/deviations/accept.txt +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/styles/config/vocabularies/deviations/reject.txt +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/checks.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/checks.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/codeql.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/codeql.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/dependency-review.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/dependency-review.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/stale.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/stale.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/trivy-container.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/trivy-container.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/trivy.properties.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflow-templates/trivy.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflows/codeql.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflows/pre-release.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflows/pull_request.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflows/push.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflows/release.yaml.disabled +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflows/scale-tests.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflows/schedule.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflows/tag-and-publish.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.github/workflows/trivy-container.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.gitignore +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.pre-commit-config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/.vscode/launch.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/CODE_OF_CONDUCT.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/CONTRIBUTING.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/LICENSE +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/NOTICE +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/README.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/SECURITY.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/common/models.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/metadata_extraction/rest.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/activities/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/application/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/application/metadata_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/clients/workflow.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/aws_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/common/dataframe_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/exporters/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/exporters/mkdocs.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/export/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/export/page.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/customer.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/internal.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/page.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/models/manifest/section.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/parsers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/parsers/directory.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/docgen/parsers/manifest.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/json.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/parquet.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/inputs/sql_query.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/decorators/observability_decorator.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/logger_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/metrics_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/traces_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/observability/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/eventstore.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/json.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/parquet.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/outputs/secretstore.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/middleware/logmiddleware.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/middleware/metrics.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/models.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/routers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/routers/server.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/server/fastapi/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/e2e/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/e2e/base.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/e2e/client.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/e2e/conftest.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/e2e/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/clients/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/common/logger.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/handlers/sql/sql_preflight.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/inputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/inputs/json_input.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/outputs/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/outputs/json_output.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/outputs/statestore.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/server/fastapi/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/hypothesis/strategies/temporal.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/README.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/config_loader.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/data_generator.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/driver.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/examples/config.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/output_handler/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/output_handler/base.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/output_handler/csv_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/output_handler/json_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/scale_data_generator/output_handler/parquet_handler.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/test_utils/workflow_monitoring.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/atlas/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/atlas/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/common/utils.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/column.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/database.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/extras-procedure.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/function.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/schema.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/table.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/transformers/query/templates/tag_attachment.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/worker.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/workflows/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/workflows/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/workflows/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/application_sdk/workflows/query_extraction/sql.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/components/README.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/components/aws-secrets.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/components/eventstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/components/objectstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/components/secretstore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/components/statestore.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/activities.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/application.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/application_sql.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/clients.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/common.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/handlers.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/output_paths.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/outputs.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/server.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/worker.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/concepts/workflows.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/configuration.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/architecture.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/atlantis.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/best-practices.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/getting-started.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/index.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/partners.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/secretstores.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/sql-application-guide.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/guides/test-framework.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/index.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/setup/LINUX.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/setup/MAC.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/setup/WINDOWS.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/setup/troubleshooting.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/static/assets/logo.svg +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/static/images/phoenix-sdk-featureset.png +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/static/javascripts/mathjax.js +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/docs/static/stylesheets/extra.css +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/docs/mkdocs.yml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/examples/README.md +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/examples/application_custom_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/examples/application_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/examples/application_hello_world.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/examples/application_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/examples/application_sql_miner.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/examples/application_sql_with_custom_pyatlan_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/examples/application_sql_with_custom_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/examples/run_examples.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/examples/sql_query_templates/database.yaml +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/common/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/common/test_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/metadata_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/metadata_extraction/test_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/activities/test_activities.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/application/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/application/metadata_extraction/test_sql.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/application/test_application.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/clients/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/clients/test_async_sql_client.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/common/test_aws_utils.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/docgen/parsers/test_directory_parser.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/docgen/parsers/test_manifest_parser.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_auth.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_extract_allowed_schemas.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_preflight_check.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_prepare_metadata.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_tables_check.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/handlers/sql/test_validate_filters.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/inputs/test_json.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/observability/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/observability/test_logger_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/observability/test_metrics_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/observability/test_traces_adaptor.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_iceberg.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_json_output.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/outputs/test_output.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/server/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/server/fastapi/routers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/server/fastapi/routers/server.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/server/fastapi/test_fastapi.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/test_worker.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_columns.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_databases.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_functions.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_procedures.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_schemas.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/raw_tables.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_columns.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_databases.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_functions.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_procedures.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_schemas.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/resources/transformed_tables.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_column.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_database.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_function.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_procedure.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_schema.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/atlas/test_table.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/column.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/database.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/extras-procedure.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/function.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/schema.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/raw/table.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/column.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/database.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/extras-procedure.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/function.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/schema.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/resources/transformed/table.json +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/test_sql_transformer.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/transformers/query/test_sql_transformer_output_validation.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/workflows/query_extraction/__init__.py +0 -0
- {atlan_application_sdk-0.1.1rc24 → atlan_application_sdk-0.1.1rc26}/tests/unit/workflows/query_extraction/test_sql.py +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Project Review Guidelines - Application SDK
|
|
2
|
+
|
|
3
|
+
## Core Principles
|
|
4
|
+
|
|
5
|
+
**Less Code is Better** - Prioritize simplicity, readability, and maintainability over cleverness. Every line of code is a liability that must be justified.
|
|
6
|
+
|
|
7
|
+
## Critical Review Checklist
|
|
8
|
+
|
|
9
|
+
### 🔍 Code Quality & Minimalism
|
|
10
|
+
|
|
11
|
+
- **Necessity Check**: Is this code absolutely necessary? Can existing functionality be reused?
|
|
12
|
+
- **Single Responsibility**: Does each function/class do exactly one thing well?
|
|
13
|
+
- **DRY Violations**: Any repeated logic that should be extracted into shared utilities?
|
|
14
|
+
- **Cognitive Load**: Can a new developer understand this change with less cognitive load?
|
|
15
|
+
- **Magic Numbers/Strings**: All constants properly defined and named in @application_sdk/constants.py
|
|
16
|
+
- **Spell Check**: No typos in code, comments, docstrings, or documentation
|
|
17
|
+
- **Exception Handling Standards**: All exception handling must follow these principles. See detailed guidelines in [exception-handling.mdc](mdc:.cursor/rules/exception-handling.mdc).
|
|
18
|
+
|
|
19
|
+
### 🏗️ Architecture & Design
|
|
20
|
+
|
|
21
|
+
- **Module Boundaries**: Changes respect existing module responsibilities
|
|
22
|
+
- **Error Handling**: Proper exception handling with meaningful error messages
|
|
23
|
+
- **Resource Management**: Files, connections, and resources properly closed/released
|
|
24
|
+
- **Async Patterns**: Proper async/await usage where applicable
|
|
25
|
+
- **Configuration**: No hardcoded values; use proper configuration management
|
|
26
|
+
|
|
27
|
+
### 📝 Documentation Requirements
|
|
28
|
+
|
|
29
|
+
- **Docstrings**: All public functions, classes, and modules have Google-style docstrings
|
|
30
|
+
- **Type Hints**: All function parameters and return values are typed
|
|
31
|
+
- **Complex Logic**: Non-obvious business logic has inline comments explaining "why"
|
|
32
|
+
|
|
33
|
+
### 🧪 Testing
|
|
34
|
+
|
|
35
|
+
- **Testing Standards**: Testing standards are defined in [testing.mdc](mdc:.cursor/rules/testing.mdc)
|
|
36
|
+
- **Test Coverage**: New code has corresponding tests (unit/integration/e2e as appropriate)
|
|
37
|
+
- **Edge Cases**: Error conditions and boundary cases are tested
|
|
38
|
+
- **Mock Strategy**: External dependencies properly mocked/isolated
|
|
39
|
+
- **Test Naming**: Test names clearly describe the scenario being tested
|
|
40
|
+
|
|
41
|
+
### 🔒 Security & Performance
|
|
42
|
+
|
|
43
|
+
- **Input Validation**: All external inputs validated and sanitized
|
|
44
|
+
- **Secrets Management**: No secrets in code; proper credential handling
|
|
45
|
+
- **SQL Injection**: Parameterized queries used for all SQL operations
|
|
46
|
+
- **Performance Standards**: All performance considerations must follow these principles. See detailed guidelines in [performance.mdc](mdc:.cursor/rules/performance.mdc).
|
|
47
|
+
- **Memory Management**: Resources properly closed, large datasets processed in chunks
|
|
48
|
+
- **DataFrame Optimization**: Appropriate dtypes, avoid unnecessary copies, use chunked processing
|
|
49
|
+
- **SQL Query Efficiency**: Use LIMIT, specific columns, proper WHERE clauses, connection pooling
|
|
50
|
+
- **Serialization Performance**: Use orjson for large datasets, implement compression
|
|
51
|
+
- **Algorithm Efficiency**: Use appropriate data structures, avoid O(n²) when O(n) alternatives exist
|
|
52
|
+
- **Caching Strategy**: Cache expensive operations and database queries
|
|
53
|
+
- **Async Usage**: Use async for I/O operations, sync for CPU-bound tasks
|
|
54
|
+
|
|
55
|
+
### 📊 Observability & Logging
|
|
56
|
+
|
|
57
|
+
- **Logging Standards**: logging standards are defined in [logging.mdc](mdc:.cursor/rules/logging.mdc)
|
|
58
|
+
- **Metrics**: Key operations include appropriate metrics
|
|
59
|
+
- **Error Context**: Error logs include sufficient context for debugging
|
|
60
|
+
- **Trace Information**: Critical paths include trace information
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
alwaysApply: false
|
|
3
|
+
globs: application_sdk/**/*.py
|
|
4
|
+
---
|
|
5
|
+
# Exception Handling Standards
|
|
6
|
+
|
|
7
|
+
## Core Principles
|
|
8
|
+
|
|
9
|
+
**Default Behavior: Re-raise Exceptions** - Exceptions should be re-raised by default unless explicitly handled for a specific reason. Silent exception swallowing is not allowed.
|
|
10
|
+
|
|
11
|
+
## Critical Rules
|
|
12
|
+
|
|
13
|
+
### **Exception Propagation**
|
|
14
|
+
- **Rule**: Always re-raise exceptions after logging unless in non-critical operations
|
|
15
|
+
- **Anti-pattern**: `except Exception as e: logger.error(f"Error: {e}")` - This swallows exceptions
|
|
16
|
+
- **Correct pattern**: `except Exception as e: logger.error(f"Error: {e}"); raise`
|
|
17
|
+
|
|
18
|
+
### **Specific Exception Types**
|
|
19
|
+
- **Use specific exception types** instead of generic `Exception`
|
|
20
|
+
- **Examples**: `ValueError`, `ConnectionError`, `TimeoutError`, `FileNotFoundError`
|
|
21
|
+
- **Create custom exceptions** in `application_sdk/common/error_codes.py` for domain-specific errors
|
|
22
|
+
- **Anti-pattern**: `except Exception:` - Too broad, masks real issues
|
|
23
|
+
|
|
24
|
+
## Exception Handling Patterns
|
|
25
|
+
|
|
26
|
+
### **✅ DO: Proper exception handling with re-raising**
|
|
27
|
+
```python
|
|
28
|
+
try:
|
|
29
|
+
result = some_operation()
|
|
30
|
+
return result
|
|
31
|
+
except ValueError as e:
|
|
32
|
+
logger.error(f"Invalid input: {e}")
|
|
33
|
+
raise # Re-raise to propagate the error
|
|
34
|
+
except ConnectionError as e:
|
|
35
|
+
logger.error(f"Connection failed: {e}")
|
|
36
|
+
raise # Re-raise to propagate the error
|
|
37
|
+
except Exception as e:
|
|
38
|
+
logger.error(f"Unexpected error: {e}")
|
|
39
|
+
raise # Re-raise to propagate the error
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### **❌ DON'T: Swallowing exceptions**
|
|
43
|
+
```python
|
|
44
|
+
try:
|
|
45
|
+
result = some_operation()
|
|
46
|
+
return result
|
|
47
|
+
except Exception as e:
|
|
48
|
+
logger.error(f"Error: {e}")
|
|
49
|
+
# Missing raise - this swallows the exception!
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Context-Specific Guidelines
|
|
53
|
+
|
|
54
|
+
### **1. Critical Operations (Database, Network, File I/O)**
|
|
55
|
+
- **Always re-raise** exceptions after logging
|
|
56
|
+
- **Include context** in error messages
|
|
57
|
+
- **Use specific exception types**
|
|
58
|
+
|
|
59
|
+
### **2. Non-Critical Operations (Logging, Metrics, Observability)**
|
|
60
|
+
- **May swallow exceptions** to prevent cascading failures
|
|
61
|
+
- **Log the failure** for debugging
|
|
62
|
+
- **Continue operation** if possible
|
|
63
|
+
|
|
64
|
+
### **3. Resource Cleanup**
|
|
65
|
+
- **Use try/finally** for guaranteed cleanup
|
|
66
|
+
- **Log cleanup failures** but don't re-raise (to avoid masking original error)
|
|
67
|
+
|
|
68
|
+
## Common Anti-patterns to Reject
|
|
69
|
+
|
|
70
|
+
### **❌ Silent Exception Swallowing**
|
|
71
|
+
```python
|
|
72
|
+
try:
|
|
73
|
+
operation()
|
|
74
|
+
except Exception:
|
|
75
|
+
pass # REJECT: Silent failure
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### **❌ Generic Exception Catching Without Re-raising**
|
|
79
|
+
```python
|
|
80
|
+
try:
|
|
81
|
+
operation()
|
|
82
|
+
except Exception as e:
|
|
83
|
+
logger.error(f"Error: {e}") # REJECT: Swallows exception
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### **❌ Overly Broad Exception Handling**
|
|
87
|
+
```python
|
|
88
|
+
try:
|
|
89
|
+
operation()
|
|
90
|
+
except Exception as e: # REJECT: Too broad
|
|
91
|
+
logger.error(f"Error: {e}")
|
|
92
|
+
raise
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### **❌ Exception Handling Without Context**
|
|
96
|
+
```python
|
|
97
|
+
try:
|
|
98
|
+
operation()
|
|
99
|
+
except Exception as e:
|
|
100
|
+
logger.error(f"Error: {e}") # REJECT: No context about what failed
|
|
101
|
+
raise
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Best Practices
|
|
105
|
+
|
|
106
|
+
### **✅ DO: Proper exception handling with context**
|
|
107
|
+
```python
|
|
108
|
+
try:
|
|
109
|
+
result = database_connection.execute_query(query)
|
|
110
|
+
return result
|
|
111
|
+
except ConnectionError as e:
|
|
112
|
+
logger.error(f"Database connection failed for query {query[:50]}...: {e}")
|
|
113
|
+
raise
|
|
114
|
+
except ValueError as e:
|
|
115
|
+
logger.error(f"Invalid query parameters: {e}")
|
|
116
|
+
raise
|
|
117
|
+
except Exception as e:
|
|
118
|
+
logger.error(f"Unexpected error during database operation: {e}")
|
|
119
|
+
raise
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### **✅ DO: Resource cleanup with exception handling**
|
|
123
|
+
```python
|
|
124
|
+
file_handle = None
|
|
125
|
+
try:
|
|
126
|
+
file_handle = open(filename, 'r')
|
|
127
|
+
return file_handle.read()
|
|
128
|
+
except FileNotFoundError as e:
|
|
129
|
+
logger.error(f"File not found: {filename}")
|
|
130
|
+
raise
|
|
131
|
+
finally:
|
|
132
|
+
if file_handle:
|
|
133
|
+
try:
|
|
134
|
+
file_handle.close()
|
|
135
|
+
except Exception as e:
|
|
136
|
+
logger.warning(f"Failed to close file {filename}: {e}")
|
|
137
|
+
# Don't re-raise cleanup errors
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### **✅ DO: Non-critical operation exception handling**
|
|
141
|
+
```python
|
|
142
|
+
try:
|
|
143
|
+
metrics.record_metric("operation_success", 1)
|
|
144
|
+
except Exception as e:
|
|
145
|
+
logger.warning(f"Failed to record metric: {e}")
|
|
146
|
+
# Don't re-raise for non-critical operations
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Module-Specific Guidelines
|
|
150
|
+
|
|
151
|
+
### **Handlers (`application_sdk/handlers/`)**
|
|
152
|
+
- **Critical**: Always re-raise exceptions after logging
|
|
153
|
+
- **Include operation context** in error messages
|
|
154
|
+
- **Use specific exception types** for different error scenarios
|
|
155
|
+
|
|
156
|
+
### **Outputs (`application_sdk/outputs/`)**
|
|
157
|
+
- **Critical**: Re-raise exceptions for data writing operations
|
|
158
|
+
- **Non-critical**: May swallow exceptions for metrics/logging operations
|
|
159
|
+
- **Resource cleanup**: Ensure files/connections are properly closed
|
|
160
|
+
|
|
161
|
+
### **Inputs (`application_sdk/inputs/`)**
|
|
162
|
+
- **Critical**: Re-raise exceptions for data reading operations
|
|
163
|
+
- **Include file/connection context** in error messages
|
|
164
|
+
- **Handle specific I/O exceptions** appropriately
|
|
165
|
+
|
|
166
|
+
### **Observability (`application_sdk/observability/`)**
|
|
167
|
+
- **Non-critical**: May swallow exceptions to prevent cascading failures
|
|
168
|
+
- **Log all failures** for debugging
|
|
169
|
+
- **Continue operation** when possible
|
|
170
|
+
|
|
171
|
+
### **Workflows (`application_sdk/workflows/`)**
|
|
172
|
+
- **Critical**: Re-raise exceptions to trigger workflow retry logic
|
|
173
|
+
- **Include workflow context** in error messages
|
|
174
|
+
- **Handle Temporal-specific exceptions** appropriately
|
|
175
|
+
|
|
176
|
+
### **Server (`application_sdk/server/`)**
|
|
177
|
+
- **Critical**: Re-raise exceptions to return proper HTTP error responses
|
|
178
|
+
- **Include request context** in error messages
|
|
179
|
+
- **Handle HTTP-specific exceptions** appropriately
|
|
180
|
+
|
|
181
|
+
## Review Checklist
|
|
182
|
+
|
|
183
|
+
When reviewing code, check for:
|
|
184
|
+
|
|
185
|
+
1. **Exception Propagation**: Are exceptions properly re-raised when they should be?
|
|
186
|
+
2. **Specific Exception Types**: Are specific exception types used instead of generic `Exception`?
|
|
187
|
+
3. **Error Context**: Do error messages include sufficient context for debugging?
|
|
188
|
+
4. **Resource Cleanup**: Are resources properly cleaned up in finally blocks?
|
|
189
|
+
5. **Non-Critical Operations**: Are non-critical operations (logging, metrics) handled appropriately?
|
|
190
|
+
6. **Custom Exceptions**: Are domain-specific exceptions defined in `error_codes.py`?
|
|
191
|
+
7. **Exception Documentation**: Are exceptions documented in function docstrings?
|
|
192
|
+
|
|
193
|
+
## Implementation Notes
|
|
194
|
+
|
|
195
|
+
- **Custom Exceptions**: Define domain-specific exceptions in `application_sdk/common/error_codes.py`
|
|
196
|
+
- **Logging**: Use `AtlanLoggerAdapter` for all logging with proper context
|
|
197
|
+
- **Context**: Always include relevant context in error messages (query, filename, operation, etc.)
|
|
198
|
+
- **Documentation**: Document all exceptions that functions can raise in docstrings
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
---
|
|
2
|
+
alwaysApply: false
|
|
3
|
+
globs: application_sdk/**/*.py
|
|
4
|
+
---
|
|
5
|
+
# Performance Standards
|
|
6
|
+
|
|
7
|
+
## Core Principles
|
|
8
|
+
|
|
9
|
+
**Performance is a Feature** - Performance issues are bugs that affect user experience and system reliability. All code must be written with performance considerations in mind.
|
|
10
|
+
|
|
11
|
+
## Critical Performance Areas
|
|
12
|
+
|
|
13
|
+
### **Memory Management**
|
|
14
|
+
|
|
15
|
+
#### **Memory Leaks Prevention**
|
|
16
|
+
- **Rule**: Always close resources (files, connections, iterators) in finally blocks
|
|
17
|
+
- **Anti-pattern**: Opening resources without proper cleanup
|
|
18
|
+
- **Correct pattern**: Use context managers or try/finally
|
|
19
|
+
|
|
20
|
+
**✅ DO: Proper resource management**
|
|
21
|
+
```python
|
|
22
|
+
# Using context manager
|
|
23
|
+
with open(filename, 'r') as f:
|
|
24
|
+
data = f.read()
|
|
25
|
+
|
|
26
|
+
# Using try/finally
|
|
27
|
+
file_handle = None
|
|
28
|
+
try:
|
|
29
|
+
file_handle = open(filename, 'r')
|
|
30
|
+
data = file_handle.read()
|
|
31
|
+
finally:
|
|
32
|
+
if file_handle:
|
|
33
|
+
file_handle.close()
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**❌ DON'T: Resource leaks**
|
|
37
|
+
```python
|
|
38
|
+
# REJECT: No cleanup
|
|
39
|
+
file_handle = open(filename, 'r')
|
|
40
|
+
data = file_handle.read()
|
|
41
|
+
# Missing file_handle.close()
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### **Large Object Management**
|
|
45
|
+
- **Rule**: Process large datasets in chunks, not all at once
|
|
46
|
+
- **Anti-pattern**: Loading entire dataset into memory
|
|
47
|
+
- **Correct pattern**: Use generators, iterators, or chunked processing
|
|
48
|
+
|
|
49
|
+
**✅ DO: Chunked processing**
|
|
50
|
+
```python
|
|
51
|
+
def process_large_file(filename: str, chunk_size: int = 1000):
|
|
52
|
+
"""Process large file in chunks to avoid memory issues."""
|
|
53
|
+
with open(filename, 'r') as f:
|
|
54
|
+
chunk = []
|
|
55
|
+
for line in f:
|
|
56
|
+
chunk.append(line.strip())
|
|
57
|
+
if len(chunk) >= chunk_size:
|
|
58
|
+
yield process_chunk(chunk)
|
|
59
|
+
chunk = []
|
|
60
|
+
if chunk: # Process remaining items
|
|
61
|
+
yield process_chunk(chunk)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**❌ DON'T: Load everything into memory**
|
|
65
|
+
```python
|
|
66
|
+
# REJECT: Memory intensive
|
|
67
|
+
def process_large_file(filename: str):
|
|
68
|
+
with open(filename, 'r') as f:
|
|
69
|
+
all_lines = f.readlines() # Loads entire file into memory
|
|
70
|
+
return process_all_lines(all_lines)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### **DataFrame Performance**
|
|
74
|
+
|
|
75
|
+
#### **Memory-Efficient DataFrame Operations**
|
|
76
|
+
- **Rule**: Use appropriate data types and avoid unnecessary copies
|
|
77
|
+
- **Anti-pattern**: Creating multiple copies of large DataFrames
|
|
78
|
+
- **Correct pattern**: Use inplace operations and proper dtypes
|
|
79
|
+
|
|
80
|
+
**✅ DO: Memory-efficient DataFrame operations**
|
|
81
|
+
```python
|
|
82
|
+
# Use appropriate dtypes
|
|
83
|
+
df = pd.read_csv('large_file.csv', dtype={
|
|
84
|
+
'id': 'int32',
|
|
85
|
+
'category': 'category', # More memory efficient than object
|
|
86
|
+
'value': 'float32'
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
# Use inplace operations when possible
|
|
90
|
+
df.dropna(inplace=True) # Instead of df = df.dropna()
|
|
91
|
+
df.reset_index(drop=True, inplace=True)
|
|
92
|
+
|
|
93
|
+
# Use query() for filtering (more memory efficient)
|
|
94
|
+
filtered_df = df.query('value > 100 and category == "A"')
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**❌ DON'T: Inefficient DataFrame operations**
|
|
98
|
+
```python
|
|
99
|
+
# REJECT: Creates unnecessary copies
|
|
100
|
+
df = df.dropna() # Creates copy
|
|
101
|
+
df = df.reset_index() # Creates another copy
|
|
102
|
+
df = df[df['value'] > 100] # Creates another copy
|
|
103
|
+
df = df[df['category'] == 'A'] # Creates another copy
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### **DataFrame Chunking**
|
|
107
|
+
- **Rule**: Process large DataFrames in chunks
|
|
108
|
+
- **Anti-pattern**: Processing entire DataFrame at once
|
|
109
|
+
- **Correct pattern**: Use chunked reading and processing
|
|
110
|
+
|
|
111
|
+
**✅ DO: Chunked DataFrame processing**
|
|
112
|
+
```python
|
|
113
|
+
def process_large_dataframe(filename: str, chunk_size: int = 10000):
|
|
114
|
+
"""Process large CSV file in chunks."""
|
|
115
|
+
for chunk in pd.read_csv(filename, chunksize=chunk_size):
|
|
116
|
+
# Process each chunk
|
|
117
|
+
processed_chunk = process_chunk(chunk)
|
|
118
|
+
yield processed_chunk
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**❌ DON'T: Load entire DataFrame**
|
|
122
|
+
```python
|
|
123
|
+
# REJECT: Memory intensive for large files
|
|
124
|
+
df = pd.read_csv('very_large_file.csv') # Loads entire file
|
|
125
|
+
process_dataframe(df)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### **SQL Query Performance**
|
|
129
|
+
|
|
130
|
+
#### **Query Optimization**
|
|
131
|
+
- **Rule**: Write efficient SQL queries with proper indexing and limiting
|
|
132
|
+
- **Anti-pattern**: SELECT * without LIMIT on large tables
|
|
133
|
+
- **Correct pattern**: Use specific columns, LIMIT, and proper WHERE clauses
|
|
134
|
+
|
|
135
|
+
**✅ DO: Optimized SQL queries**
|
|
136
|
+
```python
|
|
137
|
+
# Use specific columns instead of SELECT *
|
|
138
|
+
query = "SELECT id, name, created_at FROM users WHERE status = 'active' LIMIT 1000"
|
|
139
|
+
|
|
140
|
+
# Use parameterized queries for security and performance
|
|
141
|
+
query = "SELECT * FROM users WHERE age > %s AND city = %s LIMIT %s"
|
|
142
|
+
params = (18, 'New York', 100)
|
|
143
|
+
|
|
144
|
+
# Use appropriate indexes in WHERE clauses
|
|
145
|
+
query = "SELECT * FROM orders WHERE user_id = %s AND created_at > %s"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**❌ DON'T: Inefficient SQL queries**
|
|
149
|
+
```python
|
|
150
|
+
# REJECT: No LIMIT on large table
|
|
151
|
+
query = "SELECT * FROM users" # Could return millions of rows
|
|
152
|
+
|
|
153
|
+
# REJECT: No WHERE clause on indexed columns
|
|
154
|
+
query = "SELECT * FROM orders WHERE amount > 0" # Should use user_id or date
|
|
155
|
+
|
|
156
|
+
# REJECT: String concatenation (SQL injection risk)
|
|
157
|
+
query = f"SELECT * FROM users WHERE name = '{user_input}'"
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### **Connection and Transaction Management**
|
|
161
|
+
- **Rule**: Use connection pooling and proper transaction management
|
|
162
|
+
- **Anti-pattern**: Creating new connections for each query
|
|
163
|
+
- **Correct pattern**: Reuse connections and use transactions
|
|
164
|
+
|
|
165
|
+
**✅ DO: Proper connection management**
|
|
166
|
+
```python
|
|
167
|
+
# Use connection pooling
|
|
168
|
+
async def execute_queries():
|
|
169
|
+
async with get_db_connection() as conn:
|
|
170
|
+
async with conn.transaction():
|
|
171
|
+
await conn.execute("INSERT INTO logs (message) VALUES ($1)", "info")
|
|
172
|
+
await conn.execute("UPDATE counters SET value = value + 1")
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**❌ DON'T: Poor connection management**
|
|
176
|
+
```python
|
|
177
|
+
# REJECT: Creating new connection for each query
|
|
178
|
+
for query in queries:
|
|
179
|
+
conn = create_new_connection() # Expensive
|
|
180
|
+
conn.execute(query)
|
|
181
|
+
conn.close()
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### **Serialization/Deserialization Performance**
|
|
185
|
+
|
|
186
|
+
#### **JSON Serialization Optimization**
|
|
187
|
+
- **Rule**: Use efficient serialization libraries and avoid unnecessary conversions
|
|
188
|
+
- **Anti-pattern**: Using default json module for large datasets
|
|
189
|
+
- **Correct pattern**: Use orjson, ujson, or custom serializers
|
|
190
|
+
|
|
191
|
+
**✅ DO: Efficient JSON serialization**
|
|
192
|
+
```python
|
|
193
|
+
import orjson # Much faster than json
|
|
194
|
+
|
|
195
|
+
# Use orjson for better performance
|
|
196
|
+
data = orjson.dumps(large_dict, option=orjson.OPT_APPEND_NEWLINE)
|
|
197
|
+
|
|
198
|
+
# Use streaming for large datasets
|
|
199
|
+
def serialize_large_dataset(data_iterator):
|
|
200
|
+
for item in data_iterator:
|
|
201
|
+
yield orjson.dumps(item) + b'\n'
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**❌ DON'T: Inefficient serialization**
|
|
205
|
+
```python
|
|
206
|
+
# REJECT: Using default json for large datasets
|
|
207
|
+
import json
|
|
208
|
+
data = json.dumps(large_dict) # Slower than orjson
|
|
209
|
+
|
|
210
|
+
# REJECT: Converting to string unnecessarily
|
|
211
|
+
data = str(orjson.dumps(large_dict)) # Unnecessary conversion
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
### **CPU Performance**
|
|
216
|
+
|
|
217
|
+
#### **Algorithm Efficiency**
|
|
218
|
+
- **Rule**: Use appropriate algorithms and data structures
|
|
219
|
+
- **Anti-pattern**: O(n²) algorithms when O(n) or O(log n) alternatives exist
|
|
220
|
+
- **Correct pattern**: Choose efficient algorithms and data structures
|
|
221
|
+
|
|
222
|
+
**✅ DO: Efficient algorithms**
|
|
223
|
+
```python
|
|
224
|
+
# Use set for O(1) lookups
|
|
225
|
+
def find_duplicates(items):
|
|
226
|
+
seen = set()
|
|
227
|
+
duplicates = set()
|
|
228
|
+
for item in items:
|
|
229
|
+
if item in seen:
|
|
230
|
+
duplicates.add(item)
|
|
231
|
+
else:
|
|
232
|
+
seen.add(item)
|
|
233
|
+
return list(duplicates)
|
|
234
|
+
|
|
235
|
+
# Use list comprehension instead of loops when appropriate
|
|
236
|
+
squares = [x**2 for x in range(1000)] # More efficient than loop
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**❌ DON'T: Inefficient algorithms**
|
|
240
|
+
```python
|
|
241
|
+
# REJECT: O(n²) algorithm
|
|
242
|
+
def find_duplicates(items):
|
|
243
|
+
duplicates = []
|
|
244
|
+
for i, item in enumerate(items):
|
|
245
|
+
if item in items[i+1:]: # O(n) lookup
|
|
246
|
+
duplicates.append(item)
|
|
247
|
+
return duplicates
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
#### **Async/Await Performance**
|
|
251
|
+
- **Rule**: Use async/await for I/O operations, not CPU-bound tasks
|
|
252
|
+
- **Anti-pattern**: Using async for CPU-intensive operations
|
|
253
|
+
- **Correct pattern**: Use async for I/O, sync for CPU-bound tasks
|
|
254
|
+
|
|
255
|
+
**✅ DO: Proper async usage**
|
|
256
|
+
```python
|
|
257
|
+
import asyncio
|
|
258
|
+
import aiofiles
|
|
259
|
+
|
|
260
|
+
# Async for I/O operations
|
|
261
|
+
async def read_files_async(filenames):
|
|
262
|
+
async def read_single_file(filename):
|
|
263
|
+
async with aiofiles.open(filename, 'r') as f:
|
|
264
|
+
return await f.read()
|
|
265
|
+
|
|
266
|
+
tasks = [read_single_file(filename) for filename in filenames]
|
|
267
|
+
return await asyncio.gather(*tasks)
|
|
268
|
+
|
|
269
|
+
# Sync for CPU-bound operations
|
|
270
|
+
def process_data_cpu_intensive(data):
|
|
271
|
+
# CPU-intensive processing
|
|
272
|
+
return [x * 2 for x in data]
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**❌ DON'T: Misusing async**
|
|
276
|
+
```python
|
|
277
|
+
# REJECT: Using async for CPU-bound operations
|
|
278
|
+
async def process_data_cpu_intensive(data):
|
|
279
|
+
# This should be sync
|
|
280
|
+
return [x * 2 for x in data]
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Performance Review Checklist
|
|
284
|
+
|
|
285
|
+
When reviewing code for performance, check for:
|
|
286
|
+
|
|
287
|
+
1. **Memory Management**: Are resources properly closed? Are large datasets processed in chunks?
|
|
288
|
+
2. **DataFrame Operations**: Are appropriate dtypes used? Are unnecessary copies avoided?
|
|
289
|
+
3. **SQL Queries**: Are queries optimized with LIMIT and proper WHERE clauses?
|
|
290
|
+
4. **Serialization**: Are efficient libraries (orjson) used for large datasets?
|
|
291
|
+
5. **Algorithm Efficiency**: Are appropriate data structures and algorithms used?
|
|
292
|
+
6. **Async Usage**: Is async used for I/O operations, not CPU-bound tasks?
|
|
293
|
+
7. **Connection Pooling**: Are database connections reused?
|
|
294
|
+
8. **Batch Processing**: Are operations batched when possible?
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# refer application_sdk/constants.py for extensive list of environment configurations
|
|
2
|
+
|
|
3
|
+
ATLAN_WORKFLOW_HOST=localhost
|
|
4
|
+
ATLAN_WORKFLOW_PORT=7233
|
|
5
|
+
ATLAN_WORKFLOW_NAMESPACE=default
|
|
6
|
+
ATLAN_APPLICATION_NAME=default
|
|
7
|
+
ATLAN_TENANT_ID=development
|
|
8
|
+
ATLAN_WORKFLOW_UI_HOST=localhost
|
|
9
|
+
ATLAN_WORKFLOW_UI_PORT=8233
|
|
10
|
+
ATLAN_WORKFLOW_MAX_TIMEOUT_HOURS=1
|
|
11
|
+
ATLAN_MAX_CONCURRENT_ACTIVITIES=5
|
|
12
|
+
ATLAN_APP_DASHBOARD_HOST=localhost
|
|
13
|
+
ATLAN_APP_DASHBOARD_PORT=3000
|
|
14
|
+
ATLAN_APP_HTTP_HOST=0.0.0.0
|
|
15
|
+
ATLAN_APP_HTTP_PORT=8000
|
|
16
|
+
ATLAN_WORKFLOW_METRICS_PORT=8234
|
|
17
|
+
ATLAN_SQL_SERVER_MIN_VERSION=1.0
|
|
18
|
+
ENABLE_OTLP_LOGS=false
|
|
19
|
+
ATLAN_HEARTBEAT_TIMEOUT_SECONDS=120 # 2 minutes
|
|
20
|
+
ATLAN_START_TO_CLOSE_TIMEOUT_SECONDS=7200 # 2 hours
|
|
21
|
+
# ATLAN_ENABLE_OBSERVABILITY_DAPR_SINK="false"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# if you plan to deploy the app in customer environment, below is a sample environment variables you need to set
|
|
25
|
+
ATLAN_WORKFLOW_HOST="tenant-temporal.atlan.com"
|
|
26
|
+
ATLAN_WORKFLOW_PORT="443"
|
|
27
|
+
ATLAN_LOCAL_DEVELOPMENT=false
|
|
28
|
+
ATLAN_WORKFLOW_AUTH_ENABLED="true"
|
|
29
|
+
ENABLE_ATLAN_UPLOAD="true"
|
|
30
|
+
ATLAN_DEPLOYMENT_SECRETS='{"appName_app_client_id":"enter_client_id","appName_app_client_secret":"enter_secret","atlan_auth_url":"https://tenant.atlan.com/auth/realms/default/protocol/openid-connect/token","workflow_tls_enabled":"true","deployment_name":"agent-v2"}'
|
|
31
|
+
|
|
32
|
+
# Storage:
|
|
33
|
+
DEPLOYMENT_OBJECT_STORE_NAME="objectstore"
|
|
34
|
+
UPSTREAM_OBJECT_STORE_NAME="atlan-storage"
|
|
35
|
+
|
|
36
|
+
# Secret Store
|
|
37
|
+
SECRET_STORE_NAME="aws-secrets"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
## v0.1.1rc26 (August 07, 2025)
|
|
2
|
+
|
|
3
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc25...v0.1.1rc26
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- add cursor and bugbot rules (#636) (by @Amit Prabhu in [cbbecd9](https://github.com/atlanhq/application-sdk/commit/cbbecd9))
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- handle str and dict types in preflight checks (#638) (by @Nishchith Shetty in [57ee9a0](https://github.com/atlanhq/application-sdk/commit/57ee9a0))
|
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## v0.1.1rc26 (August 07, 2025)
|
|
5
|
+
|
|
6
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc25...v0.1.1rc26
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- add cursor and bugbot rules (#636) (by @Amit Prabhu in [cbbecd9](https://github.com/atlanhq/application-sdk/commit/cbbecd9))
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- handle str and dict types in preflight checks (#638) (by @Nishchith Shetty in [57ee9a0](https://github.com/atlanhq/application-sdk/commit/57ee9a0))
|
|
15
|
+
|
|
16
|
+
## v0.1.1rc25 (August 05, 2025)
|
|
17
|
+
|
|
18
|
+
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc24...v0.1.1rc25
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
- implement OAuth2 authentication and data transfer for applications (#634) (by @nishantmunjal7 in [e5e70a2](https://github.com/atlanhq/application-sdk/commit/e5e70a2))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
4
26
|
## v0.1.1rc24 (August 01, 2025)
|
|
5
27
|
|
|
6
28
|
Full Changelog: https://github.com/atlanhq/application-sdk/compare/v0.1.1rc23...v0.1.1rc24
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atlan-application-sdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1rc26
|
|
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
|
|
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
21
|
Requires-Python: >=3.11
|
|
22
|
+
Requires-Dist: aiohttp>=3.10.0
|
|
22
23
|
Requires-Dist: duckdb-engine>=0.17.0
|
|
23
24
|
Requires-Dist: duckdb>=1.1.3
|
|
24
25
|
Requires-Dist: fastapi[standard]>=0.115.0
|