Improve typing support for the UNSET symbol.
Review Request #13191 — Created Aug. 7, 2023 and submitted
This reworks the internals of the UNSET symbol (which was introduced in
Djblets 3.3) and makes it easier to integrate it with typing logic and
UnsetSymbolis now an
UNSETto be defined as a
Literal. This works along with a new
Unsettable[_T]type alias to
mark whether a parameter or variable allows
UNSETto be set.
By making this a
Literal, type checkers can type narrow when a code
compares a value to
UNSET, avoiding any type errors that still wanted
UnsetSymbola possible value.
Made use of this in some in-progress code. Verified that mypy and pyright
successfully narrowed the types when comparing against