[piston-0.4.0] Major updates

in #piston6 years ago (edited)

Piston 0.4.0

Piston is the Swiss-army knife for Python developers working on Steem. It allows you to read content from the blockchain and put new content on it. Furthermore it has a wallet to store your private keys (in an encrypted form) locally for convenience and allow easy automation.

It's my pleasure to announce a new piston release numbered 0.4.0 which is compliant with changes made to the API in Steem 0.16.0. Let's see what has changed:


A major changes had been happened under the hood, namely, most libraries have been moved from piston into python-steem. This allows to use Steem() with as little code as this:

from steem import Steem()

In order to not break compatibility with your existing code, you can still load Steem() and all the other classes from piston.steem, however, you will see a depracation error.

In general, developers can replace all appearances of:

from piston.XXXXXXX import YYYYYYY


from steem.XXXXXXX import YYYYYYY

Going forward, piston will be evolve towards the reference application implementation that utilizes the steem python library. :It already comes with

  • a full-featured cli wallet,
  • a alpha web wallet, and
  • will probably soon see a graphical interface (probably written in QT)

Win32 Packaging

I finally managed to build packages for windows that can be installed using NSIS installer and are fully (except for the web interface) usable in the cmd command line.

Windows Installer

This is the foundation to package a graphical frontend for STEEM for windows platforms.

Eager developers can see the build procedure in contrib/.

New Calls

Piston 0.4.0 comes with a few brand new calles:

  • piston info: Read data from the blockchain, optionally use blocknumbers, account names, public keys, or post identifiers as argument
  • piston setprofile/delprofile: This allows you to set profile content in your accounts json_metadata
  • piston follow/unfollow: Follow/Unfollow some other users' blogs
  • piston resteem: Resteem articles
  • piston history --csv: Export your history as CSV file
  • piston approvewitness/disapprovewitness: Approve/Disapprove witnesses



  • [docs] update docs to reflect app-only
  • [tests] move piston tests to steem
  • [refactor] piston libraries into steem
  • [legacy] delete legacy configuration code
  • [profile] allow to update the user's profile through metadata_json
  • [docs] add follow/unfollow to app
  • [piston,steem] Allow to follow and unfollow accounts
  • [piston,api] Allow to resteem posts
  • [piston] import wallet now has --roles
  • [info] improved command 'piston info' to show way more data
  • [refactor] web stuff moved to subfolder
  • [win32] build infrastructure completed
  • [steem] Use Amount class to deal with amounts and assets
  • [steem] Allow any kind of valid argument for Post also for steem.get_content()
  • [piston] allow CSV export of history
  • [piston/steem] approve/disapprove witnesses
  • [piston] allow to exclude ops from 'history'
  • [steem] get promoted posts


  • [imports] fix missing imports
  • Fix error in getOpeningPost #32
  • [cleanup] and fixes for tests
  • [steem] fix get_blog() #74
  • [profile] don't delete existing profile variables
  • [profile] allow to remove profile variables
  • [profile] allow to only 'update' existing keys
  • [doc] setprofile
  • [piston] sort info output by key
  • [piston] pretty format 'interest'
  • [docs] public api update
  • [API] change get_key_references API
  • [refactor] move Amount and Post out of steem.py
  • [cleanup] remove legacy wallet code
  • [win32] compile progress and proper dependencies
  • [win32] install openssl to support scrypt
  • [piston] remove default 'to' for powerups
  • [steem] powerup on the same account

@chinsquad Interesting post...is it possible to create a step by step tutorial #howto on using Piston with Python...a tutorial for dummies...if you check my posts I make my tutorials easier for beginners to follow and include screenshots. I always wanted to keep a record of who upvotes my content in a form of a bar graph per post and date...so that I can give such people more attention. I think it will mean a lot to everyone. FOLLOWED, UPVOTED and RESTEEMED.

You are not the first to ask me for more tutorials. I will see what I can do. Made a big fat remark in my todo list.

Thank you very much

@xeroc: I noticed on steemd, that you voted on steemit just right now. I am writing here, so you will get notification. Are you remember about our meeting on https://appear.in/ ?

xeroc my BitShares proxy! your work is awesome!

Thanks. Let me tell you, that once I am done with a basic infrastructure for a graphical (qt-based) interface (also for windows), then I will start working on a piston-equivalent for BitShares. Hopefully, I can make a first POC by Q1 2017.

that QT based wallet will be beautiful ! no?

At first, it will be functional, .. then later on, it could potentially be made beautiful :)
Form follows function :)

I don't understand it, but I know how important it is and how much hard work, dedication and talent is going into it. Sweeeet!

Thanks, much appreciated, really!
It is posts and appreciation like yours that motivate me going forward with my work!

xeroc, you and a few others like you are at least as much my heroes as Dan and now Ned. As an observer over the last few years and not a direct builder, a developer, I've been constantly astonished at your qualities, which are numerous. Not least, but of great importance to me, is the way you work. Openly, honestly, collaboratively, sincerely, intelligently and with happiness. It speaks of great integrity, perfect for the technologies you are helping to build. I will be far from alone in thinking this. Steemit, bitshares, any others and all of crypto are lucky to have you on their side :) With awesome respect.

This made my day :) Thank you very much!

Your effort is remarkable!
Keep up the good work!

This post has been linked to from another place on Steem.

Learn more about and upvote to support linkback bot v0.5. Flag this comment if you don't want the bot to continue posting linkbacks for your posts.

Built by @ontofractal

A very basic question. I just installed Python in my Windows computer. How do I use Piston? The first thing I want to do is connect to the Steem database. How do I do that? Any help or reference will be much appreciate. Thank you!

Coin Marketplace

STEEM 0.27
TRX 0.07
JST 0.034
BTC 23824.10
ETH 1880.77
USDT 1.00
SBD 3.32