<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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")