docs: def factory(self, data, manager=None):
          """Factory func for filters.
  
          data - policy config for filters
          manager - resource type manager (ec2, s3, etc)
          """
  
          # Make the syntax a little nicer for common cases.
          if isinstance(data, dict) and len(data) == 1 and 'type' not in data:
              op = list(data.keys())[0]
              if op == 'or':
                  return Or(data, self, manager)
              elif op == 'and':
                  return And(data, self, manager)
              elif op == 'not':
                  return Not(data, self, manager)
              return ValueFilter(data, manager)
          if isinstance(data, six.string_types):
              filter_type = data
              data = {'type': data}
          else:
              filter_type = data.get('type')
          if not filter_type:
              raise PolicyValidationError(
                  "%s Invalid Filter %s" % (
                      self.plugin_type, data))
          filter_class = self.get(filter_type)
          if filter_class is not None:
              return filter_class(data, manager)
          else:
              raise PolicyValidationError(
                  "%s Invalid filter type %s" % (
                      self.plugin_type, data))