default.py 850 B

1234567891011121314151617181920212223242526272829303132
  1. from typing import Any, TypeVar
  2. class _DefaultPlaceholder:
  3. """
  4. You shouldn't use this class directly.
  5. It's used internally to recognize when a default value has been overwritten, even
  6. if the overridden default value was truthy.
  7. """
  8. def __init__(self, value: Any):
  9. self.value = value
  10. def __bool__(self) -> bool:
  11. return bool(self.value)
  12. def __eq__(self, o: object) -> bool:
  13. return isinstance(o, _DefaultPlaceholder) and o.value == self.value
  14. _TDefaultType = TypeVar("_TDefaultType")
  15. def Default(value: _TDefaultType) -> _TDefaultType:
  16. """
  17. You shouldn't use this function directly.
  18. It's used internally to recognize when a default value has been overwritten, even
  19. if the overridden default value was truthy.
  20. """
  21. return _DefaultPlaceholder(value) # type: ignore