Repository navigation
Conversation
Adds hand-written creator overlays for SalesforceOrganization,
SalesforceObject, SalesforceField, SalesforceReport and SalesforceDashboard,
and regenerates the 5 classes from atlanhq/models master with them.
Each creator emits the exact qualifiedName atlan-salesforce-app emits today
(FND-3838 census):
Organization {conn}/{source_id}
Object {org}/{api_name}
Field {object}/{api_name}
Report {org}/{source_id}
Dashboard {org}/{source_id}
Object, Field, Report and Dashboard take the parent qualifiedName, set the
denormalised parent qns and the requiredForCreation parent relationship, and
derive connection_qualified_name from the parent when it is not given. Blank
inputs and too-short parent qns raise.
No models change: the containment-derived _QUALIFIED_NAME_PATTERN already
matches these shapes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019fLee6iVYNyoTkguJombqF
…nit tests Regenerates the 5 Salesforce classes from the paired models branch (atlanhq/models#2100). Only SalesforceOrganization changes: it has no containment parent, so the formula gives it its first _QUALIFIED_NAME_PATTERN. The other four patterns are unchanged. The models branch was generated without models#2093 (FND-3846 deleteHandler), which is still waiting in sync PR #1081, so this diff carries only Salesforce changes. Splits tests_v9/unit/model/salesforce_test.py into one file per type (salesforce_<type>_test.py) and adds updater / trim_to_required cases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fLee6iVYNyoTkguJombqF
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 5 Salesforce asset types in pyatlan_v9: SalesforceOrganization, SalesforceObject, SalesforceField, SalesforceReport, SalesforceDashboard. The structure follows the Cognos exemplar (#1078).{conn}/{source_id}{org}/{api_name}organization{object}/{api_name}object{org}/{source_id}organization{org}/{source_id}organization{org}/{api_name}shape.organization_qualified_name/object_qualified_namerequiredForCreationin the typedefconnection_qualified_name, derived from the parent qn when it isn't passedname(the Salesforce label) andapi_nameare separate inputs, as in the app.validate_required_fields). A parent qn with too few segments also raises.qualifiedNameFormulaper type, spelled out from the connection the way the Sigma formulas are. The 5 classes here are regenerated from that branch. Only SalesforceOrganization changes: it gains its first_QUALIFIED_NAME_PATTERN(^.+/[^/]+$). The other four patterns are unchanged. The generation leaves out models#2093 (FND-3846deleteHandler), which is still waiting in sync PR Sync Python SDK models from atlanhq/models #1081, so this diff carries only Salesforce changes.{org}/{id}, but a collision can't happen in practice. Salesforce ids carry a per-object key prefix (00Ofor reports,01Zfor dashboards).Merge order
The sync bot regenerates from models master using the overlays on atlan-python main. Merged in this order, its Salesforce diff is a no-op. Merged the other way round, it would drop the creators.
Linear: FND-3858. The analysis table is in the issue comments.
🧩 Type of change
✅ How has this been tested?
tests_v9/unit/model/salesforce_<type>_test.py, one file per type (78 tests). They cover:validate(for_creation=True)connection_qualified_namecreate,updaterandtrim_to_requiredApp vs creator: I ran 108 records through atlan-salesforce-app's own
map_*functions (origin/main) and compared each against the creator output. Compared fields: qn, connection qn, connector,api_name/source_id, the denormalised qns and the parent ref qn. Result: 0 mismatches.Generator fidelity: generating from models master with main's overlays reproduces main's Salesforce classes byte-for-byte. Generating from models#2100 with this branch's overlays changes only the 5 Salesforce classes. pre-commit makes no rewrites, and
ruff check --no-fixandruff format --checkare clean.pytest tests_v9/unit: 7997 passed, 5 skipped.tests_v9/integration/salesforce_asset_test.pyis added. It creates a connection and all 5 types through the creators, retrieves each, asserts the exact qn and the parent links, then purges everything. It runs in CI via therun_pyatlan_v9_integration_testslabel.CI run 39467360461 (labelled):
v9-integration-tests (tests_v9/integration/salesforce_asset_test.py)and all unit / qa jobs pass.Pre-existing failures (not caused by this PR): every one of the 25 failed jobs also fails on FND-3885: add pyatlan_v9 creator for SodaCheck #1089 or FND-3884: add pyatlan_v9 creator for QuickSightAnalysisField #1086. The 40 cancelled jobs are matrix fail-fast stops after those failures.
Failed jobs
📋 Checklist
🤖 Generated with Claude Code
https://claude.ai/code/session_019fLee6iVYNyoTkguJombqF