Comments (1)
Would be great to have a fix for this - a simple fix might be if there's a forward reference (https://peps.python.org/pep-0484/#forward-references) just wrap it in quotes.
{
"$id": "schema",
"definitions": {
"Foo": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/Foo"
}
}
]
}
},
"title": "State",
"oneOf": [
{ "$ref": "#/definitions/Foo" }
]
}
Currently generates:
# generated by datamodel-codegen:
# filename: schema.json
# timestamp: 2024-02-23T17:00:22+00:00
from __future__ import annotations
from typing import List, Union
from pydantic import Field, RootModel
class Foo(RootModel[Union[str, List[Foo]]]):
root: Union[str, List[Foo]]
class State(RootModel[Foo]):
root: Foo = Field(..., title='State')
Foo.model_rebuild()
But simply adding quotes around the Foo
in the discriminated union would fix the issue:
# generated by datamodel-codegen:
# filename: schema.json
# timestamp: 2024-02-23T17:00:22+00:00
from __future__ import annotations
from typing import List, Union
from pydantic import Field, RootModel
class Foo(RootModel[Union[str, List["Foo"]]]):
root: Union[str, List[Foo]]
class State(RootModel[Foo]):
root: Foo = Field(..., title='State')
Foo.model_rebuild()
from datamodel-code-generator.
Related Issues (20)
- Clean up Pydantic v2 Migration warnings HOT 1
- Importing code generator changes behavior of pyyaml
- Use default keyword argument in generated optional fields HOT 1
- Request: Include default or HTTP status code in class name for Response models HOT 1
- Generating collection methods to RootModel HOT 4
- RuntimeError: Discriminator type is not found
- Superfluous underscore suffixes 'schema' field name
- static code to generated models
- Imported annotations break python type inspections HOT 3
- linkml export support?
- Example field should be turned into examples (plural), as a list HOT 1
- JSON schema readOnly support
- TypeAlias does not work for python versions <3.10 HOT 2
- null bytes (`\u0000`) not correctly escaped in generated code
- Code not generated for patternProperties in JSON Schemas HOT 9
- Broken backwards compatibility with black
- Generate single class for common types and shorten class name
- Is it possible to generate one file per generated model?
- "Error: No module named" when using generated Pydantic type
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 datamodel-code-generator.