Skip to content

Releases: sunbos/sqlseed

v0.1.20

10 May 04:01

Choose a tag to compare

v0.1.20

Changed

  • Extracted shared _col() test helper from test_mapper.py and test_mapper_camelcase.py into conftest.make_column_info(), eliminating 23-line code duplication (CodeFlow R0801, CodeDuplication; SonarCloud Code Smell)

Fixed

  • Merged duplicate test functions test_non_sensitive_order_no_still_integer and test_snake_case_still_works in test_mapper_camelcase.py via pytest.mark.parametrize (SonarCloud Major)

v0.1.19

09 May 01:15

Choose a tag to compare

Full Changelog: v0.1.17...v0.1.19

v0.1.18 - Bug Fixes

08 May 10:30

Choose a tag to compare

Bug Fixes

Fixes

  • Column mapping regex: Fixed overly broad regex pattern that incorrectly matched CamelCase field names as foreign_key_or_integer
  • Include plugins in sdist: Removed plugins/ from hatchling exclude list so plugins directory is included in PyPI package

Changes

  • mapper.py: Removed from pattern matching
  • pyproject.toml: Removed plugins/ from sdist exclude list

v0.1.17

07 May 23:38

Choose a tag to compare

What's New in v0.1.17

✨ New Features

  • RichProgressBackend ascii_only mode: When ascii_only=True, uses "line" spinner (|/-\) and omits BarColumn, avoiding UnicodeEncodeError on GBK/Big5/CP936 console encodings
  • _can_render_unicode() cached helper: Probes whether stdout can encode Rich's Braille/block-element characters (U+280B, U+2588, U+2591)
  • Auto Unicode fallback: create_progress() auto-falls back to ascii_only=True when _can_render_unicode() returns False, with a debug log message
  • DataOrchestrator SQL methods: New execute(sql, params), query(sql, params), fetch_one(sql, params), fetch_all(sql, params) for direct database interaction
  • BaseSQLiteAdapter._execute: Parameterized SQL execution method
  • DatabaseAdapter protocol: Updated with _execute method signature

🔄 Changed

  • RichProgressBackend refresh rate set to 1 Hz (was default 10 Hz) to reduce terminal flicker
  • Test suite: TestRichProgressBackend and TestRichProgressBackendAsciiOnly merged via pytest.mark.parametrize to eliminate code duplication

🐛 Bug Fixes

  • Windows compatibility: GBK/GB2312/Big5/CP936 encoded terminals no longer crash with UnicodeEncodeError when displaying Rich progress bars
  • .gitignore: removed *汇总.md pattern (no longer needed)

📊 Stats

  • 5 files changed, +242 / -18 lines
  • 46 tests passing
  • ruff check ✅ | mypy strict ✅

Full Changelog: v0.1.16...v0.1.17

v0.1.16

06 May 23:48

Choose a tag to compare

What's New in v0.1.16

✨ New Features

  • Progress Multi-Backend: New ProgressBackend ABC with RichProgressBackend (terminal), TqdmNotebookBackend (Jupyter), and NullProgressBackend (silent). Auto-detects environment and selects the best backend.
  • UNIQUE Column Protection: UniqueAdjuster automatically adjusts generator specs for UNIQUE columns (string length, integer range, choice fallback).
  • ColumnConfig Normalizer: normalize_dict_input() model validator supports shorthand dict construction — "type" as alias for "generator", unknown keys auto-merged into params.
  • Platform Cache Paths: paths.get_cache_dir() provides XDG/macOS/Windows-standard cache directories, overridable via SQLSEED_CACHE_DIR env var.
  • AI Dynamic Free Model Selection: select_best_free_model() auto-selects the newest free model from OpenRouter. select_next_free_model() provides fallback on timeout/connection errors. Filters by free pricing, no expiration, text I/O, and response_format support. 1-hour TTL cache.

🐛 Bug Fixes

  • CLI fill command: Fixed dead code bug where --count was required instead of defaulting to 1000.
  • Orchestrator type safety: Replaced # type: ignore with assert guards on _relation and _unique_adjuster properties.
  • Redundant validator removed: Deleted duplicate validate_null_ratio (already enforced by Field(ge=0.0, le=1.0)).
  • Orchestrator _prepare_specs: Refactored confusing conditional flow into clear if/else structure.

♻️ Refactoring

  • Replaced random with secrets for secure generation in tests.
  • Replaced domain-specific examples with generic project management terms.
  • Added 12 Jupyter notebook tutorials (quickstart through testing patterns).
  • Resolved SonarCloud code quality and security issues.
  • Added tqdm to notebook and dev optional dependencies.

📚 Documentation

  • Added CHANGELOG.zh-CN.md Chinese changelog.
  • Updated README.md and README.zh-CN.md.
  • Updated architecture docs with progress backend and model selector details.

📊 Stats

  • 72 files changed, +16,034 / -590 lines
  • 578 tests passing
  • ruff check ✅ | mypy strict ✅

Full Changelog: v0.1.15...v0.1.16

v0.1.15

01 May 18:39
96566d3

Choose a tag to compare

v0.1.15

Fixed

  • CI: remove unnecessary try/except in ExpressionEngine.evaluate to resolve SonarCloud S2737 and CodeFlow try-except-raise warnings
  • CI: add comment documenting intentional list() usage in PluginMediator.apply_template_pool (SonarCloud S7504)

修复

  • CI: 移除 ExpressionEngine.evaluate 中不必要的 try/except,解决 SonarCloud S2737 和 CodeFlow try-except-raise 警告
  • CI: 为 PluginMediator.apply_template_pool 中的 list() 调用添加注释说明其必要性(SonarCloud S7504)

v0.1.14

01 May 16:32
c611d17

Choose a tag to compare

v0.1.14

Fixed

  • CI: resolve ruff SIM114/SIM102 lint errors in test_doc_sync.py
  • CI: eliminate all regex from test_doc_sync.py to fix SonarCloud S5852 security hotspots
  • CI: reduce cognitive complexity of _extract_number_before_keyword helper

Added

  • Doc Sync Rules mapping table in CLAUDE.md
  • Documentation sync validation tests (tests/test_doc_sync.py)

v0.1.13

01 May 00:13

Choose a tag to compare

What's Changed

Added

  • Cross-table association support (ColumnAssociation config, implicit SharedPool matching)
  • 7 new generator types: username, city, country, state, zip_code, job_title, country_code
  • EnrichmentEngine data distribution inference, UniqueAdjuster unique column tuning
  • AI plugin: auto model selection (OpenRouter), structured JSON output, few-shot examples, self-correction loop, file caching
  • MCP server: enrich parameter, schema_hash field
  • CLI: --enrich, --no-ai, --verify/--no-verify, --timeout flags
  • Bilingual documentation (English + Chinese)

Changed

  • ColumnMapper exact match rules expanded from 68 to 74
  • CI workflows: ruff covers plugins/, concurrency control
  • All documentation rewritten and translated to English

Fixed

  • ruff lint cleanup
  • Remove unnecessary sqlite3.OperationalError catch
  • Fix non-provider entry point detection in ProviderRegistry

Removed

  • docs/superpowers/ (outdated design specs)
  • suggest.py, nl_config.py (replaced by SchemaAnalyzer + AiConfigRefiner)

Full Changelog: v0.1.12...v0.1.13

v0.1.12

22 Apr 21:50

Choose a tag to compare

v0.1.12

Bug Fixes

  • fix(cli): --count is now required when not using --config, preventing accidental generation of 1000 rows
  • fix(cli): count <= 0 now shows a friendly error message instead of a full Python traceback
  • fix(cli): Default AI model in help text corrected to gpt-4o (was incorrectly showing qwen3-coder-plus)
  • fix(version): sqlseed --version now correctly reads from importlib.metadata instead of hardcoded value
  • fix(db): SQLite AUTOINCREMENT ID reset issue fixed

Improvements

  • feat(cli): Add SQLSEED_LOG_LEVEL environment variable control (default: WARNING, set to DEBUG for development)
  • feat(cli): CLI help text now shows default values for all options
  • feat(cli): ai-suggest --api-key and --base-url now show environment variable names in help
  • docs: ColumnMapper strategy chain updated from 8 to 9 levels across all documentation
  • test: CLI tests refactored with parametrize to eliminate code duplication

Full Changelog

v0.1.11...v0.1.12

v0.1.11

22 Apr 05:29

Choose a tag to compare

Full Changelog: v0.1.10...v0.1.11