After learning about TYPE_CHECKING i made it a habit to put all imports that were only needed for type checking into an if TYPE_CHECKING: guard. But now I am wondering if that is actually intended to be used like that. Checking whether an import is only needed at type checking time can get quite tedious and sometimes you run into situations were you introduced some code that made the import a requirement at runtime.

How do you use TYPE_CHECKING? Whenever it is possible or only when using it actually solves a circular import?

  • Rusty
    link
    English
    2
    edit-2
    1 year ago

    That’s a very cool feature, had no clue about it!

    If it doesn’t have any visible downsides, it’s be nice use it whenever possible. This should provide the additional benefit of having the imports clearly separated.

    The tediousness aspect of it makes me wonder though. I’d probably just only use it when I’m specifically importing something only for typing .

    Maybe could be a cool feature request for an lsp as well.