Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

There should be an option to process TYPE_CHECKING #484

Open
1 task done
jolaf opened this issue Sep 8, 2024 · 6 comments
Open
1 task done

There should be an option to process TYPE_CHECKING #484

jolaf opened this issue Sep 8, 2024 · 6 comments

Comments

@jolaf
Copy link
Contributor

jolaf commented Sep 8, 2024

Things to check first

  • I have searched the existing issues and didn't find my feature already requested there

Feature description

It would be nice for typeguard to actually process what's inside the if TYPE_CHECKING blocks, actually importing the referenced modules etc.

It would be nice to have an option to turn on this behavior.

Use case

That's not how an app would work without typeguard, but that would allow to check the app for type correctness more thoroughly.

@agronholm
Copy link
Owner

Would you consider becoming a maintainer for Typeguard? I don't have the bandwidth to keep up the development, as I'm mired in developing many other projects.

@agronholm
Copy link
Owner

This, for example, is a major effort for a run-time type checker which does not normally even see the if TYPE_CHECKING: blocks.

@jolaf
Copy link
Contributor Author

jolaf commented Sep 8, 2024

Would you consider becoming a maintainer for Typeguard?

I would happily, but unfortunately I'm not up to the task. :(

@jolaf
Copy link
Contributor Author

jolaf commented Sep 8, 2024

run-time type checker which does not normally even see the if TYPE_CHECKING: blocks

You mean they're somehow excluded from the source tree when importing the module?

Is it possible to just set TYPE_CHECKING to True when importing the module?

I was thinking that you're making a special effort to look into TYPE_CHECKING blocks to make sure the annotations mentioning things imported there are not producing errors. If TYPE_CHECKING is somehow set to True, those efforts may be just turned off.

@agronholm
Copy link
Owner

You mean they're somehow excluded from the source tree when importing the module?

A run-time type checker just sees what's there at run time, it doesn't normally inspect the source code, and this isn't even always possible (like in the REPL). Normally, if TYPE_CHECKING is set to False, which it is always at run time, no code in the block is executed so whatever imports you have there aren't done.

Typeguard goes out of its way to parse and modify the source code, but that comes with an additional, massive increase to complexity and a performance hit that some users are unhappy with.

Is it possible to just set TYPE_CHECKING to True when importing the module?

That's not a viable option. In these blocks, it's customary to do things that don't work at all at run time, like importing Typeshed types.

@jolaf
Copy link
Contributor Author

jolaf commented Sep 8, 2024

That's not a viable option.

Well, everything I talk about here is only an option.
It seems to me it would be nice if a user could choose, to execute TYPE_CHECKING blocks or not, in their particular case.

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

No branches or pull requests

2 participants