# Path: auxi/core/objects.py
# class NamedObject(Object):
#     """
#     Base class for all auxi classes requiring a name and description.
# 
#     :param name: the object's name
#     :param description: the object's description
#     """
# 
#     def __init__(self, name, description=None):
#         self.name = name
#         self.description = description
# 
#     def _validate_params_(self, name, description):
#         # TODO: Enforce name format.
#         pass


from auxi.core.objects import NamedObject
    from core_test import *
    import unittest
    """
    A modelling project.

    :param name: A name for the project.
    :param description: the project's description
    """

    def __init__(self, name, description=None):
        super().__init__(name, description)


class Variable(NamedObject):
    """
    A variable used in a modelling project.

    :param name: A name for the variable.
    :param description: the variable's description
    """

    def __init__(self, name, value, units=None, category=None,
                 description=None):
        super(Variable, self).__init__(name, description)
        self.category = category
        self.value = value
        self.units = units

    def __call__(self):
        return self.value



# Path: auxi/core/objects.py
# class NamedObject(Object):
#     """
#     Base class for all auxi classes requiring a name and description.
# 
#     :param name: the object's name
#     :param description: the object's description
#     """
# 
#     def __init__(self, name, description=None):
#         self.name = name
#         self.description = description
# 
#     def _validate_params_(self, name, description):
#         # TODO: Enforce name format.
#         pass


# Path: auxi/modelling/core.py
from auxi.core.objects import NamedObject
    from core_test import *
    import unittest

    """
    A modelling project.

    :param name: A name for the project.
    :param description: the project's description
    """

    def __init__(self, name, description=None):
        super().__init__(name, description)


class Variable(NamedObject):
    """
    A variable used in a modelling project.

    :param name: A name for the variable.
    :param description: the variable's description
    """

    def __init__(self, name, value, units=None, category=None,
                 description=None):
        super(Variable, self).__init__(name, description)
        self.category = category
        self.value = value
        self.units = units

    def __call__(self):
        return self.value



class VariableGroup(NamedObject):