(cls, name, bases, attrs)
return obj_cls
Creates and returns a new `DataObject` class with its declared
        fields and name.
Creates and returns a new `DataObject` class with its declared
        fields and name.
Creates and returns a new DataObject class with its declared fields and name .
def __new__(cls, name, bases, attrs):
        """Creates and returns a new `DataObject` class with its declared
        fields and name."""
        fields = {}
        new_fields = {}
        new_properties = {}

        # Inherit all the parent DataObject classes' fields.
        for base in bases:
            if isinstance(base, DataObjectMetaclass):
                fields.update(base.fields)

        # Move all the class's attributes that are Fields to the fields set.
        for attrname, field in attrs.items():
            if isinstance(field, remoteobjects.fields.Property):
                new_properties[attrname] = field
                if isinstance(field, remoteobjects.fields.Field):
                    new_fields[attrname] = field
            elif attrname in fields:
                # Throw out any parent fields that the subclass defined as
                # something other than a Field.
                del fields[attrname]

        fields.update(new_fields)
        attrs['fields'] = fields
        obj_cls = super(DataObjectMetaclass, cls).__new__(cls, name, bases, attrs)

        for field, value in new_properties.items():
            obj_cls.add_to_class(field, value)

        # Register the new class so Object fields can have forward-referenced it.
        classes_by_name[name] = obj_cls

        # Tell this class's fields what this class is, so they can find their
        # forward references later.
        for field in new_properties.values():
            field.of_cls = obj_cls

        return obj_cls
def __new__ ( cls , name , bases , attrs ) : fields = { } new_fields = { } new_properties = { } # Inherit all the parent DataObject classes' fields. for base in bases : if isinstance ( base , DataObjectMetaclass ) : fields . update ( base . fields ) # Move all the class's attributes that are Fields to the fields set. for attrname , field in attrs . items ( ) : if isinstance ( field , remoteobjects . fields . Property ) : new_properties [ attrname ] = field if isinstance ( field , remoteobjects . fields . Field ) : new_fields [ attrname ] = field elif attrname in fields : # Throw out any parent fields that the subclass defined as # something other than a Field. del fields [ attrname ] fields . update ( new_fields ) attrs [ 'fields' ] = fields obj_cls = super ( DataObjectMetaclass , cls ) . __new__ ( cls , name , bases , attrs ) for field , value in new_properties . items ( ) : obj_cls . add_to_class ( field , value ) # Register the new class so Object fields can have forward-referenced it. classes_by_name [ name ] = obj_cls # Tell this class's fields what this class is, so they can find their # forward references later. for field in new_properties . values ( ) : field . of_cls = obj_cls return obj_cls