@@ -1219,8 +1219,8 @@ If a code object represents a function, the first item in
12191219:attr: `~codeobject.co_consts ` is
12201220the documentation string of the function, or ``None `` if undefined.
12211221
1222- The :meth: ` !co_positions ` method
1223- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1222+ Methods on code objects
1223+ ~~~~~~~~~~~~~~~~~~~~~~~
12241224
12251225.. method :: codeobject.co_positions()
12261226
@@ -1255,6 +1255,41 @@ The :meth:`!co_positions` method
12551255 :option: `-X ` ``no_debug_ranges `` command line flag or the :envvar: `PYTHONNODEBUGRANGES `
12561256 environment variable can be used.
12571257
1258+ .. method :: codeobject.co_lines()
1259+
1260+ Returns an iterator that yields information about successive ranges of
1261+ :term: `bytecode `\s . Each item yielded is a ``(start, end, lineno) ``
1262+ :class: `tuple `:
1263+
1264+ * ``start `` (an :class: `int `) represents the offset (inclusive) of the start
1265+ of the :term: `bytecode ` range
1266+ * ``end `` (an :class: `int `) represents the offset (inclusive) of the end of
1267+ the :term: `bytecode ` range
1268+ * ``lineno `` is an :class: `int ` representing the line number of the
1269+ :term: `bytecode ` range, or ``None `` if the bytecodes in the given range
1270+ have no line number
1271+
1272+ The items yielded generated will have the following properties:
1273+
1274+ * The first range yielded will have a ``start `` of 0.
1275+ * The ``(start, end) `` ranges will be non-decreasing and consecutive. That
1276+ is, for any pair of :class: `tuple `\s , the ``start `` of the second will be
1277+ equal to the ``end `` of the first.
1278+ * No range will be backwards: ``end >= start `` for all triples.
1279+ * The :class: `tuple ` yielded will have ``end `` equal to the size of the
1280+ :term: `bytecode `.
1281+
1282+ Zero-width ranges, where ``start == end ``, are allowed. Zero-width ranges
1283+ are used for lines that are present in the source code, but have been
1284+ eliminated by the :term: `bytecode ` compiler.
1285+
1286+ .. versionadded :: 3.10
1287+
1288+ .. seealso ::
1289+
1290+ :pep: `626 ` - Precise line numbers for debugging and other tools.
1291+ The PEP that introduced the :meth: `!co_lines ` method.
1292+
12581293
12591294.. _frame-objects :
12601295
0 commit comments