8000
Skip to content

Conversation

@torarvid
Copy link
Contributor

Description

Simple fix for the Python 3.14 issue mentioned in this discussion. Simply omit the return keyword inside of the finally block.

@codecov
Copy link
codecov bot commented Nov 18, 2025

Codecov Report

❌ Patch coverage is 0% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 78.67%. Comparing base (f32b92f) to head (668d008).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
celery/concurrency/asynpool.py 0.00% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #10000      +/-   ##
==========================================
- Coverage   78.68%   78.67%   -0.01%     
==========================================
  Files         153      153              
  Lines       19328    19330       +2     
  Branches     2221     2221              
==========================================
  Hits        15208    15208              
- Misses       3822     3824       +2     
  Partials      298      298              
Flag Coverage Δ
unittests 78.65% <0.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor
Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes a Python 3.14 compatibility issue by removing a return statement from inside a finally block in the _flush_outqueue method. In Python 3.14, returning from within a finally block can cause problems and is discouraged. The fix maintains the necessary side effect (calling remove(fd)) while eliminating the problematic return.

  • Removes return keyword from finally block exception handler in _flush_outqueue

This commit makes the logic of the AsynPool class backwards compatible,
except for one change related to exception handling.

Before, if an exception **other than `(OSError, EOFError)`** was raised,
it would be swallowed by the return inside of the finally block. Now,
such an exception would propagate out of this method.
Copy link
Contributor
Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@auvipy auvipy added this to the 5.6.0 milestone Nov 22, 2025
@auvipy auvipy merged commit 3f0f0fe into celery:main Nov 22, 2025
369 of 371 checks passed
@torarvid torarvid deleted the py314-return-finally branch November 23, 2025 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet
3C12

Development

Successfully merging this pull request may close these issues.

2 participants

0