sqlobjects 1.0.0__tar.gz → 1.0.2__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 (57) hide show
  1. {sqlobjects-1.0.0/sqlobjects.egg-info → sqlobjects-1.0.2}/PKG-INFO +5 -5
  2. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/README.md +4 -4
  3. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/pyproject.toml +11 -4
  4. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/__init__.py +10 -0
  5. sqlobjects-1.0.2/sqlobjects/cascade.py +640 -0
  6. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/database/manager.py +12 -12
  7. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/core.py +382 -36
  8. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/functions.py +45 -7
  9. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/proxies.py +15 -25
  10. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/relations/descriptors.py +8 -3
  11. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/relations/proxies.py +21 -13
  12. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/relations/utils.py +24 -5
  13. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/shortcuts.py +2 -1
  14. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/metadata.py +54 -77
  15. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/mixins.py +45 -2
  16. sqlobjects-1.0.2/sqlobjects/model.py +554 -0
  17. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/queryset.py +199 -4
  18. {sqlobjects-1.0.0 → sqlobjects-1.0.2/sqlobjects.egg-info}/PKG-INFO +5 -5
  19. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects.egg-info/SOURCES.txt +1 -0
  20. sqlobjects-1.0.0/sqlobjects/model.py +0 -294
  21. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/LICENSE +0 -0
  22. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/setup.cfg +0 -0
  23. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/database/__init__.py +0 -0
  24. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/database/config.py +0 -0
  25. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/exceptions.py +0 -0
  26. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/expressions/__init__.py +0 -0
  27. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/expressions/aggregate.py +0 -0
  28. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/expressions/base.py +0 -0
  29. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/expressions/function.py +0 -0
  30. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/expressions/mixins.py +0 -0
  31. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/expressions/scalar.py +0 -0
  32. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/expressions/subquery.py +0 -0
  33. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/expressions/terminal.py +0 -0
  34. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/__init__.py +0 -0
  35. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/relations/__init__.py +0 -0
  36. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/relations/managers.py +0 -0
  37. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/types/__init__.py +0 -0
  38. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/types/base.py +0 -0
  39. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/types/comparators.py +0 -0
  40. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/types/registry.py +0 -0
  41. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/fields/utils.py +0 -0
  42. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/objects/__init__.py +0 -0
  43. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/objects/bulk.py +0 -0
  44. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/objects/core.py +0 -0
  45. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/queries/__init__.py +0 -0
  46. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/queries/builder.py +0 -0
  47. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/queries/executor.py +0 -0
  48. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/session.py +0 -0
  49. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/signals.py +0 -0
  50. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/utils/__init__.py +0 -0
  51. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/utils/inspect.py +0 -0
  52. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/utils/naming.py +0 -0
  53. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/utils/pattern.py +0 -0
  54. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects/validators.py +0 -0
  55. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects.egg-info/dependency_links.txt +0 -0
  56. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects.egg-info/requires.txt +0 -0
  57. {sqlobjects-1.0.0 → sqlobjects-1.0.2}/sqlobjects.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlobjects
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: Django-style async ORM library based on SQLAlchemy with chainable queries, Q objects, and relationship loading
5
5
  Author-email: XtraVisions <gitadmin@xtravisions.com>, Chen Hao <chenhao@xtravisions.com>
6
6
  Maintainer-email: XtraVisions <gitadmin@xtravisions.com>, Chen Hao <chenhao@xtravisions.com>
@@ -258,9 +258,9 @@ user = await User.objects.using("analytics").create(username="analyst")
258
258
  async for user in User.objects.iterator(chunk_size=1000):
259
259
  await process_user(user)
260
260
 
261
- # Cache control for performance
262
- users = await User.objects.filter(User.is_active == True).all() # Uses cache
263
- live_data = await User.objects.no_cache().filter(User.status == "online").all() # Skip cache
261
+ # Field selection for performance
262
+ users = await User.objects.only("id", "username", "email").all() # Load only needed fields
263
+ live_data = await User.objects.defer("bio", "profile_image").all() # Defer heavy fields
264
264
 
265
265
  # Field-level performance optimization
266
266
  class User(ObjectModel):
@@ -336,7 +336,7 @@ uv run pytest
336
336
  See our [TODO.md](TODO.md) for planned features:
337
337
 
338
338
  - **v2.0**: Database health checks, window functions, advanced bulk operations
339
- - **v2.1**: Advanced cache management, query optimization tools
339
+ - **v2.1**: Advanced field optimization, query performance tools
340
340
  - **v2.2+**: CTE support, advanced SQL functions
341
341
 
342
342
  ## 📄 License
@@ -228,9 +228,9 @@ user = await User.objects.using("analytics").create(username="analyst")
228
228
  async for user in User.objects.iterator(chunk_size=1000):
229
229
  await process_user(user)
230
230
 
231
- # Cache control for performance
232
- users = await User.objects.filter(User.is_active == True).all() # Uses cache
233
- live_data = await User.objects.no_cache().filter(User.status == "online").all() # Skip cache
231
+ # Field selection for performance
232
+ users = await User.objects.only("id", "username", "email").all() # Load only needed fields
233
+ live_data = await User.objects.defer("bio", "profile_image").all() # Defer heavy fields
234
234
 
235
235
  # Field-level performance optimization
236
236
  class User(ObjectModel):
@@ -306,7 +306,7 @@ uv run pytest
306
306
  See our [TODO.md](TODO.md) for planned features:
307
307
 
308
308
  - **v2.0**: Database health checks, window functions, advanced bulk operations
309
- - **v2.1**: Advanced cache management, query optimization tools
309
+ - **v2.1**: Advanced field optimization, query performance tools
310
310
  - **v2.2+**: CTE support, advanced SQL functions
311
311
 
312
312
  ## 📄 License
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sqlobjects"
3
- version = "1.0.0"
3
+ version = "1.0.2"
4
4
  description = "Django-style async ORM library based on SQLAlchemy with chainable queries, Q objects, and relationship loading"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -49,7 +49,7 @@ Changelog = "https://github.com/XtraVisionsAI/sqlobjects/blob/main/CHANGELOG.md"
49
49
  dev = [
50
50
  "pre-commit>=4.3.0",
51
51
  "pyright>=1.1.405",
52
- "ruff>=0.12.12",
52
+ "ruff>=0.13.1",
53
53
  "setuptools>=80.9.0",
54
54
  ]
55
55
  test = [
@@ -57,8 +57,8 @@ test = [
57
57
  "aiosqlite>=0.20.0",
58
58
  "asyncpg>=0.30.0",
59
59
  "pytest>=8.4.2",
60
- "pytest-asyncio>=0.24.0",
61
- "psutil>=7.0.0", # For memory monitoring in performance tests
60
+ "pytest-asyncio>=1.2.0",
61
+ "psutil>=7.1.0", # For memory monitoring in performance tests
62
62
  ]
63
63
 
64
64
  [[tool.uv.index]]
@@ -66,6 +66,13 @@ name = "tsinghua"
66
66
  url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
67
67
  default = true
68
68
 
69
+ [tool.commitizen]
70
+ name = "cz_conventional_commits"
71
+ tag_format = "$version"
72
+ version_scheme = "pep440"
73
+ version_provider = "uv"
74
+ update_changelog_on_bump = true
75
+
69
76
  [tool.pyright]
70
77
  include = ["sqlobjects", "tests"]
71
78
  exclude = ["**/__pycache__"]
@@ -4,6 +4,8 @@ A modern, type-safe ORM built on SQLAlchemy Core with Django-style API,
4
4
  designed for high performance and developer productivity.
5
5
  """
6
6
 
7
+ from .cascade import CascadeOption, CascadePresets, CascadeType, OnDelete, OnDeleteType
8
+ from .fields.relations import relationship
7
9
  from .model import ObjectModel
8
10
  from .objects import (
9
11
  BulkResult,
@@ -24,6 +26,14 @@ __all__ = [
24
26
  "ObjectsManager",
25
27
  "QuerySet",
26
28
  "Q",
29
+ # Field definitions
30
+ "relationship",
31
+ # Cascade operations
32
+ "OnDelete",
33
+ "CascadeOption",
34
+ "CascadePresets",
35
+ "OnDeleteType",
36
+ "CascadeType",
27
37
  # Bulk operations
28
38
  "BulkResult",
29
39
  "FailedRecord",