Navigation

The tokenize module provides a lexical scanner for Python source code,
implemented in Python. The scanner in this module returns comments as tokens
as well, making it useful for implementing “pretty-printers,” including
colorizers for on-screen displays.

The tokenize() generator requires one argument, readline, which
must be a callable object which provides the same interface as the
readline() method of built-in file objects (see section
File Objects). Each call to the function should return one
line of input as bytes.

The generator produces 5-tuples with these members: the token type; the
token string; a 2-tuple (srow,scol) of ints specifying the row and
column where the token begins in the source; a 2-tuple (erow,ecol) of
ints specifying the row and column where the token ends in the source; and
the line on which the token was found. The line passed (the last tuple item)
is the logical line; continuation lines are included.

tokenize() determines the source encoding of the file by looking for a
UTF-8 BOM or encoding cookie, according to PEP 263.

All constants from the token module are also exported from
tokenize, as are three additional token type values:

Token value used to indicate a non-terminating newline. The NEWLINE token
indicates the end of a logical line of Python code; NL tokens are generated
when a logical line of code is continued over multiple physical lines.

Converts tokens back into Python source code. The iterable must return
sequences with at least two elements, the token type and the token string.
Any additional sequence elements are ignored.

The reconstructed script is returned as a single string. The result is
guaranteed to tokenize back to match the input so that the conversion is
lossless and round-trips are assured. The guarantee applies only to the
token type and token string as the spacing between tokens (column
positions) may change.

It returns bytes, encoded using the ENCODING token, which is the first
token sequence output by tokenize().

tokenize() needs to detect the encoding of source files it tokenizes. The
function it uses to do this is available: