'load_item: Takes a Location and returns an XModuleDescriptor
resources_fs: A Filesystem object that contains all of the
resources needed for the course
error_tracker: A hook for tracking errors in loading the descriptor.
Used for example to get a list of all non-fatal problems on course
load, and display them to the user.
A function of (error_msg). errortracker.py provides a
handy make_error_tracker() function.
Patterns for using the error handler:
try:
x = access_some_resource()
check_some_format(x)
except SomeProblem as err:
msg = \'Grommet {0} is broken: {1}\'.format(x, str(err))
log.warning(msg)  # don\'t rely on tracker to log
# NOTE: we generally don\'t want content errors logged as errors
self.system.error_tracker(msg)
# work around
return \'Oops, couldn\'t load grommet\'
OR, if not in an exception context:
if not check_something(thingy):
msg = "thingy {0} is broken".format(thingy)
log.critical(msg)
self.system.error_tracker(msg)
NOTE: To avoid duplication, do not call the tracker on errors
that you\'re about to re-raise---let the caller track them.
get_policy: a function that takes a usage id and returns a dict of
policy to apply.
local_resource_url: an implementation of :meth:`xblock.runtime.Runtime.local_resource_url`'

def __init__(self, load_item, resources_fs, error_tracker, get_policy=None, disabled_xblock_types=(lambda : []), **kwargs):

    kwargs.setdefault('id_reader', OpaqueKeyReader())
    kwargs.setdefault('id_generator', AsideKeyGenerator())
    super(DescriptorSystem, self).__init__(**kwargs)
    self.export_fs = None
    self.load_item = load_item
    self.resources_fs = resources_fs
    self.error_tracker = error_tracker
    if get_policy:
        self.get_policy = get_policy
    else:
        self.get_policy = (lambda u: {})
    self.disabled_xblock_types = disabled_xblock_types
