plain.models 0.49.2__py3-none-any.whl → 0.50.0__py3-none-any.whl
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.
- plain/models/CHANGELOG.md +13 -0
- plain/models/aggregates.py +42 -19
- plain/models/backends/base/base.py +125 -105
- plain/models/backends/base/client.py +11 -3
- plain/models/backends/base/creation.py +22 -12
- plain/models/backends/base/features.py +10 -4
- plain/models/backends/base/introspection.py +29 -16
- plain/models/backends/base/operations.py +187 -91
- plain/models/backends/base/schema.py +267 -165
- plain/models/backends/base/validation.py +12 -3
- plain/models/backends/ddl_references.py +85 -43
- plain/models/backends/mysql/base.py +29 -26
- plain/models/backends/mysql/client.py +7 -2
- plain/models/backends/mysql/compiler.py +12 -3
- plain/models/backends/mysql/creation.py +5 -2
- plain/models/backends/mysql/features.py +24 -22
- plain/models/backends/mysql/introspection.py +22 -13
- plain/models/backends/mysql/operations.py +106 -39
- plain/models/backends/mysql/schema.py +48 -24
- plain/models/backends/mysql/validation.py +13 -6
- plain/models/backends/postgresql/base.py +41 -34
- plain/models/backends/postgresql/client.py +7 -2
- plain/models/backends/postgresql/creation.py +10 -5
- plain/models/backends/postgresql/introspection.py +15 -8
- plain/models/backends/postgresql/operations.py +109 -42
- plain/models/backends/postgresql/schema.py +85 -46
- plain/models/backends/sqlite3/_functions.py +151 -115
- plain/models/backends/sqlite3/base.py +37 -23
- plain/models/backends/sqlite3/client.py +7 -1
- plain/models/backends/sqlite3/creation.py +9 -5
- plain/models/backends/sqlite3/features.py +5 -3
- plain/models/backends/sqlite3/introspection.py +32 -16
- plain/models/backends/sqlite3/operations.py +125 -42
- plain/models/backends/sqlite3/schema.py +82 -58
- plain/models/backends/utils.py +52 -29
- plain/models/backups/cli.py +8 -6
- plain/models/backups/clients.py +16 -7
- plain/models/backups/core.py +24 -13
- plain/models/base.py +113 -74
- plain/models/cli.py +94 -63
- plain/models/config.py +1 -1
- plain/models/connections.py +23 -7
- plain/models/constraints.py +65 -47
- plain/models/database_url.py +1 -1
- plain/models/db.py +6 -2
- plain/models/deletion.py +66 -43
- plain/models/entrypoints.py +1 -1
- plain/models/enums.py +22 -11
- plain/models/exceptions.py +23 -8
- plain/models/expressions.py +440 -257
- plain/models/fields/__init__.py +253 -202
- plain/models/fields/json.py +120 -54
- plain/models/fields/mixins.py +12 -8
- plain/models/fields/related.py +284 -252
- plain/models/fields/related_descriptors.py +31 -22
- plain/models/fields/related_lookups.py +23 -11
- plain/models/fields/related_managers.py +81 -47
- plain/models/fields/reverse_related.py +58 -55
- plain/models/forms.py +89 -63
- plain/models/functions/comparison.py +71 -18
- plain/models/functions/datetime.py +79 -29
- plain/models/functions/math.py +43 -10
- plain/models/functions/mixins.py +24 -7
- plain/models/functions/text.py +104 -25
- plain/models/functions/window.py +12 -6
- plain/models/indexes.py +52 -28
- plain/models/lookups.py +228 -153
- plain/models/migrations/autodetector.py +86 -43
- plain/models/migrations/exceptions.py +7 -3
- plain/models/migrations/executor.py +33 -7
- plain/models/migrations/graph.py +79 -50
- plain/models/migrations/loader.py +45 -22
- plain/models/migrations/migration.py +23 -18
- plain/models/migrations/operations/base.py +37 -19
- plain/models/migrations/operations/fields.py +89 -42
- plain/models/migrations/operations/models.py +245 -143
- plain/models/migrations/operations/special.py +82 -25
- plain/models/migrations/optimizer.py +7 -2
- plain/models/migrations/questioner.py +58 -31
- plain/models/migrations/recorder.py +18 -11
- plain/models/migrations/serializer.py +50 -39
- plain/models/migrations/state.py +220 -133
- plain/models/migrations/utils.py +29 -13
- plain/models/migrations/writer.py +17 -14
- plain/models/options.py +63 -56
- plain/models/otel.py +16 -6
- plain/models/preflight.py +35 -12
- plain/models/query.py +323 -228
- plain/models/query_utils.py +93 -58
- plain/models/registry.py +34 -16
- plain/models/sql/compiler.py +146 -97
- plain/models/sql/datastructures.py +38 -25
- plain/models/sql/query.py +255 -169
- plain/models/sql/subqueries.py +32 -21
- plain/models/sql/where.py +54 -29
- plain/models/test/pytest.py +15 -11
- plain/models/test/utils.py +4 -2
- plain/models/transaction.py +20 -7
- plain/models/utils.py +13 -5
- {plain_models-0.49.2.dist-info → plain_models-0.50.0.dist-info}/METADATA +1 -1
- plain_models-0.50.0.dist-info/RECORD +122 -0
- plain_models-0.49.2.dist-info/RECORD +0 -122
- {plain_models-0.49.2.dist-info → plain_models-0.50.0.dist-info}/WHEEL +0 -0
- {plain_models-0.49.2.dist-info → plain_models-0.50.0.dist-info}/entry_points.txt +0 -0
- {plain_models-0.49.2.dist-info → plain_models-0.50.0.dist-info}/licenses/LICENSE +0 -0
plain/models/exceptions.py
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
-
from
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from collections.abc import Callable
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
5
|
+
|
6
|
+
if TYPE_CHECKING:
|
7
|
+
from plain.models.backends.base.base import BaseDatabaseWrapper
|
8
|
+
|
9
|
+
F = TypeVar("F", bound=Callable[..., Any])
|
2
10
|
|
3
11
|
# MARK: Database Query Exceptions
|
4
12
|
|
@@ -152,7 +160,7 @@ class DatabaseErrorWrapper:
|
|
152
160
|
exceptions using Plain's common wrappers.
|
153
161
|
"""
|
154
162
|
|
155
|
-
def __init__(self, wrapper):
|
163
|
+
def __init__(self, wrapper: BaseDatabaseWrapper) -> None:
|
156
164
|
"""
|
157
165
|
wrapper is a database wrapper.
|
158
166
|
|
@@ -160,10 +168,15 @@ class DatabaseErrorWrapper:
|
|
160
168
|
"""
|
161
169
|
self.wrapper = wrapper
|
162
170
|
|
163
|
-
def __enter__(self):
|
171
|
+
def __enter__(self) -> None:
|
164
172
|
pass
|
165
173
|
|
166
|
-
def __exit__(
|
174
|
+
def __exit__(
|
175
|
+
self,
|
176
|
+
exc_type: type[BaseException] | None,
|
177
|
+
exc_value: BaseException | None,
|
178
|
+
traceback: Any,
|
179
|
+
) -> None:
|
167
180
|
if exc_type is None:
|
168
181
|
return
|
169
182
|
for plain_exc_type in (
|
@@ -179,18 +192,20 @@ class DatabaseErrorWrapper:
|
|
179
192
|
):
|
180
193
|
db_exc_type = getattr(self.wrapper.Database, plain_exc_type.__name__)
|
181
194
|
if issubclass(exc_type, db_exc_type):
|
182
|
-
plain_exc_value =
|
195
|
+
plain_exc_value = (
|
196
|
+
plain_exc_type(*exc_value.args) if exc_value else plain_exc_type()
|
197
|
+
)
|
183
198
|
# Only set the 'errors_occurred' flag for errors that may make
|
184
199
|
# the connection unusable.
|
185
200
|
if plain_exc_type not in (DataError, IntegrityError):
|
186
201
|
self.wrapper.errors_occurred = True
|
187
202
|
raise plain_exc_value.with_traceback(traceback) from exc_value
|
188
203
|
|
189
|
-
def __call__(self, func):
|
204
|
+
def __call__(self, func: F) -> F:
|
190
205
|
# Note that we are intentionally not using @wraps here for performance
|
191
206
|
# reasons. Refs #21109.
|
192
|
-
def inner(*args, **kwargs):
|
207
|
+
def inner(*args: Any, **kwargs: Any) -> Any:
|
193
208
|
with self:
|
194
209
|
return func(*args, **kwargs)
|
195
210
|
|
196
|
-
return inner
|
211
|
+
return inner # type: ignore[return-value]
|