parameters: (op)
return_statement: return {
          operator.add: "+",
          radd: "+",
          operator.mul: "*",
          rmul: "*",
          operator.sub: "-",
          rsub: "-",
          operator.truediv: "/",
          rtruediv: "/",
          operator.floordiv: "//",
          rfloordiv: "//",
          operator.mod: None,  # TODO: Why None for mod but '%' for rmod?
          rmod: "%",
          operator.pow: "**",
          rpow: "**",
          operator.eq: "==",
          operator.ne: "!=",
          operator.le: "<=",
          operator.lt: "<",
          operator.ge: ">=",
          operator.gt: ">",
          operator.and_: "&",
          rand_: "&",
          operator.or_: "|",
          ror_: "|",
          operator.xor: "^",
          rxor: "^",
          divmod: None,
          rdivmod: None,
      }[op]
docstring: Find the operation string, if any, to pass to numexpr for this
      operation.
  
      Parameters
      ----------
      op : binary operator
  
      Returns
      -------
      op_str : string or None
docstring_summary: Find the operation string, if any, to pass to numexpr for this
      operation.
docstring_tokens: Find the operation string if any to pass to numexpr for this operation .
function: def _get_opstr(op):
      """
      Find the operation string, if any, to pass to numexpr for this
      operation.
  
      Parameters
      ----------
      op : binary operator
  
      Returns
      -------
      op_str : string or None
      """
  
      return {
          operator.add: "+",
          radd: "+",
          operator.mul: "*",
          rmul: "*",
          operator.sub: "-",
          rsub: "-",
          operator.truediv: "/",
          rtruediv: "/",
          operator.floordiv: "//",
          rfloordiv: "//",
          operator.mod: None,  # TODO: Why None for mod but '%' for rmod?
          rmod: "%",
          operator.pow: "**",
          rpow: "**",
          operator.eq: "==",
          operator.ne: "!=",
          operator.le: "<=",
          operator.lt: "<",
          operator.ge: ">=",
          operator.gt: ">",
          operator.and_: "&",
          rand_: "&",
          operator.or_: "|",
          ror_: "|",
          operator.xor: "^",
          rxor: "^",
          divmod: None,
          rdivmod: None,
      }[op]
function_tokens: def _get_opstr ( op ) : return { operator . add : "+" , radd : "+" , operator . mul : "*" , rmul : "*" , operator . sub : "-" , rsub : "-" , operator . truediv : "/" , rtruediv : "/" , operator . floordiv : "//" , rfloordiv : "//" , operator . mod : None , # TODO: Why None for mod but '%' for rmod? rmod : "%" , operator . pow : "**" , rpow : "**" , operator . eq : "==" , operator . ne : "!=" , operator . le : "<=" , operator . lt : "<" , operator . ge : ">=" , operator . gt : ">" , operator . and_ : "&" , rand_ : "&" , operator . or_ : "|" , ror_ : "|" , operator . xor : "^" , rxor : "^" , divmod : None , rdivmod : None , } [ op ]