# Path: doorman/compat.py
# def with_metaclass(meta, *bases):
#     """Create a base class with a metaclass."""
#     class metaclass(meta):
#         def __new__(cls, name, this_bases, d):
#             return meta(name, bases, d)
# 
#     return type.__new__(metaclass, 'temp_class', (), {})


from abc import ABCMeta, abstractmethod, abstractproperty
from doorman.compat import with_metaclass
# -*- coding: utf-8 -*-



class AbstractLogsPlugin(with_metaclass(ABCMeta)):
    @abstractproperty
    def name(self):
        pass

    @abstractmethod
    def handle_status(self, data, **kwargs):
        pass


# Path: doorman/compat.py
# def with_metaclass(meta, *bases):
#     """Create a base class with a metaclass."""
#     class metaclass(meta):
#         def __new__(cls, name, this_bases, d):
#             return meta(name, bases, d)
# 
#     return type.__new__(metaclass, 'temp_class', (), {})


# Path: doorman/plugins/logs/base.py
from abc import ABCMeta, abstractmethod, abstractproperty
from doorman.compat import with_metaclass

# -*- coding: utf-8 -*-



class AbstractLogsPlugin(with_metaclass(ABCMeta)):
    @abstractproperty
    def name(self):
        pass

    @abstractmethod
    def handle_status(self, data, **kwargs):
        pass


    @abstractmethod