litestar-org/polyfactory

Bug: passing a dict of object to the factory is ignored

Closed this issue · 1 comments

Hello!

When setting a .build() override for a dict where the value is a Pydantic model, it seems to be ignored.
pydantic-factories version 1.6.2

Following code repoduces: note that i made a simple dict to show that it doesn't work with classes only

from pydantic import BaseModel
from pydantic_factories import ModelFactory, Use


class MyMappedClass(BaseModel):
    val: str


class MyClass(BaseModel):
    my_mapping_obj: dict[str, MyMappedClass]
    my_mapping_str: dict[str, str]


class MyClassFactory(ModelFactory[MyClass]):
    __model__ = MyClass


obj = MyClassFactory.build(
    my_mapping_obj={"foo": MyMappedClass(val="bar")},
    my_mapping_str={"foo": "bar"},
)

print(obj.json(indent=2))

Output is

{
  "my_mapping_obj": {
    "xNLsYhvhemQDptZfpDWz": {
      "val": "DzMmWPdDALDUROEsduqT"
    }
  },
  "my_mapping_str": {
    "foo": "bar"
  }
}

expected output is

{
  "my_mapping_obj": {
    "foo": {             <---
      "val": "bar"       <---
    }
  },
  "my_mapping_str": {
    "foo": "bar"
  }
}

Thank you!

thanks. A PR with a fix would be welcome.