@@ -4,21 +4,28 @@ def __init__(self, *args, **kwargs):
44 super ().__init__ ()
55 self .__stub_args = args
66 self .__stub_kwargs = kwargs
7+ self .__repr = None
8+
9+ def _with_repr (self , new_repr ):
10+ new_obj = self .__class__ (* self .__stub_args , ** self .__stub_kwargs )
11+ new_obj .__repr = new_repr
12+ return new_obj
713
814 def __repr__ (self ):
15+ if self .__repr is not None :
16+ return self .__repr
17+
918 argstr = ", " .join (self .__stub_args )
10- kwargstr = ", " .join (
11- f"{ kw } ={ val } " for kw , val in self .__stub_kwargs .items ()
12- )
19+ kwargstr = ", " .join (f"{ kw } ={ val } " for kw , val in self .__stub_kwargs .items ())
1320
1421 in_parens = argstr
1522 if kwargstr :
1623 in_parens += ", " + kwargstr
1724
18- return f"{ self .__qualname__ } ({ in_parens } )"
25+ return f"{ self .__class__ . __qualname__ } ({ in_parens } )"
1926
2027
21- def stub_factory (klass , name , _seen = {}):
28+ def stub_factory (klass , name , * , with_repr = None , _seen = {}):
2229 if (klass , name ) not in _seen :
2330
2431 class Stub (klass ):
@@ -29,6 +36,9 @@ def __init__(self, *args, **kwargs):
2936
3037 Stub .__name__ = name
3138 Stub .__qualname__ = name
32- _seen .setdefault ((klass , name ), Stub )
39+ if with_repr is not None :
40+ Stub ._repr = None
41+
42+ _seen .setdefault ((klass , name , with_repr ), Stub )
3343
34- return _seen [(klass , name )]
44+ return _seen [(klass , name , with_repr )]
0 commit comments