Repository navigation
Conversation
Adds hand-written creator overlays for QlikSpace, QlikStream, QlikApp,
QlikDataset, QlikSheet, QlikChart and QlikColumn, and regenerates those
classes from the paired atlanhq/models change that adds a
qualifiedNameFormula per Qlik type.
Each creator emits the exact qualifiedName atlan-qlik-sense-app emits
today. Child creators take the parent's qualifiedName and derive the
connection, app id and space id from it:
- App / Dataset take space_qualified_name. Its /space/ or /stream/
segment decides whether qlik_space points at a QlikSpace or a
QlikStream, so the creator does not guess from a deployment type.
- Sheet takes app_qualified_name; Chart takes sheet_qualified_name and
builds {app}/chart/{id} (the chart qn hangs off the app, not the sheet).
Both take an optional space_qualified_name for the denormalised space.
- Column takes parent_qualified_name (sheet, chart or dataset) and builds
{parent}/column/{md5("{parent path}/column/{name}")}, matching the app's
generate_field_id. The parent type is read from the qualifiedName.
Blank inputs and parent qualifiedNames of the wrong shape raise ValueError.
tests_v9/unit/model/qlik_test.py asserts each literal app qualifiedName.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WG31Pc155G4jqZUzC2FEet
…rents The generated QlikColumn.validate(for_creation=True) always required qlik_sheet and qlik_app_qualified_name, so it rejected every chart- or dataset-parented column. Regenerated from the paired models change (sdk.parentTypes on Qlik Column + renderer common-ancestor fix), it now requires one of qlik_sheet / qlik_chart / qlik_dataset plus qlik_space_qualified_name, the one ancestor all three parents share. QlikColumn.creator gains an optional space_qualified_name, like the sheet and chart creators, to fill that denormalised space. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WG31Pc155G4jqZUzC2FEet
Splits tests_v9/unit/model/qlik_test.py into one file per type, in the layout the merged Fabric creators use: literal app qualifiedName, create alias, None / "" / " " for every required input, wrong-shape parents, updater and trim_to_required. Adds a personal-space dataset case and a check that the same field under a sheet and a chart hashes differently. tests_v9/integration/qlik_asset_test.py creates a Qlik Sense connection, a space and a stream, an app in each, a sheet and a chart under the space's app, a dataset, and a column under each of the sheet, chart and dataset, all through the creators. It retrieves each by guid and asserts the exact qualifiedName and parent relationship, then purges. 10 passed against a tenant. Also merges origin/main; regenerating the Qlik classes from the models branch on top of it is a no-op. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WG31Pc155G4jqZUzC2FEet
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
✨ Description
Adds
creator()for the 7 Qlik Sense asset types in pyatlan_v9: QlikSpace, QlikStream, QlikApp, QlikDataset, QlikSheet, QlikChart, QlikColumn. Each one emits the exact qualifiedName atlan-qlik-sense-app emits today (checked against itsmain407e9a7).ValueErrorif the parent name has the wrong shape. Sheet takesapp_qualified_name. Chart takessheet_qualified_nameand builds{app}/chart/{id}, because chart names hang off the app, not the sheet./space/or/stream/segment of thespace_qualified_namepassed in decides whetherqlik_spacepoints at a QlikSpace or a QlikStream. The creator does not guess from a deployment type.{parent}/column/{md5("{parent path}/column/{name}")}, where the parent path is the parent's qualifiedName without the connection, matching the app'sgenerate_field_id. The FND-3838 census showedmd5(field_name), which was wrong. The parent type (sheet / chart / dataset) is read from the parent qualifiedName.space_qualified_nameon Sheet, Chart and Column fills the denormalisedqlik_space_id/qlik_space_qualified_name.validate_required_fields).QlikColumn.validate(for_creation=True), which used to reject every chart- or dataset-parented column. It now requires one ofqlik_sheet/qlik_chart/qlik_dataset, plusqlik_space_qualified_name.pyatlan_v9/model/assets/_overlays/qlik_*.py. The 7 classes are regenerated from the paired models branch with these overlays (pklsdkOnly=python+ pre-commit, the same steps assync-python-sdk.yaml).Linear: FND-3857. The analysis table is in the issue comments.
Paired models PR: https://github.com/atlanhq/models/pull/2095. It adds the
qualifiedNameFormulas that drive the regenerated_QUALIFIED_NAME_PATTERN, plus the multi-parent creation-check fix.Merge order: this PR first, then models#2095. The sync bot (
sync-python-sdk.yaml, on push to modelsmaster) regenerates using the overlays on atlan-pythonmain. In this order its sync PR is a no-op for the Qlik classes; the other way round it would regenerate them without the creators.🧩 Type of change
QlikColumn.validate(for_creation=True)✅ How has this been tested?
tests_v9/unit/model/qlik_{space,stream,app,dataset,sheet,chart,column}_test.py(117 tests). They cover:generate_field_id)typeName, and thepersonalpseudo-spacevalidate(for_creation=True)for every type and every column parent, plus a column with no parentcreatealias,None/""/" "for every required input, wrong-shape parents, updater andtrim_to_requiredtests_v9/integration/qlik_asset_test.pycreates a Qlik Sense connection, then through the creators a space and a stream, an app in each, a sheet and a chart, a dataset, and a column under each of the sheet, chart and dataset. It retrieves each by guid, asserts the exact qualifiedName and parent link, and purges. 10/10 passed locally against a tenant. The PR carriesrun_pyatlan_v9_integration_tests.qlik_asset_test.pypassed 10/10. All v9 unit/QA jobs (3.9–3.14) and the vulnerability scans passed.s3_asset_test,glossary_test,lineage_test, theaio/*jobs and legacytests/integration/*. The same jobs also fail on other PRs from today (FND-3856 run: 64, FND-3850 run: 57). The one exception, legacytests/integration/adls_asset_test.py, was cancelled by matrix fail-fast rather than failing. This PR doesn't touchpyatlan/ortests/.master) with these overlays, on top ofmain, is a no-op for the committed Qlik classes. pre-commit leaves them unchanged.📋 Checklist
🤖 Generated with Claude Code
https://claude.ai/code/session_01WG31Pc155G4jqZUzC2FEet