# Path: pyqi/core/exception.py
# class IncompetentDeveloperError(CommandError):
#     pass


import importlib
from sys import exit, stderr
from glob import glob
from os.path import basename, dirname, expanduser, join
from pyqi.core.exception import IncompetentDeveloperError
        """Return a version string, e.g., ``'0.1'``
        
        This is typically set in a command+interface specific configuration
        file and passed to ``pyqi.core.general_factory``
        """
        raise NotImplementedError("Must define _get_version")

class InterfaceOption(object):
    """Describes an option and what to do with it
    
    ``Parameter`` is a pyqi.core.command.Parameter instance, typically an 
        instance of a ``CommandIn`` or a ``CommandOut``.
    ``Type`` refers to the interface type, not the actually datatype of the
        ``Parameter``. For instance, a file path may be specified on a command
        line interface for a BIOM table. The ``Parameter.Datatype`` is a BIOM 
        type, while the ``InterfaceOption.Type`` is a string or possibly a 
        ``FilePath`` object.
    ``Handler`` is a function that either transforms the value associated with 
        the option into the ``Parameter.DataType`` (e.g., if ``Parameter`` is a
        ``CommandIn``), or the result of a ``Command`` into something consumable
        by the interface (e.g., if ``Parameter`` is a ``CommandOut``).
    ``Name`` is the name of the ``InterfaceOption``, e.g,, 'input-fp'
    ``Help`` is a description of the ``InterfaceOption``
    """
    def __init__(self, Parameter=None, Type=None, Handler=None, Name=None,
                 Help=None):
        self.Parameter = Parameter
        
        if self.Parameter is None:
            if Name is None:

# Path: pyqi/core/exception.py
# class IncompetentDeveloperError(CommandError):
#     pass


# Path: pyqi/core/interface.py
import importlib
from sys import exit, stderr
from glob import glob
from os.path import basename, dirname, expanduser, join
from pyqi.core.exception import IncompetentDeveloperError

        """Return a version string, e.g., ``'0.1'``
        
        This is typically set in a command+interface specific configuration
        file and passed to ``pyqi.core.general_factory``
        """
        raise NotImplementedError("Must define _get_version")

class InterfaceOption(object):
    """Describes an option and what to do with it
    
    ``Parameter`` is a pyqi.core.command.Parameter instance, typically an 
        instance of a ``CommandIn`` or a ``CommandOut``.
    ``Type`` refers to the interface type, not the actually datatype of the
        ``Parameter``. For instance, a file path may be specified on a command
        line interface for a BIOM table. The ``Parameter.Datatype`` is a BIOM 
        type, while the ``InterfaceOption.Type`` is a string or possibly a 
        ``FilePath`` object.
    ``Handler`` is a function that either transforms the value associated with 
        the option into the ``Parameter.DataType`` (e.g., if ``Parameter`` is a
        ``CommandIn``), or the result of a ``Command`` into something consumable
        by the interface (e.g., if ``Parameter`` is a ``CommandOut``).
    ``Name`` is the name of the ``InterfaceOption``, e.g,, 'input-fp'
    ``Help`` is a description of the ``InterfaceOption``
    """
    def __init__(self, Parameter=None, Type=None, Handler=None, Name=None,
                 Help=None):
        self.Parameter = Parameter
        
        if self.Parameter is None:
            if Name is None:

                raise IncompetentDeveloperError("Must specify a Name for the "