# Path: ripozo/decorators.py
# def classproperty(func):
#     """
#     Using this decorator a class can have a property.
#     Necessary for dynamically settings urls
#     on the application.  Works exactly the same
#     as a normal property except the class can be the
#     argument instead of self.
# 
#     .. code-block:: python
# 
#         class MyClass(object):
#             @classproperty
#             def my_prop(cls):
#                 return cls.__name__
# 
#         >>> MyClass.my_prop
#         'MyClass'
# 
#     :param func: The function to wrap
#     :type func: function
#     :rtype: ClassPropertyDescriptor
#     """
#     if not isinstance(func, (classmethod, staticmethod)):
#         func = classmethod(func)
#     return ClassPropertyDescriptor(func)


from abc import ABCMeta, abstractmethod
from ripozo.decorators import classproperty
import logging
import six
        """
        return cls.fields

    @classproperty
    def list_fields(cls):
        """
        These are the fields that should be used for
        retrieving a list of models.  This is often necessary
        for performance reasons when you only want the ids to
        create links to the individual resource and not the full
        resource

        :return: The list fields, if the ``cls._list_fields`` attribute is
            set, otherwise, ``cls.fields``
        :rtype: list
        """
        return cls.fields

    @classproperty
    def update_fields(cls):
        """
        These are the valid fields for updating a model.
        If the cls._update_fields is defined then it
        returns that list, otherwise it returns cls.fields

        :return: The list of fields to use when updating a model.
        :rtype: list
        """
        return cls.fields


# Path: ripozo/decorators.py
# def classproperty(func):
#     """
#     Using this decorator a class can have a property.
#     Necessary for dynamically settings urls
#     on the application.  Works exactly the same
#     as a normal property except the class can be the
#     argument instead of self.
# 
#     .. code-block:: python
# 
#         class MyClass(object):
#             @classproperty
#             def my_prop(cls):
#                 return cls.__name__
# 
#         >>> MyClass.my_prop
#         'MyClass'
# 
#     :param func: The function to wrap
#     :type func: function
#     :rtype: ClassPropertyDescriptor
#     """
#     if not isinstance(func, (classmethod, staticmethod)):
#         func = classmethod(func)
#     return ClassPropertyDescriptor(func)


# Path: ripozo/manager_base.py
from abc import ABCMeta, abstractmethod
from ripozo.decorators import classproperty
import logging
import six

        """
        return cls.fields

    @classproperty
    def list_fields(cls):
        """
        These are the fields that should be used for
        retrieving a list of models.  This is often necessary
        for performance reasons when you only want the ids to
        create links to the individual resource and not the full
        resource

        :return: The list fields, if the ``cls._list_fields`` attribute is
            set, otherwise, ``cls.fields``
        :rtype: list
        """
        return cls.fields

    @classproperty
    def update_fields(cls):
        """
        These are the valid fields for updating a model.
        If the cls._update_fields is defined then it
        returns that list, otherwise it returns cls.fields

        :return: The list of fields to use when updating a model.
        :rtype: list
        """
        return cls.fields


    @classproperty