| 47 | |
| 48 | |
| 49 | def test_custom_init_signature(): |
| 50 | class MyModel(BaseModel): |
| 51 | id: int |
| 52 | name: str = 'John Doe' |
| 53 | f__: str = Field(alias='foo') |
| 54 | |
| 55 | model_config = ConfigDict(extra='allow') |
| 56 | |
| 57 | def __init__(self, id: int = 1, bar=2, *, baz: Any, **data): |
| 58 | super().__init__(id=id, **data) |
| 59 | self.bar = bar |
| 60 | self.baz = baz |
| 61 | |
| 62 | sig = signature(MyModel) |
| 63 | assert _equals( |
| 64 | map(str, sig.parameters.values()), |
| 65 | ('id: int = 1', 'bar=2', 'baz: Any', "name: str = 'John Doe'", 'foo: str', '**data'), |
| 66 | ) |
| 67 | |
| 68 | assert _equals(str(sig), "(id: int = 1, bar=2, *, baz: Any, name: str = 'John Doe', foo: str, **data) -> None") |
| 69 | |
| 70 | |
| 71 | def test_custom_init_signature_with_no_var_kw(): |