| 1234567891011121314151617181920212223242526272829303132333435363738 |
- from __future__ import annotations
- from ..backends import backends, DriverBase
- def _create_driver() -> DriverBase:
- active_drivers = [x.driver for x in backends.values() if x.driver.is_active()]
- if len(active_drivers) != 1:
- raise RuntimeError(f"{len(active_drivers)} active drivers ({active_drivers}). There should only be one.")
- return active_drivers[0]()
- class DriverConfig:
- def __init__(self) -> None:
- self._default: DriverBase | None = None
- self._active: DriverBase | None = None
- @property
- def default(self) -> DriverBase:
- if self._default is None:
- self._default = _create_driver()
- return self._default
- @property
- def active(self) -> DriverBase:
- if self._active is None:
- self._active = self.default
- return self._active
- def set_active(self, driver: DriverBase) -> None:
- self._active = driver
- def reset_active(self) -> None:
- self._active = self.default
- driver = DriverConfig()
|