Skip to content

Commit 96e6304

Browse files
committed
Fix: Added better typings
1 parent aa28d4e commit 96e6304

2 files changed

Lines changed: 13 additions & 8 deletions

File tree

nullsafe/core.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
from typing import Any, Generic, TypeVar
2-
from functools import wraps
1+
from typing import Any, Generic, TypeVar, Union
32

43

54
T = TypeVar("T")
65

76

87
class NullSafe:
98

10-
def __getattr__(self, k: str):
9+
def __getattr__(self, k: str) -> "NullSafe":
1110
return undefined
1211

13-
def __getitem__(self, k: str):
12+
def __getitem__(self, k: str) -> "NullSafe":
1413
return undefined
1514

1615
def __bool__(self):
@@ -41,7 +40,7 @@ class NullSafeProxy(Generic[T]):
4140
def __init__(self, o: T) -> None:
4241
self.__o = o
4342

44-
def __getitem__(self, k: str) -> Any:
43+
def __getitem__(self, k: str) -> Union[Any, NullSafe]:
4544
try:
4645
val = self.__o.__getitem__(k)
4746
if val is None:
@@ -50,7 +49,7 @@ def __getitem__(self, k: str) -> Any:
5049
except (KeyError, AttributeError):
5150
return undefined
5251

53-
def __getattr__(self, name: str) -> Any:
52+
def __getattr__(self, name: str) -> Union[Any, NullSafe]:
5453
val = getattr(self.__o, name, undefined)
5554
return undefined if val is None else val
5655

@@ -59,8 +58,14 @@ def __setattr__(self, name: str, value: Any) -> None:
5958
return super().__setattr__(name, value)
6059
raise AttributeError(f"'{self.__class__.__name__}' object can't set attribute")
6160

61+
def __repr__(self) -> str:
62+
return f"{self.__class__.__module__}.{self.__class__.__name__}({repr(self.__o)})"
63+
64+
def __str__(self) -> str:
65+
return str(self.__o)
66+
6267

63-
def nullsafe(o: T) -> T:
68+
def nullsafe(o: T) -> Union[T, NullSafe, NullSafeProxy[T]]:
6469
if o == None:
6570
return undefined
6671
return NullSafeProxy(o)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
setup(
2323
name="nullsafe",
24-
version="0.1.1",
24+
version="0.1.2",
2525
author="Paaksing",
2626
author_email="paaksingtech@gmail.com",
2727
url="https://github.com/paaksing/nullsafe-python",

0 commit comments

Comments
 (0)