code: def where(self, relation, filter_fn):
          ''' use this to filter VLists, simply provide a filter function and what relation to apply it to '''
          assert type(relation).__name__ in {'str','unicode'}, 'where needs the first arg to be a string'
          assert callable(filter_fn), 'filter_fn needs to be callable'
          return VList(i for i in self if relation in i._relations() and any(filter_fn(_()) for _ in i[relation])f where(self, relation, filter_fn):
          ''' use this to filter VLists, simply provide a filter function and what relation to apply it to '''
          assert type(relation).__name__ in {'str','unicode'}, 'where needs the first arg to be a string'
          assert callable(filter_fn), 'filter_fn needs to be callable'
          return VList(i for i in self if relation in i._relations() and any(filter_fn(_()) for _ in i[relation]))
docs: use this to filter VLists, simply provide a filter function and what relation to apply it to