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

__author__ = "Ngoc Huynh Bao"
__email__ = "ngoc.huynh.bao@nmbu.no"
__version__ = "0.0.1"


from ..model.layers import register_layer, unregister_layer
from ..model.activations import register_activation, unregister_activation
from ..model.callbacks import register_callback, unregister_callback
from ..model.losses import register_loss, unregister_loss
from ..model.metrics import register_metric, unregister_metric
from ..model.optimizers import register_optimizer, unregister_optimizer
from ..data.data_reader import register_datareader, unregister_datareader
from ..data.preprocessor import register_preprocessor, unregister_preprocessor
from ..loaders.architecture import register_architecture


def custom_architecture(class_def):
    register_architecture(class_def.__name__, class_def)
    return class_def


def custom_layer(class_def):
    register_layer(class_def.__name__, class_def)
    return class_def


def custom_activation(class_def):
    register_activation(class_def.__name__, class_def)
    return class_def


def custom_callback(class_def):
    register_callback(class_def.__name__, class_def)
    return class_def


def custom_loss(class_def):
    register_loss(class_def.__name__, class_def)
    return class_def


def custom_metric(class_def):
    register_metric(class_def.__name__, class_def)
    return class_def


def custom_optimizer(class_def):
    register_optimizer(class_def.__name__, class_def)
    return class_def


def custom_datareader(class_def):
    register_datareader(class_def.__name__, class_def)
    return class_def


def custom_preprocessor(class_def):
    register_preprocessor(class_def.__name__, class_def)
    return class_def
