docs: def create_where():
      """ Create a grammar for the 'where' clause used by 'select' """
      conjunction = Forward().setResultsName("conjunction")
      nested = Group(Suppress("(") + conjunction + Suppress(")")).setResultsName(
          "conjunction"
      )
  
      maybe_nested = nested | constraint
      inverted = Group(not_ + maybe_nested).setResultsName("not")
      full_constraint = maybe_nested | inverted
      conjunction <<= full_constraint + OneOrMore(and_or + full_constraint)
      return upkey("where") + Group(conjunction | full_constraint).setResultsName("where")