Skip to content

Major update - return instances instead of dicts

Compare
Choose a tag to compare
@Someguy123 Someguy123 released this 21 Jul 16:08
· 11 commits to master since this release

Data classes / objects

As many of us know, it gets tiring having to constantly type x['balance'] when
something returns a dictionary, especially when there's no IDE completion for it.

To solve this problem, new classes have been written to represent SteemEngine objects, such
as balances, transactions, and tokens. This allows you to access keys simply through
x.balance instead.

For backwards compatibility, the ObjBase parent class allows instances of these data classes
to be treated like dictionaries/lists, so x['balance'] will still work, and it will return
the same format as before, while x.balance for example, would return the balance as a
proper Decimal object.

You can also convert the classes into dicts/lists with dict(x) and list(x), but be
aware that this uses the raw_data that was originally passed, so these converted objects
will not have their keys casted to the appropriate Python types, unless they were casted
before being passed into the class.

  • New module privex.steemengine.objects for classes designed to hold data
    • ObjBase is used as the base class for the data classes. For backwards compatibility,
      it allows instances of the classes to be accessed like a dictionary/list,
      offers from_list for easy conversions of list<dict> into their respective
      data classes, and also implements __iter__ so instances can be converted
      using dict(x) and list(x).
    • Token represents the data of a SteemEngine token such as name/symbol/supply
    • SEBalance represents a balance with account/symbol/balance
    • SETransaction represents a history tx with txid/timestamp/quantity etc.
    • TokenMetadata represents the metadata field of token data

Upgraded SteemEngineToken to use the data classes

The SteemEngineToken class has been updated to use the new data classes. Thanks to
ObjBase, this should hopefully not break any existing applications, but there's always a risk.

The methods that have been updated:

  • list_tokens now returns List[Token] instead of List[dict]
  • get_token now returns Token instead of dict
  • get_token_balances now returns List[SEBalance] instead of List[dict]
  • list_transactions now returns List[SETransaction] instead of List[dict]

Documentation for the new data classes

The documentation has been updated with details on how the data classes work.

The documentation for SteemEngineToken methods have mostly been updated to
show usage of the new data classes instead of dicts.