Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-billiard for openSUSE:Factory 
checked in at 2026-02-03 21:30:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-billiard (Old)
 and      /work/SRC/openSUSE:Factory/.python-billiard.new.1995 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-billiard"

Tue Feb  3 21:30:03 2026 rev:28 rq:1330504 version:4.2.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-billiard/python-billiard.changes  
2025-10-28 14:47:39.329686969 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-billiard.new.1995/python-billiard.changes    
    2026-02-03 21:31:21.972320094 +0100
@@ -1,0 +2,9 @@
+Sat Jan 31 09:30:51 UTC 2026 - Andreas Prittwitz <[email protected]>
+
+- Update to version 4.2.4
+  * Eliminate usage of 'return' in 'finally' blocks (#438)
+- Changes in version 4.2.3
+  Ensure that task results are delivered during pool 
+  shutdown (#435)
+
+-------------------------------------------------------------------

Old:
----
  billiard-4.2.2.tar.gz

New:
----
  billiard-4.2.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-billiard.spec ++++++
--- /var/tmp/diff_new_pack.V7I7lj/_old  2026-02-03 21:31:22.648348696 +0100
+++ /var/tmp/diff_new_pack.V7I7lj/_new  2026-02-03 21:31:22.652348865 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-billiard
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-billiard
-Version:        4.2.2
+Version:        4.2.4
 Release:        0
 Summary:        Python multiprocessing fork
 License:        BSD-3-Clause

++++++ billiard-4.2.2.tar.gz -> billiard-4.2.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/.cookiecutterrc 
new/billiard-4.2.4/.cookiecutterrc
--- old/billiard-4.2.2/.cookiecutterrc  1970-01-01 01:00:00.000000000 +0100
+++ new/billiard-4.2.4/.cookiecutterrc  2025-11-30 14:27:54.000000000 +0100
@@ -0,0 +1,10 @@
+default_context:
+
+    email:                     '[email protected]'
+    full_name:                 'Ask Solem'
+    github_username:           'celery'
+    project_name:              'Billiard'
+    project_short_description: 'Python multiprocessing fork with improvements 
and bugfixes'
+    project_slug:              'billiard'
+    version:                   '1.0.0'
+    year:                      '2009-2016'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/.editorconfig 
new/billiard-4.2.4/.editorconfig
--- old/billiard-4.2.2/.editorconfig    1970-01-01 01:00:00.000000000 +0100
+++ new/billiard-4.2.4/.editorconfig    2025-11-30 14:27:54.000000000 +0100
@@ -0,0 +1,14 @@
+# https://editorconfig.org/
+
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+trim_trailing_whitespace = true
+insert_final_newline = true
+charset = utf-8
+end_of_line = lf
+
+[Makefile]
+indent_style = tab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/.github/dependabot.yml 
new/billiard-4.2.4/.github/dependabot.yml
--- old/billiard-4.2.2/.github/dependabot.yml   1970-01-01 01:00:00.000000000 
+0100
+++ new/billiard-4.2.4/.github/dependabot.yml   2025-11-30 14:27:54.000000000 
+0100
@@ -0,0 +1,13 @@
+# Keep GitHub Actions up to date with GitHub's Dependabot...
+# 
https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot
+# 
https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem
+version: 2
+updates:
+  - package-ecosystem: github-actions
+    directory: /
+    groups:
+      github-actions:
+        patterns:
+          - "*"  # Group all Actions updates into a single larger pull request
+    schedule:
+      interval: weekly
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/.github/workflows/ci.yaml 
new/billiard-4.2.4/.github/workflows/ci.yaml
--- old/billiard-4.2.2/.github/workflows/ci.yaml        1970-01-01 
01:00:00.000000000 +0100
+++ new/billiard-4.2.4/.github/workflows/ci.yaml        2025-11-30 
14:27:54.000000000 +0100
@@ -0,0 +1,25 @@
+name: CI
+on: [pull_request, push]
+jobs:
+  #################### Unittests ####################
+  unittest:
+    runs-on: blacksmith-4vcpu-ubuntu-2204
+    strategy:
+      fail-fast: false
+      matrix:
+        python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
+    steps:
+      - name: Install system packages
+        run: sudo apt update && sudo apt-get install libcurl4-openssl-dev 
libssl-dev
+      - name: Check out code from GitHub
+        uses: actions/checkout@v6
+      - name: Set up Python ${{ matrix.python-version }}
+        id: python
+        uses: actions/setup-python@main
+        with:
+          python-version: ${{ matrix.python-version }}
+          allow-prereleases: true
+      - name: Install dependencies
+        run: pip install --upgrade pip setuptools wheel tox tox-gh-actions 
tox-docker
+      - name: Run unittest
+        run: tox -v -e ${{ matrix.python-version }}-unit -- -v
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/.github/workflows/codeql-analysis.yml 
new/billiard-4.2.4/.github/workflows/codeql-analysis.yml
--- old/billiard-4.2.2/.github/workflows/codeql-analysis.yml    1970-01-01 
01:00:00.000000000 +0100
+++ new/billiard-4.2.4/.github/workflows/codeql-analysis.yml    2025-11-30 
14:27:54.000000000 +0100
@@ -0,0 +1,70 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL"
+
+on:
+  push:
+    branches: [ main ]
+  pull_request:
+    # The branches below must be a subset of the branches above
+    branches: [ main ]
+  schedule:
+    - cron: '40 0 * * 5'
+
+jobs:
+  analyze:
+    name: Analyze
+    runs-on: blacksmith-4vcpu-ubuntu-2204
+    permissions:
+      actions: read
+      contents: read
+      security-events: write
+
+    strategy:
+      fail-fast: false
+      matrix:
+        language: [ 'python' ]
+        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 
'python', 'ruby' ]
+        # Learn more about CodeQL language support at 
https://git.io/codeql-language-support
+
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v6
+
+    # Initializes the CodeQL tools for scanning.
+    - name: Initialize CodeQL
+      uses: github/codeql-action/init@v4
+      with:
+        languages: ${{ matrix.language }}
+        # If you wish to specify custom queries, you can do so here or in a 
config file.
+        # By default, queries listed here will override any specified in a 
config file.
+        # Prefix the list here with "+" to use these queries and those in the 
config file.
+        # queries: ./path/to/local/query, your-org/your-repo/queries@main
+
+    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
+    # If this step fails, then you should remove it and run the build manually 
(see below)
+    - name: Autobuild
+      uses: github/codeql-action/autobuild@v4
+
+    # â„šī¸ Command-line programs to run using the OS shell.
+    # 📚 https://git.io/JvXDl
+
+    # âœī¸ If the Autobuild fails above, remove it and uncomment the following 
three lines
+    #    and modify them (or add more) to build your code if your project
+    #    uses a compiled language
+
+    #- run: |
+    #   make bootstrap
+    #   make release
+
+    - name: Perform CodeQL Analysis
+      uses: github/codeql-action/analyze@v4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/.github/workflows/codespell.yml 
new/billiard-4.2.4/.github/workflows/codespell.yml
--- old/billiard-4.2.2/.github/workflows/codespell.yml  1970-01-01 
01:00:00.000000000 +0100
+++ new/billiard-4.2.4/.github/workflows/codespell.yml  2025-11-30 
14:27:54.000000000 +0100
@@ -0,0 +1,25 @@
+# Codespell configuration is within setup.cfg
+---
+name: Codespell
+
+on:
+  push:
+    branches: [main]
+  pull_request:
+    branches: [main]
+
+permissions:
+  contents: read
+
+jobs:
+  codespell:
+    name: Check for spelling errors
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v6
+      - name: Annotate locations with typos
+        uses: codespell-project/codespell-problem-matcher@v1
+      - name: Codespell
+        uses: codespell-project/actions-codespell@v2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/.gitignore 
new/billiard-4.2.4/.gitignore
--- old/billiard-4.2.2/.gitignore       1970-01-01 01:00:00.000000000 +0100
+++ new/billiard-4.2.4/.gitignore       2025-11-30 14:27:54.000000000 +0100
@@ -0,0 +1,29 @@
+.DS_Store
+*.pyc
+*~
+*.sqlite
+*.sqlite-journal
+settings_local.py
+local_settings.py
+.*.sw[po]
+dist/
+*.egg-info
+doc/__build/*
+build/
+locale/
+pip-log.txt
+devdatabase.db
+.directory
+bundle_version.gen
+celeryd.log
+celeryd.pid
+coverage.xml
+cover/
+*.so
+.tox/
+.eggs/
+htmlcov/
+.cache/
+.coverage
+.vscode/
+.python-version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/.pre-commit-config.yaml 
new/billiard-4.2.4/.pre-commit-config.yaml
--- old/billiard-4.2.2/.pre-commit-config.yaml  1970-01-01 01:00:00.000000000 
+0100
+++ new/billiard-4.2.4/.pre-commit-config.yaml  2025-11-30 14:27:54.000000000 
+0100
@@ -0,0 +1,13 @@
+# Learn more about this config here: https://pre-commit.com/
+
+# To enable these pre-commit hooks run: `uv tool install pre-commit`
+# or `pipx install pre-commit` or `brew install pre-commit`
+# Then in the project root directory run `pre-commit install`
+
+repos:
+  - repo: https://github.com/codespell-project/codespell
+    rev: v2.4.1
+    hooks:
+      - id: codespell # See pyproject.toml for args
+        additional_dependencies:
+          - tomli
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/CHANGES.txt 
new/billiard-4.2.4/CHANGES.txt
--- old/billiard-4.2.2/CHANGES.txt      2025-09-20 16:43:25.000000000 +0200
+++ new/billiard-4.2.4/CHANGES.txt      2025-11-30 14:27:54.000000000 +0100
@@ -1,3 +1,13 @@
+4.2.4 - 2025-11-30
+--------------------
+- Eliminate usage of 'return' in 'finally' blocks (#438)
+- Prepare for release: v4.2.4 (#439)
+
+4.2.3 - 2025-11-16
+--------------------
+- Ensure that task results are delivered during pool shutdown (#435)
+- Prepare for release: v4.2.3 (#436)
+
 4.2.2 - 2025-09-20
 --------------------
 - Add codespell support (config, workflow to detect/not fix) and make it fix 
few typos
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/PKG-INFO new/billiard-4.2.4/PKG-INFO
--- old/billiard-4.2.2/PKG-INFO 2025-09-20 16:44:17.965411200 +0200
+++ new/billiard-4.2.4/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,119 +0,0 @@
-Metadata-Version: 2.1
-Name: billiard
-Version: 4.2.2
-Summary: Python multiprocessing fork with improvements and bugfixes
-Home-page: https://github.com/celery/billiard
-Author: R Oudkerk / Python Software Foundation
-Author-email: [email protected]
-Maintainer: Asif Saif Uddin
-Maintainer-email: [email protected]
-License: BSD
-Keywords: multiprocessing pool process
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: C
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.12
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
-Classifier: Programming Language :: Python :: 3.10
-Classifier: Programming Language :: Python :: 3.11
-Classifier: Programming Language :: Python :: 3.13
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
-Classifier: Operating System :: Microsoft :: Windows
-Classifier: Operating System :: POSIX
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: System :: Distributed Computing
-Requires-Python: >=3.7
-License-File: LICENSE.txt
-
-========
-billiard
-========
-
-|build-status-lin| |build-status-win| |license| |wheel| |pyversion| |pyimp|
-
-:Version: 4.2.2
-:Web: https://billiard.readthedocs.io
-:Download: https://pypi.org/project/billiard/
-:Source: https://github.com/celery/billiard/
-:DeepWiki: |deepwiki|
-
-.. |build-status-lin| image:: 
https://github.com/celery/billiard/actions/workflows/ci.yaml/badge.svg
-    :alt: Build status on Linux
-    :target: https://github.com/celery/billiard/actions/workflows/ci.yaml
-
-.. |build-status-win| image:: 
https://ci.appveyor.com/api/projects/status/github/celery/billiard?png=true&branch=main
-    :alt: Build status on Windows
-    :target: https://ci.appveyor.com/project/ask/billiard
-
-.. |license| image:: https://img.shields.io/pypi/l/billiard.svg
-    :alt: BSD License
-    :target: https://opensource.org/licenses/BSD-3-Clause
-
-.. |wheel| image:: https://img.shields.io/pypi/wheel/billiard.svg
-    :alt: Billiard can be installed via wheel
-    :target: https://pypi.org/project/billiard/
-
-.. |pyversion| image:: https://img.shields.io/pypi/pyversions/billiard.svg
-    :alt: Supported Python versions.
-    :target: https://pypi.org/project/billiard/
-
-.. |pyimp| image:: https://img.shields.io/pypi/implementation/billiard.svg
-    :alt: Support Python implementations.
-    :target: https://pypi.org/project/billiard/
-
-.. |deepwiki| image:: https://devin.ai/assets/deepwiki-badge.png
-    :alt: Ask http://DeepWiki.com
-    :target: https://deepwiki.com/celery/billiard
-    :width: 125px
-
-About
------
-
-``billiard`` is a fork of the Python 2.7 `multiprocessing 
<https://docs.python.org/library/multiprocessing.html>`_
-package. The multiprocessing package itself is a renamed and updated version of
-R Oudkerk's `pyprocessing <https://pypi.org/project/processing/>`_ package.
-This standalone variant draws its fixes/improvements from python-trunk and 
provides
-additional bug fixes and improvements.
-
-- This package would not be possible if not for the contributions of not only
-  the current maintainers but all of the contributors to the original 
pyprocessing
-  package listed `here <http://pyprocessing.berlios.de/doc/THANKS.html>`_.
-
-- Also, it is a fork of the multiprocessing backport package by Christian 
Heims.
-
-- It includes the no-execv patch contributed by R. Oudkerk.
-
-- And the Pool improvements previously located in `Celery`_.
-
-- Billiard is used in and is a dependency for `Celery`_ and is maintained by 
the
-  Celery team.
-
-.. _`Celery`: http://celeryproject.org
-
-Documentation
--------------
-
-The documentation for ``billiard`` is available on `Read the Docs 
<https://billiard.readthedocs.io>`_.
-
-Bug reporting
--------------
-
-Please report bugs related to multiprocessing at the
-`Python bug tracker <https://bugs.python.org/>`_. Issues related to billiard
-should be reported at https://github.com/celery/billiard/issues.
-
-billiard is part of the Tidelift Subscription
----------------------------------------------
-
-The maintainers of ``billiard`` and thousands of other packages are working
-with Tidelift to deliver commercial support and maintenance for the open source
-dependencies you use to build your applications. Save time, reduce risk, and
-improve code health, while paying the maintainers of the exact dependencies you
-use. `Learn more`_.
-
-.. _`Learn more`: 
https://tidelift.com/subscription/pkg/pypi-billiard?utm_source=pypi-billiard&utm_medium=referral&utm_campaign=readme&utm_term=repo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/README.rst 
new/billiard-4.2.4/README.rst
--- old/billiard-4.2.2/README.rst       2025-09-20 16:43:25.000000000 +0200
+++ new/billiard-4.2.4/README.rst       2025-11-30 14:27:54.000000000 +0100
@@ -4,7 +4,7 @@
 
 |build-status-lin| |build-status-win| |license| |wheel| |pyversion| |pyimp|
 
-:Version: 4.2.2
+:Version: 4.2.4
 :Web: https://billiard.readthedocs.io
 :Download: https://pypi.org/project/billiard/
 :Source: https://github.com/celery/billiard/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/SECURITY.md 
new/billiard-4.2.4/SECURITY.md
--- old/billiard-4.2.2/SECURITY.md      1970-01-01 01:00:00.000000000 +0100
+++ new/billiard-4.2.4/SECURITY.md      2025-11-30 14:27:54.000000000 +0100
@@ -0,0 +1,15 @@
+# Security Policy
+
+## Supported Versions
+
+
+| Version | Supported          |
+| ------- | ------------------ |
+| 3.6.x   | :white_check_mark: |
+| 3.5.x   | :x:                |
+| 4.0.x   | :white_check_mark: |
+| < 3.6   | :x:                |
+
+## Reporting a Vulnerability
+
+Please contact [email protected] for reporting Vulnerability issues.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/billiard/__init__.py 
new/billiard-4.2.4/billiard/__init__.py
--- old/billiard-4.2.2/billiard/__init__.py     2025-09-20 16:43:25.000000000 
+0200
+++ new/billiard-4.2.4/billiard/__init__.py     2025-11-30 14:27:54.000000000 
+0100
@@ -22,7 +22,7 @@
 
 from . import context
 
-VERSION = (4, 2, 2)
+VERSION = (4, 2, 4)
 __version__ = '.'.join(map(str, VERSION[0:4])) + "".join(VERSION[4:])
 __author__ = 'R Oudkerk / Python Software Foundation'
 __author_email__ = '[email protected]'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/billiard/connection.py 
new/billiard-4.2.4/billiard/connection.py
--- old/billiard-4.2.2/billiard/connection.py   2022-10-02 18:44:01.000000000 
+0200
+++ new/billiard-4.2.4/billiard/connection.py   2025-11-30 14:27:54.000000000 
+0100
@@ -333,22 +333,28 @@
                     ov, err = _winapi.ReadFile(
                         self._handle, bsize, overlapped=True,
                     )
+                    result = None
+                    exc_to_raise = None
                     try:
                         if err == _winapi.ERROR_IO_PENDING:
                             waitres = _winapi.WaitForMultipleObjects(
                                 [ov.event], False, INFINITE)
                             assert waitres == WAIT_OBJECT_0
-                    except:
+                    except Exception as e:
                         ov.cancel()
-                        raise
+                        exc_to_raise = e
                     finally:
                         nread, err = ov.GetOverlappedResult(True)
                         if err == 0:
                             f = io.BytesIO()
                             f.write(ov.getbuffer())
-                            return f
+                            result = f
                         elif err == _winapi.ERROR_MORE_DATA:
-                            return self._get_more_data(ov, maxsize)
+                            result = self._get_more_data(ov, maxsize)
+                    if result is not None:
+                        return result
+                    if exc_to_raise is not None:
+                        raise exc_to_raise
                 except OSError as e:
                     if e.winerror == _winapi.ERROR_BROKEN_PIPE:
                         raise EOFError
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/billiard/pool.py 
new/billiard-4.2.4/billiard/pool.py
--- old/billiard-4.2.2/billiard/pool.py 2024-09-21 15:19:42.000000000 +0200
+++ new/billiard-4.2.4/billiard/pool.py 2025-11-30 14:27:54.000000000 +0100
@@ -1659,7 +1659,12 @@
         debug('helping task handler/workers to finish')
         cls._help_stuff_finish(*help_stuff_finish_args)
 
-        result_handler.terminate()
+        # Send the sentinel to the result handler but don't terminate the
+        # result handler thread. This allows the thread to continue
+        # processing results in ResultHandler.finish_at_shutdown() until
+        # the cache is drained, ensuring that all task results are properly
+        # stored. A call to ResultHandler.terminate() is not necessary here
+        # because the thread will exit naturally when the cache becomes empty.
         cls._set_result_sentinel(outqueue, pool)
 
         if timeout_handler is not None:
@@ -1851,13 +1856,8 @@
                 except Exception:
                     response = NACK
                     # ignore other errors
-                finally:
-                    if self._send_ack and synqW_fd:
-                        return self._send_ack(
-                            response, pid, self._job, synqW_fd
-                        )
             if self._send_ack and synqW_fd:
-                self._send_ack(response, pid, self._job, synqW_fd)
+                return self._send_ack(response, pid, self._job, synqW_fd)
 
 #
 # Class whose instances are returned by `Pool.map_async()`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/billiard.egg-info/PKG-INFO 
new/billiard-4.2.4/billiard.egg-info/PKG-INFO
--- old/billiard-4.2.2/billiard.egg-info/PKG-INFO       2025-09-20 
16:44:17.000000000 +0200
+++ new/billiard-4.2.4/billiard.egg-info/PKG-INFO       1970-01-01 
01:00:00.000000000 +0100
@@ -1,119 +0,0 @@
-Metadata-Version: 2.1
-Name: billiard
-Version: 4.2.2
-Summary: Python multiprocessing fork with improvements and bugfixes
-Home-page: https://github.com/celery/billiard
-Author: R Oudkerk / Python Software Foundation
-Author-email: [email protected]
-Maintainer: Asif Saif Uddin
-Maintainer-email: [email protected]
-License: BSD
-Keywords: multiprocessing pool process
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: C
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.12
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
-Classifier: Programming Language :: Python :: 3.10
-Classifier: Programming Language :: Python :: 3.11
-Classifier: Programming Language :: Python :: 3.13
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
-Classifier: Operating System :: Microsoft :: Windows
-Classifier: Operating System :: POSIX
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: System :: Distributed Computing
-Requires-Python: >=3.7
-License-File: LICENSE.txt
-
-========
-billiard
-========
-
-|build-status-lin| |build-status-win| |license| |wheel| |pyversion| |pyimp|
-
-:Version: 4.2.2
-:Web: https://billiard.readthedocs.io
-:Download: https://pypi.org/project/billiard/
-:Source: https://github.com/celery/billiard/
-:DeepWiki: |deepwiki|
-
-.. |build-status-lin| image:: 
https://github.com/celery/billiard/actions/workflows/ci.yaml/badge.svg
-    :alt: Build status on Linux
-    :target: https://github.com/celery/billiard/actions/workflows/ci.yaml
-
-.. |build-status-win| image:: 
https://ci.appveyor.com/api/projects/status/github/celery/billiard?png=true&branch=main
-    :alt: Build status on Windows
-    :target: https://ci.appveyor.com/project/ask/billiard
-
-.. |license| image:: https://img.shields.io/pypi/l/billiard.svg
-    :alt: BSD License
-    :target: https://opensource.org/licenses/BSD-3-Clause
-
-.. |wheel| image:: https://img.shields.io/pypi/wheel/billiard.svg
-    :alt: Billiard can be installed via wheel
-    :target: https://pypi.org/project/billiard/
-
-.. |pyversion| image:: https://img.shields.io/pypi/pyversions/billiard.svg
-    :alt: Supported Python versions.
-    :target: https://pypi.org/project/billiard/
-
-.. |pyimp| image:: https://img.shields.io/pypi/implementation/billiard.svg
-    :alt: Support Python implementations.
-    :target: https://pypi.org/project/billiard/
-
-.. |deepwiki| image:: https://devin.ai/assets/deepwiki-badge.png
-    :alt: Ask http://DeepWiki.com
-    :target: https://deepwiki.com/celery/billiard
-    :width: 125px
-
-About
------
-
-``billiard`` is a fork of the Python 2.7 `multiprocessing 
<https://docs.python.org/library/multiprocessing.html>`_
-package. The multiprocessing package itself is a renamed and updated version of
-R Oudkerk's `pyprocessing <https://pypi.org/project/processing/>`_ package.
-This standalone variant draws its fixes/improvements from python-trunk and 
provides
-additional bug fixes and improvements.
-
-- This package would not be possible if not for the contributions of not only
-  the current maintainers but all of the contributors to the original 
pyprocessing
-  package listed `here <http://pyprocessing.berlios.de/doc/THANKS.html>`_.
-
-- Also, it is a fork of the multiprocessing backport package by Christian 
Heims.
-
-- It includes the no-execv patch contributed by R. Oudkerk.
-
-- And the Pool improvements previously located in `Celery`_.
-
-- Billiard is used in and is a dependency for `Celery`_ and is maintained by 
the
-  Celery team.
-
-.. _`Celery`: http://celeryproject.org
-
-Documentation
--------------
-
-The documentation for ``billiard`` is available on `Read the Docs 
<https://billiard.readthedocs.io>`_.
-
-Bug reporting
--------------
-
-Please report bugs related to multiprocessing at the
-`Python bug tracker <https://bugs.python.org/>`_. Issues related to billiard
-should be reported at https://github.com/celery/billiard/issues.
-
-billiard is part of the Tidelift Subscription
----------------------------------------------
-
-The maintainers of ``billiard`` and thousands of other packages are working
-with Tidelift to deliver commercial support and maintenance for the open source
-dependencies you use to build your applications. Save time, reduce risk, and
-improve code health, while paying the maintainers of the exact dependencies you
-use. `Learn more`_.
-
-.. _`Learn more`: 
https://tidelift.com/subscription/pkg/pypi-billiard?utm_source=pypi-billiard&utm_medium=referral&utm_campaign=readme&utm_term=repo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/billiard.egg-info/SOURCES.txt 
new/billiard-4.2.4/billiard.egg-info/SOURCES.txt
--- old/billiard-4.2.2/billiard.egg-info/SOURCES.txt    2025-09-20 
16:44:17.000000000 +0200
+++ new/billiard-4.2.4/billiard.egg-info/SOURCES.txt    1970-01-01 
01:00:00.000000000 +0100
@@ -1,74 +0,0 @@
-CHANGES.txt
-INSTALL.txt
-LICENSE.txt
-MANIFEST.in
-Makefile
-README.rst
-setup.cfg
-setup.py
-Doc/conf.py
-Doc/glossary.rst
-Doc/index.rst
-Doc/includes/__init__.py
-Doc/includes/mp_benchmarks.py
-Doc/includes/mp_newtype.py
-Doc/includes/mp_pool.py
-Doc/includes/mp_synchronize.py
-Doc/includes/mp_webserver.py
-Doc/includes/mp_workers.py
-Doc/library/multiprocessing.rst
-Modules/_billiard/multiprocessing.c
-Modules/_billiard/multiprocessing.h
-Modules/_billiard/semaphore.c
-Modules/_billiard/win32_functions.c
-billiard/__init__.py
-billiard/_ext.py
-billiard/_win.py
-billiard/common.py
-billiard/compat.py
-billiard/connection.py
-billiard/context.py
-billiard/einfo.py
-billiard/exceptions.py
-billiard/forkserver.py
-billiard/heap.py
-billiard/managers.py
-billiard/pool.py
-billiard/popen_fork.py
-billiard/popen_forkserver.py
-billiard/popen_spawn_posix.py
-billiard/popen_spawn_win32.py
-billiard/process.py
-billiard/queues.py
-billiard/reduction.py
-billiard/resource_sharer.py
-billiard/semaphore_tracker.py
-billiard/sharedctypes.py
-billiard/spawn.py
-billiard/synchronize.py
-billiard/util.py
-billiard.egg-info/PKG-INFO
-billiard.egg-info/SOURCES.txt
-billiard.egg-info/dependency_links.txt
-billiard.egg-info/not-zip-safe
-billiard.egg-info/top_level.txt
-billiard/dummy/__init__.py
-billiard/dummy/connection.py
-requirements/pkgutils.txt
-requirements/test-ci.txt
-requirements/test.txt
-t/__init__.py
-t/skip.py
-t/integration/__init__.py
-t/integration/setup.py
-t/integration/tests/__init__.py
-t/integration/tests/test_multiprocessing.py
-t/unit/__init__.py
-t/unit/test_common.py
-t/unit/test_dummy.py
-t/unit/test_einfo.py
-t/unit/test_package.py
-t/unit/test_pool.py
-t/unit/test_spawn.py
-t/unit/test_values.py
-t/unit/test_win32.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/billiard-4.2.2/billiard.egg-info/dependency_links.txt 
new/billiard-4.2.4/billiard.egg-info/dependency_links.txt
--- old/billiard-4.2.2/billiard.egg-info/dependency_links.txt   2025-09-20 
16:44:17.000000000 +0200
+++ new/billiard-4.2.4/billiard.egg-info/dependency_links.txt   1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/billiard.egg-info/not-zip-safe 
new/billiard-4.2.4/billiard.egg-info/not-zip-safe
--- old/billiard-4.2.2/billiard.egg-info/not-zip-safe   2025-09-20 
16:44:17.000000000 +0200
+++ new/billiard-4.2.4/billiard.egg-info/not-zip-safe   1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/billiard.egg-info/top_level.txt 
new/billiard-4.2.4/billiard.egg-info/top_level.txt
--- old/billiard-4.2.2/billiard.egg-info/top_level.txt  2025-09-20 
16:44:17.000000000 +0200
+++ new/billiard-4.2.4/billiard.egg-info/top_level.txt  1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-billiard
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/setup.cfg new/billiard-4.2.4/setup.cfg
--- old/billiard-4.2.2/setup.cfg        2025-09-20 16:44:17.965843000 +0200
+++ new/billiard-4.2.4/setup.cfg        2025-11-30 14:27:54.000000000 +0100
@@ -3,6 +3,8 @@
 python_classes = test_*
 
 [flake8]
+# classes can be lowercase, arguments and variables can be uppercase
+# whenever it makes the code more readable.
 ignore = N806, N802, N801, N803, E305
 
 [pep257]
@@ -12,11 +14,8 @@
 license_file = LICENSE.txt
 
 [codespell]
+# Ref: https://github.com/codespell-project/codespell#using-a-config-file
 skip = .git*
 check-hidden = true
+# ignore-regex = 
 ignore-words-list = assertin
-
-[egg_info]
-tag_build = 
-tag_date = 0
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/t/integration/setup.cfg 
new/billiard-4.2.4/t/integration/setup.cfg
--- old/billiard-4.2.2/t/integration/setup.cfg  1970-01-01 01:00:00.000000000 
+0100
+++ new/billiard-4.2.4/t/integration/setup.cfg  2025-11-30 14:27:54.000000000 
+0100
@@ -0,0 +1,4 @@
+[nosetests]
+verbosity = 1
+detailed-errors = 1
+where = tests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/t/unit/test_pool.py 
new/billiard-4.2.4/t/unit/test_pool.py
--- old/billiard-4.2.2/t/unit/test_pool.py      2024-09-21 15:19:42.000000000 
+0200
+++ new/billiard-4.2.4/t/unit/test_pool.py      2025-11-30 14:27:54.000000000 
+0100
@@ -15,6 +15,8 @@
     worker = inspect.stack()[1].frame.f_locals['self']
     return worker.on_ready_counter.value
 
+def simple_task(x):
+    return x * 2
 
 class test_pool:
     def test_raises(self):
@@ -56,3 +58,53 @@
             pool.close()
             pool.join()
             pool.terminate()
+
+    def test_graceful_shutdown_delivers_results(self):
+        """Test that queued results are delivered during pool shutdown.
+        
+        Specifically, this test verifies that when _terminate_pool() is called,
+        the ResultHandler.finish_at_shutdown() continues processing results
+        that workers have placed in the outqueue.
+        """
+
+        # Create pool with threads=False so that the result handler thread does
+        # not start and the task results are allowed to build up in the queue.
+        pool = billiard.pool.Pool(processes=2, threads=False)
+
+        # Submit tasks so that results are queued but not processed.
+        results = [pool.apply_async(simple_task, (i,)) for i in range(8)]
+
+        # Allow a small amount of time for tasks to complete.
+        time.sleep(0.5)
+
+        # Close and join the pool to ensure workers stop.
+        pool.close()
+        pool.join()
+
+        # Call the _terminate_pool() class method to trigger the 
finish_at_shutdown()
+        # function that will process results in the queue. Normally 
_terminate_pool()
+        # is called by a Finalize object when the Pool object is destroyed. We 
cannot
+        # call pool.terminate() here because it will call the Finalize object, 
which
+        # won't do anything until the Pool object is destroyed at the end of 
this test.
+        # We can simulate the shutdown behaviour by calling _terminate_pool() 
directly.
+        billiard.pool.Pool._terminate_pool(
+            pool._taskqueue,
+            pool._inqueue,
+            pool._outqueue,
+            pool._pool,
+            pool._worker_handler,
+            pool._task_handler,
+            pool._result_handler,
+            pool._cache,
+            pool._timeout_handler,
+            pool._help_stuff_finish_args()
+        )
+
+        # Cancel the Finalize object to prevent _terminate_pool() from being 
called
+        # a second time when the Pool object is destroyed.
+        pool._terminate.cancel()
+
+        # Verify that all results were delivered by finish_at_shutdown() and 
can be
+        # retrieved.
+        for i, result in enumerate(results):
+            assert result.get() == i * 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/billiard-4.2.2/tox.ini new/billiard-4.2.4/tox.ini
--- old/billiard-4.2.2/tox.ini  1970-01-01 01:00:00.000000000 +0100
+++ new/billiard-4.2.4/tox.ini  2025-11-30 14:27:54.000000000 +0100
@@ -0,0 +1,23 @@
+[tox]
+requires =
+    tox-gh-actions
+envlist = {3.8,3.9,3.10,3.11,3.12,3.13,3.14}-unit
+skip_missing_interpreters = True
+
+[gh-actions]
+python =
+    3.8: 3.8-unit
+    3.9: 3.9-unit
+    3.10: 3.10-unit
+    3.11: 3.11-unit
+    3.12: 3.12-unit
+    3.13: 3.13-unit
+    3.14: 3.14-unit
+
+[testenv]
+distribute = True
+sitepackages = False
+commands = py.test -xv
+deps=
+    -r{toxinidir}/requirements/test-ci.txt
+    -r{toxinidir}/requirements/test.txt

Reply via email to