There was an error while loading. Please reload this page.
1 parent d812818 commit cb5688dCopy full SHA for cb5688d
2 files changed
git/compat.py
@@ -97,3 +97,19 @@ def win_encode(s: Optional[AnyStr]) -> Optional[bytes]:
97
elif s is not None:
98
raise TypeError('Expected bytes or text, but got %r' % (s,))
99
return None
100
+
101
102
+# type: ignore ## mypy cannot understand dynamic class creation
103
+def with_metaclass(meta: Type[Any], *bases: Any) -> TBD:
104
+ """copied from https://github.com/Byron/bcore/blob/master/src/python/butility/future.py#L15"""
105
106
+ class metaclass(meta): # type: ignore
107
+ __call__ = type.__call__
108
+ __init__ = type.__init__ # type: ignore
109
110
+ def __new__(cls, name: str, nbases: Optional[Tuple[int, ...]], d: Dict[str, Any]) -> TBD:
111
+ if nbases is None:
112
+ return type.__new__(cls, name, (), d)
113
+ return meta(name, bases, d)
114
115
+ return metaclass(meta.__name__ + 'Helper', None, {}) # type: ignore
git/config.py
@@ -19,6 +19,7 @@
19
defenc,
20
force_text,
21
is_win,
22
+ with_metaclass,
23
)
24
25
from git.util import LockFile
@@ -228,7 +229,7 @@ def get_config_path(config_level: Lit_config_levels) -> str:
228
229
assert_never(config_level, ValueError(f"Invalid configuration level: {config_level!r}"))
230
231
-class GitConfigParser(cp.RawConfigParser, metaclass=MetaParserBuilder):
232
+class GitConfigParser(with_metaclass(MetaParserBuilder, cp.RawConfigParser)): # type: ignore ## mypy does not understand dynamic class creation # noqa: E501
233
234
"""Implements specifics required to read git style configuration files.
235
0 commit comments