% Identifiers recognized in python.

\ThisIsLanguage{py}

\input pywords-keywords3.tex

% Predefined constants
\MakeWord{True}{NamedConstant}
\MakeWord{False}{NamedConstant}
\MakeWord{None}{NamedConstant}
\MakeWord{NotImplemented}{NamedConstant}
\MakeWord{Ellipsis}{NamedConstant}
\MakeWord{__debug__}{NamedConstant}

% Built-in exceptions
\MakeWord{BaseException}{BuiltInException}
\MakeWord{Exception}{BuiltInException}
\MakeWord{ArithmeticError}{BuiltInException}
\MakeWord{BufferError}{BuiltInException}
\MakeWord{LookupError}{BuiltInException}
%
\MakeWord{AssertionError}{BuiltInException}
\MakeWord{AttributeError}{BuiltInException}
\MakeWord{EOFError}{BuiltInException}
\MakeWord{FloatingPointError}{BuiltInException}
\MakeWord{GeneratorExit}{BuiltInException}
\MakeWord{ImportError}{BuiltInException}
\MakeWord{ModuleNotFoundError}{BuiltInException}
\MakeWord{IndexError}{BuiltInException}
\MakeWord{KeyError}{BuiltInException}
\MakeWord{KeyboardInterrupt}{BuiltInException}
\MakeWord{MemoryError}{BuiltInException}
\MakeWord{NameError}{BuiltInException}
\MakeWord{NotImplementedError}{BuiltInException}
\MakeWord{OSError}{BuiltInException}
\MakeWord{OverflowError}{BuiltInException}
\MakeWord{PythonFinalizationError}{BuiltInException}
\MakeWord{RecursionError}{BuiltInException}
\MakeWord{ReferenceError}{BuiltInException}
\MakeWord{RuntimeError}{BuiltInException}
\MakeWord{StopIteration}{BuiltInFunction}
\MakeWord{StopAsyncIteration}{BuiltInFunction}
\MakeWord{SyntaxError}{BuiltInException}
\MakeWord{IndentationError}{BuiltInException}
\MakeWord{TabError}{BuiltInException}
\MakeWord{SystemError}{BuiltInException}
\MakeWord{SystemExit}{BuiltInFunction} 
\MakeWord{TypeError}{BuiltInException}
\MakeWord{UnboundLocalError}{BuiltInException}
\MakeWord{UnicodeError}{BuiltInException}
\MakeWord{UnicodeEncodeError}{BuiltInException}
\MakeWord{UnicodeDecodeError}{BuiltInException}
\MakeWord{UnicodeTranslateError}{BuiltInException}
\MakeWord{ValueError}{BuiltInException}
\MakeWord{ZeroDivisionError}{BuiltInException}
%
\MakeWord{IOError}{BuiltInException}
\MakeWord{EnvironmentError}{BuiltInException}
\MakeWord{WindowsError}{BuiltInException}
%
\MakeWord{BlockingIOError}{BuiltInException}
\MakeWord{ChildProcessError}{BuiltInException}
\MakeWord{ConnectionError}{BuiltInException}
\MakeWord{BrokenPipeError}{BuiltInException}
\MakeWord{ConnectionAbortedError}{BuiltInException}
\MakeWord{ConnectionRefusedError}{BuiltInException}
\MakeWord{ConnectionResetError}{BuiltInException}
\MakeWord{FileExistsError}{BuiltInException}
\MakeWord{FileNotFoundError}{BuiltInException}
\MakeWord{InterruptedError}{BuiltInException}
\MakeWord{AsADirectoryError}{BuiltInException}
\MakeWord{NotADirectoryError}{BuiltInException}
\MakeWord{PermissionError}{BuiltInException}
\MakeWord{ProcessLookupError}{BuiltInException}
\MakeWord{TimeoutError}{BuiltInException}
%
\MakeWord{Warning}{BuiltInException}
\MakeWord{UserWarning}{BuiltInException}
\MakeWord{DeprecationWarning}{BuiltInException}
\MakeWord{PendingDeprecationWarning}{BuiltInException}
\MakeWord{FutureWarning}{BuiltInException}
\MakeWord{SyntaxWarning}{BuiltInException}
\MakeWord{ImportWarning}{BuiltInException}
\MakeWord{RuntimeWarning}{BuiltInException}
\MakeWord{UnicodeWarning}{BuiltInException}
\MakeWord{BytesWarning}{BuiltInException}
\MakeWord{ResourceWarning}{BuiltInException}
%
\MakeWord{BaseExceptionGroup}{BuiltInException}
\MakeWord{ExceptionGroup}{BuiltInException}

\MakeWord{StandardError}{Removed} 

%%% Special methods %%%

\MakeWord{__new__}{BuiltInMethod}
\MakeWord{__init__}{BuiltInMethod}
\MakeWord{__del__}{BuiltInMethod}
\MakeWord{__repr__}{BuiltInMethod}
\MakeWord{__str__}{BuiltInMethod}
\MakeWord{__bytes__}{BuiltInMethod}
\MakeWord{__format__}{BuiltInMethod}
\MakeWord{__lt__}{BuiltInMethod}
\MakeWord{__le__}{BuiltInMethod}
\MakeWord{__eq__}{BuiltInMethod}
\MakeWord{__ne__}{BuiltInMethod}
\MakeWord{__gt__}{BuiltInMethod}
\MakeWord{__ge__}{BuiltInMethod}
\MakeWord{__hash__}{BuiltInMethod}
\MakeWord{__bool__}{BuiltInMethod}
\MakeWord{__getattr__}{BuiltInMethod}
\MakeWord{__getattribute__}{BuiltInMethod}
\MakeWord{__setattr__}{BuiltInMethod}
\MakeWord{__delattr__}{BuiltInMethod}
\MakeWord{__dir__}{BuiltInMethod}
%
\MakeWord{__class__}{BuiltInMethod}
\MakeWord{__get__}{BuiltInMethod}
\MakeWord{__set__}{BuiltInMethod}
\MakeWord{__delete__}{BuiltInMethod}
\MakeWord{__objclass__}{BuiltInMethod}
\MakeWord{__call__}{BuiltInMethod}
\MakeWord{__len__}{BuiltInMethod}
\MakeWord{__getitem__}{BuiltInMethod}
\MakeWord{__setitem__}{BuiltInMethod}
\MakeWord{__delitem__}{BuiltInMethod}
\MakeWord{__slots__}{BuiltInMethod}
\MakeWord{__init_subclass__}{BuiltInMethod}
\MakeWord{__set_name__}{BuiltInMethod}
\MakeWord{__mro_entries__}{BuiltInMethod}
\MakeWord{__set_name__}{BuiltInMethod}
\MakeWord{__instancecheck__}{BuiltInMethod}
\MakeWord{__subclasscheck__}{BuiltInMethod}
\MakeWord{__class_getitem__}{BuiltInMethod}
\MakeWord{__length_hint__}{BuiltInMethod}
\MakeWord{__missing__}{BuiltInMethod}
\MakeWord{__iter__}{BuiltInMethod}
\MakeWord{__reversed__}{BuiltInMethod}
\MakeWord{__constains__}{BuiltInMethod}
%
\MakeWord{__add__}{BuiltInMethod}
\MakeWord{__sub__}{BuiltInMethod}
\MakeWord{__mul__}{BuiltInMethod}
\MakeWord{__matmul__}{BuiltInMethod}
\MakeWord{__truediv__}{BuiltInMethod}
\MakeWord{__floordiv__}{BuiltInMethod}
\MakeWord{__mod__}{BuiltInMethod}
\MakeWord{__divmod__}{BuiltInMethod}
\MakeWord{__pow__}{BuiltInMethod}
\MakeWord{__lshift__}{BuiltInMethod}
\MakeWord{__rshift__}{BuiltInMethod}
\MakeWord{__and__}{BuiltInMethod}
\MakeWord{__xor__}{BuiltInMethod}
\MakeWord{__or__}{BuiltInMethod}
%
\MakeWord{__radd__}{BuiltInMethod}
\MakeWord{__rsub__}{BuiltInMethod}
\MakeWord{__rmul__}{BuiltInMethod}
\MakeWord{__rmatmul__}{BuiltInMethod}
\MakeWord{__rtruediv__}{BuiltInMethod}
\MakeWord{__rfloordiv__}{BuiltInMethod}
\MakeWord{__rmod__}{BuiltInMethod}
\MakeWord{__rdivmod__}{BuiltInMethod}
\MakeWord{__rpow__}{BuiltInMethod}
\MakeWord{__rlshift__}{BuiltInMethod}
\MakeWord{__rrshift__}{BuiltInMethod}
\MakeWord{__rand__}{BuiltInMethod}
\MakeWord{__rxor__}{BuiltInMethod}
\MakeWord{__ror__}{BuiltInMethod}
%
\MakeWord{__iadd__}{BuiltInMethod}
\MakeWord{__isub__}{BuiltInMethod}
\MakeWord{__imul__}{BuiltInMethod}
\MakeWord{__imatmul__}{BuiltInMethod}
\MakeWord{__itruediv__}{BuiltInMethod}
\MakeWord{__ifloordiv__}{BuiltInMethod}
\MakeWord{__imod__}{BuiltInMethod}
\MakeWord{__ipow__}{BuiltInMethod}
\MakeWord{__ilshift__}{BuiltInMethod}
\MakeWord{__irshift__}{BuiltInMethod}
\MakeWord{__iand__}{BuiltInMethod}
\MakeWord{__ixor__}{BuiltInMethod}
\MakeWord{__ior__}{BuiltInMethod}
%
\MakeWord{__neg__}{BuiltInMethod}
\MakeWord{__pos__}{BuiltInMethod}
\MakeWord{__abs__}{BuiltInMethod}
\MakeWord{__invert__}{BuiltInMethod}
\MakeWord{__complex__}{BuiltInMethod}
\MakeWord{__int__}{BuiltInMethod}
\MakeWord{__float__}{BuiltInMethod}
\MakeWord{__index__}{BuiltInMethod}
\MakeWord{__round__}{BuiltInMethod}
\MakeWord{__floor__}{BuiltInMethod}
\MakeWord{__ceil__}{BuiltInMethod}

\MakeWord{__enter__}{BuiltInMethod}
\MakeWord{__exit__}{BuiltInMethod}
\MakeWord{__match_args__}{BuiltInMethod}
\MakeWord{__buffer__}{BuiltInMethod}
\MakeWord{__release_buffer__}{BuiltInMethod}
\MakeWord{__annotations__}{BuiltInMethod}
\MakeWord{__annotate__}{BuiltInMethod}
\MakeWord{__await__}{BuiltInMethod}
\MakeWord{send}{BuiltInMethod}
\MakeWord{throw}{BuiltInMethod}
\MakeWord{close}{BuiltInMethod}
\MakeWord{__aiter__}{BuiltInMethod}
\MakeWord{__anext__}{BuiltInMethod}
\MakeWord{__aenter__}{BuiltInMethod}
\MakeWord{__aexit__}{BuiltInMethod}
\MakeWord{__index__}{BuiltInMethod}


\MakeWord{__cmp__}{Removed}
\MakeWord{__nonzero__}{Removed}
\MakeWord{__div__}{Removed}
\MakeWord{__rdiv__}{Removed}
\MakeWord{__idiv__}{Removed}
\MakeWord{__coerce__}{Removed}
\MakeWord{__getslice__}{Removed}
\MakeWord{__setslice__}{Removed}
\MakeWord{__delslice__}{Removed}
\MakeWord{__rcmp__}{Removed}
\MakeWord{__long__}{Removed}
\MakeWord{__oct__}{Removed}
\MakeWord{__hex__}{Removed}

%%% Builtin atributes %%%

\MakeWord{__doc__}{BuiltInAttribute}
\MakeWord{__name__}{BuiltInAttribute}
\MakeWord{__module__}{BuiltInAttribute}
\MakeWord{__bases__}{BuiltInAttribute}
\MakeWord{__dict__}{BuiltInAttribute}
\MakeWord{__context__}{BuiltInAttribute}
\MakeWord{__cause__}{BuiltInAttribute}
\MakeWord{__suppress_context__}{BuiltInAttribute}

%%% Builtin types %%%
% If they are used as functions, the code in Tcode_pycode will recognize it and format them as BuiltInFunction

\MakeWord{int}{BuiltInType}
\MakeWord{float}{BuiltInType}
\MakeWord{complex}{BuiltInType}
\MakeWord{bool}{BuiltInType}
\MakeWord{list}{BuiltInType}
\MakeWord{tuple}{BuiltInType}
\MakeWord{range}{BuiltInType}
\MakeWord{str}{BuiltInType}
\MakeWord{bytes}{BuiltInType}
\MakeWord{bytearray}{BuiltInType}
\MakeWord{memoryview}{BuiltInType}
\MakeWord{set}{BuiltInType}
\MakeWord{frozenset}{BuiltInType}
\MakeWord{dict}{BuiltInType}

%%% Builtin functions %%%

\MakeWord{abs}{BuiltInFunction}
\MakeWord{aiter}{BuiltInFunction}
\MakeWord{all}{BuiltInFunction}
\MakeWord{anext}{BuiltInFunction}
\MakeWord{any}{BuiltInFunction}
\MakeWord{ascii}{BuiltInFunction}
\MakeWord{bin}{BuiltInFunction}
\MakeWord{breakpoint}{BuiltInFunction}
\MakeWord{callable}{BuiltInFunction}
\MakeWord{chr}{BuiltInFunction}
\MakeWord{classmethod}{BuiltInFunction}
\MakeWord{compile}{BuiltInFunction}
\MakeWord{delattr}{BuiltInFunction}
\MakeWord{dir}{BuiltInFunction}
\MakeWord{divmod}{BuiltInFunction}
\MakeWord{enumerate}{BuiltInFunction}
\MakeWord{eval}{BuiltInFunction}
\MakeWord{exec}{BuiltInFunction}
\MakeWord{filter}{BuiltInFunction}
\MakeWord{float}{BuiltInFunction}
\MakeWord{format}{BuiltInFunction}
\MakeWord{getattr}{BuiltInFunction}
\MakeWord{globals}{BuiltInFunction}
\MakeWord{hasattr}{BuiltInFunction}
\MakeWord{hash}{BuiltInFunction}
\MakeWord{help}{BuiltInFunction}
\MakeWord{hex}{BuiltInFunction}
\MakeWord{id}{BuiltInFunction}
\MakeWord{input}{BuiltInFunction}
\MakeWord{isinstance}{BuiltInFunction}
\MakeWord{issubclass}{BuiltInFunction}
\MakeWord{iter}{BuiltInFunction}
\MakeWord{len}{BuiltInFunction}
\MakeWord{locals}{BuiltInFunction}
\MakeWord{map}{BuiltInFunction}
\MakeWord{max}{BuiltInFunction}
\MakeWord{min}{BuiltInFunction}
\MakeWord{next}{BuiltInFunction}
\MakeWord{object}{BuiltInFunction}
\MakeWord{oct}{BuiltInFunction}
\MakeWord{open}{BuiltInFunction}
\MakeWord{ord}{BuiltInFunction}
\MakeWord{pow}{BuiltInFunction}
\MakeWord{print}{BuiltInFunction}
\MakeWord{property}{BuiltInFunction}
\MakeWord{repr}{BuiltInFunction}
\MakeWord{reversed}{BuiltInFunction}
\MakeWord{round}{BuiltInFunction}
\MakeWord{setattr}{BuiltInFunction}
\MakeWord{slice}{BuiltInFunction}
\MakeWord{sorted}{BuiltInFunction}
\MakeWord{staticmethod}{BuiltInFunction}
\MakeWord{str}{BuiltInFunction}
\MakeWord{sum}{BuiltInFunction}
\MakeWord{super}{BuiltInFunction}
\MakeWord{type}{BuiltInFunction}
\MakeWord{vars}{BuiltInFunction}
\MakeWord{zip}{BuiltInFunction}
\MakeWord{__import__}{BuiltInFunction}

% __main__

\MakeWord{__main__}{TopLevelEnvironment}