port lazy_loader perf and native PEP810 + add python3.15 support - #6930
port lazy_loader perf and native PEP810 + add python3.15 support#6930benedikt-bartscher wants to merge 9 commits into
Conversation
Merging this PR will improve performance by 4.79%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ⚡ | Simulation | test_evaluate_page[_complicated_page] |
27.3 ms | 25.9 ms | +5.44% |
| ⚡ | Simulation | test_evaluate_page_with_hooks[_complicated_page] |
27.6 ms | 26.2 ms | +5.41% |
| ⚡ | Simulation | test_evaluate_page[_stateful_page] |
4.5 ms | 4.3 ms | +4.68% |
| ⚡ | Simulation | test_evaluate_page_with_hooks[_stateful_page] |
4.7 ms | 4.5 ms | +4.56% |
| ⚡ | Simulation | test_console_log |
372.3 µs | 358.4 µs | +3.88% |
Tip
Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.
Comparing benedikt-bartscher:use-lazy-loader-branch (130a9ee) with main (126ef6d)
Footnotes
-
8 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. ↩
Greptile SummaryThe PR adds Python 3.15 CI and dependency resolution, introduces native PEP 810 lazy imports with package-level attribute caching, and replaces use of a removed private dataclasses type.
Confidence Score: 5/5The PR appears safe to merge because no blocking failure remains within the eligible follow-up-review scope. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| packages/reflex-base/src/reflex_base/utils/lazy_loader.py | Adds validated native PEP 810 bindings and caches resolved lazy attributes; no eligible follow-up defect was established. |
| packages/reflex-base/src/reflex_base/utils/compat.py | Introduces a public compatibility alias for the dataclasses missing-value sentinel type removed in Python 3.15. |
| packages/reflex-base/src/reflex_base/utils/types.py | Normalizes PEP 728 NoExtraItems sentinels when validating TypedDict values. |
| pyproject.toml | Selects pure-Python psycopg on Python 3.15 while retaining the binary extra on earlier versions. |
| uv.lock | Regenerates dependency markers and resolutions to distinguish Python 3.14 and 3.15 environments. |
| tests/units/test_state.py | Marks the known dill fallback incompatibility as expected on Python 3.15. |
| tests/integration/test_dynamic_components.py | Skips the known Python 3.15 dill incompatibility for Redis-backed dynamic-component testing. |
| .github/workflows/unit_tests.yml | Extends Linux, Windows, and macOS unit-test matrices to Python 3.15. |
Reviews (8): Last reviewed commit: "Merge branch 'main' into use-lazy-loader..." | Re-trigger Greptile
There was a problem hiding this comment.
All reported issues were addressed across 17 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
scientific-python/lazy-loader#172
scientific-python/lazy-loader#173