// All the qstr definitions in this file are available as constants.
// That is, they are in ROM and you can reference them simply as MP_QSTR_xxxx.
// TODO make it so we can use #defines here to select only those words that will be used

Q(__build_class__)
Q(__class__)
Q(__doc__)
Q(__import__)
Q(__init__)
Q(__locals__)
Q(__main__)
Q(__module__)
Q(__name__)
Q(__next__)
Q(__qualname__)
Q(__repl_print__)

Q(__bool__)
Q(__len__)
Q(__getitem__)
Q(__setitem__)
Q(__add__)
Q(__sub__)
Q(__repr__)
Q(__str__)

Q(micropython)
Q(byte_code)
Q(native)
Q(viper)
Q(asm_thumb)

Q(Ellipsis)
Q(StopIteration)

Q(BaseException)
Q(ArithmeticError)
Q(AssertionError)
Q(AttributeError)
Q(BlockingIOError)
Q(BrokenPipeError)
Q(BufferError)
Q(BytesWarning)
Q(ChildProcessError)
Q(ConnectionAbortedError)
Q(ConnectionError)
Q(ConnectionRefusedError)
Q(ConnectionResetError)
Q(DeprecationWarning)
Q(EOFError)
Q(EnvironmentError)
Q(Exception)
Q(FileExistsError)
Q(FileNotFoundError)
Q(FloatingPointError)
Q(FutureWarning)
Q(GeneratorExit)
Q(IOError)
Q(ImportError)
Q(ImportWarning)
Q(IndentationError)
Q(IndexError)
Q(InterruptedError)
Q(IsADirectoryError)
Q(KeyError)
Q(LookupError)
Q(MemoryError)
Q(NameError)
Q(NotADirectoryError)
Q(NotImplementedError)
Q(OSError)
Q(OverflowError)
Q(PendingDeprecationWarning)
Q(PermissionError)
Q(ProcessLookupError)
Q(ReferenceError)
Q(ResourceWarning)
Q(RuntimeError)
Q(RuntimeWarning)
Q(SyntaxError)
Q(SyntaxWarning)
Q(SystemError)
Q(SystemExit)
Q(TabError)
Q(TimeoutError)
Q(TypeError)
Q(UnboundLocalError)
Q(UnicodeWarning)
Q(UserWarning)
Q(ValueError)
Q(Warning)
Q(ZeroDivisionError)

Q(None)
Q(False)
Q(True)
Q(object)

Q(NoneType)

Q(abs)
Q(all)
Q(any)
Q(array)
Q(bool)
Q(bytearray)
Q(bytes)
Q(callable)
Q(chr)
Q(classmethod)
Q(collections)
Q(complex)
Q(dict)
Q(dir)
Q(divmod)
Q(enumerate)
Q(eval)
Q(exec)
Q(filter)
Q(float)
Q(hash)
Q(id)
Q(int)
Q(isinstance)
Q(issubclass)
Q(iter)
Q(len)
Q(list)
Q(map)
Q(max)
Q(min)
Q(namedtuple)
Q(next)
Q(ord)
Q(path)
Q(pow)
Q(print)
Q(range)
Q(repr)
Q(set)
Q(sorted)
Q(staticmethod)
Q(sum)
Q(super)
Q(str)
Q(sys)
Q(tuple)
Q(type)
Q(zip)

Q(append)
Q(pop)
Q(sort)
Q(join)
Q(strip)
Q(format)
Q(key)
Q(reverse)

Q(bound_method)
Q(closure)
Q(dict_view)
Q(function)
Q(generator)
Q(iterator)
Q(module)
Q(slice)

Q(math)
Q(e)
Q(pi)
Q(sqrt)
Q(pow)
Q(exp)
Q(expm1)
Q(log)
Q(log2)
Q(log10)
Q(cosh)
Q(sinh)
Q(tanh)
Q(acosh)
Q(asinh)
Q(atanh)
Q(cos)
Q(sin)
Q(tan)
Q(acos)
Q(asin)
Q(atan)
Q(atan2)
Q(ceil)
Q(copysign)
Q(fabs)
Q(fmod)
Q(floor)
Q(isfinite)
Q(isinf)
Q(isnan)
Q(trunc)
Q(modf)
Q(frexp)
Q(ldexp)
Q(degrees)
Q(radians)
Q(erf)
Q(erfc)
Q(gamma)
Q(lgamma)

Q(mem_total)
Q(mem_current)
Q(mem_peak)

Q(<module>)
Q(<lambda>)
Q(<listcomp>)
Q(<dictcomp>)
Q(<setcomp>)
Q(<genexpr>)
Q(<string>)
Q(<stdin>)
