Skip to content

Type annotation falls back to Any if property schema is partially overwridden #2087

@simontaurus

Description

@simontaurus

Describe the bug
Importing a schema and partial overwrite it (e.g., set a different default value) leads to lost type information

To Reproduce

schemaA

{
    "type": "object",
    "title": "SchemaA",
    "properties": {
        "test": {
            "title": "test",
            "type": "string",
            "default": "default_value1"
        }
    }
}

schemaB.json

{
    "allOf": [
        {
            "$ref": "SchemaA.json"
        }
    ],
    "type": "object",
    "title": "SchemaB",
    "properties": {
        "test": {
            "default": "default_value2"
        }
    }
}

Used commandline:

$ datamodel-codegen --input schemaB.json --output model.py

Result model.py: type of test in SchemaB is resetted to Any

class SchemaA(BaseModel):
    test: Optional[str] = Field('default_value1', title='test')

class SchemaB(SchemaA):
    test: Optional[Any] = 'default_value2'

Expected behavior
type of test in SchemaB is still str

class SchemaA(BaseModel):
    test: Optional[str] = Field('default_value1', title='test')

class SchemaB(SchemaA):
    test: Optional[str] = 'default_value2'

Version:

  • OS: Windows 10
  • Python version: 3.11 | 3.9
  • datamodel-code-generator version: 0.25.6 | 0.26.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions