I think if that some of these concepts should just be included with the 3.9 Annotated Type
Annotated[IO[str], unpure]
in 3.9 and above if the authors want to commit to type hints being core to this. I agree that the decorators feel a little wrong