Skip to content

Commit 20d6a88

Browse files
denisartKludex
authored andcommitted
Fix for field
1 parent 48c1eac commit 20d6a88

File tree

2 files changed

+18
-17
lines changed

2 files changed

+18
-17
lines changed

bump_pydantic/codemods/field.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -116,21 +116,22 @@ def leave_field_call(self, original_node: cst.Call, updated_node: cst.Call) -> c
116116
new_args: List[cst.Arg] = []
117117
for arg in updated_node.args:
118118
if m.matches(arg, m.Arg(keyword=m.Name())):
119-
if arg.keyword.value == "json_schema_extra":
120-
json_schema_extra_elements.extend(arg.value.elements) # type: ignore
121-
continue
122-
123-
if (
124-
(arg.keyword.value not in RENAMED_KEYWORDS)
125-
and (arg.keyword.value not in Field.__annotations__)
126-
and (arg.keyword != "extra")
127-
):
128-
new_dict_element = cst.DictElement(
129-
key=cst.SimpleString(value=f'"{arg.keyword.value}"'), value=arg.value,
130-
131-
)
132-
json_schema_extra_elements.append(new_dict_element)
133-
continue
119+
if arg.keyword is not None:
120+
if arg.keyword.value == "json_schema_extra":
121+
json_schema_extra_elements.extend(arg.value.elements) # type: ignore
122+
continue
123+
124+
if (
125+
(arg.keyword.value not in RENAMED_KEYWORDS)
126+
and (arg.keyword.value not in Field.__annotations__)
127+
and (arg.keyword != "extra")
128+
):
129+
new_dict_element = cst.DictElement(
130+
key=cst.SimpleString(value=f'"{arg.keyword.value}"'),
131+
value=arg.value,
132+
)
133+
json_schema_extra_elements.append(new_dict_element)
134+
continue
134135

135136
keyword = RENAMED_KEYWORDS.get(arg.keyword.value, arg.keyword.value) # type: ignore
136137
value = arg.value

tests/unit/test_field.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,13 @@ class Settings(BaseSettings):
155155
def test_json_schema_extra_exist(self) -> None:
156156
before = """
157157
from pydantic import BaseModel, Field
158-
158+
159159
class Human(BaseModel):
160160
name: str = Field(..., some_extra_field="some_extra_field_value", json_schema_extra={"a": "b"})
161161
"""
162162
after = """
163163
from pydantic import BaseModel, Field
164-
164+
165165
class Human(BaseModel):
166166
name: str = Field(..., json_schema_extra={"some_extra_field": "some_extra_field_value", "a": "b"})
167167
"""

0 commit comments

Comments
 (0)