Skip to content

fix: Add underscore suffix if property name is datetime #558

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jan 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from .model_with_additional_properties_refed import ModelWithAdditionalPropertiesRefed
from .model_with_any_json_properties import ModelWithAnyJsonProperties
from .model_with_any_json_properties_additional_property_type_0 import ModelWithAnyJsonPropertiesAdditionalPropertyType0
from .model_with_date_time_property import ModelWithDateTimeProperty
from .model_with_primitive_additional_properties import ModelWithPrimitiveAdditionalProperties
from .model_with_primitive_additional_properties_a_date_holder import ModelWithPrimitiveAdditionalPropertiesADateHolder
from .model_with_property_ref import ModelWithPropertyRef
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import datetime
from typing import Any, Dict, List, Type, TypeVar, Union

import attr
from dateutil.parser import isoparse

from ..types import UNSET, Unset

T = TypeVar("T", bound="ModelWithDateTimeProperty")


@attr.s(auto_attribs=True)
class ModelWithDateTimeProperty:
"""
Attributes:
datetime_ (Union[Unset, datetime.datetime]):
"""

datetime_: Union[Unset, datetime.datetime] = UNSET
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)

def to_dict(self) -> Dict[str, Any]:
datetime_: Union[Unset, str] = UNSET
if not isinstance(self.datetime_, Unset):
datetime_ = self.datetime_.isoformat()

field_dict: Dict[str, Any] = {}
field_dict.update(self.additional_properties)
field_dict.update({})
if datetime_ is not UNSET:
field_dict["datetime"] = datetime_

return field_dict

@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
d = src_dict.copy()
_datetime_ = d.pop("datetime", UNSET)
datetime_: Union[Unset, datetime.datetime]
if isinstance(_datetime_, Unset):
datetime_ = UNSET
else:
datetime_ = isoparse(_datetime_)

model_with_date_time_property = cls(
datetime_=datetime_,
)

model_with_date_time_property.additional_properties = d
return model_with_date_time_property

@property
def additional_keys(self) -> List[str]:
return list(self.additional_properties.keys())

def __getitem__(self, key: str) -> Any:
return self.additional_properties[key]

def __setitem__(self, key: str, value: Any) -> None:
self.additional_properties[key] = value

def __delitem__(self, key: str) -> None:
del self.additional_properties[key]

def __contains__(self, key: str) -> bool:
return key in self.additional_properties
9 changes: 9 additions & 0 deletions end_to_end_tests/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -1696,6 +1696,15 @@
}
}
},
"ModelWithDateTimeProperty" : {
"type": "object",
"properties": {
"datetime": {
"type": "string",
"format": "date-time"
}
}
},
"AnArrayOfEnum": {
"type": "array",
"items": {
Expand Down
2 changes: 1 addition & 1 deletion openapi_python_client/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def split_words(value: str) -> List[str]:
return re.findall(rf"[^{DELIMITERS}]+", value)


RESERVED_WORDS = (set(dir(builtins)) | {"self", "true", "false"}) - {"type", "id"}
RESERVED_WORDS = (set(dir(builtins)) | {"self", "true", "false", "datetime"}) - {"type", "id"}


def fix_reserved_words(value: str) -> str:
Expand Down