I would have thought there's away to convert those floats to the correct decimal values, although maybe that was just a client... I'll look into it tonight cause those floats are horrid! Also I'll look at bitcoind listtransactions output if I get a chance.
Sounds like it's going well so far for the most part.
The problem is that those values
should be transferred as either long-integer (satoshis) or string... in which case the value can be coded exactly. But someone decided that they'll have bitcoind should transfer them as non-exact floating point (doubles), and 0.0005000000001 for the fee is the closest float that can be encoded. I'm fairly confident it's really just a display issue, not an armoryd.py issue.
Luckily, round()'ing will always work because doubles have enough bits to represent 8 places without rounding errors. But I wouldn't mind if we can find a way to have the json library print out the rounded version. I noticed in the few lines of code I stole from jgarzik (and now part of armoryd.py), he defined a "UniversalEncoder" and was able to pass it to the json.dumps() method to explain how to handle decimal.Decimal objects. Though I mostly removed that in favor of following
Proper money handling in JSON-RPC, even though it should all give the same answers (it's less characters and more readable). Either way, maybe there's a hint there about how to tell UniversalEncoder to print "float" values.
Anyone think it's a bad/good idea to do what I recommended: "python armoryd.py setamountencoding COIN" or "python armoryd.py setamountencoding STRING" to set the daemon to transfer long-int-satoshis or exact strings, respectively? That way default behavior matches bitcoind that most are expecting, but they have the option to change it with one line at the top of their script.
-----
By the way (mostly for mav), I added the capability for armoryd.py to detect if there's already an instance of armoryd.py running, and if there is, it will connect to it, pass the command line arguments to it, print the reply, then disconnect. I believe that's exactly what bitcoind does.
Also for anyone who wants to use this, you need to have a "/home/username/.armory/armoryd.conf" file or "C:\Users\username\AppData\Roaming\Armory\armoryd.conf" in order to use it. The file contains a single line: "username:password". Make sure to "chmod 600 armoryd.conf"