Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
73014e1
feat: easy import fixes, ~20% speedup
BradyPlanden Jan 21, 2026
ef53210
feat: next round of imports, another ~40% improvement
BradyPlanden Jan 21, 2026
fe48111
feat: hybrid lazy loading for faster cold-start import
BradyPlanden Jan 21, 2026
e99b40f
refactor: using lazy-loader
BradyPlanden Jan 21, 2026
fa2bdea
infra: stub autogeneration
BradyPlanden Jan 21, 2026
d987521
temp commit: lazy.load implementation
BradyPlanden Jan 22, 2026
9b3d2a6
Adds CompositeSolver class
BradyPlanden Jan 23, 2026
4b3241c
refactor: clean up lazy loading implementation
BradyPlanden Jan 23, 2026
d949ad3
perf: replace lazy.load() with inline imports for external deps
BradyPlanden Jan 23, 2026
8548137
perf: eagerly import high usage submodules, lazy import posthog
BradyPlanden Jan 23, 2026
4076a9f
fix: IDE stub rendering
BradyPlanden Jan 23, 2026
04b31bc
fix: defer JAX config and add stub export validation
BradyPlanden Jan 23, 2026
b85ee6b
refactor: consolidate lazy loading config into single source of truth
BradyPlanden Jan 26, 2026
88c1393
tests: cleanup stale additions, pre-commit
BradyPlanden Jan 26, 2026
8069c32
style: pre-commit fixes
pre-commit-ci[bot] Jan 26, 2026
8e87ec7
fix: docs require full path, remove stale workflow stub check arg
BradyPlanden Jan 26, 2026
92b7831
pre-commit: exclude .pyi stub files
BradyPlanden Jan 26, 2026
ba84f2c
Merge branch 'main' into feat/improvements-for-time-to-first-solve
BradyPlanden Jan 26, 2026
25fe12f
Merge branch 'main' into feat/improvements-for-time-to-first-solve
BradyPlanden Jan 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/test_on_push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@ jobs:
- name: Check style
run: uvx pre-commit run -a

- name: Check stub file is up to date
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please add this into the .pre-commit-config.yaml file directly as a pre-commit hook? This way we won't need to add another step here and it will be covered by uvx pre-commit run -a above:

- id: stub-file-validation
  name: Check that the stub file is up to date
  entry: python scripts/generate_pyi_stub.py
  language: python
  files: ^src/pybamm/*.py$
  pass_filenames: true

Something like this should work (please validate the regex here).

run: |
uv pip install -e . --system
python scripts/generate_pyi_stub.py --validate
python scripts/generate_pyi_stub.py --check

run_unit_tests:
runs-on: ${{ matrix.os }}
permissions:
Expand Down
2 changes: 2 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ repos:
- id: ruff-check
args: [--fix, --show-fixes]
types_or: [python, pyi, jupyter]
exclude: ^src/pybamm/__init__\.pyi$
- id: ruff-format
types_or: [python, pyi, jupyter]
exclude: ^src/pybamm/__init__\.pyi$

- repo: https://github.com/adamchainz/blacken-docs
rev: "1.20.0"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Interface Base Model
====================

.. autoclass:: pybamm.interface.BaseInterface
.. autoclass:: pybamm.models.submodels.interface.BaseInterface
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Utilisation Base Model
======================

.. autoclass:: pybamm.interface.interface_utilisation.BaseModel
.. autoclass:: pybamm.models.submodels.interface.interface_utilisation.BaseModel
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Constant Utilisation
====================

.. autoclass:: pybamm.interface.interface_utilisation.Constant
.. autoclass:: pybamm.models.submodels.interface.interface_utilisation.Constant
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
CurrentDriven Utilisation
=========================

.. autoclass:: pybamm.interface.interface_utilisation.CurrentDriven
.. autoclass:: pybamm.models.submodels.interface.interface_utilisation.CurrentDriven
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Full Utilisation
================

.. autoclass:: pybamm.interface.interface_utilisation.Full
.. autoclass:: pybamm.models.submodels.interface.interface_utilisation.Full
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Base Kinetics
=============

.. autoclass:: pybamm.kinetics.BaseKinetics
.. autoclass:: pybamm.models.submodels.interface.kinetics.BaseKinetics
:members:
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Butler Volmer
=============

.. autoclass:: pybamm.kinetics.SymmetricButlerVolmer
.. autoclass:: pybamm.models.submodels.interface.kinetics.SymmetricButlerVolmer
:members:

.. autoclass:: pybamm.kinetics.AsymmetricButlerVolmer
.. autoclass:: pybamm.models.submodels.interface.kinetics.AsymmetricButlerVolmer
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Diffusion-limited
=================

.. autoclass:: pybamm.kinetics.DiffusionLimited
.. autoclass:: pybamm.models.submodels.interface.kinetics.DiffusionLimited
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Base Inverse Kinetics
=====================

.. autoclass:: pybamm.kinetics.BaseInverseKinetics
.. autoclass:: pybamm.models.submodels.interface.kinetics.BaseInverseKinetics
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Inverse Butler-Volmer
=====================

.. autoclass:: pybamm.kinetics.InverseButlerVolmer
.. autoclass:: pybamm.models.submodels.interface.kinetics.InverseButlerVolmer
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Inverse Linear
==============

.. autoclass:: pybamm.kinetics.InverseLinear
.. autoclass:: pybamm.models.submodels.interface.kinetics.InverseLinear
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Linear
======

.. autoclass:: pybamm.kinetics.Linear
.. autoclass:: pybamm.models.submodels.interface.kinetics.Linear
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Marcus
======

.. autoclass:: pybamm.kinetics.Marcus
.. autoclass:: pybamm.models.submodels.interface.kinetics.Marcus
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSMR Butler Volmer
==================

.. autoclass:: pybamm.kinetics.MSMRButlerVolmer
.. autoclass:: pybamm.models.submodels.interface.kinetics.MSMRButlerVolmer
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
NoReaction
==========

.. autoclass:: pybamm.kinetics.NoReaction
.. autoclass:: pybamm.models.submodels.interface.kinetics.NoReaction
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Tafel
=====

.. autoclass:: pybamm.kinetics.ForwardTafel
.. autoclass:: pybamm.models.submodels.interface.kinetics.ForwardTafel
:members:
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ Total Main Kinetics
===================


.. autoclass:: pybamm.kinetics.TotalMainKinetics
.. autoclass:: pybamm.models.submodels.interface.kinetics.TotalMainKinetics
:members:
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Base Plating
============

.. autoclass:: pybamm.lithium_plating.BasePlating
.. autoclass:: pybamm.models.submodels.interface.lithium_plating.BasePlating
:members:

.. footbibliography::
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
No Plating
==========

.. autoclass:: pybamm.lithium_plating.NoPlating
.. autoclass:: pybamm.models.submodels.interface.lithium_plating.NoPlating
:members:
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Plating
=======

.. autoclass:: pybamm.lithium_plating.Plating
.. autoclass:: pybamm.models.submodels.interface.lithium_plating.Plating
:members:

.. footbibliography::
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Base Open Circuit Potential
===========================

.. autoclass:: pybamm.open_circuit_potential.BaseOpenCircuitPotential
.. autoclass:: pybamm.models.submodels.interface.open_circuit_potential.BaseOpenCircuitPotential
:members:

.. autoclass:: pybamm.open_circuit_potential.BaseHysteresisOpenCircuitPotential
.. autoclass:: pybamm.models.submodels.interface.open_circuit_potential.BaseHysteresisOpenCircuitPotential
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Current Sigmoid Open Circuit Potential
======================================

.. autoclass:: pybamm.open_circuit_potential.CurrentSigmoidOpenCircuitPotential
.. autoclass:: pybamm.models.submodels.interface.open_circuit_potential.CurrentSigmoidOpenCircuitPotential
:members:
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ MSMR Open Circuit Potential
===========================


.. autoclass:: pybamm.open_circuit_potential.MSMROpenCircuitPotential
.. autoclass:: pybamm.models.submodels.interface.open_circuit_potential.MSMROpenCircuitPotential
:members:

.. footbibliography::
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
One State Differential Capacity Hysteresis Open Circuit Potential
=================================================================

.. autoclass:: pybamm.open_circuit_potential.OneStateDifferentialCapacityHysteresisOpenCircuitPotential
.. autoclass:: pybamm.models.submodels.interface.open_circuit_potential.OneStateDifferentialCapacityHysteresisOpenCircuitPotential
:members:

.. footbibliography::
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
One-state hysteresis open-circuit potential
===========================================

.. autoclass:: pybamm.open_circuit_potential.OneStateHysteresisOpenCircuitPotential
.. autoclass:: pybamm.models.submodels.interface.open_circuit_potential.OneStateHysteresisOpenCircuitPotential
:members:

.. footbibliography::
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ Single Open Circuit Potential
=============================


.. autoclass:: pybamm.open_circuit_potential.SingleOpenCircuitPotential
.. autoclass:: pybamm.models.submodels.interface.open_circuit_potential.SingleOpenCircuitPotential
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
SEI Base Model
==============

.. autoclass:: pybamm.sei.BaseModel
.. autoclass:: pybamm.models.submodels.interface.sei.BaseModel
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Constant SEI
============

.. autoclass:: pybamm.sei.ConstantSEI
.. autoclass:: pybamm.models.submodels.interface.sei.ConstantSEI
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
No SEI
======

.. autoclass:: pybamm.sei.NoSEI
.. autoclass:: pybamm.models.submodels.interface.sei.NoSEI
:members:
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
SEI Growth
==========

.. autoclass:: pybamm.sei.SEIGrowth
.. autoclass:: pybamm.models.submodels.interface.sei.SEIGrowth
:members:

.. footbibliography::
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Total SEI
=========

.. autoclass:: pybamm.sei.TotalSEI
.. autoclass:: pybamm.models.submodels.interface.sei.TotalSEI
:members:
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Total Interfacial Current Model
===============================

.. autoclass:: pybamm.interface.TotalInterfacialCurrent
.. autoclass:: pybamm.models.submodels.interface.TotalInterfacialCurrent
:members:
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ dependencies = [
"posthog",
"pyyaml",
"platformdirs",
"lazy_loader>=0.4",
]

[project.urls]
Expand Down
Loading
Loading