chore(docs): use a builder-portable homepage check in the override template - #455
Merged
Conversation
There was a problem hiding this comment.
Benchmark
Details
| Benchmark suite | Current: 04bcbb3 | Previous: 032e8ec | Ratio |
|---|---|---|---|
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type |
2957692.3989288416 iter/sec (stddev: 2.5378540438786837e-8) |
2935670.6200734777 iter/sec (stddev: 9.049028353180263e-9) |
0.99 |
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry |
2929499.3140015826 iter/sec (stddev: 1.7891225783950698e-8) |
3112450.5020996616 iter/sec (stddev: 1.5206028604887185e-8) |
1.06 |
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve |
23808.41377511408 iter/sec (stddev: 0.000006151525991179151) |
23839.819437226604 iter/sec (stddev: 0.000004588540112142097) |
1.00 |
benchmarks/test_guard_cold.py::test_g8b_cold_first_resolve_cached |
18404.78696687084 iter/sec (stddev: 0.000004569674415284024) |
18456.078963704393 iter/sec (stddev: 0.000004490130347246396) |
1.00 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] |
432.22098216259195 iter/sec (stddev: 0.00005294398545290316) |
435.2946231031614 iter/sec (stddev: 0.00006866699102688879) |
1.01 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] |
413.7158856805711 iter/sec (stddev: 0.00003620620868725245) |
408.9649108123275 iter/sec (stddev: 0.00007308032184575663) |
0.99 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] |
376.34111477184973 iter/sec (stddev: 0.00003584800394370476) |
348.3916838319672 iter/sec (stddev: 0.00027588481773996656) |
0.93 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] |
2217.205548307885 iter/sec (stddev: 0.00003286376206254194) |
2273.653614296736 iter/sec (stddev: 0.00002151229093875247) |
1.03 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] |
1703.859022026382 iter/sec (stddev: 0.000034867777768477854) |
1687.4341294666815 iter/sec (stddev: 0.00003796638937519399) |
0.99 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] |
1153.8569379702524 iter/sec (stddev: 0.00004286771375870701) |
1145.6557397851677 iter/sec (stddev: 0.00003435700941923532) |
0.99 |
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container |
727834.5758646571 iter/sec (stddev: 4.526478663244454e-8) |
757387.5725985781 iter/sec (stddev: 4.141269526957182e-8) |
1.04 |
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope |
682084.155882815 iter/sec (stddev: 9.138036323416977e-8) |
681044.8979009917 iter/sec (stddev: 2.74365998701665e-8) |
1.00 |
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch |
2264.1707727517382 iter/sec (stddev: 0.00003989416791262109) |
2335.685940782144 iter/sec (stddev: 0.000012191155130405179) |
1.03 |
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control |
57800.17601866104 iter/sec (stddev: 0.0000022986387744473665) |
62052.75436745368 iter/sec (stddev: 0.00000217657442190837) |
1.07 |
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale |
45925.20140456258 iter/sec (stddev: 0.0000017815014821440133) |
46420.765922504885 iter/sec (stddev: 0.0000021890985181612635) |
1.01 |
benchmarks/test_guard_resolve.py::test_g1_transient_resolve |
1820791.9234034019 iter/sec (stddev: 8.658155068621275e-8) |
1937573.7005389982 iter/sec (stddev: 2.2326766002233246e-8) |
1.06 |
benchmarks/test_guard_resolve.py::test_g2_cached_resolve |
3284568.7642110977 iter/sec (stddev: 8.14076846546722e-9) |
3221184.259857156 iter/sec (stddev: 7.956451943987457e-9) |
0.98 |
benchmarks/test_guard_resolve.py::test_g3_deep_chain |
720711.8514187422 iter/sec (stddev: 6.629135006988897e-8) |
739670.6701468946 iter/sec (stddev: 3.3881894450057316e-8) |
1.03 |
benchmarks/test_guard_resolve.py::test_g4_wide_resolve |
402075.06114195986 iter/sec (stddev: 2.228002445469527e-7) |
413484.39598088106 iter/sec (stddev: 8.594346413570085e-8) |
1.03 |
benchmarks/test_guard_resolve.py::test_g5_cross_scope |
1588001.3791801294 iter/sec (stddev: 2.478491543601475e-8) |
1591235.0319345426 iter/sec (stddev: 2.8409447283230043e-8) |
1.00 |
benchmarks/test_guard_resolve.py::test_g9_context_resolve |
844816.3588876746 iter/sec (stddev: 4.137255398274066e-8) |
851607.753436972 iter/sec (stddev: 4.2133795400223295e-8) |
1.01 |
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve |
480586.21522065037 iter/sec (stddev: 6.117008189794466e-8) |
495053.38942874945 iter/sec (stddev: 4.746571366710767e-8) |
1.03 |
benchmarks/test_guard_resolve.py::test_g18_alias_hop |
2267210.788185624 iter/sec (stddev: 1.403629479555219e-8) |
2103271.6917714234 iter/sec (stddev: 2.385135675301081e-8) |
0.93 |
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain |
27658.656298674017 iter/sec (stddev: 0.000003804398973673808) |
27811.285482017563 iter/sec (stddev: 0.0000037031362964937077) |
1.01 |
benchmarks/test_guard_validate.py::test_g11_validate_wide |
17184.78733657603 iter/sec (stddev: 0.0000059491180922012215) |
17259.77038836002 iter/sec (stddev: 0.000005341312985304498) |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
lesnik512
force-pushed
the
chore/portable-homepage-check
branch
from
September 6, 2026 17:46
02e9cf7 to
04bcbb3
Compare
Member
Author
|
Force-pushed after a rebase onto |
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.
Why
page.is_homepageis a MkDocsPageproperty with no equivalent in Zensical, which the org isevaluating as a future docs builder (modern-python/.github#60). It fails silently, not loudly:
at Zensical 0.0.59 the property does not exist anywhere in the source, and an undefined name
resolves falsy in MiniJinja — so the home page would fall through to the non-home branch and emit a
wrong
og:title/twitter:titlewith no warning.nav.homepageis exposed by both builders — MkDocs documents it ashomepage: Page | None(https://www.mkdocs.org/dev-guide/themes/), and Zensical serializes it in
crates/zensical/src/structure/nav/view.rs— so comparingpage.urlagainst it is portable.Part of modern-python/.github#71, which makes the same change in each repo with an
overrides/main.html.Design
{%- set is_home = nav.homepage and page.url == nav.homepage.url %}, thennot is_homewherenot page.is_homepageused to be.nav.homepage andguard is load-bearing: MkDocs types itPage | None. When it isNonethe expression is falsy, which matches
is_homepagebeingFalseon every page of a site withno home page.
{%-left-trim is also load-bearing: without it the new tag adds a blank line to everyrendered page.
Non-goals
Not a Zensical migration. #60 stays open and stays blocked on unrelated gaps (
exclude_docs,validation.omitted_files). This change is a no-op under MkDocs today and does not depend on thatwork landing.
Verification
Full-site build diff with the pinned toolchain,
mainvs this branch:--strictpasses on both, and the output is byte-identical across all 64 pages — includingindex.html's<title>,og:titleandtwitter:title, which are what this touches.