summaryrefslogtreecommitdiff
path: root/git/compat.py
diff options
context:
space:
mode:
authorSebastian Thiel <sebastian.thiel@icloud.com>2021-05-13 10:25:42 +0800
committerSebastian Thiel <sebastian.thiel@icloud.com>2021-05-13 10:25:42 +0800
commit34356322ca137ae6183dfdd8ea6634b64512591a (patch)
tree0dfd3536a1b207d7518c27c7ccae99fe434ba56f /git/compat.py
parent2448ac4ca337665eb22b9dd5ca096ef625a8f52b (diff)
parentfed0cadffd20e48bed8e78fd51a245ad666c54f6 (diff)
downloadgitpython-34356322ca137ae6183dfdd8ea6634b64512591a.tar.gz
Merge branch 'addtypes'
Diffstat (limited to 'git/compat.py')
-rw-r--r--git/compat.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/git/compat.py b/git/compat.py
index 4ecd19a9..187618a2 100644
--- a/git/compat.py
+++ b/git/compat.py
@@ -43,10 +43,12 @@ defenc = sys.getfilesystemencoding()
@overload
def safe_decode(s: None) -> None: ...
+
@overload
-def safe_decode(s: Union[IO[str], AnyStr]) -> str: ...
+def safe_decode(s: AnyStr) -> str: ...
+
-def safe_decode(s: Union[IO[str], AnyStr, None]) -> Optional[str]:
+def safe_decode(s: Union[AnyStr, None]) -> Optional[str]:
"""Safely decodes a binary string to unicode"""
if isinstance(s, str):
return s
@@ -61,9 +63,11 @@ def safe_decode(s: Union[IO[str], AnyStr, None]) -> Optional[str]:
@overload
def safe_encode(s: None) -> None: ...
+
@overload
def safe_encode(s: AnyStr) -> bytes: ...
+
def safe_encode(s: Optional[AnyStr]) -> Optional[bytes]:
"""Safely encodes a binary string to unicode"""
if isinstance(s, str):
@@ -79,9 +83,11 @@ def safe_encode(s: Optional[AnyStr]) -> Optional[bytes]:
@overload
def win_encode(s: None) -> None: ...
+
@overload
def win_encode(s: AnyStr) -> bytes: ...
+
def win_encode(s: Optional[AnyStr]) -> Optional[bytes]:
"""Encode unicodes for process arguments on Windows."""
if isinstance(s, str):
@@ -93,7 +99,8 @@ def win_encode(s: Optional[AnyStr]) -> Optional[bytes]:
return None
-def with_metaclass(meta: Type[Any], *bases: Any) -> TBD: # type: ignore ## mypy cannot understand dynamic class creation
+# type: ignore ## mypy cannot understand dynamic class creation
+def with_metaclass(meta: Type[Any], *bases: Any) -> TBD:
"""copied from https://github.com/Byron/bcore/blob/master/src/python/butility/future.py#L15"""
class metaclass(meta): # type: ignore
@@ -105,4 +112,4 @@ def with_metaclass(meta: Type[Any], *bases: Any) -> TBD: # type: ignore ## mypy
return type.__new__(cls, name, (), d)
return meta(name, bases, d)
- return metaclass(meta.__name__ + 'Helper', None, {}) # type: ignore
+ return metaclass(meta.__name__ + 'Helper', None, {}) # type: ignore