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).
|
1. Make sure Java is installed (so `java --version` shows something sensible).
|
||||||
2. In the root directory of the repository, run `make generate-py`
|
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