Skip to content

Commit

Permalink
Prevent module creation pyright type errors
Browse files Browse the repository at this point in the history
Creating any Haiku module gives type errors on the latest Pyright due to
the module metaclass specification
(microsoft/pyright#5561).  The issue is
that the ideal type annotation is an intersection of `type[T]` and
`ModuleMetaclass` where `T` is the return type, but Python doesn't have
type intersections yet.  The authors of the code chose `type[T]`, but
Pyright requires `ModuleMetaclass`.
  • Loading branch information
NeilGirdhar committed Aug 1, 2023
1 parent c22867d commit 0a36df9
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion haiku/_src/module.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def __new__( # pylint: disable=bad-classmethod-argument

return cls

def __call__(cls: Type[T], *args, **kwargs) -> T: # pylint: disable=no-self-argument
def __call__(cls: "ModuleMetaclass", *args, **kwargs) -> Any: # pylint: disable=no-self-argument
# Call new such that we have an un-initialized module instance that we can
# still reference even if there is an exception during __init__. This is
# needed such that we can make sure the name_scope constructed in __init__
Expand Down

0 comments on commit 0a36df9

Please sign in to comment.