Source code for yandex_market_language.models.price

from typing import Optional

from .abstract import AbstractModel, XMLElement


[docs]class Price(AbstractModel): """ Actual offer price model. """ __slots__ = [ '_value', '_is_starting' ] def __init__(self, value, is_starting=False): self.value = value self.is_starting = is_starting @property def is_starting(self) -> Optional[bool]: return self._str_to_bool(self._is_starting) @is_starting.setter def is_starting(self, value): self._is_starting = self._is_valid_bool(value, "is_starting", True) @property def value(self) -> float: return float(self._value) @value.setter def value(self, v): self._value = self._is_valid_float(v, "price")
[docs] def create_dict(self, **kwargs) -> dict: return dict(value=self.value, is_starting=self.is_starting)
[docs] def create_xml(self, **kwargs) -> XMLElement: el = XMLElement("price") if self.is_starting: el.attrib["from"] = "true" el.text = self._value return el
[docs] @staticmethod def from_xml(el: XMLElement) -> "AbstractModel": return Price(el.text, el.attrib.get("from", False))