================================== Report a transfer's size and speed

Downloads and copies benefit from three related readouts at once: how much has moved, how fast on average, and how fast right now -- three different widgets, not one, since each answers a different question.

.. demo:: howto/file-transfer

DataSize() renders the running total transferred. FileTransferSpeed() averages the rate over the whole run. AdaptiveTransferSpeed() reacts to only the last few updates, so it tracks a rate that's currently speeding up or slowing down. It needs several updates spaced more than a fraction of a second apart before it has enough history, so expect it to lag behind the other two widgets for the first few redraws. All three read the same bar.update(value) call.