feat(packages): Expose attribute deprecation chains and getAttributeValue helper - #508
Draft
Lms24 wants to merge 5 commits into
Draft
feat(packages): Expose attribute deprecation chains and getAttributeValue helper#508Lms24 wants to merge 5 commits into
getAttributeValue helper#508Lms24 wants to merge 5 commits into
Conversation
Semver Impact of This PR🟡 Minor (new features) 📋 Changelog PreviewThis is how your changes will appear in the changelog. Breaking Changes 🛠
New Features ✨Attributes
Op
Other
Internal Changes 🔧Attribute
Attributes
Deps
Other
🤖 This preview updates automatically when you update the PR. |
Member
Author
|
bugbot review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 1532a46. Configure here.
Lms24
force-pushed
the
lms/feat-attribute-read-chains
branch
from
July 31, 2026 14:34
1532a46 to
b91c5b1
Compare
getAttributeValue helper
Generate stable-first key chains in JavaScript and Python so SDKs can read legacy attributes without importing the full metadata registry. Add small lookup helpers while preserving tree-shakeable package paths. Fixes #496 Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Use a single expression to preserve lookup semantics while reducing the shipped helper by 13 bytes. Move coverage into a dedicated unit test. Refs GH-496 Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Add examples and parameter guidance for the JavaScript and Python helpers. Generate the Python docstring so regeneration preserves the API documentation. Refs GH-496 Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Clean up three pre-existing type errors in the attribute generator: - Drop the `_isDeprecated` destructure in `writeToJs`, which did not exist on the element type and was never read. - Widen `convertToPythonLiteral` to accept `AttributeValue[]`. The body already recursed over arrays, but the `AttributeJson['example']` annotation excluded them, so passing `examples` did not type check. - Guard the first Python example on `firstExample !== undefined` so the indexed access narrows, instead of passing a possibly-`undefined` value into a parameter that did not accept it. - Remove the unused `attributesDir` and `attributeFiles` parameters from `generateMetadataDict` and update the call site. Generated output is byte-identical: re-running `yarn generate` produces no diff in the JavaScript or Python attribute files. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… chains Attribute key chains previously only linked an attribute to the deprecated attributes it replaces. A value can also be read under an attribute's Sentry search names or under one of its aliases, so those keys are now part of the chain too. Each chain still leads with the stable, non-deprecated key and is shared by every member of a family, so a read prefers the current key no matter which constant the caller imports. Within a chain the order is: the stable attribute and its search names, then its non-deprecated aliases, then the deprecated attributes it replaces, each expanded the same way. Only `backfill` and `normalize` deprecations now join a replacement's chain. A `transform` deprecation, or one with no status, leaves the value under the original key, so following it would return a value the caller did not ask for. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Lms24
force-pushed
the
lms/feat-attribute-read-chains
branch
from
August 7, 2026 13:36
b91c5b1 to
82b97dc
Compare
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.
Expose attribute key chains and lightweight lookup helpers in JavaScript and Python. Each
<ATTRIBUTE>_KEYSconstant lists every key a value may be stored under, andgetAttributeValue/get_attribute_valueread the first one present.A chain leads with the stable, non-deprecated key and is shared by every member of a family, so a read prefers the current key regardless of which constant the caller imports. Within a chain the order is:
search_aliasname and aliasesOnly
backfillandnormalizedeprecations link an attribute to its replacement — atransformdeprecation leaves the value under the original key.Based on #492 for
search_alias; retarget tomainonce that merges.Fixes #496