Skip to content

Optional[Dict[str, Any]] broken when trying to get the schema #361

@dbarrosop

Description

@dbarrosop

This broke since 0.17:

import json
from typing import Any, Dict, Optional

from pydantic import BaseModel


class Test(BaseModel):
    something: Optional[Dict[str, Any]]


print(json.dumps(Test.schema(), indent=4))

Traceback:

$ python test.py
Traceback (most recent call last):
  File "test.py", line 11, in <module>
    print(json.dumps(Test.schema(), indent=4))
  File "/home/dbarroso/.virtualenvs/nornir/lib/python3.6/site-packages/pydantic/main.py", line 292, in schema
    s = model_schema(cls, by_alias=by_alias)
  File "/home/dbarroso/.virtualenvs/nornir/lib/python3.6/site-packages/pydantic/schema.py", line 191, in model_schema
    model, by_alias=by_alias, model_name_map=model_name_map, ref_prefix=ref_prefix
  File "/home/dbarroso/.virtualenvs/nornir/lib/python3.6/site-packages/pydantic/schema.py", line 461, in model_process_schema
    model, by_alias=by_alias, model_name_map=model_name_map, ref_prefix=ref_prefix
  File "/home/dbarroso/.virtualenvs/nornir/lib/python3.6/site-packages/pydantic/schema.py", line 482, in model_type_schema
    f, by_alias=by_alias, model_name_map=model_name_map, ref_prefix=ref_prefix
  File "/home/dbarroso/.virtualenvs/nornir/lib/python3.6/site-packages/pydantic/schema.py", line 238, in field_schema
    ref_prefix=ref_prefix,
  File "/home/dbarroso/.virtualenvs/nornir/lib/python3.6/site-packages/pydantic/schema.py", line 440, in field_type_schema
    ref_prefix=ref_prefix,
  File "/home/dbarroso/.virtualenvs/nornir/lib/python3.6/site-packages/pydantic/schema.py", line 608, in field_singleton_schema
    ref_prefix=ref_prefix,
  File "/home/dbarroso/.virtualenvs/nornir/lib/python3.6/site-packages/pydantic/schema.py", line 515, in field_singleton_sub_fields_schema
    sub_fields = [sf for sf in sub_fields if sf.include_in_schema()]
  File "/home/dbarroso/.virtualenvs/nornir/lib/python3.6/site-packages/pydantic/schema.py", line 515, in <listcomp>
    sub_fields = [sf for sf in sub_fields if sf.include_in_schema()]
  File "/home/dbarroso/.virtualenvs/nornir/lib/python3.6/site-packages/pydantic/fields.py", line 359, in include_in_schema
    return len(self.validators) > 1 or self.validators[0][1] != is_none_validator

Is this a regression or has something changed that I need to address?

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug V1Bug related to Pydantic V1.X

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions