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.
Files changed (30) hide show
  1. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/PKG-INFO +1 -1
  2. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/pyproject.toml +6 -1
  3. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_async.py +2 -1
  4. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_common.py +5 -2
  5. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_sync.py +2 -1
  6. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/README.md +0 -0
  7. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/__init__.py +0 -0
  8. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/_compat.py +0 -0
  9. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/__init__.py +0 -0
  10. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/__init__.py +0 -0
  11. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_async_v2.py +0 -0
  12. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_pagination.py +0 -0
  13. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_params.py +0 -0
  14. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_repository.py +0 -0
  15. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/base/dal/_sync_v2.py +0 -0
  16. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/__init__.py +0 -0
  17. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/fastapi/__init__.py +0 -0
  18. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/fastapi/depends/__init__.py +0 -0
  19. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/flask/__init__.py +0 -0
  20. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/integrations/flask/ext.py +0 -0
  21. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/__init__.py +0 -0
  22. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/__init__.py +0 -0
  23. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/manager.py +0 -0
  24. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/mapper.py +0 -0
  25. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/sync_manager.py +0 -0
  26. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/mgrs/mysql/sync_mapper.py +0 -0
  27. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/py.typed +0 -0
  28. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/same_impl_just_warn_wrapper.py +0 -0
  29. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/shortcuts/__init__.py +0 -0
  30. {lush_sqlalchemyx-0.3.0 → lush_sqlalchemyx-0.3.1}/src/lush_sqlalchemyx/shortcuts/meta.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: lush-sqlalchemyx
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: SQLAlchemy helpers (DAL) and async MySQL managers, with some web frameworks integrations
5
5
  Author: straydragon
6
6
  Author-email: straydragon <straydragonl@foxmail.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lush-sqlalchemyx"
3
- version = "0.3.0"
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 = TypeVar("AsyncSQLATableT", bound="AsyncSqlATableBase")
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 DeclarativeBase, Mapped, ORMExecuteState, mapped_column, with_loader_criteria
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 = TypeVar("SQLATableT", bound=DeclarativeBase)
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 = TypeVar("SyncSQLATableT", bound=DeclarativeBase)
118
+ # 隐含约束: SyncSQLATableT 应为 DeclarativeBase 子类 ( Flask-SQLAlchemy db.Model).
119
+ SyncSQLATableT = TypeVar("SyncSQLATableT")
119
120
 
120
121
 
121
122
  class SyncSqlATableBase(DeclarativeBase):