switch to pydantic

Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
Jess Frazelle
2023-11-28 23:50:50 -08:00
parent d9d73522fd
commit bc3d698539
230 changed files with 4467 additions and 25280 deletions

View File

@ -1,269 +1,63 @@
import datetime
from typing import Any, Dict, List, Type, TypeVar, Union, cast
from typing import Dict, List, Optional
import attr
from dateutil.parser import isoparse
from pydantic import BaseModel
from ..models.currency import Currency
from ..models.discount import Discount
from ..models.invoice_line_item import InvoiceLineItem
from ..models.invoice_status import InvoiceStatus
from ..types import UNSET, Unset
GN = TypeVar("GN", bound="Invoice")
@attr.s(auto_attribs=True)
class Invoice:
"""An invoice.""" # noqa: E501
class Invoice(BaseModel):
"""An invoice."""
amount_due: Union[Unset, float] = UNSET
amount_paid: Union[Unset, float] = UNSET
amount_remaining: Union[Unset, float] = UNSET
attempt_count: Union[Unset, int] = UNSET
attempted: Union[Unset, bool] = False
created_at: Union[Unset, datetime.datetime] = UNSET
currency: Union[Unset, Currency] = UNSET
customer_email: Union[Unset, str] = UNSET
customer_id: Union[Unset, str] = UNSET
default_payment_method: Union[Unset, str] = UNSET
description: Union[Unset, str] = UNSET
from ..models.discount import Discount
amount_due: Optional[float] = None
discounts: Union[Unset, List[Discount]] = UNSET
id: Union[Unset, str] = UNSET
from ..models.invoice_line_item import InvoiceLineItem
amount_paid: Optional[float] = None
lines: Union[Unset, List[InvoiceLineItem]] = UNSET
metadata: Union[Unset, Dict[str, str]] = UNSET
number: Union[Unset, str] = UNSET
paid: Union[Unset, bool] = False
pdf: Union[Unset, str] = UNSET
receipt_number: Union[Unset, str] = UNSET
statement_descriptor: Union[Unset, str] = UNSET
status: Union[Unset, InvoiceStatus] = UNSET
subtotal: Union[Unset, float] = UNSET
tax: Union[Unset, float] = UNSET
total: Union[Unset, float] = UNSET
url: Union[Unset, str] = UNSET
amount_remaining: Optional[float] = None
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
attempt_count: Optional[int] = None
def to_dict(self) -> Dict[str, Any]:
amount_due = self.amount_due
amount_paid = self.amount_paid
amount_remaining = self.amount_remaining
attempt_count = self.attempt_count
attempted = self.attempted
created_at: Union[Unset, str] = UNSET
if not isinstance(self.created_at, Unset):
created_at = self.created_at.isoformat()
currency: Union[Unset, Currency] = UNSET
if not isinstance(self.currency, Unset):
currency = self.currency
customer_email = self.customer_email
customer_id = self.customer_id
default_payment_method = self.default_payment_method
description = self.description
from ..models.discount import Discount
attempted: Optional[bool] = None
discounts: Union[Unset, List[Discount]] = UNSET
if not isinstance(self.discounts, Unset):
discounts = self.discounts
id = self.id
from ..models.invoice_line_item import InvoiceLineItem
created_at: datetime.datetime
lines: Union[Unset, List[InvoiceLineItem]] = UNSET
if not isinstance(self.lines, Unset):
lines = self.lines
metadata = self.metadata
currency: Optional[Currency] = None
number = self.number
paid = self.paid
pdf = self.pdf
receipt_number = self.receipt_number
statement_descriptor = self.statement_descriptor
status: Union[Unset, InvoiceStatus] = UNSET
if not isinstance(self.status, Unset):
status = self.status
subtotal = self.subtotal
tax = self.tax
total = self.total
url = self.url
customer_email: Optional[str] = None
field_dict: Dict[str, Any] = {}
field_dict.update(self.additional_properties)
field_dict.update({})
if amount_due is not UNSET:
field_dict["amount_due"] = amount_due
if amount_paid is not UNSET:
field_dict["amount_paid"] = amount_paid
if amount_remaining is not UNSET:
field_dict["amount_remaining"] = amount_remaining
if attempt_count is not UNSET:
field_dict["attempt_count"] = attempt_count
if attempted is not UNSET:
field_dict["attempted"] = attempted
if created_at is not UNSET:
field_dict["created_at"] = created_at
if currency is not UNSET:
field_dict["currency"] = currency
if customer_email is not UNSET:
field_dict["customer_email"] = customer_email
if customer_id is not UNSET:
field_dict["customer_id"] = customer_id
if default_payment_method is not UNSET:
field_dict["default_payment_method"] = default_payment_method
if description is not UNSET:
field_dict["description"] = description
if discounts is not UNSET:
field_dict["discounts"] = discounts
if id is not UNSET:
field_dict["id"] = id
if lines is not UNSET:
field_dict["lines"] = lines
if metadata is not UNSET:
field_dict["metadata"] = metadata
if number is not UNSET:
field_dict["number"] = number
if paid is not UNSET:
field_dict["paid"] = paid
if pdf is not UNSET:
field_dict["pdf"] = pdf
if receipt_number is not UNSET:
field_dict["receipt_number"] = receipt_number
if statement_descriptor is not UNSET:
field_dict["statement_descriptor"] = statement_descriptor
if status is not UNSET:
field_dict["status"] = status
if subtotal is not UNSET:
field_dict["subtotal"] = subtotal
if tax is not UNSET:
field_dict["tax"] = tax
if total is not UNSET:
field_dict["total"] = total
if url is not UNSET:
field_dict["url"] = url
customer_id: Optional[str] = None
return field_dict
default_payment_method: Optional[str] = None
@classmethod
def from_dict(cls: Type[GN], src_dict: Dict[str, Any]) -> GN:
d = src_dict.copy()
amount_due = d.pop("amount_due", UNSET)
description: Optional[str] = None
amount_paid = d.pop("amount_paid", UNSET)
discounts: Optional[List[Discount]] = None
amount_remaining = d.pop("amount_remaining", UNSET)
id: Optional[str] = None
attempt_count = d.pop("attempt_count", UNSET)
lines: Optional[List[InvoiceLineItem]] = None
attempted = d.pop("attempted", UNSET)
metadata: Optional[Dict[str, str]] = None
_created_at = d.pop("created_at", UNSET)
created_at: Union[Unset, datetime.datetime]
if isinstance(_created_at, Unset):
created_at = UNSET
else:
created_at = isoparse(_created_at)
number: Optional[str] = None
_currency = d.pop("currency", UNSET)
currency: Union[Unset, Currency]
if isinstance(_currency, Unset):
currency = UNSET
if _currency is None:
currency = UNSET
else:
currency = _currency
paid: Optional[bool] = None
customer_email = d.pop("customer_email", UNSET)
pdf: Optional[str] = None
customer_id = d.pop("customer_id", UNSET)
receipt_number: Optional[str] = None
default_payment_method = d.pop("default_payment_method", UNSET)
statement_descriptor: Optional[str] = None
description = d.pop("description", UNSET)
status: Optional[InvoiceStatus] = None
from ..models.discount import Discount
subtotal: Optional[float] = None
discounts = cast(List[Discount], d.pop("discounts", UNSET))
tax: Optional[float] = None
id = d.pop("id", UNSET)
total: Optional[float] = None
from ..models.invoice_line_item import InvoiceLineItem
lines = cast(List[InvoiceLineItem], d.pop("lines", UNSET))
metadata = d.pop("metadata", UNSET)
number = d.pop("number", UNSET)
paid = d.pop("paid", UNSET)
pdf = d.pop("pdf", UNSET)
receipt_number = d.pop("receipt_number", UNSET)
statement_descriptor = d.pop("statement_descriptor", UNSET)
_status = d.pop("status", UNSET)
status: Union[Unset, InvoiceStatus]
if isinstance(_status, Unset):
status = UNSET
if _status is None:
status = UNSET
else:
status = _status
subtotal = d.pop("subtotal", UNSET)
tax = d.pop("tax", UNSET)
total = d.pop("total", UNSET)
url = d.pop("url", UNSET)
invoice = cls(
amount_due=amount_due,
amount_paid=amount_paid,
amount_remaining=amount_remaining,
attempt_count=attempt_count,
attempted=attempted,
created_at=created_at,
currency=currency,
customer_email=customer_email,
customer_id=customer_id,
default_payment_method=default_payment_method,
description=description,
discounts=discounts,
id=id,
lines=lines,
metadata=metadata,
number=number,
paid=paid,
pdf=pdf,
receipt_number=receipt_number,
statement_descriptor=statement_descriptor,
status=status,
subtotal=subtotal,
tax=tax,
total=total,
url=url,
)
invoice.additional_properties = d
return invoice
@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
url: Optional[str] = None