Serializing to/from Unified Format

EMDS currently only supports Unified Uploader Data Interchange Format (UUDIF). While there are other “proprietary” formats that are geared towards individual market sites, the goal of EMDS is to offer a set of data structures and serializers for the community-backed formats.

In the spirit of supporting the community-drafted and backed formats (currently UUDIF), this is all we’ll support until/unless a new format comes along, is vetted by the community, and receives traction.

Dumping order and history lists to UUDIF

Regardless of whether you are dealing with a MarketOrderList or a MarketHistoryList , serializing to UUDIF works the same:

from emds.formats import unified

order_list = MarketOrderList()
# Add your orders here.
# ...

# This spits out the JSON UUDIF message string. encode_to_json() accepts
# MarketOrderList and MarketHistoryList instances.
encoded_order_list = unified.encode_to_json(order_list)

Parsing UUDIF order and history messages

Parsing a UUDIF message results in either a MarketOrderList or a MarketHistoryList instance being returned:

from emds.formats import unified

data = """
{
  "resultType" : "orders",
  "version" : "0.1alpha",
  "uploadKeys" : [
    { "name" : "emk", "key" : "abc" },
    { "name" : "ec" , "key" : "def" }
  ],
  "generator" : { "name" : "Yapeal", "version" : "11.335.1737" },
  "currentTime" : "2011-10-22T15:46:00+00:00",
  "columns" : ["price","volRemaining","range","orderID","volEntered","minVolume","bid","issueDate","duration","stationID","solarSystemID"],
  "rowsets" : [
    {
      "generatedAt" : "2011-10-22T15:43:00+00:00",
      "regionID" : 10000065,
      "typeID" : 11134,
      "rows" : [
        [8999,1,32767,2363806077,1,1,false,"2011-12-03T08:10:59+00:00",90,60008692,30005038],
        [11499.99,10,32767,2363915657,10,1,false,"2011-12-03T10:53:26+00:00",90,60006970,null],
        [11500,48,32767,2363413004,50,1,false,"2011-12-02T22:44:01+00:00",90,60006967,30005039]
      ]
    },
    {
      "generatedAt" : "2011-10-22T15:42:00+00:00",
      "regionID" : null,
      "typeID" : 11135,
      "rows" : [
        [8999,1,32767,2363806077,1,1,false,"2011-12-03T08:10:59+00:00",90,60008692,30005038],
        [11499.99,10,32767,2363915657,10,1,false,"2011-12-03T10:53:26+00:00",90,60006970,null],
        [11500,48,32767,2363413004,50,1,false,"2011-12-02T22:44:01+00:00",90,60006967,30005039]
      ]
    }
  ]
}
"""
# This spits out a MarketOrderList instance that is ready to be
# iterated over.
order_list = unified.parse_from_json(data)