duplicity.progress module

Functions to compute progress of compress & upload files The heuristics try to infer the ratio between the amount of data collected by the deltas and the total size of the changing files. It also infers the compression and encryption ration of the raw deltas before sending them to the backend. With the inferred ratios, the heuristics estimate the percentage of completion and the time left to transfer all the (yet unknown) amount of data to send. This is a forecast based on gathered evidence.

class duplicity.progress.LogProgressThread[source]

Bases: Thread

Background thread that reports progress to the log, every –progress-rate seconds


This constructor should always be called with keyword arguments. Arguments are:

group should be None; reserved for future extension when a ThreadGroup class is implemented.

target is the callable object to be invoked by the run() method. Defaults to None, meaning nothing is called.

name is the thread name. By default, a unique name is constructed of the form “Thread-N” where N is a small decimal number.

args is the argument tuple for the target invocation. Defaults to ().

kwargs is a dictionary of keyword arguments for the target invocation. Defaults to {}.

If a subclass overrides the constructor, it must make sure to invoke the base class constructor (Thread.__init__()) before doing anything else to the thread.


Method representing the thread’s activity.

You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.

class duplicity.progress.ProgressTracker[source]

Bases: object


Annotate the number of bytes that have been added/changed since last time this function was called. bytecount param will show the number of bytes since the start of the current volume and for the current volume


Returns true if the progress computation is on and duplicity has not yet started the first dry-run pass to collect some information


Aproximative and evolving method of computing the progress of upload

set_evidence(stats, is_full)[source]

Stores the collected statistics from a first-pass dry-run, to use this information later so as to estimate progress


Snapshots the current progress status for each volume into the disk cache If backup is interrupted, next restart will deserialize the data and try start progress from the snapshot


Elapsed seconds since the first call to log_upload_progress method

class duplicity.progress.Snapshot(iterable=[], maxlen=10)[source]

Bases: deque

A convenience class for storing snapshots in a space/timing efficient manner Stores up to 10 consecutive progress snapshots, one for each volume

__init__(iterable=[], maxlen=10)[source]

Remove all elements from the deque.


Serializes object to cache

push_snapshot(volume, snapshot_data)[source]
static unmarshall()[source]

De-serializes cached data it if present

duplicity.progress.report_transfer(bytecount, totalbytes)[source]

Method to call tracker.annotate_written_bytes from outside the class, and to offer the “function(long, long)” signature which is handy to pass as callback