def values(self,<EOL>columns=None,<EOL>recurse=True,<EOL>flags=<NUM_LIT:0>,<EOL>mapper=None,<EOL>key='<STR_LIT:name>',<EOL>**get_options):
output = {}<EOL>schema = self.schema()<EOL>for column in columns or schema.columns(recurse=recurse, flags=flags).values():<EOL><INDENT>column = column if isinstance(column, orb.Column) else schema.column(column)<EOL>try:<EOL><INDENT>val_key = column if key == '<STR_LIT>' else getattr(column, key)()<EOL><DEDENT>except AttributeError:<EOL><INDENT>raise errors.OrbError(<EOL>'<STR_LIT>'<EOL>)<EOL><DEDENT>else:<EOL><INDENT>value = self.get(column, **get_options)<EOL>output[val_key] = mapper(value) if mapper else value<EOL><DEDENT><DEDENT>return output<EOL>
Returns a dictionary grouping the columns and their
current values.  If the inflated value is set to True,
then you will receive any foreign keys as inflated classes (if you
have any values that are already inflated in your class, then you
will still get back the class and not the primary key value).  Setting
the mapper option will map the value by calling the mapper method.

:param      useFieldNames | <bool>
            inflated | <bool>
            mapper | <callable> || None

:return     { <str> key: <variant>, .. }