Skip to content

DocTest sorts by lineno which may be int or None #94722

Description

@Strilanc

In doctest.py the following ordering is defined for the class DocTest:

    def __lt__(self, other):
        if not isinstance(other, DocTest):
            return NotImplemented
        return ((self.name, self.filename, self.lineno, id(self))
                <
                (other.name, other.filename, other.lineno, id(other)))

This is incorrect because the lineno field may be an integer and may be None, and comparisons between integers and None fail. Typically lineno is an integer, but _find_lineno explicitly can fall back to returning None so the field may be None:

    def _find_lineno(self, obj, source_lines):
        ...

        # We couldn't find the line number.
        return None

Linked PRs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions