Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions optional/nothing.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
from types import NotImplementedType
from typing import Any
from typing import final

from typing_extensions import override


@final
class Nothing:
"""Represents the absence of a value.

Rarely instantiated on its own, see :func:`Optional.empty`"""

def __eq__(self, other: Any) -> bool | NotImplementedType:
@override
def __eq__(self, other: object) -> bool | NotImplementedType:
if not isinstance(other, Nothing):
return NotImplemented

return True

@override
def __repr__(self) -> str:
return "Optional.empty()"

Expand Down
9 changes: 7 additions & 2 deletions optional/something.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
from types import NotImplementedType
from typing import Any, Generic, TypeVar
from typing import Generic, TypeVar, final

from typing_extensions import override

T = TypeVar("T")


@final
class Something(Generic[T]):
"""Represents the presence of a value.

Expand All @@ -17,12 +20,14 @@ def __init__(self, value: T) -> None:

self._value = value

def __eq__(self, other: Any) -> bool | NotImplementedType:
@override
def __eq__(self, other: object) -> bool | NotImplementedType:
if not isinstance(other, Something):
return NotImplemented

return self._value == other._value

@override
def __repr__(self) -> str:
return f"Optional.of({self._value!r})"

Expand Down