Use default values for non-required properties if a default is specified (#254)

* use default values for non-required properties if a default is specified

* generate client

* I have generated the latest API!

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
Greg Sweeney
2024-08-20 13:10:56 -04:00
committed by GitHub
parent 70037b7459
commit 556ec31ca2
53 changed files with 1018 additions and 982 deletions

View File

@ -1669,6 +1669,14 @@ def generateObjectTypeCode(
else:
field_type = getTypeName(property_schema)
if property_name not in required:
if "default" in property_schema:
field_type += (
' = "' + property_schema["default"] + '"'
if field_type == "str"
or isinstance(property_schema["default"], str)
else " = " + str(property_schema["default"])
)
else:
field_type = "Optional[" + field_type + "] = None"
field2: FieldType = {
"name": property_name,

File diff suppressed because it is too large Load Diff

View File

@ -24,7 +24,7 @@ class ApiCallWithPrice(BaseModel):
id: Uuid
ip_address: Optional[str] = None
ip_address: str = ""
litterbox: Optional[bool] = None

View File

@ -98,7 +98,7 @@ class file_mass(BaseModel):
mass: Optional[float] = None
material_density: Optional[float] = None
material_density: float = 0.0
material_density_unit: UnitDensity
@ -162,7 +162,7 @@ class file_density(BaseModel):
id: Uuid
material_mass: Optional[float] = None
material_mass: float = 0.0
material_mass_unit: UnitMass

View File

@ -12,6 +12,6 @@ class BillingInfo(BaseModel):
name: Optional[str] = None
phone: Optional[str] = None
phone: str = ""
model_config = ConfigDict(protected_namespaces=())

View File

@ -10,13 +10,13 @@ class CardDetails(BaseModel):
brand: Optional[str] = None
checks: Optional[PaymentMethodCardChecks] = None
checks: PaymentMethodCardChecks = {}
country: Optional[str] = None
exp_month: Optional[int] = None
exp_month: int = 0
exp_year: Optional[int] = None
exp_year: int = 0
fingerprint: Optional[str] = None

View File

@ -9,14 +9,14 @@ class Cluster(BaseModel):
addr: Optional[str] = None
auth_timeout: Optional[int] = None
auth_timeout: int = 0
cluster_port: Optional[int] = None
cluster_port: int = 0
name: Optional[str] = None
name: str = ""
tls_timeout: Optional[int] = None
tls_timeout: int = 0
urls: Optional[List[str]] = None
urls: List[str] = []
model_config = ConfigDict(protected_namespaces=())

View File

@ -15,8 +15,8 @@ class CodeOutput(BaseModel):
output_files: Optional[List[OutputFile]] = None
stderr: Optional[str] = None
stderr: str = ""
stdout: Optional[str] = None
stdout: str = ""
model_config = ConfigDict(protected_namespaces=())

View File

@ -1,5 +1,5 @@
import datetime
from typing import Dict, Optional
from typing import Dict
from pydantic import BaseModel, ConfigDict
@ -14,96 +14,121 @@ class Connection(BaseModel):
This is mostly used for internal purposes and debugging."""
auth_timeout: Optional[int] = None
auth_timeout: int = 0
cluster: Optional[Cluster] = None
cluster: Cluster = {
"addr": None,
"auth_timeout": 0,
"cluster_port": 0,
"name": "",
"tls_timeout": 0,
"urls": [],
}
config_load_time: datetime.datetime
connections: Optional[int] = None
connections: int = 0
cores: Optional[int] = None
cores: int = 0
cpu: Optional[float] = None
cpu: float = 0.0
gateway: Optional[Gateway] = None
gateway: Gateway = {
"auth_timeout": 0,
"host": "",
"name": "",
"port": 0,
"tls_timeout": 0,
}
git_commit: Optional[str] = None
git_commit: str = ""
go: Optional[str] = None
go: str = ""
gomaxprocs: Optional[int] = None
gomaxprocs: int = 0
host: str
http_base_path: Optional[str] = None
http_base_path: str = ""
http_host: Optional[str] = None
http_host: str = ""
http_port: Optional[int] = None
http_port: int = 0
http_req_stats: Dict[str, int]
https_port: Optional[int] = None
https_port: int = 0
in_bytes: Optional[int] = None
in_bytes: int = 0
in_msgs: Optional[int] = None
in_msgs: int = 0
jetstream: Optional[Jetstream] = None
jetstream: Jetstream = {
"config": {"domain": "", "max_memory": 0, "max_storage": 0, "store_dir": ""},
"meta": {"cluster_size": 0, "leader": "", "name": ""},
"stats": {
"accounts": 0,
"api": {"errors": 0, "inflight": 0, "total": 0},
"ha_assets": 0,
"memory": 0,
"reserved_memory": 0,
"reserved_store": 0,
"store": 0,
},
}
leaf: Optional[LeafNode] = None
leaf: LeafNode = {"auth_timeout": 0, "host": "", "port": 0, "tls_timeout": 0}
leafnodes: Optional[int] = None
leafnodes: int = 0
max_connections: Optional[int] = None
max_connections: int = 0
max_control_line: Optional[int] = None
max_control_line: int = 0
max_payload: Optional[int] = None
max_payload: int = 0
max_pending: Optional[int] = None
max_pending: int = 0
mem: Optional[int] = None
mem: int = 0
now: datetime.datetime
out_bytes: Optional[int] = None
out_bytes: int = 0
out_msgs: Optional[int] = None
out_msgs: int = 0
ping_interval: Optional[int] = None
ping_interval: int = 0
ping_max: Optional[int] = None
ping_max: int = 0
port: Optional[int] = None
port: int = 0
proto: Optional[int] = None
proto: int = 0
remotes: Optional[int] = None
remotes: int = 0
routes: Optional[int] = None
routes: int = 0
server_id: Optional[str] = None
server_id: str = ""
server_name: Optional[str] = None
server_name: str = ""
slow_consumers: Optional[int] = None
slow_consumers: int = 0
start: datetime.datetime
subscriptions: Optional[int] = None
subscriptions: int = 0
system_account: Optional[str] = None
system_account: str = ""
tls_timeout: Optional[int] = None
tls_timeout: int = 0
total_connections: Optional[int] = None
total_connections: int = 0
uptime: Optional[str] = None
uptime: str = ""
version: Optional[str] = None
version: str = ""
write_deadline: Optional[int] = None
write_deadline: int = 0
model_config = ConfigDict(protected_namespaces=())

View File

@ -9,11 +9,11 @@ class Coupon(BaseModel):
amount_off: Optional[float] = None
deleted: Optional[bool] = None
deleted: bool = False
id: Optional[str] = None
metadata: Optional[Dict[str, str]] = None
metadata: Dict[str, str] = {}
name: Optional[str] = None

View File

@ -12,22 +12,22 @@ class Customer(BaseModel):
address: Optional[AddressDetails] = None
balance: Optional[float] = None
balance: float = 0.0
created_at: datetime.datetime
currency: Optional[Currency] = None
currency: Currency = "usd"
delinquent: Optional[bool] = None
delinquent: bool = False
email: Optional[str] = None
id: Optional[str] = None
metadata: Optional[Dict[str, str]] = None
metadata: Dict[str, str] = {}
name: Optional[str] = None
phone: Optional[str] = None
phone: str = ""
model_config = ConfigDict(protected_namespaces=())

View File

@ -15,7 +15,7 @@ class ExtendedUser(BaseModel):
block: Optional[BlockReason] = None
can_train_on_data: Optional[bool] = None
can_train_on_data: bool = False
company: Optional[str] = None
@ -37,7 +37,7 @@ class ExtendedUser(BaseModel):
image: str
is_service_account: Optional[bool] = None
is_service_account: bool = False
last_name: Optional[str] = None
@ -45,7 +45,7 @@ class ExtendedUser(BaseModel):
name: Optional[str] = None
phone: Optional[str] = None
phone: str = ""
stripe_id: Optional[str] = None

View File

@ -23,7 +23,7 @@ class FileDensity(BaseModel):
id: Uuid
material_mass: Optional[float] = None
material_mass: float = 0.0
material_mass_unit: UnitMass

View File

@ -23,7 +23,7 @@ class FileMass(BaseModel):
mass: Optional[float] = None
material_density: Optional[float] = None
material_density: float = 0.0
material_density_unit: UnitDensity

View File

@ -1,4 +1,3 @@
from typing import Optional
from pydantic import BaseModel, ConfigDict
@ -7,14 +6,14 @@ from pydantic import BaseModel, ConfigDict
class Gateway(BaseModel):
"""Gateway information."""
auth_timeout: Optional[int] = None
auth_timeout: int = 0
host: Optional[str] = None
host: str = ""
name: Optional[str] = None
name: str = ""
port: Optional[int] = None
port: int = 0
tls_timeout: Optional[int] = None
tls_timeout: int = 0
model_config = ConfigDict(protected_namespaces=())

View File

@ -1,4 +1,4 @@
from typing import Literal, Optional, Union
from typing import Literal, Union
from pydantic import BaseModel, ConfigDict, Field, RootModel
from typing_extensions import Annotated
@ -50,7 +50,7 @@ class ply(BaseModel):
class sldprt(BaseModel):
"""SolidWorks part (SLDPRT) format."""
split_closed_faces: Optional[bool] = None
split_closed_faces: bool = False
type: Literal["sldprt"] = "sldprt"
@ -60,7 +60,7 @@ class sldprt(BaseModel):
class step(BaseModel):
"""ISO 10303-21 (STEP) format."""
split_closed_faces: Optional[bool] = None
split_closed_faces: bool = False
type: Literal["step"] = "step"

View File

@ -12,19 +12,19 @@ from ..models.invoice_status import InvoiceStatus
class Invoice(BaseModel):
"""An invoice."""
amount_due: Optional[float] = None
amount_due: float = 0.0
amount_paid: Optional[float] = None
amount_paid: float = 0.0
amount_remaining: Optional[float] = None
amount_remaining: float = 0.0
attempt_count: Optional[int] = None
attempt_count: int = 0
attempted: Optional[bool] = None
attempted: bool = False
created_at: datetime.datetime
currency: Optional[Currency] = None
currency: Currency = "usd"
customer_email: Optional[str] = None
@ -40,11 +40,11 @@ class Invoice(BaseModel):
lines: Optional[List[InvoiceLineItem]] = None
metadata: Optional[Dict[str, str]] = None
metadata: Dict[str, str] = {}
number: Optional[str] = None
paid: Optional[bool] = None
paid: bool = False
pdf: Optional[str] = None
@ -54,11 +54,11 @@ class Invoice(BaseModel):
status: Optional[InvoiceStatus] = None
subtotal: Optional[float] = None
subtotal: float = 0.0
tax: Optional[float] = None
tax: float = 0.0
total: Optional[float] = None
total: float = 0.0
url: Optional[str] = None

View File

@ -8,9 +8,9 @@ from ..models.currency import Currency
class InvoiceLineItem(BaseModel):
"""An invoice line item."""
amount: Optional[float] = None
amount: float = 0.0
currency: Optional[Currency] = None
currency: Currency = "usd"
description: Optional[str] = None
@ -18,6 +18,6 @@ class InvoiceLineItem(BaseModel):
invoice_item: Optional[str] = None
metadata: Optional[Dict[str, str]] = None
metadata: Dict[str, str] = {}
model_config = ConfigDict(protected_namespaces=())

View File

@ -20,7 +20,7 @@ class IpAddrInfo(BaseModel):
country_code3: Optional[str] = None
ip: Optional[str] = None
ip: str = ""
is_in_european_union: Optional[bool] = None

View File

@ -1,4 +1,3 @@
from typing import Optional
from pydantic import BaseModel, ConfigDict
@ -10,10 +9,23 @@ from ..models.meta_cluster_info import MetaClusterInfo
class Jetstream(BaseModel):
"""Jetstream information."""
config: Optional[JetstreamConfig] = None
config: JetstreamConfig = {
"domain": "",
"max_memory": 0,
"max_storage": 0,
"store_dir": "",
}
meta: Optional[MetaClusterInfo] = None
meta: MetaClusterInfo = {"cluster_size": 0, "leader": "", "name": ""}
stats: Optional[JetstreamStats] = None
stats: JetstreamStats = {
"accounts": 0,
"api": {"errors": 0, "inflight": 0, "total": 0},
"ha_assets": 0,
"memory": 0,
"reserved_memory": 0,
"reserved_store": 0,
"store": 0,
}
model_config = ConfigDict(protected_namespaces=())

View File

@ -1,4 +1,3 @@
from typing import Optional
from pydantic import BaseModel, ConfigDict
@ -7,10 +6,10 @@ from pydantic import BaseModel, ConfigDict
class JetstreamApiStats(BaseModel):
"""Jetstream API statistics."""
errors: Optional[int] = None
errors: int = 0
inflight: Optional[int] = None
inflight: int = 0
total: Optional[int] = None
total: int = 0
model_config = ConfigDict(protected_namespaces=())

View File

@ -1,4 +1,3 @@
from typing import Optional
from pydantic import BaseModel, ConfigDict
@ -7,12 +6,12 @@ from pydantic import BaseModel, ConfigDict
class JetstreamConfig(BaseModel):
"""Jetstream configuration."""
domain: Optional[str] = None
domain: str = ""
max_memory: Optional[int] = None
max_memory: int = 0
max_storage: Optional[int] = None
max_storage: int = 0
store_dir: Optional[str] = None
store_dir: str = ""
model_config = ConfigDict(protected_namespaces=())

View File

@ -1,4 +1,3 @@
from typing import Optional
from pydantic import BaseModel, ConfigDict
@ -8,18 +7,18 @@ from ..models.jetstream_api_stats import JetstreamApiStats
class JetstreamStats(BaseModel):
"""Jetstream statistics."""
accounts: Optional[int] = None
accounts: int = 0
api: Optional[JetstreamApiStats] = None
api: JetstreamApiStats = {"errors": 0, "inflight": 0, "total": 0}
ha_assets: Optional[int] = None
ha_assets: int = 0
memory: Optional[int] = None
memory: int = 0
reserved_memory: Optional[int] = None
reserved_memory: int = 0
reserved_store: Optional[int] = None
reserved_store: int = 0
store: Optional[int] = None
store: int = 0
model_config = ConfigDict(protected_namespaces=())

View File

@ -7,7 +7,7 @@ from pydantic import BaseModel, ConfigDict
class KclCodeCompletionParams(BaseModel):
"""Extra params for the completions."""
language: Optional[str] = None
language: str = ""
next_indent: Optional[int] = None
@ -15,6 +15,6 @@ class KclCodeCompletionParams(BaseModel):
suffix_tokens: Optional[int] = None
trim_by_indentation: Optional[bool] = None
trim_by_indentation: bool = False
model_config = ConfigDict(protected_namespaces=())

View File

@ -8,7 +8,7 @@ from ..models.kcl_code_completion_params import KclCodeCompletionParams
class KclCodeCompletionRequest(BaseModel):
"""A request to generate KCL code completions."""
extra: Optional[KclCodeCompletionParams] = None
extra: KclCodeCompletionParams = {"language": "", "trim_by_indentation": False}
max_tokens: Optional[int] = None
@ -16,13 +16,13 @@ class KclCodeCompletionRequest(BaseModel):
nwo: Optional[str] = None
prompt: Optional[str] = None
prompt: str = ""
stop: Optional[List[str]] = None
stream: Optional[bool] = None
stream: bool = False
suffix: Optional[str] = None
suffix: str = ""
temperature: Optional[float] = None

View File

@ -1,4 +1,3 @@
from typing import Optional
from pydantic import BaseModel, ConfigDict
@ -7,12 +6,12 @@ from pydantic import BaseModel, ConfigDict
class LeafNode(BaseModel):
"""Leaf node information."""
auth_timeout: Optional[int] = None
auth_timeout: int = 0
host: Optional[str] = None
host: str = ""
port: Optional[int] = None
port: int = 0
tls_timeout: Optional[int] = None
tls_timeout: int = 0
model_config = ConfigDict(protected_namespaces=())

View File

@ -1,4 +1,3 @@
from typing import Optional
from pydantic import BaseModel, ConfigDict
@ -8,10 +7,10 @@ from ..models.point3d import Point3d
class LinearTransform(BaseModel):
"""Ways to transform each solid being replicated in a repeating pattern."""
replicate: Optional[bool] = None
replicate: bool = True
scale: Optional[Point3d] = None
scale: Point3d = {"x": 1.0, "y": 1.0, "z": 1.0}
translate: Optional[Point3d] = None
translate: Point3d = {"x": 0.0, "y": 0.0, "z": 0.0}
model_config = ConfigDict(protected_namespaces=())

View File

@ -1,4 +1,3 @@
from typing import Optional
from pydantic import BaseModel, ConfigDict
@ -7,10 +6,10 @@ from pydantic import BaseModel, ConfigDict
class MetaClusterInfo(BaseModel):
"""Jetstream statistics."""
cluster_size: Optional[int] = None
cluster_size: int = 0
leader: Optional[str] = None
leader: str = ""
name: Optional[str] = None
name: str = ""
model_config = ConfigDict(protected_namespaces=())

View File

@ -656,7 +656,7 @@ class solid3d_get_prev_adjacent_edge(BaseModel):
class solid3d_fillet_edge(BaseModel):
"""Fillets the given edge with the specified radius."""
cut_type: Optional[CutType] = None
cut_type: CutType = "fillet"
edge_id: str
@ -742,7 +742,7 @@ class entity_set_opacity(BaseModel):
class entity_fade(BaseModel):
"""Fade entity in or out."""
duration_seconds: Optional[float] = None
duration_seconds: float = 0.4000000059604645
entity_id: str
@ -1212,7 +1212,7 @@ class default_camera_set_perspective(BaseModel):
class zoom_to_fit(BaseModel):
"""Fit the view to the specified object(s)."""
object_ids: Optional[List[str]] = None
object_ids: List[str] = []
padding: float
@ -1224,7 +1224,7 @@ class zoom_to_fit(BaseModel):
class view_isometric(BaseModel):
"""Fit the view to the scene with an isometric view."""
padding: Optional[float] = None
padding: float = 0.0
type: Literal["view_isometric"] = "view_isometric"

View File

@ -18,7 +18,7 @@ class Org(BaseModel):
block: Optional[BlockReason] = None
can_train_on_data: Optional[bool] = None
can_train_on_data: bool = False
created_at: datetime.datetime
@ -30,7 +30,7 @@ class Org(BaseModel):
name: Optional[str] = None
phone: Optional[str] = None
phone: str = ""
stripe_id: Optional[str] = None

View File

@ -17,6 +17,6 @@ class OrgDetails(BaseModel):
name: Optional[str] = None
phone: Optional[str] = None
phone: str = ""
model_config = ConfigDict(protected_namespaces=())

View File

@ -32,7 +32,7 @@ class OrgMember(BaseModel):
name: Optional[str] = None
phone: Optional[str] = None
phone: str = ""
role: OrgRole

View File

@ -14,6 +14,6 @@ class OutputFile(BaseModel):
contents: Optional[str] = None
name: Optional[str] = None
name: str = ""
model_config = ConfigDict(protected_namespaces=())

View File

@ -19,7 +19,7 @@ class PaymentMethod(BaseModel):
id: Optional[str] = None
metadata: Optional[Dict[str, str]] = None
metadata: Dict[str, str] = {}
type: PaymentMethodType

View File

@ -19,7 +19,7 @@ class UnitAngleConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitAngle

View File

@ -19,7 +19,7 @@ class UnitAreaConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitArea

View File

@ -19,7 +19,7 @@ class UnitCurrentConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitCurrent

View File

@ -19,7 +19,7 @@ class UnitEnergyConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitEnergy

View File

@ -19,7 +19,7 @@ class UnitForceConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitForce

View File

@ -19,7 +19,7 @@ class UnitFrequencyConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitFrequency

View File

@ -19,7 +19,7 @@ class UnitLengthConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitLength

View File

@ -19,7 +19,7 @@ class UnitMassConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitMass

View File

@ -19,7 +19,7 @@ class UnitPowerConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitPower

View File

@ -19,7 +19,7 @@ class UnitPressureConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitPressure

View File

@ -19,7 +19,7 @@ class UnitTemperatureConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitTemperature

View File

@ -19,7 +19,7 @@ class UnitTorqueConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitTorque

View File

@ -19,7 +19,7 @@ class UnitVolumeConversion(BaseModel):
id: Uuid
input: Optional[float] = None
input: float = 0.0
input_unit: UnitVolume

View File

@ -19,6 +19,6 @@ class UpdateUser(BaseModel):
last_name: Optional[str] = None
phone: Optional[str] = None
phone: str = ""
model_config = ConfigDict(protected_namespaces=())

View File

@ -12,7 +12,7 @@ class User(BaseModel):
block: Optional[BlockReason] = None
can_train_on_data: Optional[bool] = None
can_train_on_data: bool = False
company: Optional[str] = None
@ -32,13 +32,13 @@ class User(BaseModel):
image: str
is_service_account: Optional[bool] = None
is_service_account: bool = False
last_name: Optional[str] = None
name: Optional[str] = None
phone: Optional[str] = None
phone: str = ""
updated_at: datetime.datetime

View File

@ -29,7 +29,7 @@ class UserOrgInfo(BaseModel):
name: Optional[str] = None
phone: Optional[str] = None
phone: str = ""
role: OrgRole

View File

@ -1,4 +1,4 @@
from typing import Dict, List, Literal, Optional, Union
from typing import Dict, List, Literal, Union
from pydantic import BaseModel, ConfigDict, Field, RootModel
from typing_extensions import Annotated
@ -50,7 +50,7 @@ class modeling_cmd_batch_req(BaseModel):
requests: List[ModelingCmdReq]
responses: Optional[bool] = None
responses: bool = False
type: Literal["modeling_cmd_batch_req"] = "modeling_cmd_batch_req"

View File

@ -1,4 +1,3 @@
from typing import Optional
from pydantic import BaseModel, ConfigDict
@ -10,6 +9,6 @@ from ..models.modeling_app_organization_subscription_tier import (
class ZooProductSubscriptionsOrgRequest(BaseModel):
"""A struct of Zoo product subscriptions an organization can request."""
modeling_app: Optional[ModelingAppOrganizationSubscriptionTier] = None
modeling_app: ModelingAppOrganizationSubscriptionTier = "team"
model_config = ConfigDict(protected_namespaces=())

View File

@ -1,4 +1,3 @@
from typing import Optional
from pydantic import BaseModel, ConfigDict
@ -10,6 +9,6 @@ from ..models.modeling_app_individual_subscription_tier import (
class ZooProductSubscriptionsUserRequest(BaseModel):
"""A struct of Zoo product subscriptions a user can request."""
modeling_app: Optional[ModelingAppIndividualSubscriptionTier] = None
modeling_app: ModelingAppIndividualSubscriptionTier = "free"
model_config = ConfigDict(protected_namespaces=())