### Navigation

- index
- modules |
- next |
- previous |
- IPython v0.10 documentation »
- The IPython API »

# kernel.pendingdeferred

## Module: `kernel.pendingdeferred`

Inheritance diagram for `IPython.kernel.pendingdeferred`:

Classes to manage pending Deferreds.

A pending deferred is a deferred that may or may not have fired. This module is useful for taking a class whose methods return deferreds and wrapping it to provide API that keeps track of those deferreds for later retrieval. See the tests for examples of its usage.

## `PendingDeferredManager`

class `IPython.kernel.pendingdeferred.``PendingDeferredManager`

  Bases: `object`

  A class to track pending deferreds.

  To track a pending deferred, the user of this class must first get a deferredID by calling get_next_deferred_id. Then the user calls save_pending_deferred passing that id and the deferred to be tracked. To later retrieve it, the user calls get_pending_deferred passing the id.

  `__init__`()
    Manage pending deferreds.
  `clear_pending_deferreds`()
    Remove all the deferreds I am tracking.
  `delete_pending_deferred`(deferred_id)

    Remove a deferred I am tracking and add a null Errback.

    Parameters: | deferredID : str The id of a deferred that I am tracking.

  `get_deferred_id`()
  `get_pending_deferred`(deferred_id, block)
  `quick_has_id`(deferred_id)
  `save_pending_deferred`(d, deferred_id=None)

    Save the result of a deferred for later retrieval.

    This works even if the deferred has not fired.

    Only callbacks and errbacks applied to d before this method is called will be called no the final result.

`IPython.kernel.pendingdeferred.``two_phase`(wrapped_method)

  Wrap methods that return a deferred into a two phase process.

  This transforms:

      foo(arg1, arg2, ...) -> foo(arg1, arg2,...,block=True).

  The wrapped method will then return a deferred to a deferred id. This will only work on method of classes that inherit from PendingDeferredManager, as that class provides an API for

  block is a boolean to determine if we should use the two phase process or just simply call the wrapped method. At this point block does not have a default and it probably won’t.

### Navigation

- index
- modules |
- next |
- previous |
- IPython v0.10 documentation »
- The IPython API »