feat: Remove automatic field description inheritance#1378
Open
jwaldrip wants to merge 15 commits intoabsinthe-graphql:mainfrom
Open
feat: Remove automatic field description inheritance#1378jwaldrip wants to merge 15 commits intoabsinthe-graphql:mainfrom
jwaldrip wants to merge 15 commits intoabsinthe-graphql:mainfrom
Conversation
- Fix mix absinthe.schema.json to use schema's adapter for introspection - Fix mix absinthe.schema.sdl to use schema's adapter for directive names - Update SDL renderer to accept adapter parameter and use it for directive definitions - Ensure directive names follow naming conventions (camelCase, etc.) in generated SDL 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
When a field has no description, it now inherits the description from its referenced type during introspection. This provides better documentation for GraphQL APIs by automatically propagating type descriptions to fields. - Modified __field introspection resolver to fall back to type descriptions - Handles wrapped types (non_null, list_of) correctly by unwrapping first - Added comprehensive test coverage for various inheritance scenarios - Updated field documentation to explain the new behavior 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Based on community feedback from PR absinthe-graphql#1373, automatic field description inheritance was not well received. The community preferred explicit field descriptions that are specific to each field's context rather than automatically inheriting from the referenced type. This commit: - Reverts the automatic inheritance behavior in introspection - Removes the associated test file - Returns to the standard field description handling 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Run mix format to fix formatting issues detected by CI. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
cschiewek
reviewed
Oct 28, 2025
lib/absinthe/type/field.ex
Outdated
| * `:description` - Description of a field, useful for introspection. | ||
| * `:description` - Description of a field, useful for introspection. If no description | ||
| is provided, the field will inherit the description of its referenced type during | ||
| introspection (e.g., a field of type `:user` will inherit the User type's description). |
Contributor
Author
There was a problem hiding this comment.
You're right — the docstring is describing the old inheritance behavior that this PR removes. I'll update the description to reflect that fields no longer inherit descriptions from their referenced types. Good catch, thanks!
# Conflicts: # lib/absinthe/phase/debug.ex
The docstring was describing inheritance behavior that this branch removes. Reverts to the original description text. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
Summary
Removes automatic field description inheritance based on community feedback from PR #1373.
Background
In PR #1373, I proposed automatic field description inheritance where fields would inherit descriptions from their referenced types when no explicit description was provided. The community provided clear feedback that this behavior was not desirable.
Community Feedback
:inheritoptionThis PR
Based on this feedback, this PR removes the automatic field description inheritance feature entirely, returning to the standard behavior where fields must have explicit descriptions.
Changes
Test Plan
Thank you for the valuable feedback on the original proposal. The community's preference for explicit, context-specific field descriptions makes sense.