Skip to content

Commit

Permalink
set default value to none
Browse files Browse the repository at this point in the history
  • Loading branch information
chriskapp committed Apr 1, 2024
1 parent a16b24d commit c567daa
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 98 deletions.
2 changes: 1 addition & 1 deletion src/Generator/Python.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ protected function writeStruct(Code\Name $name, array $properties, ?string $exte

foreach ($properties as $property) {
/** @var Code\Property $property */
$code.= $this->indent . $property->getName()->getProperty() . ': ' . $property->getType() . ' = field(metadata=config(field_name="' . $property->getName()->getRaw() . '"))' . "\n";
$code.= $this->indent . $property->getName()->getProperty() . ': ' . $property->getType() . ' = field(default=None, metadata=config(field_name="' . $property->getName()->getRaw() . '"))' . "\n";
}

$code.= "\n";
Expand Down
70 changes: 35 additions & 35 deletions tests/Generator/resource/python/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
@dataclass_json
@dataclass
class Location:
lat: float = field(metadata=config(field_name="lat"))
long: float = field(metadata=config(field_name="long"))
lat: float = field(default=None, metadata=config(field_name="lat"))
long: float = field(default=None, metadata=config(field_name="long"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -17,8 +17,8 @@ class Location:
@dataclass_json
@dataclass
class Web:
name: str = field(metadata=config(field_name="name"))
url: str = field(metadata=config(field_name="url"))
name: str = field(default=None, metadata=config(field_name="name"))
url: str = field(default=None, metadata=config(field_name="url"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -30,11 +30,11 @@ class Web:
@dataclass_json
@dataclass
class Author:
title: str = field(metadata=config(field_name="title"))
email: str = field(metadata=config(field_name="email"))
categories: List[str] = field(metadata=config(field_name="categories"))
locations: List[Location] = field(metadata=config(field_name="locations"))
origin: Location = field(metadata=config(field_name="origin"))
title: str = field(default=None, metadata=config(field_name="title"))
email: str = field(default=None, metadata=config(field_name="email"))
categories: List[str] = field(default=None, metadata=config(field_name="categories"))
locations: List[Location] = field(default=None, metadata=config(field_name="locations"))
origin: Location = field(default=None, metadata=config(field_name="origin"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -58,29 +58,29 @@ class Meta(Dict[str, str]):
@dataclass_json
@dataclass
class News:
config: Meta = field(metadata=config(field_name="config"))
inline_config: Dict[str, str] = field(metadata=config(field_name="inlineConfig"))
map_tags: Dict[str, str] = field(metadata=config(field_name="mapTags"))
map_receiver: Dict[str, Author] = field(metadata=config(field_name="mapReceiver"))
map_resources: Dict[str, Union[Location, Web]] = field(metadata=config(field_name="mapResources"))
tags: List[str] = field(metadata=config(field_name="tags"))
receiver: List[Author] = field(metadata=config(field_name="receiver"))
resources: List[Union[Location, Web]] = field(metadata=config(field_name="resources"))
profile_image: bytearray = field(metadata=config(field_name="profileImage"))
read: bool = field(metadata=config(field_name="read"))
source: Union[Author, Web] = field(metadata=config(field_name="source"))
author: Author = field(metadata=config(field_name="author"))
meta: Meta = field(metadata=config(field_name="meta"))
send_date: datetime.date = field(metadata=config(field_name="sendDate"))
read_date: datetime.datetime = field(metadata=config(field_name="readDate"))
expires: datetime.timedelta = field(metadata=config(field_name="expires"))
range: datetime.timedelta = field(metadata=config(field_name="range"))
price: float = field(metadata=config(field_name="price"))
rating: int = field(metadata=config(field_name="rating"))
content: str = field(metadata=config(field_name="content"))
question: str = field(metadata=config(field_name="question"))
version: str = field(metadata=config(field_name="version"))
coffee_time: datetime.time = field(metadata=config(field_name="coffeeTime"))
profile_uri: str = field(metadata=config(field_name="profileUri"))
captcha: str = field(metadata=config(field_name="g-recaptcha-response"))
payload: Any = field(metadata=config(field_name="payload"))
config: Meta = field(default=None, metadata=config(field_name="config"))
inline_config: Dict[str, str] = field(default=None, metadata=config(field_name="inlineConfig"))
map_tags: Dict[str, str] = field(default=None, metadata=config(field_name="mapTags"))
map_receiver: Dict[str, Author] = field(default=None, metadata=config(field_name="mapReceiver"))
map_resources: Dict[str, Union[Location, Web]] = field(default=None, metadata=config(field_name="mapResources"))
tags: List[str] = field(default=None, metadata=config(field_name="tags"))
receiver: List[Author] = field(default=None, metadata=config(field_name="receiver"))
resources: List[Union[Location, Web]] = field(default=None, metadata=config(field_name="resources"))
profile_image: bytearray = field(default=None, metadata=config(field_name="profileImage"))
read: bool = field(default=None, metadata=config(field_name="read"))
source: Union[Author, Web] = field(default=None, metadata=config(field_name="source"))
author: Author = field(default=None, metadata=config(field_name="author"))
meta: Meta = field(default=None, metadata=config(field_name="meta"))
send_date: datetime.date = field(default=None, metadata=config(field_name="sendDate"))
read_date: datetime.datetime = field(default=None, metadata=config(field_name="readDate"))
expires: datetime.timedelta = field(default=None, metadata=config(field_name="expires"))
range: datetime.timedelta = field(default=None, metadata=config(field_name="range"))
price: float = field(default=None, metadata=config(field_name="price"))
rating: int = field(default=None, metadata=config(field_name="rating"))
content: str = field(default=None, metadata=config(field_name="content"))
question: str = field(default=None, metadata=config(field_name="question"))
version: str = field(default=None, metadata=config(field_name="version"))
coffee_time: datetime.time = field(default=None, metadata=config(field_name="coffeeTime"))
profile_uri: str = field(default=None, metadata=config(field_name="profileUri"))
captcha: str = field(default=None, metadata=config(field_name="g-recaptcha-response"))
payload: Any = field(default=None, metadata=config(field_name="payload"))
92 changes: 46 additions & 46 deletions tests/Generator/resource/python/python_complex.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
@dataclass_json
@dataclass
class CommonType:
description: str = field(metadata=config(field_name="description"))
type: str = field(metadata=config(field_name="type"))
nullable: bool = field(metadata=config(field_name="nullable"))
deprecated: bool = field(metadata=config(field_name="deprecated"))
readonly: bool = field(metadata=config(field_name="readonly"))
description: str = field(default=None, metadata=config(field_name="description"))
type: str = field(default=None, metadata=config(field_name="type"))
nullable: bool = field(default=None, metadata=config(field_name="nullable"))
deprecated: bool = field(default=None, metadata=config(field_name="deprecated"))
readonly: bool = field(default=None, metadata=config(field_name="readonly"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -21,7 +21,7 @@ class CommonType:
@dataclass_json
@dataclass
class AnyType(CommonType):
type: str = field(metadata=config(field_name="type"))
type: str = field(default=None, metadata=config(field_name="type"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -39,10 +39,10 @@ class AnyType(CommonType):
@dataclass_json
@dataclass
class ArrayType(CommonType):
type: str = field(metadata=config(field_name="type"))
items: Union[BooleanType, NumberType, StringType, ReferenceType, GenericType, AnyType] = field(metadata=config(field_name="items"))
max_items: int = field(metadata=config(field_name="maxItems"))
min_items: int = field(metadata=config(field_name="minItems"))
type: str = field(default=None, metadata=config(field_name="type"))
items: Union[BooleanType, NumberType, StringType, ReferenceType, GenericType, AnyType] = field(default=None, metadata=config(field_name="items"))
max_items: int = field(default=None, metadata=config(field_name="maxItems"))
min_items: int = field(default=None, metadata=config(field_name="minItems"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -55,9 +55,9 @@ class ArrayType(CommonType):
@dataclass_json
@dataclass
class ScalarType(CommonType):
format: str = field(metadata=config(field_name="format"))
enum: List[Union[str, float]] = field(metadata=config(field_name="enum"))
default: Union[str, float, bool] = field(metadata=config(field_name="default"))
format: str = field(default=None, metadata=config(field_name="format"))
enum: List[Union[str, float]] = field(default=None, metadata=config(field_name="enum"))
default: Union[str, float, bool] = field(default=None, metadata=config(field_name="default"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -68,7 +68,7 @@ class ScalarType(CommonType):
@dataclass_json
@dataclass
class BooleanType(ScalarType):
type: str = field(metadata=config(field_name="type"))
type: str = field(default=None, metadata=config(field_name="type"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -79,8 +79,8 @@ class BooleanType(ScalarType):
@dataclass_json
@dataclass
class Discriminator:
property_name: str = field(metadata=config(field_name="propertyName"))
mapping: Dict[str, str] = field(metadata=config(field_name="mapping"))
property_name: str = field(default=None, metadata=config(field_name="propertyName"))
mapping: Dict[str, str] = field(default=None, metadata=config(field_name="mapping"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -90,7 +90,7 @@ class Discriminator:
@dataclass_json
@dataclass
class GenericType:
_generic: str = field(metadata=config(field_name="$generic"))
_generic: str = field(default=None, metadata=config(field_name="$generic"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -102,8 +102,8 @@ class GenericType:
@dataclass_json
@dataclass
class IntersectionType:
description: str = field(metadata=config(field_name="description"))
all_of: List[ReferenceType] = field(metadata=config(field_name="allOf"))
description: str = field(default=None, metadata=config(field_name="description"))
all_of: List[ReferenceType] = field(default=None, metadata=config(field_name="allOf"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -124,10 +124,10 @@ class IntersectionType:
@dataclass_json
@dataclass
class MapType(CommonType):
type: str = field(metadata=config(field_name="type"))
additional_properties: Union[BooleanType, NumberType, StringType, ArrayType, UnionType, IntersectionType, ReferenceType, GenericType, AnyType] = field(metadata=config(field_name="additionalProperties"))
max_properties: int = field(metadata=config(field_name="maxProperties"))
min_properties: int = field(metadata=config(field_name="minProperties"))
type: str = field(default=None, metadata=config(field_name="type"))
additional_properties: Union[BooleanType, NumberType, StringType, ArrayType, UnionType, IntersectionType, ReferenceType, GenericType, AnyType] = field(default=None, metadata=config(field_name="additionalProperties"))
max_properties: int = field(default=None, metadata=config(field_name="maxProperties"))
min_properties: int = field(default=None, metadata=config(field_name="minProperties"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -138,12 +138,12 @@ class MapType(CommonType):
@dataclass_json
@dataclass
class NumberType(ScalarType):
type: str = field(metadata=config(field_name="type"))
multiple_of: float = field(metadata=config(field_name="multipleOf"))
maximum: float = field(metadata=config(field_name="maximum"))
exclusive_maximum: bool = field(metadata=config(field_name="exclusiveMaximum"))
minimum: float = field(metadata=config(field_name="minimum"))
exclusive_minimum: bool = field(metadata=config(field_name="exclusiveMinimum"))
type: str = field(default=None, metadata=config(field_name="type"))
multiple_of: float = field(default=None, metadata=config(field_name="multipleOf"))
maximum: float = field(default=None, metadata=config(field_name="maximum"))
exclusive_maximum: bool = field(default=None, metadata=config(field_name="exclusiveMaximum"))
minimum: float = field(default=None, metadata=config(field_name="minimum"))
exclusive_minimum: bool = field(default=None, metadata=config(field_name="exclusiveMinimum"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -154,8 +154,8 @@ class NumberType(ScalarType):
@dataclass_json
@dataclass
class ReferenceType:
_ref: str = field(metadata=config(field_name="$ref"))
_template: Dict[str, str] = field(metadata=config(field_name="$template"))
_ref: str = field(default=None, metadata=config(field_name="$ref"))
_template: Dict[str, str] = field(default=None, metadata=config(field_name="$template"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -166,10 +166,10 @@ class ReferenceType:
@dataclass_json
@dataclass
class StringType(ScalarType):
type: str = field(metadata=config(field_name="type"))
max_length: int = field(metadata=config(field_name="maxLength"))
min_length: int = field(metadata=config(field_name="minLength"))
pattern: str = field(metadata=config(field_name="pattern"))
type: str = field(default=None, metadata=config(field_name="type"))
max_length: int = field(default=None, metadata=config(field_name="maxLength"))
min_length: int = field(default=None, metadata=config(field_name="minLength"))
pattern: str = field(default=None, metadata=config(field_name="pattern"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -193,11 +193,11 @@ class StringType(ScalarType):
@dataclass_json
@dataclass
class StructType(CommonType):
_final: bool = field(metadata=config(field_name="$final"))
_extends: str = field(metadata=config(field_name="$extends"))
type: str = field(metadata=config(field_name="type"))
properties: Dict[str, Union[MapType, ArrayType, BooleanType, NumberType, StringType, AnyType, IntersectionType, UnionType, ReferenceType, GenericType]] = field(metadata=config(field_name="properties"))
required: List[str] = field(metadata=config(field_name="required"))
_final: bool = field(default=None, metadata=config(field_name="$final"))
_extends: str = field(default=None, metadata=config(field_name="$extends"))
type: str = field(default=None, metadata=config(field_name="type"))
properties: Dict[str, Union[MapType, ArrayType, BooleanType, NumberType, StringType, AnyType, IntersectionType, UnionType, ReferenceType, GenericType]] = field(default=None, metadata=config(field_name="properties"))
required: List[str] = field(default=None, metadata=config(field_name="required"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -212,9 +212,9 @@ class StructType(CommonType):
@dataclass_json
@dataclass
class TypeSchema:
_import: Dict[str, str] = field(metadata=config(field_name="$import"))
definitions: Dict[str, Union[StructType, MapType, ReferenceType]] = field(metadata=config(field_name="definitions"))
_ref: str = field(metadata=config(field_name="$ref"))
_import: Dict[str, str] = field(default=None, metadata=config(field_name="$import"))
definitions: Dict[str, Union[StructType, MapType, ReferenceType]] = field(default=None, metadata=config(field_name="definitions"))
_ref: str = field(default=None, metadata=config(field_name="$ref"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -231,6 +231,6 @@ class TypeSchema:
@dataclass_json
@dataclass
class UnionType:
description: str = field(metadata=config(field_name="description"))
discriminator: Discriminator = field(metadata=config(field_name="discriminator"))
one_of: List[Union[NumberType, StringType, BooleanType, ReferenceType]] = field(metadata=config(field_name="oneOf"))
description: str = field(default=None, metadata=config(field_name="description"))
discriminator: Discriminator = field(default=None, metadata=config(field_name="discriminator"))
one_of: List[Union[NumberType, StringType, BooleanType, ReferenceType]] = field(default=None, metadata=config(field_name="oneOf"))
4 changes: 2 additions & 2 deletions tests/Generator/resource/python/python_import.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
@dataclass_json
@dataclass
class Import:
students: StudentMap = field(metadata=config(field_name="students"))
student: Student = field(metadata=config(field_name="student"))
students: StudentMap = field(default=None, metadata=config(field_name="students"))
student: Student = field(default=None, metadata=config(field_name="student"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand Down
4 changes: 2 additions & 2 deletions tests/Generator/resource/python/python_import_ns.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
@dataclass_json
@dataclass
class Import:
students: My.Import.StudentMap = field(metadata=config(field_name="students"))
student: My.Import.Student = field(metadata=config(field_name="student"))
students: My.Import.StudentMap = field(default=None, metadata=config(field_name="students"))
student: My.Import.Student = field(default=None, metadata=config(field_name="student"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand Down
12 changes: 6 additions & 6 deletions tests/Generator/resource/python/python_oop.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@
@dataclass_json
@dataclass
class Human:
first_name: str = field(metadata=config(field_name="firstName"))
parent: Human = field(metadata=config(field_name="parent"))
first_name: str = field(default=None, metadata=config(field_name="firstName"))
parent: Human = field(default=None, metadata=config(field_name="parent"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
from human import Human
@dataclass_json
@dataclass
class Student(Human):
matricle_number: str = field(metadata=config(field_name="matricleNumber"))
matricle_number: str = field(default=None, metadata=config(field_name="matricleNumber"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
Expand All @@ -30,13 +30,13 @@ class StudentMap(Map[Student]):
@dataclass_json
@dataclass
class Map:
total_results: int = field(metadata=config(field_name="totalResults"))
entries: List[T] = field(metadata=config(field_name="entries"))
total_results: int = field(default=None, metadata=config(field_name="totalResults"))
entries: List[T] = field(default=None, metadata=config(field_name="entries"))

from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, config
from student_map import StudentMap
@dataclass_json
@dataclass
class RootSchema:
students: StudentMap = field(metadata=config(field_name="students"))
students: StudentMap = field(default=None, metadata=config(field_name="students"))
Loading

0 comments on commit c567daa

Please sign in to comment.