To use Yandex Market Language (YML) for Python in a project:
from yandex_market_language import parse, convert
You can create models manually:
>>> from yandex_market_language import models >>> category = models.Category(category_id="1", name="Shoes")
And then transform them into a dictionary:
>>> d = category.to_dict() >>> d {'id': '1', 'name': 'Shoes', 'parent_id': None}
Or XML element:
>>> el = category.to_xml() >>> el <Element 'category' at 0x10ecda900> >>> from xml.etree import ElementTree as ET >>> ET.tostring(el) b'<category id="1">Shoes</category>'
You can parse XML files into ready-to-use Feed model instance with parser:
>>> from yandex_market_language import parse, convert >>> feed = parse("tests/fixtures/valid_feed.xml") >>> feed <yandex_market_language.models.feed.Feed object at 0x10d99fdf0> >>> feed.to_dict() { 'shop': { 'name': 'ZS', 'company': 'ZoneSmart', 'url': 'https://zonesmart.ru', ... 'offers': [ 'type': None, 'vendor': 'Brother', 'vendor_code': 'ABC1234' ... ] ... } }
And convert Feed model instances into XML files:
>>> convert("converted_from_feed_model.xml", feed) >>> feed = parse("converted_from_feed_model.xml") >>> feed <yandex_market_language.models.feed.Feed object at 0x10d8bdee0> >>> feed.to_xml() <Element 'yml_catalog' at 0x000002121B634E00> >>> from xml.etree import ElementTree as ET >>> ET.tostring(feed.to_xml()) b'<yml_catalog date="2019-11-01 17:22"> <shop> <name>ZS</name> <company>ZoneSmart</company> <url>https://zonesmart.ru</url> ... <offers> <offer> <name>...</name> <vendor>...</name> <vendorCode>...</vendorCode> </offer> ... </offers> ... </shop> </yml_catalog>