Addon: add explanation of weird type-checking code
This commit is contained in:
parent
91f2fb2067
commit
21d552c600
@ -13,3 +13,19 @@ poetry install
|
||||
|
||||
1. Make sure Java is installed (so `java --version` shows something sensible).
|
||||
2. In the root directory of the repository, run `make generate-py`
|
||||
|
||||
|
||||
## Type annotations and lazy imports
|
||||
|
||||
This add-on tries to only load Python packages from wheel files when necessary. Loading things from wheels is tricky, as they basically pollute the `sys.modules` dictionary and thus can "leak" to other add-ons. This can cause conflicts when, for example, another add-on is using a different version of the same package.
|
||||
|
||||
The result is that sometimes there are some strange hoops to jump through. The most obvious one is for type annotations. This is why you'll see code like:
|
||||
|
||||
```
|
||||
if TYPE_CHECKING:
|
||||
from .bat_interface import PackThread
|
||||
else:
|
||||
PackThread = object
|
||||
```
|
||||
|
||||
This makes it possible to declare a function with `def func() -> PackThread`, without having to load `bat_interface` immediately at import time.
|
||||
|
Loading…
x
Reference in New Issue
Block a user