diff --git a/docs/source/models/submodels/interface/index.rst b/docs/source/models/submodels/interface/index.rst
index a7f9e0f06..f741d57c6 100644
--- a/docs/source/models/submodels/interface/index.rst
+++ b/docs/source/models/submodels/interface/index.rst
@@ -5,6 +5,7 @@ Interface
   :maxdepth: 1
 
   base_interface
+  inverse_kinetics/index
   kinetics/index
   lead_acid
   lithium_ion
diff --git a/docs/source/models/submodels/interface/inverse_kinetics/index.rst b/docs/source/models/submodels/interface/inverse_kinetics/index.rst
new file mode 100644
index 000000000..d36fa6110
--- /dev/null
+++ b/docs/source/models/submodels/interface/inverse_kinetics/index.rst
@@ -0,0 +1,7 @@
+Inverse Interface Kinetics
+==========================
+
+.. toctree::
+  :maxdepth: 1
+
+  inverse_butler_volmer
diff --git a/docs/source/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.rst b/docs/source/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.rst
new file mode 100644
index 000000000..21b9ed60d
--- /dev/null
+++ b/docs/source/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.rst
@@ -0,0 +1,5 @@
+Inverse Butler-Volmer
+=====================
+
+.. autoclass:: pybamm.interface.inverse_kinetics.BaseInverseButlerVolmer
+    :members:
diff --git a/docs/source/models/submodels/interface/kinetics/index.rst b/docs/source/models/submodels/interface/kinetics/index.rst
index 2f14f495a..d354d9198 100644
--- a/docs/source/models/submodels/interface/kinetics/index.rst
+++ b/docs/source/models/submodels/interface/kinetics/index.rst
@@ -1,10 +1,9 @@
-Interface
-=========
+Interface Kinetics
+==================
 
 .. toctree::
   :maxdepth: 1
 
   base_kinetics
   butler_volmer
-  inverse_butler_volmer
   tafel
diff --git a/docs/source/models/submodels/interface/kinetics/inverse_butler_volmer.rst b/docs/source/models/submodels/interface/kinetics/inverse_butler_volmer.rst
deleted file mode 100644
index f7bf8b643..000000000
--- a/docs/source/models/submodels/interface/kinetics/inverse_butler_volmer.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Inverse Butler-Volmer
-=====================
-
-.. autoclass:: pybamm.interface.kinetics.BaseInverseButlerVolmer
-    :members:
diff --git a/pybamm/models/full_battery_models/lead_acid/base_lead_acid_model.py b/pybamm/models/full_battery_models/lead_acid/base_lead_acid_model.py
index 9671bd779..eac516a9d 100644
--- a/pybamm/models/full_battery_models/lead_acid/base_lead_acid_model.py
+++ b/pybamm/models/full_battery_models/lead_acid/base_lead_acid_model.py
@@ -24,9 +24,7 @@ class BaseModel(pybamm.BaseBatteryModel):
     def default_parameter_values(self):
         input_path = os.path.join(pybamm.root_dir(), "input", "parameters", "lead-acid")
         return pybamm.ParameterValues(
-            os.path.join(
-                input_path, "default.csv"
-            ),
+            os.path.join(input_path, "default.csv"),
             {
                 "Typical current [A]": 1,
                 "Current function": os.path.join(
@@ -74,4 +72,3 @@ class BaseModel(pybamm.BaseBatteryModel):
                 "Discharge capacity [A.h]": I * pybamm.t * time_scale / 3600,
             }
         )
-
diff --git a/pybamm/models/submodels/electrolyte/base_electrolyte_conductivity.py b/pybamm/models/submodels/electrolyte/base_electrolyte_conductivity.py
index 58d258ff8..3e7131539 100644
--- a/pybamm/models/submodels/electrolyte/base_electrolyte_conductivity.py
+++ b/pybamm/models/submodels/electrolyte/base_electrolyte_conductivity.py
@@ -149,7 +149,7 @@ class BaseElectrolyteConductivity(pybamm.BaseSubModel):
         pot_scale = self.param.potential_scale
         delta_phi_av = pybamm.average(delta_phi)
 
-        return {
+        variables = {
             self.domain + " electrode surface potential difference": delta_phi,
             "Average "
             + self.domain.lower()
@@ -161,6 +161,8 @@ class BaseElectrolyteConductivity(pybamm.BaseSubModel):
             + " electrode surface potential difference [V]": delta_phi_av * pot_scale,
         }
 
+        return variables
+
     def _get_domain_potential_variables(self, phi_e, domain):
         """
         A private function to obtain the standard variables which
diff --git a/pybamm/models/submodels/interface/base_interface.py b/pybamm/models/submodels/interface/base_interface.py
index 994f89c7b..f61ebc553 100644
--- a/pybamm/models/submodels/interface/base_interface.py
+++ b/pybamm/models/submodels/interface/base_interface.py
@@ -40,7 +40,7 @@ class BaseInterface(pybamm.BaseSubModel):
 
         i_typ = self.param.i_typ
 
-        return {
+        variables = {
             self.domain + " electrode interfacial current density": j,
             "Average "
             + self.domain.lower()
@@ -51,6 +51,8 @@ class BaseInterface(pybamm.BaseSubModel):
             + " electrode interfacial current density [A.m-2]": i_typ * j_av,
         }
 
+        return variables
+
     def _get_standard_whole_cell_interfacial_current_variables(self, variables):
 
         i_typ = self.param.i_typ
@@ -74,7 +76,7 @@ class BaseInterface(pybamm.BaseSubModel):
         i_typ = self.param.i_typ
         j0_av = pybamm.average(j0)
 
-        return {
+        variables = {
             self.domain + " electrode exchange current density": j0,
             "Average "
             + self.domain.lower()
@@ -85,6 +87,8 @@ class BaseInterface(pybamm.BaseSubModel):
             + " electrode exchange current density [A.m-2]": i_typ * j0_av,
         }
 
+        return variables
+
     def _get_standard_whole_cell_exchange_current_variables(self, variables):
 
         i_typ = self.param.i_typ
@@ -108,7 +112,7 @@ class BaseInterface(pybamm.BaseSubModel):
         pot_scale = self.param.potential_scale
         eta_r_av = pybamm.average(eta_r)
 
-        return {
+        variables = {
             self.domain + " electrode reaction overpotential": eta_r,
             "Average "
             + self.domain.lower()
@@ -119,6 +123,8 @@ class BaseInterface(pybamm.BaseSubModel):
             + " electrode reaction overpotential [V]": eta_r_av * pot_scale,
         }
 
+        return variables
+
     def _get_standard_surface_potential_difference_variables(self, delta_phi):
 
         if self.domain == "Negative":
@@ -129,7 +135,7 @@ class BaseInterface(pybamm.BaseSubModel):
 
         delta_phi_av = pybamm.average(delta_phi)
 
-        return {
+        variables = {
             self.domain + " electrode surface potential difference": delta_phi,
             "Average "
             + self.domain.lower()
@@ -142,3 +148,5 @@ class BaseInterface(pybamm.BaseSubModel):
             + " electrode surface potential difference [V]": ocp_ref
             + delta_phi_av * pot_scale,
         }
+
+        return variables
diff --git a/pybamm/models/submodels/interface/inverse_kinetics/__init__.py b/pybamm/models/submodels/interface/inverse_kinetics/__init__.py
new file mode 100644
index 000000000..eff57af1f
--- /dev/null
+++ b/pybamm/models/submodels/interface/inverse_kinetics/__init__.py
@@ -0,0 +1,1 @@
+from .inverse_butler_volmer import BaseInverseButlerVolmer
diff --git a/pybamm/models/submodels/interface/kinetics/inverse_butler_volmer.py b/pybamm/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.py
similarity index 100%
rename from pybamm/models/submodels/interface/kinetics/inverse_butler_volmer.py
rename to pybamm/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.py
diff --git a/pybamm/models/submodels/interface/kinetics/__init__.py b/pybamm/models/submodels/interface/kinetics/__init__.py
index 3e4f4ae2d..aacb13ef4 100644
--- a/pybamm/models/submodels/interface/kinetics/__init__.py
+++ b/pybamm/models/submodels/interface/kinetics/__init__.py
@@ -1,4 +1,3 @@
 from .base_kinetics import BaseModel
 from .butler_volmer import BaseButlerVolmer
-from .inverse_butler_volmer import BaseInverseButlerVolmer
 from .tafel import BaseForwardTafel, BaseBackwardTafel
diff --git a/pybamm/models/submodels/interface/lead_acid.py b/pybamm/models/submodels/interface/lead_acid.py
index d77bd2c32..b4e290327 100644
--- a/pybamm/models/submodels/interface/lead_acid.py
+++ b/pybamm/models/submodels/interface/lead_acid.py
@@ -3,10 +3,10 @@
 #
 import pybamm
 from .base_interface import BaseInterface
-from . import kinetics
+from . import inverse_kinetics, kinetics
 
 
-class BaseModel(BaseInterface, pybamm.lead_acid.BaseModel):
+class BaseInterfaceLeadAcid(BaseInterface):
     """
     Base lead-acid interface class
 
@@ -19,7 +19,6 @@ class BaseModel(BaseInterface, pybamm.lead_acid.BaseModel):
 
 
     **Extends:** :class:`pybamm.interface.BaseInterface`
-    and :class:`pybamm.lead_acid.BaseModel`
     """
 
     def __init__(self, param, domain):
@@ -79,7 +78,7 @@ class BaseModel(BaseInterface, pybamm.lead_acid.BaseModel):
         ocp_av = pybamm.average(ocp)
         ocp_av_dim = pybamm.average(ocp_dim)
 
-        return {
+        variables = {
             self.domain + " electrode open circuit potential": ocp,
             self.domain + " electrode open circuit potential [V]": ocp_dim,
             "Average "
@@ -90,12 +89,26 @@ class BaseModel(BaseInterface, pybamm.lead_acid.BaseModel):
             + " electrode open circuit potential [V]": ocp_av_dim,
         }
 
+        return variables
+
+
+class ButlerVolmer(BaseInterfaceLeadAcid, kinetics.BaseButlerVolmer):
+    """
+    Extends :class:`BaseInterfaceLeadIon` (for exchange-current density, etc) and
+    :class:`kinetics.BaseButlerVolmer` (for kinetics)
+    """
 
-class ButlerVolmer(BaseModel, kinetics.BaseButlerVolmer):
     def __init__(self, param, domain):
         super().__init__(param, domain)
 
 
-class InverseButlerVolmer(BaseModel, kinetics.BaseInverseButlerVolmer):
+class InverseButlerVolmer(
+    BaseInterfaceLeadAcid, inverse_kinetics.BaseInverseButlerVolmer
+):
+    """
+    Extends :class:`BaseInterfaceLeadAcid` (for exchange-current density, etc) and
+    :class:`inverse_kinetics.BaseInverseButlerVolmer` (for kinetics)
+    """
+
     def __init__(self, param, domain):
         super().__init__(param, domain)
diff --git a/pybamm/models/submodels/interface/lithium_ion.py b/pybamm/models/submodels/interface/lithium_ion.py
index 86471bf71..e98861000 100644
--- a/pybamm/models/submodels/interface/lithium_ion.py
+++ b/pybamm/models/submodels/interface/lithium_ion.py
@@ -3,12 +3,12 @@
 #
 import pybamm
 from .base_interface import BaseInterface
-from . import kinetics
+from . import inverse_kinetics, kinetics
 
 
-class BaseModel(BaseInterface, pybamm.lithium_ion.BaseModel):
+class BaseInterfaceLithiumIon(BaseInterface):
     """
-    Base lead-acid interface class
+    Base lthium-ion interface class
 
     Parameters
     ----------
@@ -19,7 +19,6 @@ class BaseModel(BaseInterface, pybamm.lithium_ion.BaseModel):
 
 
     **Extends:** :class:`pybamm.interface.BaseInterface`
-    and :class:`pybamm.lithium_ion.BaseModel`
     """
 
     def __init__(self, param, domain):
@@ -27,7 +26,7 @@ class BaseModel(BaseInterface, pybamm.lithium_ion.BaseModel):
 
     def _get_exchange_current_density(self, variables):
         """
-        A private function to obtain the exchange current density for a lead acid
+        A private function to obtain the exchange current density for a lithium-ion
         deposition reaction.
 
         Parameters
@@ -87,11 +86,23 @@ class BaseModel(BaseInterface, pybamm.lithium_ion.BaseModel):
         }
 
 
-class ButlerVolmer(BaseModel, kinetics.BaseButlerVolmer):
+class ButlerVolmer(BaseInterfaceLithiumIon, kinetics.BaseButlerVolmer):
+    """
+    Extends :class:`BaseInterfaceLithiumIon` (for exchange-current density, etc) and
+    :class:`kinetics.BaseButlerVolmer` (for kinetics)
+    """
+
     def __init__(self, param, domain):
         super().__init__(param, domain)
 
 
-class InverseButlerVolmer(BaseModel, kinetics.BaseInverseButlerVolmer):
+class InverseButlerVolmer(
+    BaseInterfaceLithiumIon, inverse_kinetics.BaseInverseButlerVolmer
+):
+    """
+    Extends :class:`BaseInterfaceLithiumIon` (for exchange-current density, etc) and
+    :class:`inverse_kinetics.BaseInverseButlerVolmer` (for kinetics)
+    """
+
     def __init__(self, param, domain):
         super().__init__(param, domain)

Comments on pull request 503
Implement the small comments in:

https://github.com/pybamm-team/PyBaMM/pull/503

diff --git a/tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py b/tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py
index d03c4bc76..d4219771f 100644
--- a/tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py
+++ b/tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py
@@ -74,7 +74,8 @@ class TestButlerVolmer(unittest.TestCase):
         ]
 
         # Process parameters
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lithium_ion.BaseModel().default_parameter_values
+
         j_n = parameter_values.process_symbol(j_n)
         j_p = parameter_values.process_symbol(j_p)
         # Test
@@ -96,7 +97,7 @@ class TestButlerVolmer(unittest.TestCase):
         j = pybamm.Concatenation(j_n, pybamm.Broadcast(0, ["separator"]), j_p)
 
         # Process parameters and discretise
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lithium_ion.BaseModel().default_parameter_values
         disc = get_discretisation_for_testing()
         mesh = disc.mesh
         disc.set_variable_slices(
@@ -137,7 +138,7 @@ class TestButlerVolmer(unittest.TestCase):
         param = pybamm.standard_parameters_lead_acid
         model_n = pybamm.interface.lead_acid.ButlerVolmer(param, "Negative")
         model_p = pybamm.interface.lead_acid.ButlerVolmer(param, "Positive")
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
 
         def j_n(c_e):
             variables = {
@@ -182,7 +183,7 @@ class TestButlerVolmer(unittest.TestCase):
         param = pybamm.standard_parameters_lead_acid
         model_n = pybamm.interface.lead_acid.ButlerVolmer(param, "Negative")
         model_p = pybamm.interface.lead_acid.ButlerVolmer(param, "Positive")
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
 
         def j_n(delta_phi):
             variables = {
diff --git a/tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py b/tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py
index 707fb3ccb..e2f6de28b 100644
--- a/tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py
+++ b/tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py
@@ -25,9 +25,9 @@ class TestMainReaction(unittest.TestCase):
     def test_creation_main_reaction(self):
         # With intercalation
         param = pybamm.standard_parameters_lead_acid
-        model_n = pybamm.interface.lead_acid.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lead_acid.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
         j0_p = model_p._get_exchange_current_density(self.variables)
         self.assertEqual(j0_n.domain, ["negative electrode"])
         self.assertEqual(j0_p.domain, ["positive electrode"])
@@ -35,12 +35,12 @@ class TestMainReaction(unittest.TestCase):
     def test_set_parameters_main_reaction(self):
         # With intercalation
         param = pybamm.standard_parameters_lead_acid
-        model_n = pybamm.interface.lead_acid.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lead_acid.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
         j0_p = model_p._get_exchange_current_density(self.variables)
         # Process parameters
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
         j0_n = parameter_values.process_symbol(j0_n)
         j0_p = parameter_values.process_symbol(j0_p)
         # Test
@@ -52,12 +52,12 @@ class TestMainReaction(unittest.TestCase):
     def test_discretisation_main_reaction(self):
         # With intercalation
         param = pybamm.standard_parameters_lead_acid
-        model_n = pybamm.interface.lead_acid.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lead_acid.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
         j0_p = model_p._get_exchange_current_density(self.variables)
         # Process parameters and discretise
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
         disc = get_discretisation_for_testing()
         mesh = disc.mesh
         disc.set_variable_slices([self.c_e])
@@ -79,9 +79,9 @@ class TestMainReaction(unittest.TestCase):
     def test_diff_main_reaction(self):
         # With intercalation
         param = pybamm.standard_parameters_lead_acid
-        model_n = pybamm.interface.lead_acid.BaseModel(param, "Negative")
-        model_p = pybamm.interface.lead_acid.BaseModel(param, "Positive")
-        parameter_values = model_n.default_parameter_values
+        model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
+        model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
+        parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
 
         def j0_n(c_e):
             variables = {**self.variables, "Negative electrolyte concentration": c_e}
diff --git a/tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py b/tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py
index f8b9104d4..c59ef5a69 100644
--- a/tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py
+++ b/tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py
@@ -35,21 +35,29 @@ class TestExchangeCurrentDensity(unittest.TestCase):
 
     def test_creation_lithium_ion(self):
         param = pybamm.standard_parameters_lithium_ion
-        model_n = pybamm.interface.lithium_ion.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Negative"
+        )
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lithium_ion.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Positive"
+        )
         j0_p = model_p._get_exchange_current_density(self.variables)
         self.assertEqual(j0_n.domain, ["negative electrode"])
         self.assertEqual(j0_p.domain, ["positive electrode"])
 
     def test_set_parameters_lithium_ion(self):
         param = pybamm.standard_parameters_lithium_ion
-        model_n = pybamm.interface.lithium_ion.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Negative"
+        )
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lithium_ion.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Positive"
+        )
         j0_p = model_p._get_exchange_current_density(self.variables)
         # Process parameters
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lithium_ion.BaseModel().default_parameter_values
         j0_n = parameter_values.process_symbol(j0_n)
         j0_p = parameter_values.process_symbol(j0_p)
         # Test
@@ -60,12 +68,16 @@ class TestExchangeCurrentDensity(unittest.TestCase):
 
     def test_discretisation_lithium_ion(self):
         param = pybamm.standard_parameters_lithium_ion
-        model_n = pybamm.interface.lithium_ion.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Negative"
+        )
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lithium_ion.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Positive"
+        )
         j0_p = model_p._get_exchange_current_density(self.variables)
         # Process parameters and discretise
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lithium_ion.BaseModel().default_parameter_values
         disc = get_discretisation_for_testing()
         mesh = disc.mesh
         disc.set_variable_slices(
diff --git a/tests/unit/test_models/test_submodels/test_interface/test_kinetics/test_inverse_butler_volmer.py b/tests/unit/test_models/test_submodels/test_interface/test_inverse_kinetics/test_inverse_butler_volmer.py
similarity index 78%
rename from tests/unit/test_models/test_submodels/test_interface/test_kinetics/test_inverse_butler_volmer.py
rename to tests/unit/test_models/test_submodels/test_interface/test_inverse_kinetics/test_inverse_butler_volmer.py
index 4cb7dd016..3e51def77 100644
--- a/tests/unit/test_models/test_submodels/test_interface/test_kinetics/test_inverse_butler_volmer.py
+++ b/tests/unit/test_models/test_submodels/test_interface/test_inverse_kinetics/test_inverse_butler_volmer.py
@@ -13,14 +13,18 @@ class TestBaseModel(unittest.TestCase):
 
         a = pybamm.Scalar(0)
         variables = {"Negative electrode open circuit potential": a}
-        submodel = pybamm.interface.kinetics.BaseInverseButlerVolmer(param, "Negative")
+        submodel = pybamm.interface.inverse_kinetics.BaseInverseButlerVolmer(
+            param, "Negative"
+        )
         std_tests = tests.StandardSubModelTests(submodel, variables)
 
         with self.assertRaises(NotImplementedError):
             std_tests.test_all()
 
         variables = {"Positive electrode open circuit potential": a}
-        submodel = pybamm.interface.kinetics.BaseInverseButlerVolmer(param, "Positive")
+        submodel = pybamm.interface.inverse_kinetics.BaseInverseButlerVolmer(
+            param, "Positive"
+        )
         std_tests = tests.StandardSubModelTests(submodel, variables)
         with self.assertRaises(NotImplementedError):
             std_tests.test_all()

pip install -e .[dev,docs]
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gfortran gcc libopenblas-dev liblapack-dev
3.6
requirements-docs.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
anyio==3.6.2
anytree==2.8.0
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
async-generator==1.10
attrs==22.2.0
autograd==1.6.2
Babel==2.11.0
backcall==0.2.0
bleach==4.1.0
certifi==2021.5.30
cffi==1.15.1
charset-normalizer==2.0.12
comm==0.1.4
contextvars==2.4
cycler==0.11.0
dataclasses==0.8
decorator==5.1.1
defusedxml==0.7.1
docutils==0.17.1
entrypoints==0.4
flake8==5.0.4
future==1.0.0
guzzle-sphinx-theme==0.7.11
idna==3.10
imagesize==1.4.1
immutables==0.19
importlib-metadata==4.2.0
iniconfig==1.1.1
ipykernel==5.5.6
ipython==7.16.3
ipython-genutils==0.2.0
ipywidgets==7.8.5
jedi==0.17.2
Jinja2==3.0.3
json5==0.9.16
jsonschema==3.2.0
jupyter==1.1.1
jupyter-client==7.1.2
jupyter-console==6.4.3
jupyter-core==4.9.2
jupyter-server==1.13.1
jupyterlab==3.2.9
jupyterlab-pygments==0.1.2
jupyterlab-server==2.10.3
jupyterlab_widgets==1.1.11
kiwisolver==1.3.1
MarkupSafe==2.0.1
matplotlib==3.3.4
mccabe==0.7.0
mistune==0.8.4
nbclassic==0.3.5
nbclient==0.5.9
nbconvert==6.0.7
nbformat==5.1.3
nest-asyncio==1.6.0
notebook==6.4.10
numpy==1.19.5
packaging==21.3
pandas==1.1.5
pandocfilters==1.5.1
parso==0.7.1
pexpect==4.9.0
pickleshare==0.7.5
Pillow==8.4.0
pluggy==1.0.0
prometheus-client==0.17.1
prompt-toolkit==3.0.36
ptyprocess==0.7.0
py==1.11.0
-e git+https://github.com/pybamm-team/PyBaMM.git@96e99f070b1032da4e5fdb18e4d1ec1ac47c05b5#egg=pybamm
pycodestyle==2.9.1
pycparser==2.21
pyflakes==2.5.0
Pygments==2.14.0
pyparsing==3.1.4
pyrsistent==0.18.0
pytest==7.0.1
python-dateutil==2.9.0.post0
pytz==2025.2
pyzmq==25.1.2
requests==2.27.1
scipy==1.5.4
Send2Trash==1.8.3
six==1.17.0
sniffio==1.2.0
snowballstemmer==2.2.0
Sphinx==4.3.2
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
terminado==0.12.1
testpath==0.6.0
tomli==1.2.3
tornado==6.1
traitlets==4.3.3
typing_extensions==4.1.1
urllib3==1.26.20
wcwidth==0.2.13
webencodings==0.5.1
websocket-client==1.3.1
widgetsnbextension==3.6.10
zipp==3.6.0

name: PyBaMM
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - anyio==3.6.2
      - anytree==2.8.0
      - argon2-cffi==21.3.0
      - argon2-cffi-bindings==21.2.0
      - async-generator==1.10
      - attrs==22.2.0
      - autograd==1.6.2
      - babel==2.11.0
      - backcall==0.2.0
      - bleach==4.1.0
      - cffi==1.15.1
      - charset-normalizer==2.0.12
      - comm==0.1.4
      - contextvars==2.4
      - cycler==0.11.0
      - dataclasses==0.8
      - decorator==5.1.1
      - defusedxml==0.7.1
      - docutils==0.17.1
      - entrypoints==0.4
      - flake8==5.0.4
      - future==1.0.0
      - guzzle-sphinx-theme==0.7.11
      - idna==3.10
      - imagesize==1.4.1
      - immutables==0.19
      - importlib-metadata==4.2.0
      - iniconfig==1.1.1
      - ipykernel==5.5.6
      - ipython==7.16.3
      - ipython-genutils==0.2.0
      - ipywidgets==7.8.5
      - jedi==0.17.2
      - jinja2==3.0.3
      - json5==0.9.16
      - jsonschema==3.2.0
      - jupyter==1.1.1
      - jupyter-client==7.1.2
      - jupyter-console==6.4.3
      - jupyter-core==4.9.2
      - jupyter-server==1.13.1
      - jupyterlab==3.2.9
      - jupyterlab-pygments==0.1.2
      - jupyterlab-server==2.10.3
      - jupyterlab-widgets==1.1.11
      - kiwisolver==1.3.1
      - markupsafe==2.0.1
      - matplotlib==3.3.4
      - mccabe==0.7.0
      - mistune==0.8.4
      - nbclassic==0.3.5
      - nbclient==0.5.9
      - nbconvert==6.0.7
      - nbformat==5.1.3
      - nest-asyncio==1.6.0
      - notebook==6.4.10
      - numpy==1.19.5
      - packaging==21.3
      - pandas==1.1.5
      - pandocfilters==1.5.1
      - parso==0.7.1
      - pexpect==4.9.0
      - pickleshare==0.7.5
      - pillow==8.4.0
      - pluggy==1.0.0
      - prometheus-client==0.17.1
      - prompt-toolkit==3.0.36
      - ptyprocess==0.7.0
      - py==1.11.0
      - pycodestyle==2.9.1
      - pycparser==2.21
      - pyflakes==2.5.0
      - pygments==2.14.0
      - pyparsing==3.1.4
      - pyrsistent==0.18.0
      - pytest==7.0.1
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - pyzmq==25.1.2
      - requests==2.27.1
      - scipy==1.5.4
      - send2trash==1.8.3
      - six==1.17.0
      - sniffio==1.2.0
      - snowballstemmer==2.2.0
      - sphinx==4.3.2
      - sphinxcontrib-applehelp==1.0.2
      - sphinxcontrib-devhelp==1.0.2
      - sphinxcontrib-htmlhelp==2.0.0
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==1.0.3
      - sphinxcontrib-serializinghtml==1.1.5
      - terminado==0.12.1
      - testpath==0.6.0
      - tomli==1.2.3
      - tornado==6.1
      - traitlets==4.3.3
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - wcwidth==0.2.13
      - webencodings==0.5.1
      - websocket-client==1.3.1
      - widgetsnbextension==3.6.10
      - zipp==3.6.0
prefix: /opt/conda/envs/PyBaMM

tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py::TestMainReaction::test_creation_main_reaction tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py::TestMainReaction::test_diff_main_reaction tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py::TestMainReaction::test_discretisation_main_reaction tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py::TestMainReaction::test_set_parameters_main_reaction tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py::TestExchangeCurrentDensity::test_creation_lithium_ion tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py::TestExchangeCurrentDensity::test_discretisation_lithium_ion tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py::TestExchangeCurrentDensity::test_set_parameters_lithium_ion tests/unit/test_models/test_submodels/test_interface/test_inverse_kinetics/test_inverse_butler_volmer.py::TestBaseModel::test_public_functions
tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py::TestButlerVolmer::test_creation tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py::TestButlerVolmer::test_diff_c_e_lead_acid tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py::TestButlerVolmer::test_diff_delta_phi_e_lead_acid tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py::TestButlerVolmer::test_discretisation tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py::TestButlerVolmer::test_set_parameters
pybamm/models/submodels/electrolyte/base_electrolyte_conductivity.py pybamm/models/submodels/interface/kinetics/inverse_butler_volmer.py docs/source/models/submodels/interface/index.rst pybamm/models/full_battery_models/lead_acid/base_lead_acid_model.py docs/source/models/submodels/interface/kinetics/inverse_butler_volmer.rst pybamm/models/submodels/interface/base_interface.py pybamm/models/submodels/interface/lead_acid.py pybamm/models/submodels/interface/kinetics/__init__.py docs/source/models/submodels/interface/kinetics/index.rst docs/source/models/submodels/interface/inverse_kinetics/index.rst pybamm/models/submodels/interface/inverse_kinetics/__init__.py pybamm/models/submodels/interface/lithium_ion.py docs/source/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.rst
pybamm/models/submodels/electrolyte/base_electrolyte_conductivity.py pybamm/models/submodels/interface/lead_acid.py docs/source/models/submodels/interface/index.rst pybamm/models/full_battery_models/lead_acid/base_lead_acid_model.py docs/source/models/submodels/interface/kinetics/inverse_butler_volmer.rst pybamm/models/submodels/interface/base_interface.py pybamm/models/submodels/interface/kinetics/__init__.py docs/source/models/submodels/interface/kinetics/index.rst docs/source/models/submodels/interface/inverse_kinetics/index.rst pybamm/models/submodels/interface/inverse_kinetics/__init__.py pybamm/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.py pybamm/models/submodels/interface/lithium_ion.py docs/source/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.rst