Comments (3)
I guess the problem is in this line
The outer Type (which implements the interface) is checked but not the nested values in items
But the outer loop here is still on the inner type
from strawberry.
I've done some digging in this, and we have the same issue with unions:
def test_using_generics_with_union():
@strawberry.type
class JsonBlock:
data: JSON
@strawberry.type
class BlockRowType(Generic[GenericType]):
total: int
items: List[GenericType]
@strawberry.type
class Query:
@strawberry.field
def blocks(
self,
) -> List[Union[BlockRowType[int], BlockRowType[str], JsonBlock]]:
return [
BlockRowType(total=3, items=["a", "b", "c"]),
BlockRowType(total=1, items=[1, 2, 3, 4]),
JsonBlock(data=JSON({"a": 1})),
]
schema = strawberry.Schema(query=Query)
result = schema.execute_sync("""query {
blocks {
__typename
... on IntBlockRowType {
a: items
}
... on StrBlockRowType {
b: items
}
... on JsonBlock {
data
}
}
}""")
assert not result.errors
assert result.data == {
"blocks": [
{"id": "3", "__typename": "StrBlockRowType", "items": ["a", "b", "c"]},
{"id": "1", "__typename": "IntBlockRowType", "items": [1, 2, 3, 4]},
{"id": "2", "__typename": "JsonBlock", "data": {"a": 1}},
]
}
fix this in unions, means touching this codebase:
strawberry/strawberry/union.py
Lines 170 to 224 in 29b7dd8
which is separated from the interface part, so I need to think how we could combine both
from strawberry.
Could I assist in making progress on this issue? :)
from strawberry.
Related Issues (20)
- Support both Pydantic 1 and 2 HOT 1
- Add support for framework's specific upload type
- Schema basics docs HOT 2
- Should we hide fields that starts with `_` by default?
- Add support of permission_classes for type decorator
- Visual bug in documentation HOT 2
- Allow `strawberry.auto | None` in Pydantic
- strawberry.ext.mypy_plugin PydanticModelField.to_argument error HOT 2
- make to_pydantic function recursive
- Unable to hide field in derived type HOT 1
- Execution Context errors
- Expose common request on extensions' context
- Add support for using FastAPI APIRouter arguments in GraphQLRouter HOT 1
- Feature Request: Info context in scalar serialization HOT 2
- Broken documentation examples in page https://strawberry.rocks/docs/guides/dataloaders HOT 6
- `print_schema` does not prefix the `extend` keyword when Schema uses apollo federation HOT 3
- Property variable_values from class Info returning wrong information HOT 12
- Improve how we find concrete type for generic in interfaces (and potentially unions)
- Add better support for nested generics
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from strawberry.