This module defines a Python-like Future and Executor for Uproot in three levels:

  1. uproot.source.futures.TrivialFuture and uproot.TrivialExecutor: interface only, all activity is synchronous.

  2. uproot.source.futures.Future, uproot.source.futures.Worker, and uproot.ThreadPoolExecutor: similar to Python’s own Future, Thread, and ThreadPoolExecutor, though only a minimal implementation is provided. These exist to unify behavior between Python 2 and 3 and provide a base class for the following.

  3. uproot.source.futures.ResourceFuture, uproot.source.futures.ResourceWorker, and uproot.source.futures.ResourceThreadPoolExecutor: like the above except that a uproot.source.chunk.Resource is associated with every worker. When the threads are shut down, the resources (i.e. file handles) are released.

These classes implement a subset of Python’s Future and Executor interfaces.