GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Match SQLite callback keyword parsing by youknowdot · Pull Request #9737 · RustPython/RustPython

Conversation

@youknowdot

@youknowdot youknowdot commented Nov 7, 2026 •
edited by youknowone
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Summary

Retire the remaining expected failures in test_sqlite3/test_userfunctions.py and test_sqlite3/test_hooks.py as one file-level batch.

SQLite's defining-class Clinic wrappers use _PyArg_UnpackKeywords, even when every argument is positional-only. The generic native calling convention previously rejected keywords before that parser could report a missing positional argument or an excess total argument count.

  • Add a typed UnpackKeywords<T> adapter. Its FORCE_UNPACK_KEYWORDS compile-time metadata selects CPython's _PyArg_UnpackKeywords calling and validation conventions through the existing binder, preserving argument conversion and displayed signatures. Positional-only parameters still cannot be passed by keyword.
  • Keep default binding behavior and its successful-call fast path unchanged. Opaque or malformed argument shapes cannot use the adapter.
  • Apply the same convention to aggregate, collation, window-function, authorizer, and trace callback registration.
  • Remove only the three obsolete expected-failure decorators through scripts/update_lib; existing skips, assertions, test logic, and data are unchanged.
  • Add shared-binder coverage for scalar, receiver, and flattened forms, and compile-time dispatch/signature coverage. No duplicate Python snippets.

This is independent of the other open expected-failure batches and is based directly on main ea5fbcc00.

Reference: CPython 3.15 SQLite generated wrappers and _PyArg_UnpackKeywords.

Validation

Behavioral validation before the identifier/documentation-only rename (binding and conversion logic unchanged):

  • SQLite-enabled threaded release build passed.
  • The two complete target modules passed: 106 tests, five existing skips, zero remaining expected failures.
  • Full SQLite, builtin, call, inspect, and descriptor regression modules passed: 1,407 tests, 271 existing skips, four unrelated expected failures.
  • 212 focused binding checks, five text signatures, and a control for ordinary positional-only dispatch passed.
  • Strict workspace all-target Clippy, including SQLite, passed with -D warnings.
  • Formatting, diff checks, normal commit hooks, and independent source review passed.

Before the naming-only revision, workspace tests passed: 1,520 passed, zero failed, 20 ignored across unit, integration, and doc tests. Separate C-API tests passed: 149 passed, zero failed, two ignored, and separate C-API all-target Clippy passed with -D warnings.

On naming revision 1a834ea436, normal commit hooks, formatting, diff checks, and strict workspace all-target Clippy including SQLite have passed again. Workspace tests and separate C-API checks are still running; earlier interrupted compilations are not counted as passing.

CPython 3.15 behavior is checked against the fixed source above; no CPython 3.15 runtime oracle is claimed. A clean merge was verified against current main 9670d1b364, including the subsequent #9706, #9668, and #9718 changes. No unrelated module expansion is included.

Normal hosted CI is enabled. Full hosted and cross-platform validation remains outstanding; this is not a merge-ready claim.

AI assistance: OpenAI Codex assisted implementation, source review, and validation. The model version is not exposed. Commits include Assisted-by trailers.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@youknowdot
Select Clinic keyword parsing for SQLite callbacks
9f81e11
Preserve typed positional-only signatures while selecting the defining-class Clinic argument parser for callback registration. Derive dispatch and binding policy at compile time; leave the successful-call validation path unchanged.

Assisted-by: OpenAI Codex:model version not exposed
@coderabbitai

coderabbitai Bot commented Nov 7, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Explain Change →

Caution

Review failed

The pull request is closed.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

  • X
  • Mastodon
  • Reddit
  • LinkedIn
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@github-actions

github-actions Bot commented Nov 7, 2026

Copy link
Copy Markdown
Contributor

📦 Library Dependencies

The following Lib/ modules were modified. Here are their dependencies:

[x] lib: cpython/Lib/sqlite3
[x] test: cpython/Lib/test/test_sqlite3 (TODO: 8)

dependencies:

  • sqlite3

dependent tests: (2 tests)

  • sqlite3: test_dbm_sqlite3 test_sqlite3

Legend:

  • [+] path exists in CPython
  • [x] up-to-date, [ ] outdated
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@youknowdot
Retire SQLite callback expected failures
7a758a4
Use scripts/update_lib on test_userfunctions.py and test_hooks.py after fixing the native defining-class argument parser. Remove their three remaining decorators, covering six concrete test cases, without changing assertions, logic, or existing skips.

Assisted-by: OpenAI Codex:model version not exposed
@youknowdot
youknowdot force-pushed the fix/sqlite-callback-binding-batch-20261107 branch from 04ea01a to 7a758a4 Compare November 7, 2026 07:07
@youknowdot
Name the CPython argument convention UnpackKeywords
1a834ea
Rename the typed adapter and force-selection metadata consistently. Clarify that it reuses the ordinary binder, preserves positional-only semantics, and selects the CPython _PyArg_UnpackKeywords conventions without adding a second parser.

Assisted-by: OpenAI Codex:model version not exposed
@codspeed

codspeed Bot commented Nov 7, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 62 untouched benchmarks
⏩ 4 skipped benchmarks1


Comparing youknowdot:fix/sqlite-callback-binding-batch-20261107 (1a834ea) with main (9670d1b)

Open in CodSpeed

Footnotes

  1. 4 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

youknowone
youknowone approved these changes Nov 7, 2026
View reviewed changes
@youknowone
youknowone marked this pull request as ready for review November 7, 2026 11:50
@youknowone
youknowone merged commit 94a5d18 into RustPython:main Nov 7, 2026
30 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 7, 2026

Copy link
Copy Markdown
Codex Review Summary: ❌ Failed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ❌ Failed 2026-11-07T11:51:01.102230Z
We couldn’t complete this review. Comment @codex review to try again.
1a834ea Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 7, 2026

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@youknowone youknowone youknowone approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@youknowdot @youknowone
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.