sqlakit 0.9.1__tar.gz → 0.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlakit-0.9.1 → sqlakit-0.10.0}/PKG-INFO +1 -1
- {sqlakit-0.9.1 → sqlakit-0.10.0}/pyproject.toml +1 -1
- {sqlakit-0.9.1 → sqlakit-0.10.0}/pyproject.toml.orig +1 -1
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_base.py +36 -4
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/debugserver.html +30 -30
- {sqlakit-0.9.1 → sqlakit-0.10.0}/LICENSE +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/README.md +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/__init__.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_cli.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_db.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_debugserver.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_discovery.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_model.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_query.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_recording.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_registry.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_routing.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/_sql.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/asyncio/__init__.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/asyncio/_db.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/asyncio/_registry.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/asyncio/orm.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/asyncio/sql.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/exceptions.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/orm.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/py.typed +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/pytest_plugin.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/sql.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/testing.py +0 -0
- {sqlakit-0.9.1 → sqlakit-0.10.0}/sqlakit/types.py +0 -0
|
@@ -207,6 +207,7 @@ class BaseDatabase(Generic[ConnectionT, SessionT]):
|
|
|
207
207
|
engine_args: EngineArgs | None = None,
|
|
208
208
|
session_args: SessionArgs | None = None,
|
|
209
209
|
templates: TemplatesLike | None = None,
|
|
210
|
+
alias: str | None = None,
|
|
210
211
|
**parts: Unpack[UrlParts],
|
|
211
212
|
) -> None:
|
|
212
213
|
"""Build a database on ``url``, or on the parts to make one from.
|
|
@@ -221,8 +222,14 @@ class BaseDatabase(Generic[ConnectionT, SessionT]):
|
|
|
221
222
|
)
|
|
222
223
|
|
|
223
224
|
Database(DB_URL, templates="app/sql") # where `sql` reads templates from
|
|
225
|
+
Database(WAREHOUSE_URL, alias="warehouse") # what a recording calls it
|
|
224
226
|
```
|
|
225
227
|
|
|
228
|
+
``alias`` is the name a recorded statement carries, for telling two
|
|
229
|
+
databases apart in a log or on the debug server's page. A registry
|
|
230
|
+
names the databases it holds after the aliases they are registered
|
|
231
|
+
under, so it is worth setting on a database you keep yourself.
|
|
232
|
+
|
|
226
233
|
Raises:
|
|
227
234
|
MissingDatabaseUrlError: if given neither a ``url`` nor the parts to
|
|
228
235
|
build one.
|
|
@@ -259,7 +266,7 @@ class BaseDatabase(Generic[ConnectionT, SessionT]):
|
|
|
259
266
|
self._listening = 0
|
|
260
267
|
self._listened: Any = None
|
|
261
268
|
self._listening_lock = threading.Lock()
|
|
262
|
-
self._name = DEFAULT_ALIAS
|
|
269
|
+
self._name = alias or DEFAULT_ALIAS
|
|
263
270
|
|
|
264
271
|
def __repr__(self) -> str:
|
|
265
272
|
return f"{type(self).__name__}({self.url.render_as_string()!r})"
|
|
@@ -781,6 +788,7 @@ class _DatabaseRegistryMixin(BaseDatabase[Any, Any], Generic[DatabaseT]):
|
|
|
781
788
|
skip_queries_from: Sequence[str | PathLike[str]] = (),
|
|
782
789
|
into: Recording | None = None,
|
|
783
790
|
debugserver: DebugServer | tuple[str, int] | None = None,
|
|
791
|
+
using: str | DatabaseT | Sequence[str | DatabaseT] | None = None,
|
|
784
792
|
) -> Iterator[Recording]:
|
|
785
793
|
"""Record every database this registry has, not the default one alone.
|
|
786
794
|
|
|
@@ -791,11 +799,26 @@ class _DatabaseRegistryMixin(BaseDatabase[Any, Any], Generic[DatabaseT]):
|
|
|
791
799
|
record.databases # ("default", "warehouse")
|
|
792
800
|
```
|
|
793
801
|
|
|
794
|
-
Statements say which database ran them.
|
|
795
|
-
|
|
802
|
+
Statements say which database ran them. ``using`` narrows the block to
|
|
803
|
+
the databases named, by alias or in person, as `assert_queries` takes
|
|
804
|
+
them:
|
|
805
|
+
|
|
806
|
+
```python
|
|
807
|
+
with db.recording(using="warehouse"):
|
|
808
|
+
move_the_reports()
|
|
809
|
+
|
|
810
|
+
with db.recording(using=["default", "warehouse"]):
|
|
811
|
+
move_the_reports()
|
|
812
|
+
```
|
|
813
|
+
|
|
814
|
+
`db["warehouse"].recording()` records that one on its own.
|
|
815
|
+
|
|
816
|
+
Raises:
|
|
817
|
+
UnknownDatabaseError: if ``using`` names an alias nothing holds.
|
|
818
|
+
|
|
796
819
|
"""
|
|
797
820
|
together = Recording(label=label) if into is None else into
|
|
798
|
-
databases =
|
|
821
|
+
databases = self._recorded(using)
|
|
799
822
|
with ExitStack() as stack:
|
|
800
823
|
for db in databases:
|
|
801
824
|
stack.enter_context(
|
|
@@ -817,6 +840,15 @@ class _DatabaseRegistryMixin(BaseDatabase[Any, Any], Generic[DatabaseT]):
|
|
|
817
840
|
if debugserver is not None:
|
|
818
841
|
send_recording(together, debugserver)
|
|
819
842
|
|
|
843
|
+
def _recorded(
|
|
844
|
+
self, using: str | DatabaseT | Sequence[str | DatabaseT] | None
|
|
845
|
+
) -> tuple[Any, ...]:
|
|
846
|
+
"""Return the databases a recording watches: the ones named, or all of them."""
|
|
847
|
+
if using is None:
|
|
848
|
+
return tuple(self[alias] for alias in self.aliases)
|
|
849
|
+
asked = using if isinstance(using, (list, tuple, set, frozenset)) else (using,)
|
|
850
|
+
return tuple(self[one] if isinstance(one, str) else one for one in asked)
|
|
851
|
+
|
|
820
852
|
@staticmethod
|
|
821
853
|
def _named(alias: str, db: DatabaseT) -> DatabaseT:
|
|
822
854
|
"""Let a database say which alias it answers to, when it is recorded."""
|