8000 Fix argument name collision (#1367) · ag-python/pydantic@c5af109 · GitHub
[go: up one dir, main page]

Skip to content

Commit c5af109

Browse files
authored
Fix argument name collision (pydantic#1367)
fix pydantic#1366 * Fix argument name collision * change qoutes * make mypy happy? * Adding change file
1 parent ccd5f7b commit c5af109

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

changes/1367-kittipatv.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Renaming `model_name` argument of `main.create_model()` to `__model_name` to allow using `model_name` as a field name.

pydantic/generics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def __class_getitem__(cls: Type[GenericModelT], params: Union[Type[Any], Tuple[T
4848
created_model = cast(
4949
Type[GenericModel], # casting ensures mypy is aware of the __concrete__ and __parameters__ attributes
5050
create_model(
51-
model_name=model_name,
51+
model_name,
5252
__module__=cls.__module__,
5353
__base__=cls,
5454
__config__=None,

pydantic/main.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -773,7 +773,7 @@ def __values__(self) -> 'DictStrAny':
773773

774774

775775
def create_model(
776-
model_name: str,
776+
__model_name: str,
777777
*,
778778
__config__: Type[BaseConfig] = None,
779779
__base__: Type[BaseModel] = None,
@@ -783,7 +783,7 @@ def create_model(
783783
) -> Type[BaseModel]:
784784
"""
785785
Dynamically create a model.
786-
:param model_name: name of the created model
786+
:param __model_name: name of the created model
787787
:param __config__: config class to use for the new model
788788
:param __base__: base class for the new model to inherit from
789789
:param __validators__: a dict of method names and @validator class methods
@@ -825,7 +825,7 @@ def create_model(
825825
if __config__:
826826
namespace['Config'] = inherit_config(__config__, BaseConfig)
827827

828-
return type(model_name, (__base__,), namespace)
828+
return type(__model_name, (__base__,), namespace)
829829

830830

831831
_missing = object()

tests/test_dataclasses.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,17 @@ class MyDataclass:
2424
assert d.b == 10
2525

2626

27+
def test_model_name():
28+
@pydantic.dataclasses.dataclass
29+
class MyDataClass:
30+
model_name: str
31+
32+
d = MyDataClass('foo')
33+
assert d.model_name == 'foo'
34+
d = MyDataClass(model_name='foo')
35+
assert d.model_name == 'foo'
36+
37+
2738
def test_value_error():
2839
@pydantic.dataclasses.dataclass
2940
class MyDataclass:

0 commit comments

Comments
 (0)
0