'Initialize class attributes for subsequent constructor calls.
:note: *args and **kwargs are not explicitly used in this function,
but needed for Python 2 compatibility.'

def __new__(cls, *args, **kwargs):

    if (not cls.__initialized__):
        cls.__initialized__ = True
        try:
            _meta = getattr(cls, u'Meta')
        except AttributeError:
            raise AttributeError(u'Missing    Meta    class    in    {0}.'.format(cls.__name__))
        for attr in [u'series_name', u'fields', u'tags']:
            try:
                setattr(cls, (u'_' + attr), getattr(_meta, attr))
            except AttributeError:
                raise AttributeError(u'Missing    {0}    in    {1}    Meta    class.'.format(attr, cls.__name__))
        cls._autocommit = getattr(_meta, u'autocommit', False)
        cls._client = getattr(_meta, u'client', None)
        if (cls._autocommit and (not cls._client)):
            raise AttributeError(u'In    {0},    autocommit    is    set    to    True,    but    no    client    is    set.'.format(cls.__name__))
        try:
            cls._bulk_size = getattr(_meta, u'bulk_size')
            if ((cls._bulk_size < 1) and cls._autocommit):
                warn(u'Definition    of    bulk_size    in    {0}    forced    to    1,    was    less    than    1.'.format(cls.__name__))
                cls._bulk_size = 1
        except AttributeError:
            cls._bulk_size = (-1)
        else:
            if (not cls._autocommit):
                warn(u'Definition    of    bulk_size    in    {0}    has    no    affect    because    autocommit    is    false.'.format(cls.__name__))
        cls._datapoints = defaultdict(list)
        if (u'time' in cls._fields):
            cls._fields.remove(u'time')
        cls._type = namedtuple(cls.__name__, ((cls._fields + cls._tags) + [u'time']))
    return super(SeriesHelper, cls).__new__(cls)
