def _convert(self, value): """Returns a PasswordHash from the given string. PasswordHash instances or None values will return unchanged. Strings will be hashed and the resulting PasswordHash returned. Any other input will result in a TypeError. """ if isinstance(value, PasswordHash): return value elif isinstance(value, basestring): return PasswordHash.new(value, self.rounds) elif value is not None: raise TypeError( 'Cannot convert {} to a PasswordHash'.format(type(value)))