René's URL Explorer Experiment


Title: Restore stubtest and release-tag wheel publishing by espressolee · Pull Request #237 · python-rapidjson/python-rapidjson · GitHub

Open Graph Title: Restore stubtest and release-tag wheel publishing by espressolee · Pull Request #237 · python-rapidjson/python-rapidjson

X Title: Restore stubtest and release-tag wheel publishing by espressolee · Pull Request #237 · python-rapidjson/python-rapidjson

Description: Summary Restore the two failing parts of the current master workflow: align the bundled stubs with the C extension types as checked by mypy 2.1; run the workflow for v* tags and publish wheels only after the test, debug, and wheel jobs have succeeded. Addresses #157. Why The latest exact-master workflow, run 28846305296 at 00e9a146e958d42f84c81dcfdf39572280ecf01f, failed in two independent places: stubtest rapidjson reported 19 errors after the test requirements moved to mypy 2.1. The C extension constructors are implemented in tp_new, while the stubs described them as __init__; Decoder and Encoder are also runtime disjoint bases. The upload job ran on an ordinary master push while the package version was still 1.23, so PyPI rejected the first wheel with 400 File already exists. The old upload condition also used github.event.ref, and the workflow only selected branch pushes, so a release tag could not reach the job even if the condition were re-enabled. Changes Typing stubs Describe Decoder, Encoder, RawJSON, and Validator construction with __new__, matching their C tp_new implementations. Mark Decoder and Encoder with @disjoint_base. This preserves valid single inheritance while rejecting the same incompatible-layout multiple inheritance that fails at runtime. Keep the stubs consumable by the branch's older mypy 1.16 through a narrow attr-defined compatibility ignore on the new typing extension import. Release workflow Trigger on v* tag pushes as well as master branch pushes. Use github.ref for the release-tag predicate. Skip publishing on pull requests and ordinary branch pushes. Require tests, debug-tests, and the complete wheel matrix to succeed before publishing. PR #235 contains a related upload guard on the free-threaded branch. This change targets the currently failing master release path and additionally restores the missing tag trigger and validation dependencies. Verification Based on 00e9a146e958d42f84c81dcfdf39572280ecf01f, candidate head e5663ec092e79cbbb4e00937de6d71b3fa35c7c1: mypy 2.1 stubtest: 19 baseline errors -> Success: no issues found; mypy 1.16 stubtest: pass; type fixtures: Decoder/Encoder single inheritance accepted; incompatible combined inheritance rejected; runtime fixture: the same single/multiple-inheritance behavior; pytest -q tests: 929 passed, 17 skipped, 2 xfailed; actionlint -ignore SC2046: pass (SC2046 is the pre-existing $(which python3) warning); workflow truth table: PR and master push do not publish; v1.24 does; other branches and non-v* tags do not trigger; git diff --check: pass. One local macOS/Python 3.13.12 doctest has a pre-existing final-digit float representation difference. It reproduced identically on unmodified master; the exact Linux workflow above passed all 274 doctests. No documentation or runtime source is changed here. No tag or real PyPI publication has been attempted from this branch. (Developed with AI assistance; the log analysis, runtime checks, and test runs were executed and verified by me.)

Open Graph Description: Summary Restore the two failing parts of the current master workflow: align the bundled stubs with the C extension types as checked by mypy 2.1; run the workflow for v* tags and publish wheels onl...

X Description: Summary Restore the two failing parts of the current master workflow: align the bundled stubs with the C extension types as checked by mypy 2.1; run the workflow for v* tags and publish wheels onl...

Opengraph URL: https://github.com/python-rapidjson/python-rapidjson/pull/237

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:ca79b03e-6664-1166-82b2-a2c8a4ee6d31
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idD954:B0C4A:5DA7C6:83237C:6AF85B20
html-safe-nonce615ffaf83e200e9fbc0168b1994fff202ea7a54a6e5429354e5f8390702a4423
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEOTU0OkIwQzRBOjVEQTdDNjo4MzIzN0M6NkFGODVCMjAiLCJ2aXNpdG9yX2lkIjoiMjUzOTA3ODYyNDQ0NzMyMjkxMiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac306fc6f8c3d1def575d0c47197a5a0e791c7b9449a3afae826df5e0bddd885b8
hovercard-subject-tagpull_request:4342017079
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/python-rapidjson/python-rapidjson/pull/237/files
twitter:imagehttps://avatars.githubusercontent.com/u/70549809?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/70549809?s=400&v=4
og:image:altSummary Restore the two failing parts of the current master workflow: align the bundled stubs with the C extension types as checked by mypy 2.1; run the workflow for v* tags and publish wheels onl...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None5713ecd83001b2f55c3509fb7a292bf7d66d0f167c7ae87a9f7eaec5a52bf8db
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/python-rapidjson/python-rapidjson git https://github.com/python-rapidjson/python-rapidjson.git
octolytics-dimension-user_id25253642
octolytics-dimension-user_loginpython-rapidjson
octolytics-dimension-repository_id42155092
octolytics-dimension-repository_nwopython-rapidjson/python-rapidjson
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id42155092
octolytics-dimension-repository_network_root_nwopython-rapidjson/python-rapidjson
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release653be32ff5c755082a4db662491bfbbcfc9112c1
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python-rapidjson/python-rapidjson/pull/237/files#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-rapidjson%2Fpython-rapidjson%2Fpull%2F237%2Ffiles
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-rapidjson%2Fpython-rapidjson%2Fpull%2F237%2Ffiles
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=python-rapidjson%2Fpython-rapidjson
Reloadhttps://github.com/python-rapidjson/python-rapidjson/pull/237/files
Reloadhttps://github.com/python-rapidjson/python-rapidjson/pull/237/files
Reloadhttps://github.com/python-rapidjson/python-rapidjson/pull/237/files
python-rapidjsonhttps://github.com/python-rapidjson
python-rapidjsonhttps://github.com/python-rapidjson/python-rapidjson
Codehttps://github.com/python-rapidjson/python-rapidjson
Issues12 (12)https://github.com/python-rapidjson/python-rapidjson/issues
Pull requests7 (7)https://github.com/python-rapidjson/python-rapidjson/pulls
Actionshttps://github.com/python-rapidjson/python-rapidjson/actions
Projectshttps://github.com/python-rapidjson/python-rapidjson/projects
Wikihttps://github.com/python-rapidjson/python-rapidjson/wiki
Security and qualityhttps://github.com/python-rapidjson/python-rapidjson/security
Insightshttps://github.com/python-rapidjson/python-rapidjson/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fpython-rapidjson%2Fpython-rapidjson%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fpython-rapidjson%2Fpython-rapidjson%2Fissues%2Fnew%2Fchoose
lelithttps://github.com/lelit
python-rapidjson:masterhttps://github.com/python-rapidjson/python-rapidjson/tree/master
espressolee:fix/master-ci-release-readinesshttps://github.com/espressolee/python-rapidjson/tree/fix/master-ci-release-readiness
Conversation 5 https://github.com/python-rapidjson/python-rapidjson/pull/237
Commits 3 https://github.com/python-rapidjson/python-rapidjson/pull/237/commits
Checks 9 https://github.com/python-rapidjson/python-rapidjson/pull/237/checks
Files changed https://github.com/python-rapidjson/python-rapidjson/pull/237/files
Please reload this pagehttps://github.com/python-rapidjson/python-rapidjson/pull/237/files
Restore stubtest and release-tag wheel publishing https://github.com/python-rapidjson/python-rapidjson/pull/237/files#top
Show all changes 3 commits https://github.com/python-rapidjson/python-rapidjson/pull/237/files
e2f4c5b typing: align C extension constructor stubs espressolee Aug 23, 2026 https://github.com/python-rapidjson/python-rapidjson/pull/237/commits/e2f4c5bb2fee1209290bf7de3e4a4df34ad2ed9d
e5663ec ci: publish wheels only from release tags espressolee Aug 23, 2026 https://github.com/python-rapidjson/python-rapidjson/pull/237/commits/e5663ec092e79cbbb4e00937de6d71b3fa35c7c1
98dd717 test: declare typing-extensions dependency espressolee Aug 23, 2026 https://github.com/python-rapidjson/python-rapidjson/pull/237/commits/98dd717b836ab9ded59879cd2e961f345592951f
Clear filters https://github.com/python-rapidjson/python-rapidjson/pull/237/files
Please reload this pagehttps://github.com/python-rapidjson/python-rapidjson/pull/237/files
Please reload this pagehttps://github.com/python-rapidjson/python-rapidjson/pull/237/files
main.yml https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
requirements-test.txt https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-685da804fbcac569d75387e475e57d1de687a54c6c41b3aa4057694cfb5abc4b
__init__.pyi https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-0010ee2e80bbe9501783727c9a186c0c908d0038b6123ac9e04d400618fb070b
.github/workflows/main.ymlhttps://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
View file https://github.com/espressolee/python-rapidjson/blob/98dd717b836ab9ded59879cd2e961f345592951f/.github/workflows/main.yml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-rapidjson/python-rapidjson/pull/237/{{ revealButtonHref }}
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
requirements-test.txthttps://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-685da804fbcac569d75387e475e57d1de687a54c6c41b3aa4057694cfb5abc4b
View file https://github.com/espressolee/python-rapidjson/blob/98dd717b836ab9ded59879cd2e961f345592951f/requirements-test.txt
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-rapidjson/python-rapidjson/pull/237/{{ revealButtonHref }}
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-685da804fbcac569d75387e475e57d1de687a54c6c41b3aa4057694cfb5abc4b
typings/rapidjson/__init__.pyihttps://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-0010ee2e80bbe9501783727c9a186c0c908d0038b6123ac9e04d400618fb070b
View file https://github.com/espressolee/python-rapidjson/blob/98dd717b836ab9ded59879cd2e961f345592951f/typings/rapidjson/__init__.pyi
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-rapidjson/python-rapidjson/pull/237/{{ revealButtonHref }}
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-0010ee2e80bbe9501783727c9a186c0c908d0038b6123ac9e04d400618fb070b
lelithttps://github.com/lelit
Aug 23, 2026https://github.com/python-rapidjson/python-rapidjson/pull/237/files#r3838733114
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/python-rapidjson/python-rapidjson/pull/237/files
espressoleehttps://github.com/espressolee
Aug 23, 2026https://github.com/python-rapidjson/python-rapidjson/pull/237/files#r3838746765
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
98dd717https://github.com/python-rapidjson/python-rapidjson/commit/98dd717b836ab9ded59879cd2e961f345592951f
Please reload this pagehttps://github.com/python-rapidjson/python-rapidjson/pull/237/files
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-0010ee2e80bbe9501783727c9a186c0c908d0038b6123ac9e04d400618fb070b
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-0010ee2e80bbe9501783727c9a186c0c908d0038b6123ac9e04d400618fb070b
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-0010ee2e80bbe9501783727c9a186c0c908d0038b6123ac9e04d400618fb070b
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-0010ee2e80bbe9501783727c9a186c0c908d0038b6123ac9e04d400618fb070b
https://github.com/python-rapidjson/python-rapidjson/pull/237/files#diff-0010ee2e80bbe9501783727c9a186c0c908d0038b6123ac9e04d400618fb070b
Please reload this pagehttps://github.com/python-rapidjson/python-rapidjson/pull/237/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.