@@ -125,6 +125,23 @@ def _make_name():
125125 return '%s-%s' % (process .current_process ()._config ['semprefix' ],
126126 next (SemLock ._rand ))
127127
128+ def _get_procname_and_count (self ):
129+ try :
130+ if self ._semlock ._is_mine ():
131+ name = process .current_process ().name
132+ if threading .current_thread ().name != 'MainThread' :
133+ name += '|' + threading .current_thread ().name
134+ count = self ._semlock ._count ()
135+ elif not self ._semlock ._is_zero ():
136+ name , count = 'None' , 0
137+ elif self ._semlock ._count () > 0 :
138+ name , count = 'SomeOtherThread' , 'nonzero'
139+ else :
140+ name , count = 'SomeOtherProcess' , 'nonzero'
141+ except Exception :
142+ name , count = 'unknown' , 'unknown'
143+ return name , count
144+
128145#
129146# Semaphore
130147#
@@ -143,11 +160,12 @@ def get_value(self):
143160 return self ._semlock ._get_value ()
144161
145162 def __repr__ (self ):
163+ res = super ().__repr__ ()
146164 try :
147165 value = self .get_value ()
148166 except Exception :
149167 value = 'unknown'
150- return '<%s (value=%s )>' % ( self . __class__ . __name__ , value )
168+ return f'< { res [ 1 : - 1 ] } (value={ value } )>'
151169
152170#
153171# Bounded semaphore
@@ -159,12 +177,13 @@ def __init__(self, value=1, *, ctx):
159177 SemLock .__init__ (self , SEMAPHORE , value , value , ctx = ctx )
160178
161179 def __repr__ (self ):
180+ res = object .__repr__ (self )
162181 try :
163182 value = self .get_value ()
164183 except Exception :
165184 value = 'unknown'
166- return '<%s (value=%s, maxvalue=%s)>' % \
167- ( self .__class__ . __name__ , value , self . _semlock .maxvalue )
185+ return f'< { res [ 1 : - 1 ] } (value={ value } , ' \
186+ f'maxvalue= { self ._semlock .maxvalue } )>'
168187
169188#
170189# Non-recursive lock
@@ -176,20 +195,9 @@ def __init__(self, *, ctx):
176195 SemLock .__init__ (self , SEMAPHORE , 1 , 1 , ctx = ctx )
177196
178197 def __repr__ (self ):
179- try :
180- if self ._semlock ._is_mine ():
181- name = process .current_process ().name
182- if threading .current_thread ().name != 'MainThread' :
183- name += '|' + threading .current_thread ().name
184- elif not self ._semlock ._is_zero ():
185- name = 'None'
186- elif self ._semlock ._count () > 0 :
187- name = 'SomeOtherThread'
188- else :
189- name = 'SomeOtherProcess'
190- except Exception :
191- name = 'unknown'
192- return '<%s(owner=%s)>' % (self .__class__ .__name__ , name )
198+ res = super ().__repr__ ()
199+ name , _ = self ._get_procname_and_count ()
200+ return f'<{ res [1 :- 1 ]} (owner={ name } )>'
193201
194202#
195203# Recursive lock
@@ -201,21 +209,9 @@ def __init__(self, *, ctx):
201209 SemLock .__init__ (self , RECURSIVE_MUTEX , 1 , 1 , ctx = ctx )
202210
203211 def __repr__ (self ):
204- try :
205- if self ._semlock ._is_mine ():
206- name = process .current_process ().name
207- if threading .current_thread ().name != 'MainThread' :
208- name += '|' + threading .current_thread ().name
209- count = self ._semlock ._count ()
210- elif not self ._semlock ._is_zero ():
211- name , count = 'None' , 0
212- elif self ._semlock ._count () > 0 :
213- name , count = 'SomeOtherThread' , 'nonzero'
214- else :
215- name , count = 'SomeOtherProcess' , 'nonzero'
216- except Exception :
217- name , count = 'unknown' , 'unknown'
218- return '<%s(%s, %s)>' % (self .__class__ .__name__ , name , count )
212+ res = super ().__repr__ ()
213+ name , count = self ._get_procname_and_count ()
214+ return f'<{ res [1 :- 1 ]} (owner={ name } , count={ count } )>'
219215
220216#
221217# Condition variable
@@ -251,12 +247,15 @@ def _make_methods(self):
251247 self .release = self ._lock .release
252248
253249 def __repr__ (self ):
250+ res = super ().__repr__ ()
254251 try :
255252 num_waiters = (self ._sleeping_count .get_value () -
256253 self ._woken_count .get_value ())
257254 except Exception :
258255 num_waiters = 'unknown'
259- return '<%s(%s, %s)>' % (self .__class__ .__name__ , self ._lock , num_waiters )
256+
257+ lock_repr , _ = self ._lock ._get_procname_and_count ()
258+ return f'<{ res [1 :- 1 ]} (lock={ lock_repr } , waiters={ num_waiters } )>'
260259
261260 def wait (self , timeout = None ):
262261 assert self ._lock ._semlock ._is_mine (), \
@@ -368,8 +367,10 @@ def wait(self, timeout=None):
368367 return False
369368
370369 def __repr__ (self ):
370+ res = super ().__repr__ ()
371371 set_status = 'set' if self .is_set () else 'unset'
372- return f"<{ type (self ).__qualname__ } at { id (self ):#x} { set_status } >"
372+ return f'<{ res [1 :- 1 ]} ({ set_status } )>'
373+
373374#
374375# Barrier
375376#
@@ -409,3 +410,9 @@ def _count(self):
409410 @_count .setter
410411 def _count (self , value ):
411412 self ._array [1 ] = value
413+
414+ def __repr__ (self ):
415+ res = object .__repr__ (self )
416+ if self .broken :
417+ return f'<{ res [1 :- 1 ]} (broken)>'
418+ return f'<{ res [1 :- 1 ]} (waiters={ self .n_waiting } /{ self .parties } )>'
0 commit comments