lush-sqlalchemyx 0.3.0__tar.gz → 0.3.1__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.
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/PKG-INFO +1 -1
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/pyproject.toml +6 -1
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_async.py +2 -1
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_common.py +5 -2
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_sync.py +2 -1
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/README.md +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/__init__.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/_compat.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/__init__.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/__init__.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_async_v2.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_pagination.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_params.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_repository.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_sync_v2.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/__init__.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/fastapi/__init__.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/fastapi/depends/__init__.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/flask/__init__.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/flask/ext.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/__init__.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/__init__.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/manager.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/mapper.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/sync_manager.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/sync_mapper.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/py.typed +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/same_impl_just_warn_wrapper.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/shortcuts/__init__.py +0 -0
- {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/shortcuts/meta.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "lush-sqlalchemyx"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.1"
|
|
4
4
|
description = "SQLAlchemy helpers (DAL) and async MySQL managers, with some web frameworks integrations"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -304,3 +304,8 @@ reportUnknownArgumentType = false
|
|
|
304
304
|
|
|
305
305
|
[[tool.basedpyright.executionEnvironments]]
|
|
306
306
|
root = "src"
|
|
307
|
+
|
|
308
|
+
[[tool.basedpyright.executionEnvironments]]
|
|
309
|
+
root = "examples"
|
|
310
|
+
# examples 作为下游类型检查 SSOT, 仅继承全局设置, 不做额外放宽.
|
|
311
|
+
# 如果此处报错, 说明库的类型变更破坏了合法下游用法.
|
|
@@ -121,7 +121,8 @@ async def async_temp_set_lock_wait_timeout(
|
|
|
121
121
|
# Async Table bases
|
|
122
122
|
# ---------------------------------------------------------------------------
|
|
123
123
|
|
|
124
|
-
AsyncSQLATableT
|
|
124
|
+
# 隐含约束: AsyncSQLATableT 应为 AsyncSqlATableBase (AsyncAttrs + DeclarativeBase) 子类.
|
|
125
|
+
AsyncSQLATableT = TypeVar("AsyncSQLATableT")
|
|
125
126
|
|
|
126
127
|
|
|
127
128
|
class AsyncSqlATableBase(AsyncAttrs, DeclarativeBase):
|
|
@@ -21,7 +21,7 @@ from lush_dal_protocol.dto import DTOModelT as DTOModelT # noqa: PLC0414
|
|
|
21
21
|
from pydantic import BaseModel, ConfigDict, Field
|
|
22
22
|
from sqlalchemy import event as sa_event
|
|
23
23
|
from sqlalchemy.exc import OperationalError as SQLAlchemyOperationalError
|
|
24
|
-
from sqlalchemy.orm import
|
|
24
|
+
from sqlalchemy.orm import Mapped, ORMExecuteState, mapped_column, with_loader_criteria
|
|
25
25
|
from sqlalchemy.orm import Session as SyncSession
|
|
26
26
|
|
|
27
27
|
READONLY_SESSION_FLAG: Final[str] = "__lush_sqlalchemyx__readonly_session__"
|
|
@@ -139,7 +139,10 @@ DEFAULT_RETRY_CONFIG = RetryConfig(max_attempts=3, initial_delay=0.1, max_delay=
|
|
|
139
139
|
# Pydantic CU / DTO models
|
|
140
140
|
# ---------------------------------------------------------------------------
|
|
141
141
|
|
|
142
|
-
SQLATableT
|
|
142
|
+
# 隐含约束: SQLATableT 应为 SQLAlchemy DeclarativeBase 子类 (含 Flask-SQLAlchemy db.Model).
|
|
143
|
+
# 不设 bound 是因为 Flask-SQLAlchemy 的 db.Model 运行时继承 DeclarativeBase,
|
|
144
|
+
# 但静态类型系统看不到该链路, bound 会误拦合法下游.
|
|
145
|
+
SQLATableT = TypeVar("SQLATableT")
|
|
143
146
|
|
|
144
147
|
|
|
145
148
|
class BaseCU(_ProtocolBaseCU[SQLATableT]):
|
|
@@ -115,7 +115,8 @@ def sync_temp_set_lock_wait_timeout(
|
|
|
115
115
|
# Sync Table bases
|
|
116
116
|
# ---------------------------------------------------------------------------
|
|
117
117
|
|
|
118
|
-
SyncSQLATableT
|
|
118
|
+
# 隐含约束: SyncSQLATableT 应为 DeclarativeBase 子类 (含 Flask-SQLAlchemy db.Model).
|
|
119
|
+
SyncSQLATableT = TypeVar("SyncSQLATableT")
|
|
119
120
|
|
|
120
121
|
|
|
121
122
|
class SyncSqlATableBase(DeclarativeBase):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_async_v2.py
RENAMED
|
File without changes
|
{lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_pagination.py
RENAMED
|
File without changes
|
|
File without changes
|
{lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_repository.py
RENAMED
|
File without changes
|
|
File without changes
|
{lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/flask/ext.py
RENAMED
|
File without changes
|
|
File without changes
|
{lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/__init__.py
RENAMED
|
File without changes
|
{lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/sync_manager.py
RENAMED
|
File without changes
|
{lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/sync_mapper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/shortcuts/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|