feat(python): add QuicConfig transport configuration - #3991
Open
saie-ch wants to merge 11 commits into
Open
Conversation
|
Thanks for the PR. It is labeled Slash commands (own line, regular comment) move it around the queue:
See CONTRIBUTING.md for details. |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #3991 +/- ##
==========================================
Coverage 85.69% 85.70%
Complexity 1405 1405
==========================================
Files 1243 1243
Lines 188374 188646 +272
Branches 154469 154472 +3
==========================================
+ Hits 161430 161674 +244
- Misses 22876 22880 +4
- Partials 4068 4092 +24
🚀 New features to boost your workflow:
|
ethanlin01x
reviewed
Aug 29, 2026
saie-ch
force-pushed
the
python-quic-config
branch
from
August 31, 2026 05:47
52d0f86 to
b56981f
Compare
Contributor
Author
|
Thanks for the review @ethanlin01x Could you check now i've addressed the following
|
hubcio
requested changes
Aug 31, 2026
slbotbm
previously requested changes
Aug 31, 2026
slbotbm
left a comment
Contributor
There was a problem hiding this comment.
Let's fold the config example code into existing examples as comments, and expose IggyClient (... | QuicConfig | ... ) instead of IggyClient.quic method.
numinnex
previously approved these changes
Sep 3, 2026
Reject durations that round down to 0ms, fix the max_idle_timeout docstring, validate max_concurrent_bidi_streams/receive_window against VarInt::MAX, reject initial_mtu below quinn's 1200 floor, and disable reconnection in the two auto-login tests that could otherwise hang.
Drop the IggyClient.quic() classmethod in favor of extending IggyClient(...)'s existing TcpConfig union to also accept QuicConfig. Trims the QUIC section from the main README and folds the standalone quic/ example into a commented alternative in the getting-started example, per review feedback.
saie-ch
force-pushed
the
python-quic-config
branch
from
September 5, 2026 11:18
b56981f to
934ea2d
Compare
Contributor
Author
QuicConfig stores keep_alive_interval and max_idle_timeout as a millisecond count, so a timedelta carrying a sub-millisecond remainder read back as a different duration than the one passed in. They were the only fields whose getter did not round-trip. Reject the remainder, matching how an initial_mtu below quinn's 1200 floor is already refused rather than silently clamped. The guard tests subsec_nanos so it does not rest on how pyo3 builds the Duration. Several QuicConfig tests asserted a bare RuntimeError or matched only on a field name, so they could not tell which branch fired and passed without reaching the behaviour under test. They now pin the message. The QUIC connection-string case stops retrying forever, so a missing listener fails instead of stalling. Also corrects the client_address doc, which told callers to pin the local address by setting it explicitly; the SDK compares it against the default by string, so the default value passed explicitly still gets the IPv6 bind swap. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WgJyB9b9cBN7z47zDNNTX
spetz
approved these changes
Sep 7, 2026
hubcio
approved these changes
Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue does this PR address?
Relates to #2835.
Rationale
Python's QUIC transport was only reachable through the untested from_connection_string() path, with no config object like TCP got in #3776.
What changed?
Added QuicConfig/QuicReconnectionConfig, accepted by IggyClient.quic(...), mirroring the TcpConfig pattern. Also fixed a bug where from_connection_string() failed on iggy+quic:// URLs because quinn::Endpoint::client needs an active Tokio runtime context.
Local Execution