code: def human_description_en(self, extra=None):
      bits = []
      if extra:
          bits.extend(extra)
      for column, lookup, value in self.selections():
          filter = self._filters_by_key.get(lookup, None)
          if filter:
              bits.append(filter.human_clause(column, value))
      # Comma separated, with an ' and ' at the end
      and_bits = []
      commas, tail = bits[:-1], bits[-1:]
      if commas:
          and_bits.append(", ".join(commas))
      if tail:
          and_bits.append(tail[0])
      s = " and ".join(and_bits)
      if not s:
          return ""
      return f"where {s}"
  
imports: from datasette import hookimpl
  from datasette.views.base import DatasetteError
  from datasette.utils.asgi import BadRequest
  import json
  import numbers
  from .utils import detect_json1, escape_sqlite, path_with_removed_args
label_desc: Use image node_id 3 for calling the Filters obj's underlying member method code with example usage: obj.human_description_en(extra) and returns: str, s, str