Source code for yandex_market_language.models.parameter
from .abstract import AbstractModel, XMLElement
from yandex_market_language.exceptions import ValidationError
[docs]class Parameter(AbstractModel):
"""
Model of offer characteristics and parameters.
Docs:
https://yandex.ru/support/partnermarket/elements/param.html
"""
__slots__ = [
'name',
'unit',
'_value'
]
def __init__(self, name: str, value: str, unit: str = None):
self.name = name
self.value = value
self.unit = unit
@property
def value(self) -> str:
return self._value
@value.setter
def value(self, v):
try:
self._value = str(v)
except (TypeError, ValueError):
raise ValidationError("value must be a string")
[docs] def create_dict(self, **kwargs) -> dict:
return dict(name=self.name, value=self.value, unit=self.unit)
[docs] def create_xml(self, **kwargs) -> XMLElement:
attribs = {"name": self.name}
if self.unit:
attribs["unit"] = self.unit
el = XMLElement("param", attribs)
el.text = self.value
return el
[docs] @staticmethod
def from_xml(el: XMLElement) -> "Parameter":
return Parameter(value=el.text, **el.attrib)