[3.5] bpo-28598: Support __rmod__ for RHS subclasses of str in % string formatting operations#94
Merged
berkerpeksag merged 4 commits intopython:3.5from Feb 27, 2017
mjpieters:bpo28598_backport_3.5
Merged
[3.5] bpo-28598: Support __rmod__ for RHS subclasses of str in % string formatting operations#94berkerpeksag merged 4 commits intopython:3.5from mjpieters:bpo28598_backport_3.5
berkerpeksag merged 4 commits intopython:3.5from
mjpieters:bpo28598_backport_3.5
Conversation
…tr in % string formatting operations
| PyObject *res; | ||
| if (PyUnicode_CheckExact(dividend) && ( | ||
| !PyUnicode_Check(divisor) || PyUnicode_CheckExact(divisor))) { | ||
| // fast path; string formatting, but not if the RHS is a str subclass |
Member
There was a problem hiding this comment.
Do we support // ... style comments in 3.5?
Contributor
Author
There was a problem hiding this comment.
Ah, no, I forgot about C89 vs C99. 3.5 still supports C89 only so the comment will have to be updated.
added 2 commits
February 27, 2017 14:39
…into bpo28598_backport_3.5
serhiy-storchaka
approved these changes
Feb 27, 2017
akruis
pushed a commit
to akruis/cpython
that referenced
this pull request
Sep 9, 2017
This commit makes calls to an initialiser method (__init__(self)) stackless, if soft switching is enabled. https://bitbucket.org/stackless-dev/stackless/issues/94 (grafted from dc2e43c1dbd20f279704c287eb0e2b69e0d14c7f and 43fa00988749)
akruis
pushed a commit
to akruis/cpython
that referenced
this pull request
Sep 9, 2017
This was referenced Feb 11, 2025
SonicField
added a commit
to SonicField/cpython
that referenced
this pull request
Apr 24, 2026
Rename hir_builder_static_method_stack_pop_c to hir_builder_state_static_method_stack_pop_cpp, aligning with the state-bridge _cpp suffix convention established in Batch 2 (Phase 3 exception_table_) and Batch 4 (block_map_). Decl moved from the legacy extern "C" block in builder.h to builder_state_c.h alongside other state bridges. Class B-kept disposition for static_method_stack_ (jit::Stack<Register*>) now 100% closed: - Pop side: hir_builder_state_static_method_stack_pop_cpp bridge (renamed) + 1 C-side caller in builder_emit_c.c (emitInvokeMethod static-typed branch) - Push side: stays C++-direct from C++ method context (builder.cpp:3449); no C-side push-caller materialized, push_cpp bridge deferred per as-needed discipline (theologian 00:28:34Z + supervisor 00:28:51Z, Batch 4 precedent). ZERO new bridges (pure rename). NO opaque pointer added to PhxHirBuilderState (Class B-kept per Batch 4 precedent: bridge available, struct doc-comment notes "in spirit"; subsequent Phase 3 closure amendment per pythia python#94 (3) will explicitly declare keep-bias as final HirBuilder state disposition). Numstat (vs HEAD eb3cdf3): Python/jit/hir/builder.cpp +1 -1 (extern "C" decl rename) Python/jit/hir/builder.h +1 -2 (delete legacy extern; rename friend) Python/jit/hir/builder_emit_c.c +3 -3 (extern + 1 caller + 1 doc-comment rename) Python/jit/hir/builder_state_c.h +9 -0 (NEW decl with state- bridge naming + history) scripts/w45_bridge_drift_falsifier.sh +1 -0 (1 new fixture) TOTAL: NET +9L (forecast +10L; -1L variance, ~10%, under threshold). W45 fixture: 1 new (state_static_method_stack_pop_cpp) added per shepard 22:46:33Z same-commit discipline. Dry-run: 14/14 fixtures stage cleanly. Pre-commit compile-check: testkeeper 00:33:26Z BUILD_EXIT=0, 3-test sanity green (partial_conversions + W22 + W44). W44 gate: PASS. Authorization: theologian 00:28:34Z (P-strict over P-pre-emptive per as-needed consistency) + supervisor 00:28:51Z (DISPOSITION GO P-strict).
SonicField
added a commit
to SonicField/cpython
that referenced
this pull request
Apr 24, 2026
Rename hir_builder_temps_alloc_stack to hir_builder_state_temps_alloc_stack_cpp, aligning with the state-bridge _cpp suffix convention established in Batches 2/4/5. Decl moved from the legacy extern "C" block in builder.h to builder_state_c.h alongside other state bridges. 71 C-side caller sites in builder_emit_c.c renamed in lockstep (mechanical sed-style; line-count preserved). Class B-kept disposition for temps_ (TempAllocator) now CLOSED: - AllocateStack side: hir_builder_state_temps_alloc_stack_cpp bridge (renamed) + 71 C-side callers in builder_emit_c.c - AllocateNonStack + GetOrAllocateStack: stay C++-direct (zero C-side callers verified pre-Step-A by generalist 00:51:54Z + theologian 00:53:06Z); per as-needed discipline. Phase 3 §5 forcing-decision now COMPLETE across all 5 Class B members: - exception_table_ CLOSED via Batch 2 (push + size + entry + find) - block_map_ CLOSED via Batch 4 (blocks_lookup_cpp) - pending_b2_blocks_ DELETED via Batch 3 (dead-state, post-W26 refactor) - static_method_stack_ CLOSED via Batch 5 (pop_cpp rename) - temps_ CLOSED via Batch 6 (alloc_stack_cpp rename) Post-this-commit, theologian will amend spec §5 to declare "Class B-kept is FINAL disposition for HirBuilder state" per pythia python#94 (3) cathedral-scaffold concern + supervisor 23:59:54Z + 00:00:42Z closure-amendment commitment. Numstat (vs HEAD 782d56d): Python/jit/hir/builder.cpp +1 -1 (extern "C" decl rename) Python/jit/hir/builder.h +1 -2 (delete top-of-file extern; rename friend) Python/jit/hir/builder_emit_c.c +73 -73 (mechanical sed: 1 extern + 71 callers + 1 doc-comment) Python/jit/hir/builder_state_c.h +14 -0 (NEW decl with §5 closure history doc) scripts/w45_bridge_drift_falsifier.sh +1 -0 (1 new fixture) TOTAL: NET +14L (forecast +10L; +4L variance from larger §5 closure history doc-comment in builder_state_c.h — substantive explanatory content, not surface-bloat). W45 fixture: 1 new (state_temps_alloc_stack_cpp) added per shepard 22:46:33Z same-commit discipline. Dry-run: 15/15 fixtures stage cleanly. Pre-commit compile-check: testkeeper 00:56:59Z BUILD_EXIT=0, 3-test sanity green (partial_conversions + W22 + W44). W44 gate: PASS. §3.5 BUILD MODE required this batch (touched-files heuristic per supervisor 00:39:20Z amendment — all 4 builder*.{cpp,h,c} files in scope). To be exercised in testkeeper STRICT VERIFY post-commit. Authorization: theologian 00:53:06Z (R-single ATOMIC GO + +10L forecast confirmed; 73-site mechanical rename mitigated by sed-discipline + per-bench floor + §3.5 BUILD MODE catch any unintended runtime change) + supervisor 00:53:18Z (Step B GO).
SonicField
added a commit
to SonicField/cpython
that referenced
this pull request
Apr 24, 2026
Per docs/tier8-class-b-cport-migrate-arm-spec.md theologian 01:01:50Z + supervisor 01:02:46Z ADOPTED + supervisor 01:18:35Z + 03:44:19Z + 04:14:27Z (8-incident root-cause attribution to §3.5 restore-trap + b83f084 fix LIVE). Migrates HIRBuilder std::vector<ExceptionTableEntry> exception_table_ field to PhxExceptionTable (purpose-built typed-inline pure-C container in PhxHirBuilderState.exception_table_phx). Validates Pythia python#103 + python#94 (3) §5 forcing-decision MIGRATE-ARM via 1-pilot port (vs Phase 3's 4-Class-B-kept disposition). CONTAINER: PhxExceptionTable (builder_state_c.h): typed-inline data/count/capacity with 6 inline funcs (init/destroy/push/size/at/clear). Lazy-init, doubling realloc, free at HIRBuilder dtor. ExceptionTableEntry (builder_state_c.h): POD mirror of deleted C++ struct, fields flattened BCOffset → int + bool → unsigned char. C BODY PORTS (builder_state_c.c): hir_builder_state_init: also calls phx_exception_table_init hir_builder_state_destroy: NEW (calls phx_exception_table_destroy) parse_exception_table_c: pushes ExceptionTableEntry via phx_exception_table_push (replaces deleted push_cpp bridge) find_exception_handler_c: linear scan via phx_exception_table_size + at (replaces deleted size_cpp/entry_cpp bridges) C++ SHIM (transient compatibility per Phase A; Phase B deletes): HIRBuilder::parseExceptionTable → 1-line delegate to C body HIRBuilder::findExceptionHandler → C body returns index, shim converts via phx_exception_table_at preserving caller-contract HIRBuilder::buildHIRImpl translate-loop iterates PhxExceptionTable via size+at; .clear() goes to phx_exception_table_clear HIRBuilder::getSimpleExceptInfo wraps handler.target in BCOffset{} (now plain int post-C struct migration) emit_call_method_exception_handler_inline_c at builder.cpp:2883 still calls self->findExceptionHandler (KEPT shim — Phase B will rewire) DELETED: 3 _cpp bridge impls in builder.cpp (push/size/entry, ~37L) 3 friend decls in builder.h C++ struct ExceptionTableEntry in builder.h (5L) std::vector<ExceptionTableEntry> exception_table_ field in builder.h W45 §1-§2 fixture removals (3): the deleted bridges no longer have signatures to fuzz. Cumulative bridge-count delta: -3 (per Tier 8 spec §5 python#11 acceptance). Numstat (vs HEAD b83f084): Python/jit/hir/builder.cpp +21 -44 (-23 NET) Python/jit/hir/builder.h +14 -19 (-5 NET) Python/jit/hir/builder_state_c.c +30 -17 (+13 NET) Python/jit/hir/builder_state_c.h +103 -48 (+55 NET) scripts/w45_bridge_drift_falsifier.sh +0 -3 (-3 NET) TOTAL: NET +37L, bridge-count delta -3. Per Tier 8 spec §5 python#10 amendment (theologian 01:14:29Z): full Tier 8 endpoint ≤+0L cumulative is across all 4 Class B containers, not single pilot. exception_table_ pilot subtracts ~19% of Phase 3 +257L foundation cost; Phase 3 + Tier 8 Phase A cumulative now +257 + 37 = +294L. Apply mechanism: python single-process write (8-incident root cause was §3.5 restore-trap, NOT Write-tool-burst — but python single-process remains best practice per Pythia python#107 (4) isolation principle). Apply script: /tmp/apply_phase_a.py. EXPANDED PRE-COMMIT GATE per supervisor 01:17:23Z (testkeeper 04:24:49Z): Stage 1 compile-check: BUILD_EXIT=0 Stage 2 §3.5 BUILD MODE: 4/4 PASS, PhxExceptionTable INTACT post (§3.5 fix b83f084 VINDICATED) Stage 3 per-bench gate: GEO 1.27x, all 4 floor criteria PASS §5 forcing-decision MIGRATE-ARM EMPIRICALLY VALIDATED via this pilot: exception_table_ migrated to PhxArray-equivalent pure-C container without C++-side-keep dependency in C-side reads. Pattern propagatable to remaining 3 Class B containers (block_map_, temps_, static_method_stack_) in future Tier 8 batches per spec §1.1 container-shape transferability caveat. Phase B follow-up commit (NEXT) deletes C++ shims + rewires the remaining caller at builder.cpp:2883 per Tier 8 spec §5 python#5. Authorization: supervisor 03:44:19Z + 04:14:27Z; theologian 03:33:50Z patch-apply hybrid + 03:54:15Z content-trigger refinement (later attributed to §3.5 trap, not content) + 04:14:27Z fix directive. Cross-link: 8 incidents resolved via b83f084 §3.5 restore-trap fix. Pythia python#105 'fever has name infection still spreads' RESOLVED — fever was self-inflicted instrumentation. W48 spec marked CANCELLED post- this-commit per supervisor 04:14:27Z cascade re-retract.
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.
Backport of #51