I have a 'base' module where I define some type aliases, such as: from typing import List, Tuple Block = [int, Tuple[int]] Blocks = List[Block] Tags = List[str] I would like to import these aliases into other modules so that the 'base' module provides the definitive alias. Currently, if I attempt to import the type aliases using: from base_module import Tags, Blocks Pycharm shows no error, but when I attempt to execute the code I get the error: ImportError: cannot import name 'Tags' I see that there has been some discussion related to this in 2015, but I can't find any documentation saying that something like this has been implemented.
This is likely an issue with the setup of your project, not with type aliases. You haven't given enough information to tell me what the real problem is. I'm not sure what you mean by "I still can't compile 'Blocks'".
> Block = [int, Tuple[int]] > Blocks = List[Block] These are both invalid type aliases (I have no idea why PyCharm does not flag them, you could report this at PyCharm issue tracker). I am not sure what exactly you want. If you want a list of either integers or tuples of integers, then you should write for example: Block = Union[int, Tuple[int, ...]] Blocks = List[Block] Concerning import, this is definitely not a problem with aliases. What I have noticed is that you write "I have a 'base' module ..." and then "from base_module import ...", if you have a module named base.py, then you should write: from base import Blocks, Tags Or maybe you just have an import cycle...