sqlseed 0.2.1__tar.gz → 0.2.4__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 (144) hide show
  1. sqlseed-0.2.4/.gitignore +125 -0
  2. {sqlseed-0.2.1 → sqlseed-0.2.4}/CHANGELOG.md +32 -0
  3. {sqlseed-0.2.1 → sqlseed-0.2.4}/CHANGELOG.zh-CN.md +32 -0
  4. sqlseed-0.2.4/LICENSE +679 -0
  5. sqlseed-0.2.4/PKG-INFO +1279 -0
  6. sqlseed-0.2.4/README.md +1213 -0
  7. sqlseed-0.2.4/README.zh-CN.md +1029 -0
  8. sqlseed-0.2.4/pyproject.toml +460 -0
  9. sqlseed-0.2.4/src/sqlseed/AGENTS.md +42 -0
  10. sqlseed-0.2.4/src/sqlseed/__init__.py +274 -0
  11. sqlseed-0.2.4/src/sqlseed/_utils/AGENTS.md +26 -0
  12. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/_utils/__init__.py +2 -0
  13. sqlseed-0.2.4/src/sqlseed/_utils/daemon_task.py +60 -0
  14. sqlseed-0.2.4/src/sqlseed/_utils/logger.py +67 -0
  15. sqlseed-0.2.4/src/sqlseed/_utils/metrics.py +80 -0
  16. sqlseed-0.2.4/src/sqlseed/_utils/paths.py +103 -0
  17. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/_utils/progress.py +144 -56
  18. sqlseed-0.2.4/src/sqlseed/_utils/sql_safe.py +83 -0
  19. sqlseed-0.2.4/src/sqlseed/_utils/type_checks.py +17 -0
  20. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/_version.py +2 -0
  21. sqlseed-0.2.4/src/sqlseed/config/AGENTS.md +35 -0
  22. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/config/__init__.py +12 -1
  23. sqlseed-0.2.4/src/sqlseed/config/loader.py +186 -0
  24. sqlseed-0.2.4/src/sqlseed/config/models.py +268 -0
  25. sqlseed-0.2.4/src/sqlseed/config/snapshot.py +125 -0
  26. sqlseed-0.2.4/src/sqlseed/core/AGENTS.md +57 -0
  27. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/core/__init__.py +9 -0
  28. sqlseed-0.2.4/src/sqlseed/core/check_adapt.py +304 -0
  29. sqlseed-0.2.4/src/sqlseed/core/check_parser.py +505 -0
  30. sqlseed-0.2.4/src/sqlseed/core/column_dag.py +259 -0
  31. sqlseed-0.2.4/src/sqlseed/core/constraints.py +279 -0
  32. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/core/enrichment.py +89 -15
  33. sqlseed-0.2.4/src/sqlseed/core/expression.py +222 -0
  34. sqlseed-0.2.4/src/sqlseed/core/features.py +462 -0
  35. sqlseed-0.2.4/src/sqlseed/core/mapper.py +621 -0
  36. sqlseed-0.2.4/src/sqlseed/core/orchestrator/AGENTS.md +55 -0
  37. sqlseed-0.2.4/src/sqlseed/core/orchestrator/__init__.py +56 -0
  38. sqlseed-0.2.4/src/sqlseed/core/orchestrator/_common.py +69 -0
  39. sqlseed-0.2.4/src/sqlseed/core/orchestrator/_connection.py +244 -0
  40. sqlseed-0.2.4/src/sqlseed/core/orchestrator/_generation.py +543 -0
  41. sqlseed-0.2.4/src/sqlseed/core/orchestrator/_query.py +261 -0
  42. sqlseed-0.2.4/src/sqlseed/core/orchestrator/_self_ref.py +172 -0
  43. sqlseed-0.2.4/src/sqlseed/core/orchestrator/_session.py +54 -0
  44. sqlseed-0.2.4/src/sqlseed/core/orchestrator/_specs.py +620 -0
  45. sqlseed-0.2.4/src/sqlseed/core/plugin_mediator.py +150 -0
  46. sqlseed-0.2.4/src/sqlseed/core/relation.py +954 -0
  47. sqlseed-0.2.4/src/sqlseed/core/result.py +44 -0
  48. sqlseed-0.2.4/src/sqlseed/core/schema.py +271 -0
  49. sqlseed-0.2.4/src/sqlseed/core/schema_fallback.py +202 -0
  50. sqlseed-0.2.4/src/sqlseed/core/schema_metadata.py +68 -0
  51. sqlseed-0.2.4/src/sqlseed/core/stream.py +931 -0
  52. sqlseed-0.2.4/src/sqlseed/core/transform.py +45 -0
  53. sqlseed-0.2.4/src/sqlseed/core/unique_adjuster.py +373 -0
  54. sqlseed-0.2.4/src/sqlseed/database/AGENTS.md +53 -0
  55. sqlseed-0.2.4/src/sqlseed/database/__init__.py +43 -0
  56. sqlseed-0.2.4/src/sqlseed/database/_base_adapter.py +206 -0
  57. sqlseed-0.2.4/src/sqlseed/database/_bulk_optimizer.py +171 -0
  58. sqlseed-0.2.4/src/sqlseed/database/_dialect.py +227 -0
  59. sqlseed-0.2.4/src/sqlseed/database/_helpers.py +152 -0
  60. sqlseed-0.2.4/src/sqlseed/database/_protocol.py +186 -0
  61. sqlseed-0.2.4/src/sqlseed/database/_sqlite_schema.py +133 -0
  62. sqlseed-0.2.4/src/sqlseed/database/_type_normalizer.py +158 -0
  63. sqlseed-0.2.4/src/sqlseed/database/_unique_keys.py +66 -0
  64. sqlseed-0.2.4/src/sqlseed/database/_value_normalizer.py +75 -0
  65. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/database/optimizer.py +53 -0
  66. sqlseed-0.2.4/src/sqlseed/database/raw_sqlite_adapter.py +344 -0
  67. sqlseed-0.2.4/src/sqlseed/database/sqlalchemy_adapter.py +1143 -0
  68. sqlseed-0.2.4/src/sqlseed/generators/AGENTS.md +34 -0
  69. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/generators/__init__.py +2 -2
  70. sqlseed-0.2.4/src/sqlseed/generators/_datetime_methods.py +127 -0
  71. sqlseed-0.2.4/src/sqlseed/generators/_datetime_utils.py +216 -0
  72. sqlseed-0.2.4/src/sqlseed/generators/_dispatch.py +150 -0
  73. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/generators/_json_helpers.py +39 -9
  74. sqlseed-0.2.4/src/sqlseed/generators/_native_provider.py +35 -0
  75. sqlseed-0.2.4/src/sqlseed/generators/_protocol.py +68 -0
  76. sqlseed-0.2.4/src/sqlseed/generators/_string_helpers.py +56 -0
  77. sqlseed-0.2.4/src/sqlseed/generators/base_provider.py +581 -0
  78. sqlseed-0.2.4/src/sqlseed/generators/faker_provider.py +246 -0
  79. sqlseed-0.2.4/src/sqlseed/generators/mimesis_provider.py +208 -0
  80. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/generators/registry.py +63 -11
  81. sqlseed-0.2.4/src/sqlseed/plugins/AGENTS.md +28 -0
  82. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/plugins/__init__.py +2 -0
  83. sqlseed-0.2.4/src/sqlseed/plugins/hookspecs.py +178 -0
  84. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/plugins/manager.py +20 -0
  85. sqlseed-0.2.1/.gitignore +0 -70
  86. sqlseed-0.2.1/LICENSE +0 -17
  87. sqlseed-0.2.1/PKG-INFO +0 -1098
  88. sqlseed-0.2.1/README.md +0 -1038
  89. sqlseed-0.2.1/README.zh-CN.md +0 -846
  90. sqlseed-0.2.1/examples/build_demo_db.py +0 -233
  91. sqlseed-0.2.1/examples/notebooks/01-quickstart.ipynb +0 -1314
  92. sqlseed-0.2.1/examples/notebooks/02-column-mapping.ipynb +0 -1437
  93. sqlseed-0.2.1/examples/notebooks/03-generators.ipynb +0 -1025
  94. sqlseed-0.2.1/examples/notebooks/04-database-advanced.ipynb +0 -1019
  95. sqlseed-0.2.1/examples/notebooks/05-dag-and-constraints.ipynb +0 -833
  96. sqlseed-0.2.1/examples/notebooks/06-config-deep-dive.ipynb +0 -1247
  97. sqlseed-0.2.1/examples/notebooks/07-ai-plugin.ipynb +0 -630
  98. sqlseed-0.2.1/examples/notebooks/08-mcp-server.ipynb +0 -595
  99. sqlseed-0.2.1/examples/notebooks/09-plugin-hooks.ipynb +0 -634
  100. sqlseed-0.2.1/examples/notebooks/10-cli-reference.ipynb +0 -785
  101. sqlseed-0.2.1/examples/notebooks/11-utilities.ipynb +0 -542
  102. sqlseed-0.2.1/examples/notebooks/12-testing-patterns.ipynb +0 -729
  103. sqlseed-0.2.1/pyproject.toml +0 -140
  104. sqlseed-0.2.1/scripts/_create_demo_db.py +0 -52
  105. sqlseed-0.2.1/scripts/quickstart.py +0 -179
  106. sqlseed-0.2.1/src/sqlseed/__init__.py +0 -158
  107. sqlseed-0.2.1/src/sqlseed/_utils/logger.py +0 -35
  108. sqlseed-0.2.1/src/sqlseed/_utils/metrics.py +0 -45
  109. sqlseed-0.2.1/src/sqlseed/_utils/paths.py +0 -41
  110. sqlseed-0.2.1/src/sqlseed/_utils/schema_helpers.py +0 -57
  111. sqlseed-0.2.1/src/sqlseed/_utils/sql_safe.py +0 -58
  112. sqlseed-0.2.1/src/sqlseed/cli/__init__.py +0 -5
  113. sqlseed-0.2.1/src/sqlseed/cli/main.py +0 -533
  114. sqlseed-0.2.1/src/sqlseed/config/loader.py +0 -79
  115. sqlseed-0.2.1/src/sqlseed/config/models.py +0 -141
  116. sqlseed-0.2.1/src/sqlseed/config/snapshot.py +0 -86
  117. sqlseed-0.2.1/src/sqlseed/core/column_dag.py +0 -130
  118. sqlseed-0.2.1/src/sqlseed/core/constraints.py +0 -142
  119. sqlseed-0.2.1/src/sqlseed/core/expression.py +0 -89
  120. sqlseed-0.2.1/src/sqlseed/core/mapper.py +0 -347
  121. sqlseed-0.2.1/src/sqlseed/core/orchestrator.py +0 -623
  122. sqlseed-0.2.1/src/sqlseed/core/plugin_mediator.py +0 -213
  123. sqlseed-0.2.1/src/sqlseed/core/relation.py +0 -390
  124. sqlseed-0.2.1/src/sqlseed/core/result.py +0 -23
  125. sqlseed-0.2.1/src/sqlseed/core/schema.py +0 -131
  126. sqlseed-0.2.1/src/sqlseed/core/transform.py +0 -27
  127. sqlseed-0.2.1/src/sqlseed/core/unique_adjuster.py +0 -145
  128. sqlseed-0.2.1/src/sqlseed/database/__init__.py +0 -16
  129. sqlseed-0.2.1/src/sqlseed/database/_base_adapter.py +0 -87
  130. sqlseed-0.2.1/src/sqlseed/database/_compat.py +0 -35
  131. sqlseed-0.2.1/src/sqlseed/database/_helpers.py +0 -70
  132. sqlseed-0.2.1/src/sqlseed/database/_protocol.py +0 -74
  133. sqlseed-0.2.1/src/sqlseed/database/raw_sqlite_adapter.py +0 -146
  134. sqlseed-0.2.1/src/sqlseed/database/sqlite_utils_adapter.py +0 -152
  135. sqlseed-0.2.1/src/sqlseed/generators/_dispatch.py +0 -48
  136. sqlseed-0.2.1/src/sqlseed/generators/_protocol.py +0 -30
  137. sqlseed-0.2.1/src/sqlseed/generators/_string_helpers.py +0 -31
  138. sqlseed-0.2.1/src/sqlseed/generators/base_provider.py +0 -678
  139. sqlseed-0.2.1/src/sqlseed/generators/faker_provider.py +0 -147
  140. sqlseed-0.2.1/src/sqlseed/generators/mimesis_provider.py +0 -162
  141. sqlseed-0.2.1/src/sqlseed/generators/stream.py +0 -278
  142. sqlseed-0.2.1/src/sqlseed/plugins/hookspecs.py +0 -119
  143. sqlseed-0.2.1/uv.lock +0 -1593
  144. {sqlseed-0.2.1 → sqlseed-0.2.4}/src/sqlseed/py.typed +0 -0
@@ -0,0 +1,125 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+ *.whl
23
+ *.tar.gz
24
+
25
+ # Virtual Environment
26
+ .venv/
27
+ venv/
28
+ env/
29
+ ENV/
30
+
31
+ # IDE
32
+ .vscode/
33
+ .idea/
34
+ .trae/
35
+ .claude/
36
+ .gemini/
37
+ .sonarlint/
38
+ *.swp
39
+ *.swo
40
+ *~
41
+
42
+ # Testing & Quality
43
+ .pytest_cache/
44
+ .benchmarks/
45
+ .coverage
46
+ coverage.xml
47
+ htmlcov/
48
+ .mutmut-cache
49
+ mutmut_*.log
50
+ mutmut_results_*.txt
51
+ .mypy_cache/
52
+ .dmypy.json
53
+ dmypy.json
54
+ .ruff_cache/
55
+ .hypothesis/
56
+ .import_linter_cache/
57
+
58
+ # sqlseed
59
+ *.db
60
+ *.sqlite
61
+ *.sqlite3
62
+ .sqlseed_cache/
63
+ snapshots/
64
+ .env
65
+ # validation harness scratch artifacts
66
+ scripts/complex_validation/dbs/_*.yaml
67
+ examples/notebooks/_*.yaml
68
+ examples/notebooks/_*.json
69
+ examples/notebooks/batch_config.yaml
70
+ *.nbconvert.ipynb
71
+ .ipynb_checkpoints/
72
+
73
+ # AI-generated config outputs
74
+ *_config.yaml
75
+ ai_analyze_out.yaml
76
+ ai_suggest_out/
77
+ out.yaml
78
+ full_config_v2.yaml
79
+ products_order_items.yaml
80
+ test_merchants.yaml
81
+
82
+ # OS
83
+ .DS_Store
84
+
85
+ # AI agent work directories
86
+ .agents/
87
+
88
+ # Other
89
+ .worktrees/
90
+ .sisyphus/
91
+
92
+ # IDE knowledge graph cache (local only)
93
+ .understand-anything/
94
+
95
+ # AI batch edit scripts (one-shot, not for repo)
96
+ .edits/
97
+ _edit_helper.py
98
+
99
+ # Local agent tool cache (not for repo)
100
+ .omo/
101
+
102
+ # Node.js (for ctxlint)
103
+ node_modules/
104
+
105
+ # mkdocs build output (deployed via GitHub Actions, not committed)
106
+ site/
107
+
108
+ # CodeFlow warning/issue reports (local analysis artifacts, not for repo)
109
+ codeflow-warnings*.md
110
+ codeflow_issues_report.md
111
+
112
+ # Temporary tool outputs (not for repo)
113
+ test.log
114
+ .understand-anything/
115
+ .playwright-mcp/
116
+
117
+ # LLM validation loop engineering (temporary, not committed)
118
+ scripts/_*.py
119
+ data_quality_demo/*.db
120
+ data_quality_demo/*.log
121
+ data_quality_demo/*_config.yaml
122
+ data_quality_demo/*_config_v*.yaml
123
+ data_quality_demo/_*.json
124
+ data_quality_demo/_report_*.md
125
+ data_quality_demo/_phase1_catalog.md
@@ -7,6 +7,38 @@ All notable changes to this project will be documented in this file.
7
7
  Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
8
8
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
+ ## [Unreleased]
11
+
12
+ ## [0.2.4] - 2026-09-13
13
+
14
+ ### Added
15
+
16
+ - Ship the Web workbench as `sqlseed-web`, with schema graphs, column rules, previews, multi-table generation, saved configurations and run history. AI remains optional.
17
+ - Add CHECK-aware generator adaptation, foreign-key coverage strategies and coordinated self-reference generation. PostgreSQL uses the SQLAlchemy adapter and psycopg driver.
18
+ - Add contract-driven AI validation and repair with bounded model calls, deterministic fallbacks and separate AI MCP tools.
19
+ - Add automatic post-upload PyPI acceptance for fresh full wheel, minimal Core/Web and full sdist installations, including source hashes and real SQLite entry-point checks.
20
+
21
+ ### Changed
22
+
23
+ - Deliver offline Core, CLI, AI, Core MCP and Web as five packages at version 0.2.4. Install `sqlseed-cli` for the `sqlseed` command; the Core package provides the Python API. See the [migration guide](docs/migration.md) for changes from 0.2.3.
24
+ - Keep sibling dependencies in the compatible `>=0.2.4.dev0,<0.3` series. Use matching released versions or a single development artifact set.
25
+ - Core MCP exposes two offline tools. Launch `mcp-server-sqlseed-ai` separately for the four AI tools; installing the AI package does not add tools to the Core MCP process.
26
+ - Refresh English and Chinese READMEs, user and API guides, package metadata and documentation links. Include the complete AGPL-3.0-or-later license text in all five distributions.
27
+ - Deploy GitHub Pages after all main CI jobs succeed; publish Python packages through a separate version-tagged release workflow.
28
+
29
+ ### Fixed
30
+
31
+ - Preserve JSON document values through typed database inserts and accept valid ISO temporal values without double encoding JSON or rejecting compatible SQLite date configurations.
32
+ - Identify self-referencing rows by their complete primary key and check complete ordinary UNIQUE keys when assigning parent references; partial and expression indexes remain enforced by the database.
33
+ - Preserve explicit generation constraints, handle existing UNIQUE values during appends and enforce CHECK ranges without silently replacing conflicting user rules.
34
+ - Close SQLite resources and clean up Web workers on failures, including Windows path and macOS process-cleanup cases.
35
+ - Keep AI MCP progress output out of the stdio JSON-RPC stream and enforce AI healing time budgets.
36
+
37
+ ### Compatibility
38
+
39
+ - Migrate old `sqlseed.cli` imports and MCP client tool selections before upgrading. Core 0.2.3 cannot be combined with the new plugins.
40
+ - Ordinary batched fills can retain earlier committed batches after a later failure; inspect the returned count and errors. PostgreSQL composite and cross-schema foreign-key generation still has limitations described in the migration guide.
41
+
10
42
  ## [v0.1.20]
11
43
 
12
44
  ### Changed
@@ -7,6 +7,38 @@
7
7
  格式基于 [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
8
8
  本项目遵循[语义化版本](https://semver.org/spec/v2.0.0.html)。
9
9
 
10
+ ## [Unreleased]
11
+
12
+ ## [0.2.4] - 2026-09-13
13
+
14
+ ### 新增
15
+
16
+ - 通过 `sqlseed-web` 交付 Web 工作台,支持 schema 关系图、字段规则、预览、多表生成、配置保存与运行记录;AI 仍为可选能力。
17
+ - 增加 CHECK 驱动的生成器适配、外键覆盖策略与自引用协调生成;PostgreSQL 使用 SQLAlchemy adapter 和 psycopg 驱动。
18
+ - 增加基于 contract 的 AI 校验与修复,包含有界模型调用、确定性降级和独立 AI MCP 工具。
19
+ - 增加上传后自动执行的正式 PyPI 验收,覆盖全量 wheel、仅 Core/Web 和全量 sdist 的新环境安装,核验文件来源哈希并通过真实入口生成 SQLite 数据。
20
+
21
+ ### 变更
22
+
23
+ - 离线 Core、CLI、AI、Core MCP 与 Web 以统一 0.2.4 版本五包交付。`sqlseed` 命令需要安装 `sqlseed-cli`;Core 提供 Python API。从 0.2.3 升级前请阅读[迁移指南](docs/migration.zh-CN.md)。
24
+ - 兄弟包依赖保持在兼容的 `>=0.2.4.dev0,<0.3` 系列;使用匹配的正式版本或同一组开发构建产物。
25
+ - Core MCP 提供两个离线工具;四个 AI 工具通过独立的 `mcp-server-sqlseed-ai` 进程提供,安装 AI 包不会向 Core MCP 进程注入工具。
26
+ - 更新中英文 README、用户与 API 指南、包元数据和文档链接;五包分发物均包含完整的 AGPL-3.0-or-later 许可证正文。
27
+ - main 全部 CI 任务成功后部署 GitHub Pages;Python 包通过独立、基于版本 tag 的发布流程上传。
28
+
29
+ ### 修复
30
+
31
+ - 保留类型绑定写入中的 JSON 文档语义,支持合法 ISO 日期时间输入,避免 JSON 双重编码和旧 SQLite 日期配置失效。
32
+ - 自引用父节点更新使用完整主键,并检查完整普通 UNIQUE 键;partial/expression index 仍由数据库执行约束。
33
+ - 保留用户显式生成约束,追加数据时处理既有 UNIQUE 值,适配 CHECK 范围且不静默替换冲突规则。
34
+ - 关闭 SQLite 资源并在失败时清理 Web worker,处理 Windows 路径与 macOS 进程清理问题。
35
+ - AI MCP 的进度输出不再进入 stdio JSON-RPC 协议流,并严格执行 AI 修复时间预算。
36
+
37
+ ### 兼容性
38
+
39
+ - 升级前迁移旧 `sqlseed.cli` 导入和 MCP 客户端工具选择;Core 0.2.3 不能与新插件混用。
40
+ - 普通批量填充在后续批次失败时可能保留此前已提交的数据,应检查返回的 count 和 errors。PostgreSQL 复合与跨 schema 外键生成仍有限制,详见迁移指南。
41
+
10
42
  ## [v0.1.20]
11
43
 
12
44
  ### 变更