fastapi-toolsets 4.1.2__tar.gz → 4.1.3__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.
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/PKG-INFO +1 -1
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/pyproject.toml +1 -1
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/__init__.py +1 -1
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/pytest/utils.py +26 -8
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/LICENSE +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/README.md +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/_imports.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/cli/__init__.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/cli/app.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/cli/commands/__init__.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/cli/commands/fixtures.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/cli/config.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/cli/pyproject.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/cli/utils.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/crud/__init__.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/crud/factory.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/crud/search.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/db.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/dependencies.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/exceptions/__init__.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/exceptions/exceptions.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/exceptions/handler.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/fixtures/__init__.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/fixtures/enum.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/fixtures/registry.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/fixtures/utils.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/logger.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/metrics/__init__.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/metrics/handler.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/metrics/registry.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/models/__init__.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/models/columns.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/models/watched.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/py.typed +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/pytest/__init__.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/pytest/plugin.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/schemas.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/__init__.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/abc.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/oauth.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/sources/__init__.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/sources/bearer.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/sources/cookie.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/sources/header.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/sources/multi.py +0 -0
- {fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/types.py +0 -0
|
@@ -34,12 +34,18 @@ def _get_xdist_worker(default_test_db: str) -> str:
|
|
|
34
34
|
return os.environ.get("PYTEST_XDIST_WORKER", default_test_db)
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
def worker_database_url(
|
|
37
|
+
def worker_database_url(
|
|
38
|
+
database_url: str,
|
|
39
|
+
default_test_db: str,
|
|
40
|
+
*,
|
|
41
|
+
prefix: str | None = None,
|
|
42
|
+
) -> str:
|
|
38
43
|
"""Derive a per-worker database URL for pytest-xdist parallel runs.
|
|
39
44
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
45
|
+
Sets the database name to the worker name so each xdist worker operates
|
|
46
|
+
on its own database. When not running under xdist, *default_test_db* is
|
|
47
|
+
used instead. When *prefix* is provided, the name becomes
|
|
48
|
+
``{prefix}_{worker}``.
|
|
43
49
|
|
|
44
50
|
The worker name is read from the ``PYTEST_XDIST_WORKER`` environment
|
|
45
51
|
variable (set automatically by xdist in each worker process).
|
|
@@ -48,6 +54,9 @@ def worker_database_url(database_url: str, default_test_db: str) -> str:
|
|
|
48
54
|
database_url: Original database connection URL.
|
|
49
55
|
default_test_db: Suffix appended to the database name when
|
|
50
56
|
``PYTEST_XDIST_WORKER`` is not set.
|
|
57
|
+
prefix: Optional prefix prepended to the worker name
|
|
58
|
+
(e.g. ``"test"`` → ``"test_gw0"``). Without it, the database
|
|
59
|
+
name is just the worker name (e.g. ``"gw0"``).
|
|
51
60
|
|
|
52
61
|
Returns:
|
|
53
62
|
A database URL with a worker- or default-specific database name.
|
|
@@ -55,7 +64,8 @@ def worker_database_url(database_url: str, default_test_db: str) -> str:
|
|
|
55
64
|
worker = _get_xdist_worker(default_test_db=default_test_db)
|
|
56
65
|
|
|
57
66
|
url = make_url(database_url)
|
|
58
|
-
|
|
67
|
+
db_name = f"{prefix}_{worker}" if prefix else worker
|
|
68
|
+
url = url.set(database=db_name)
|
|
59
69
|
return url.render_as_string(hide_password=False)
|
|
60
70
|
|
|
61
71
|
|
|
@@ -64,6 +74,7 @@ async def create_worker_database(
|
|
|
64
74
|
database_url: str,
|
|
65
75
|
default_test_db: str = "test_db",
|
|
66
76
|
*,
|
|
77
|
+
prefix: str | None = None,
|
|
67
78
|
server_url: str | None = None,
|
|
68
79
|
) -> AsyncGenerator[str, None]:
|
|
69
80
|
"""Create and drop a per-worker database for pytest-xdist isolation.
|
|
@@ -80,6 +91,9 @@ async def create_worker_database(
|
|
|
80
91
|
the worker database name).
|
|
81
92
|
default_test_db: Suffix appended to the database name when
|
|
82
93
|
``PYTEST_XDIST_WORKER`` is not set. Defaults to ``"test_db"``.
|
|
94
|
+
prefix: Optional prefix prepended to the worker name
|
|
95
|
+
(e.g. ``prefix="test"`` → ``"test_gw0"``). Without it, the
|
|
96
|
+
database name is just the worker name (e.g. ``"gw0"``).
|
|
83
97
|
server_url: URL used for server-level DDL (must point to an existing
|
|
84
98
|
database on the same server). Defaults to *database_url* with the
|
|
85
99
|
database omitted, letting asyncpg fall back to the username.
|
|
@@ -107,7 +121,7 @@ async def create_worker_database(
|
|
|
107
121
|
```
|
|
108
122
|
"""
|
|
109
123
|
worker_url = worker_database_url(
|
|
110
|
-
database_url=database_url, default_test_db=default_test_db
|
|
124
|
+
database_url=database_url, default_test_db=default_test_db, prefix=prefix
|
|
111
125
|
)
|
|
112
126
|
worker_db_name = make_url(worker_url).database
|
|
113
127
|
assert worker_db_name is not None
|
|
@@ -125,13 +139,17 @@ async def create_worker_database(
|
|
|
125
139
|
engine = create_async_engine(_server_url, isolation_level="AUTOCOMMIT")
|
|
126
140
|
try:
|
|
127
141
|
async with engine.connect() as conn:
|
|
128
|
-
await conn.execute(
|
|
142
|
+
await conn.execute(
|
|
143
|
+
text(f"DROP DATABASE IF EXISTS {worker_db_name} WITH (FORCE)")
|
|
144
|
+
)
|
|
129
145
|
await create_database(db_name=worker_db_name, server_url=_server_url)
|
|
130
146
|
|
|
131
147
|
yield worker_url
|
|
132
148
|
|
|
133
149
|
async with engine.connect() as conn:
|
|
134
|
-
await conn.execute(
|
|
150
|
+
await conn.execute(
|
|
151
|
+
text(f"DROP DATABASE IF EXISTS {worker_db_name} WITH (FORCE)")
|
|
152
|
+
)
|
|
135
153
|
finally:
|
|
136
154
|
await engine.dispose()
|
|
137
155
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/cli/commands/__init__.py
RENAMED
|
File without changes
|
{fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/cli/commands/fixtures.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/exceptions/__init__.py
RENAMED
|
File without changes
|
{fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/exceptions/exceptions.py
RENAMED
|
File without changes
|
{fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/exceptions/handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/sources/__init__.py
RENAMED
|
File without changes
|
{fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/sources/bearer.py
RENAMED
|
File without changes
|
{fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/sources/cookie.py
RENAMED
|
File without changes
|
{fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/sources/header.py
RENAMED
|
File without changes
|
{fastapi_toolsets-4.1.2 → fastapi_toolsets-4.1.3}/src/fastapi_toolsets/security/sources/multi.py
RENAMED
|
File without changes
|
|
File without changes
|