LGTM. Thanks for working on this. Comments inline:

On Mon, 2022-01-17 at 15:20 -0800, David Foster wrote:

[snip]

Regarding allowing mixing (Not)Required[] with Annotated[] in ANY nesting order, I am somewhat conflicted: It would be easier (at least in mypy and perhaps in pyright [1]) to require that (Not)Required[] be on the *outside* of Annotated[] and never on the inside. But from a user's point of view, that restriction feels somewhat arbitrary to me. Comments?

I already have to navigate this with Annotated[Optional[...]] and Optional[Annotated[...]]. I've definitely seen cases where each is valid, so currently allow for both.

[snip]

-  Omittable – too easy to confuse with optional

The train is probably too far out of the station, but...

I'd actually be pretty comfortable with just `Omittable`, which would only be usable if `total=True`. I think its meaning is clear, and given Optional should be eventually deprecated by PEP 604, think such confusion could be overcome.

[snip]