# pylint:disable=R0201, print-statement
"""docstring"""
__revision__ = ''

class Interface(object):
    """base class for interfaces"""

class IMachin(Interface):
    """docstring"""
    def truc(self):
        """docstring"""

    def troc(self, argument):
        """docstring"""

class Correct1(object):
    """docstring"""
    __implements__ = IMachin

    def __init__(self):
        pass

    def truc(self):
        """docstring"""
        pass

    def troc(self, argument):
        """docstring"""
        pass

class Correct2(object):
    """docstring"""
    __implements__ = (IMachin,)

    def __init__(self):
        pass

    def truc(self):
        """docstring"""
        pass

    def troc(self, argument):
        """docstring"""
        print(argument)

class MissingMethod(object):
    """docstring"""
    __implements__ = IMachin,

    def __init__(self):
        pass

    def troc(self, argument):
        """docstring"""
        print(argument)

    def other(self):
        """docstring"""

class BadArgument(object):
    """docstring"""
    __implements__ = (IMachin,)

    def __init__(self):
        pass

    def truc(self):
        """docstring"""
        pass

    def troc(self):
        """docstring"""
        pass

class InterfaceCantBeFound(object):
    """docstring"""
    __implements__ = undefined

    def __init__(self):
        """only to make pylint happier"""

    def please(self):
        """public method 1/2"""

    def besilent(self):
        """public method 2/2"""

class InterfaceCanNowBeFound(object):
    """docstring"""
    __implements__ = BadArgument.__implements__ + Correct2.__implements__

    def __init__(self):
        """only to make pylint happier"""

    def please(self):
        """public method 1/2"""

    def besilent(self):
        """public method 2/2"""


class EmptyImplements(object):
    """no pb"""
    __implements__ = ()
    def __init__(self):
        """only to make pylint happier"""

    def please(self):
        """public method 1/2"""

    def besilent(self):
        """public method 2/2"""
