def importer(name, extensions=None, sniff=None):
name = name.lower()<EOL>if name in importers:<EOL><INDENT>raise ValueError('<STR_LIT>' % name)<EOL><DEDENT>if extensions is None:         extensions = ()<EOL>elif pimms.is_str(extensions): (extensions,)<EOL>else:                          extensions = tuple(extensions)<EOL>def _importer(f):<EOL><INDENT>global importers<EOL>importers = importers.set(name, (f, extensions, sniff))<EOL>setattr(load, name, f)<EOL>return f<EOL><DEDENT>return _importer<EOL>
@importer(name) is a decorator that declares that the following function is an file loading
  function that should be registered with the neuropythy load function. See also the
  forget_importer function.

Any importer function must take, as its first argument, a filename; after that it may take any
number of keyword arguments, but no other non-keyword arguments. These keyword arguments can be
passed to the neuropythy load function.

The following options are accepted:
  * extensions (default: None) may be a string or a collection of strings that indicate possible
    file extensions for files of this type.
  * sniff (default: None) may optionally be a function f(s) that yields True when the given
    string s is a filename for a file of this type. If no sniff is given, this type can still
    be detected by running the importer and catching any raised exception.