Gowee / json2pyi

Generate Python type definitions from a JSON sample (both Pydantic BaseModel and TypedDict are supported)
https://json2pyi.pages.dev
42 stars 1 forks source link

keys with spaces not handled correctly #2

Open graingert opened 2 years ago

graingert commented 2 years ago

json with spaces in the keys

{
    "example with space": 1
}

becomes:

from __future__ import annotations
from dataclasses import dataclass

@dataclass
class UnnammedType53F4C8:
    example with space: int

however this works fine with a TypedDict:

from typing import TypedDict

UnnammedType160988 = TypedDict("UnnammedType160988", {"example with space": int})
Gowee commented 2 years ago

Thanks for reporting.

But what is the expected output here? I suppose it is impossible to support attribute names with spaces in Python like this anyway. (The Pydantic BaseMode may support renaming/alias of field names, but the built-in dataclass could not.)

s-rigaud commented 1 year ago

I think the most pythonic approach to this problem would be to rename the attribute with snake_case naming

from __future__ import annotations
from pydantic import BaseModel

class UnnammedType160398(BaseModel):
    example_with_space: int