# Progress Reporting with Callbacks

class dnf.callback.Payload

  Represents one item (file) from the download batch.

  __str__()

    Provide concise, human-readable representation of this Payload.

  download_size

    Total size of this Payload when transferred (e.g. over network).

class dnf.callback.DownloadProgress

  Base class providing callbacks to receive information about an ongoing download.

  start(total_files, total_size, total_drpms=0)

    Report start of a download batch. total_files is the total number of payloads in the batch. total_size is the total number of bytes to be downloaded. total_drpms is the total number of drpms payloads in the batch.

  progress(payload, done)

    Report ongoing progress on the given payload. done is the number of bytes already downloaded from payload.

  end(payload, status, msg)

    Report finished download of a payload, `Payload` instance. status is a constant with the following meaning:

    status value | meaning
    --- | ---
    STATUS_OK | Download finished successfully.
    STATUS_DRPM | DRPM rebuilt successfully.
    STATUS_ALREADY_EXISTS | Download skipped because the local file already exists.
    STATUS_MIRROR | Download failed on the current mirror, will try to use next mirror in the list.
    STATUS_FAILED | Download failed because of another error.

    msg is an optional string error message further explaining the status.

class dnf.callback.TransactionProgress

  Base class providing callbacks to receive information about an ongoing transaction.

  error(message)

    Report an error that occurred during the transaction. message is a string which describes the error.

  progress(package, action, ti_done, ti_total, ts_done, ts_total)

    Report ongoing progress on the given transaction item. package is the `dnf.package.Package` being processed and action is a constant with the following meaning:

    action value | meaning | Appearance*
    --- | --- | ---
    PKG_CLEANUP | package cleanup is being performed. | 3
    PKG_DOWNGRADE | package is being installed as a downgrade. | 2
    PKG_DOWNGRADED | installed package is being downgraded. | 2
    PKG_INSTALL | package is being installed. | 2
    PKG_OBSOLETE | package is obsoleting another package. | 2
    PKG_OBSOLETED | installed package is being obsoleted. | 2
    PKG_REINSTALL | package is installed as a reinstall. | 2
    PKG_REINSTALLED | installed package is being reinstalled. | 2
    PKG_REMOVE | package is being removed. | 2
    PKG_UPGRADE | package is installed as an upgrade. | 2
    PKG_UPGRADED | installed package is being upgraded. | 2
    PKG_VERIFY | package is being verified. | 5
    PKG_SCRIPTLET | package scriptlet is being performed. | Anytime
    TRANS_PREPARATION | transaction is being prepared. | 1
    TRANS_POST | The post-trans phase started. In this case, all the other arguments are `None`. | 4

    *This is order in which state of transaction which callback action can appear. Only PKG_SCRIPTLET can appear anytime during transaction even before transaction starts.

    ti_done is the number of processed bytes of the transaction item, ti_total is the total number of bytes of the transaction item, ts_done is the number of actions processed in the whole transaction and ts_total is the total number of actions in the whole transaction.

  scriptout(msgs)

    Report the bytes from the combined stdout/stderr of a scriptlet.