Skip to content

Commit ae9d56e

Browse files
committed
Make Iterable deprecation warning on subclassing
1 parent 3cef949 commit ae9d56e

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

git/util.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,10 +1017,12 @@ def __delitem__(self, index: Union[SupportsIndex, int, slice, str]) -> Any:
10171017
class IterableClassWatcher(type):
10181018
def __init__(cls, name, bases, clsdict):
10191019
for base in bases:
1020-
if type(base) == cls:
1021-
warnings.warn("GitPython Iterable is deprecated due to naming clash. Use IterableObj instead",
1022-
DeprecationWarning)
1023-
super(IterableClassWatcher, cls).__init__(name, bases, clsdict)
1020+
if type(base) == IterableClassWatcher:
1021+
warnings.warn(f"GitPython Iterable subclassed by {name}. "
1022+
"Iterable is deprecated due to naming clash, "
1023+
"Use IterableObj instead \n",
1024+
DeprecationWarning,
1025+
stacklevel=2)
10241026

10251027

10261028
class Iterable(object):

t.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
1+
import warnings
2+
3+
14
class Watcher(type):
25
def __init__(cls, name, bases, clsdict):
3-
[print("ooooo") for base in bases if issubclass(base, name)]
4-
super(Watcher, cls).__init__(name, bases, clsdict)
6+
for base in bases:
7+
if type(base) == Watcher:
8+
warnings.warn(f"GitPython Iterable subclassed by {name}. "
9+
"Iterable is deprecated due to naming clash, "
10+
"Use IterableObj instead \n",
11+
DeprecationWarning,
12+
stacklevel=2)
513

614

715
class SuperClass(metaclass=Watcher):
@@ -15,5 +23,6 @@ class SubClass0(SuperClass):
1523
class SubClass1(SuperClass):
1624
print("test")
1725

26+
1827
class normo():
1928
print("wooo")

0 commit comments

Comments
 (0)