in petastorm/ngram.py [0:0]
def convert_fields(self, unischema, field_list):
"""Convert all the fields in field_list into Unischema fields.
field_list can contain unischema fields and strings (regular expressions)
:param unischema: Unischema object
:param field_list: A list of unischema fields or strings (regular expressions)
:return: list of unischema fields
"""
# Split fields parameter to regex pattern strings and UnischemaField objects
regex_patterns = [f for f in field_list if isinstance(f, string_types)]
# We can not check type against UnischemaField because the artifact introduced by
# pickling, since depickled UnischemaField are of type collections.UnischemaField
# while withing depickling they are of petastorm.unischema.UnischemaField
# Since UnischemaField is a tuple, we check against it since it is invariant to
# pickling
unischema_field_objects = [f for f in field_list if isinstance(f, tuple)]
if len(unischema_field_objects) + len(regex_patterns) != len(field_list):
raise ValueError('"Elements of fields"/"timestamp field" must be either a string (regular expressions) or'
' an instance of UnischemaField class.')
converted_fields = unischema_field_objects + match_unischema_fields(unischema, regex_patterns)
return converted_fields