"""
Code relating to interfaces and policies.

To run a program using the injector, the following steps are typical:

 1. Instantiate a L{policy.Policy} (or a sub-class of it), giving it the root interface's URI.
 2. Ask the policy object to choose a set of implementations.
   1. The policy fetches interfaces from the L{iface_cache}, starting a L{download} if needed.
   2. The cached or downloaded XML is parsed into a L{model} using the L{reader} module.
   3. The policy selects a set of implementations suitable for the current L{arch}.
 3. Download the selected implementations and unpack into the L{zerostore}.
 4. Finally, L{run} the program.

For simple command-line use, the L{autopolicy} module provides code to perform the above steps. This
is used by the L{cli} module to provide the B{0launch} interface.
"""


syntax highlighted by Code2HTML, v. 0.9.1