I think there's a bug in the populate.py code: when a string field has an IS_IN_SET(['a','b','c','d']) validator, populate will also add a fifth option '' (zero length string). This follows from it reading the field.options set (which includes the zero length string *unless* you set zero=None in the constructor).
I believe the right behaviour is to use field.theset() instead, which only includes the IS_IN_SET options without the zero length string. Does this make sense? Can anyone elaborate on the zero= option, and what it is useful for?

