| | from __future__ import annotations |
| |
|
| | import enum |
| | import typing as t |
| |
|
| |
|
| | class Sentinel(enum.Enum): |
| | """Enum used to define sentinel values. |
| | |
| | .. seealso:: |
| | |
| | `PEP 661 - Sentinel Values <https://peps.python.org/pep-0661/>`_. |
| | """ |
| |
|
| | UNSET = object() |
| | FLAG_NEEDS_VALUE = object() |
| |
|
| | def __repr__(self) -> str: |
| | return f"{self.__class__.__name__}.{self.name}" |
| |
|
| |
|
| | UNSET = Sentinel.UNSET |
| | """Sentinel used to indicate that a value is not set.""" |
| |
|
| | FLAG_NEEDS_VALUE = Sentinel.FLAG_NEEDS_VALUE |
| | """Sentinel used to indicate an option was passed as a flag without a |
| | value but is not a flag option. |
| | |
| | ``Option.consume_value`` uses this to prompt or use the ``flag_value``. |
| | """ |
| |
|
| | T_UNSET = t.Literal[UNSET] |
| | """Type hint for the :data:`UNSET` sentinel value.""" |
| |
|
| | T_FLAG_NEEDS_VALUE = t.Literal[FLAG_NEEDS_VALUE] |
| | """Type hint for the :data:`FLAG_NEEDS_VALUE` sentinel value.""" |
| |
|