# Path: pyqi/core/log.py
# class NullLogger(Logger):
#     """Ignore log messages"""
#     def _debug(self, msg):
#         pass
#     def _info(self, msg):
#         pass
#     def _warn(self, msg):
#         pass
#     def _fatal(self, msg):
#         pass
# 
# Path: pyqi/core/exception.py
# class IncompetentDeveloperError(CommandError):
#     pass
# 
# class InvalidReturnTypeError(IncompetentDeveloperError):
#     pass
# 
# class UnknownParameterError(IncompetentDeveloperError):
#     pass
# 
# class MissingParameterError(CommandError):
#     pass


import sys, traceback
import re
from pyqi.core.log import NullLogger
from pyqi.core.exception import (IncompetentDeveloperError,
                                 InvalidReturnTypeError,
                                 UnknownParameterError,
                                 MissingParameterError)
        return name

class CommandIn(Parameter):
    """A ``Command`` input variable type"""
    def __init__(self, Name, DataType, Description, Required=False,
                 Default=None, DefaultDescription=None, **kwargs):
        self.Required = Required
        self.Default = Default
        self.DefaultDescription = DefaultDescription

        if Required and Default is not None:
            raise IncompetentDeveloperError("Found required CommandIn '%s' "
                    "with default value '%r'. Required CommandIns cannot have "
                    "default values." % (Name, Default))

        super(CommandIn, self).__init__(Name, DataType, Description, **kwargs)

class CommandOut(Parameter):
    """A ``Command`` output variable type"""
    def __init__(self, Name, DataType, Description, **kwargs):
        super(CommandOut, self).__init__(Name, DataType, Description,
                                         **kwargs)

class ParameterCollection(dict):
    """A collection of parameters with dict like lookup"""
    def __init__(self, Parameters):
        self.Parameters = Parameters

        for p in self.Parameters:
            if p.Name in self:

# Path: pyqi/core/log.py
# class NullLogger(Logger):
#     """Ignore log messages"""
#     def _debug(self, msg):
#         pass
#     def _info(self, msg):
#         pass
#     def _warn(self, msg):
#         pass
#     def _fatal(self, msg):
#         pass
# 
# Path: pyqi/core/exception.py
# class IncompetentDeveloperError(CommandError):
#     pass
# 
# class InvalidReturnTypeError(IncompetentDeveloperError):
#     pass
# 
# class UnknownParameterError(IncompetentDeveloperError):
#     pass
# 
# class MissingParameterError(CommandError):
#     pass


# Path: pyqi/core/command.py
import sys, traceback
import re
from pyqi.core.log import NullLogger
from pyqi.core.exception import (IncompetentDeveloperError,
                                 InvalidReturnTypeError,
                                 UnknownParameterError,
                                 MissingParameterError)

        return name

class CommandIn(Parameter):
    """A ``Command`` input variable type"""
    def __init__(self, Name, DataType, Description, Required=False,
                 Default=None, DefaultDescription=None, **kwargs):
        self.Required = Required
        self.Default = Default
        self.DefaultDescription = DefaultDescription

        if Required and Default is not None:
            raise IncompetentDeveloperError("Found required CommandIn '%s' "
                    "with default value '%r'. Required CommandIns cannot have "
                    "default values." % (Name, Default))

        super(CommandIn, self).__init__(Name, DataType, Description, **kwargs)

class CommandOut(Parameter):
    """A ``Command`` output variable type"""
    def __init__(self, Name, DataType, Description, **kwargs):
        super(CommandOut, self).__init__(Name, DataType, Description,
                                         **kwargs)

class ParameterCollection(dict):
    """A collection of parameters with dict like lookup"""
    def __init__(self, Parameters):
        self.Parameters = Parameters

        for p in self.Parameters:
            if p.Name in self:

                raise IncompetentDeveloperError("Found duplicate Parameter "