The description is best gleaned from the following mypy issue: python/mypy#1284 (comment) and following. We're going with option (A).
Really brief example:
from typing import NewType UserId = NewType('UserId', int) Now to the type checker UserId is a new type that's compatible with int, but converting an int to a UserId requires a special cast form, UserId(x). At runtime UserId instances are just ints (not a subclass!) and UserId() is a dummy function that just returns its argument.