]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-133146: Add the old public `get_value` method to documentation and refactor code...
authorDuprat <yduprat@gmail.com>
Sat, 29 Nov 2025 22:12:48 +0000 (23:12 +0100)
committerGitHub <noreply@github.com>
Sat, 29 Nov 2025 22:12:48 +0000 (22:12 +0000)
also uses it within the internals in a few places.

Doc/library/multiprocessing.rst
Lib/multiprocessing/queues.py
Lib/multiprocessing/synchronize.py

index 714207cb0aefcd5d8c8fdaa9ebb320418cf91859..cbc98b256a93a4639077f9a29e506af4a182ec84 100644 (file)
@@ -1577,12 +1577,22 @@ object -- see :ref:`multiprocessing-managers`.
    A solitary difference from its close analog exists: its ``acquire`` method's
    first argument is named *block*, as is consistent with :meth:`Lock.acquire`.
 
+
+   .. method:: get_value()
+
+      Return the current value of semaphore.
+
+      Note that this may raise :exc:`NotImplementedError` on platforms like
+      macOS where ``sem_getvalue()`` is not implemented.
+
+
    .. method:: locked()
 
       Return a boolean indicating whether this object is locked right now.
 
       .. versionadded:: 3.14
 
+
 .. note::
 
    On macOS, ``sem_timedwait`` is unsupported, so calling ``acquire()`` with
index 925f043900004e732e72a5d629e6f9e0c2f2a3c3..981599acf5ef26e9bb4fb41b4a080511efdcc1a2 100644 (file)
@@ -121,7 +121,7 @@ class Queue(object):
 
     def qsize(self):
         # Raises NotImplementedError on Mac OSX because of broken sem_getvalue()
-        return self._maxsize - self._sem._semlock._get_value()
+        return self._maxsize - self._sem.get_value()
 
     def empty(self):
         return not self._poll()
index 30425047e9801a52f2a83b6649eee09167663df4..9188114ae284c742116552e1f80f89fee909848d 100644 (file)
@@ -135,11 +135,16 @@ class Semaphore(SemLock):
         SemLock.__init__(self, SEMAPHORE, value, SEM_VALUE_MAX, ctx=ctx)
 
     def get_value(self):
+        '''Returns current value of Semaphore.
+
+        Raises NotImplementedError on Mac OSX
+        because of broken sem_getvalue().
+        '''
         return self._semlock._get_value()
 
     def __repr__(self):
         try:
-            value = self._semlock._get_value()
+            value = self.get_value()
         except Exception:
             value = 'unknown'
         return '<%s(value=%s)>' % (self.__class__.__name__, value)
@@ -155,7 +160,7 @@ class BoundedSemaphore(Semaphore):
 
     def __repr__(self):
         try:
-            value = self._semlock._get_value()
+            value = self.get_value()
         except Exception:
             value = 'unknown'
         return '<%s(value=%s, maxvalue=%s)>' % \
@@ -247,8 +252,8 @@ class Condition(object):
 
     def __repr__(self):
         try:
-            num_waiters = (self._sleeping_count._semlock._get_value() -
-                           self._woken_count._semlock._get_value())
+            num_waiters = (self._sleeping_count.get_value() -
+                           self._woken_count.get_value())
         except Exception:
             num_waiters = 'unknown'
         return '<%s(%s, %s)>' % (self.__class__.__name__, self._lock, num_waiters)