Skip to content

fix: clean-install and Path B fixes surfaced by from-scratch release test - #25

Merged
dmautz1 merged 1 commit into
DocumentDrivenDX:mainfrom
dmautz1:fix/sqlglot-runtime-dep
Sep 1, 2026
Merged

dmautz1 merged 1 commit into
DocumentDrivenDX:mainfrom
dmautz1:fix/sqlglot-runtime-dep

Conversation

@dmautz1

@dmautz1 dmautz1 commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Preparing the v0.0.3 release, a from-scratch test (install the built wheel into an empty venv, run every README/setup instruction) surfaced four blockers. None are caught by CI because CI always installs the dev dependency group.

  1. import tablespec fails on every clean installsqlglot lived only in the dev group while schemas/sql_generator.py imports it at module load on the top-level import chain (broken since 89bf9f8). Moved to runtime dependencies.
  2. import tablespec.cli fails on a fresh resolve — typer 0.26.0 dropped click (and the click_type= bridge cli.py uses); an unpinned install picks 0.27.2 which no longer brings click. Pinned typer>=0.9.0,<0.26.0 and declared click>=8.0.0,<9.0.0 (cli.py imports it directly).
  3. tablespec bootstrap / bootstrap_from_specs crashes on split directories (IsADirectoryError) — umfs_from_specs sent every path through the legacy inline-YAML reader despite the public docstring promising split dirs and JSON. Now auto-detects via UMFLoader; regression test covers split-dir + JSON inputs.
  4. README documented nonexistent plugin flagsclaude plugin install --scope user -y doesn't exist in Claude Code 2.0.23. Dropped.

Also hardens release.yml's verify job (install from the Pages index now retries once then fails hard, followed by an import check that catches the dev-only-dependency bug class) and fixes its stale easel/tablespec links.

Test plan

  • Fresh venv + wheel: import tablespec, import tablespec.cli, all README Quick Start snippets, info/generate/convert/guidebook, bootstrap on split dir and JSON, [spark] extra resolution (pyspark 4.2.0)
  • uv run pytest tests/unit/test_bootstrap_from_specs_public.py tests/unit/test_happy_path_guide.py tests/e2e/test_bootstrap_from_specs.py — 6 passed
  • claude plugin marketplace add + claude plugin install tablespec@tablespec — all six skills present in the installed plugin
  • ruff check/format clean

🤖 Generated with Claude Code

…test

A from-scratch install of the built wheel into an empty venv surfaced
four release blockers ahead of tagging v0.0.3:

- sqlglot was only in the dev dependency group, but sql_generator.py
  imports it at module load on the top-level import chain — a clean
  'import tablespec' failed on every install since 89bf9f8. Moved to
  runtime dependencies.
- typer 0.26.0 dropped its click dependency and the click-type bridge;
  a fresh resolve picked 0.27.2 and 'import tablespec.cli' failed on
  'import click' (and cli.py passes click_type=click.Choice). Pinned
  typer<0.26.0 and declared click>=8,<9 explicitly.
- umfs_from_specs routed every spec path through the legacy inline-YAML
  reader, so bootstrap_from_specs / 'tablespec bootstrap' crashed with
  IsADirectoryError on the split directories its own docstring promises
  to accept. Now auto-detects split dirs and JSON via UMFLoader, with
  the legacy reader kept for inline .yaml files; regression test added.
- README documented 'claude plugin install --scope user -y'; current
  Claude Code (2.0.23) has neither flag. Dropped them.

Also hardened release.yml's verify job: the pip install from the Pages
index now retries once after a propagation wait and then fails hard
(previously '|| echo' made it advisory), followed by an import check
that would have caught the dev-only-dependency class of bug; and its
release-notes template now links DocumentDrivenDX/tablespec instead of
the stale easel fork.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@dmautz1
dmautz1 merged commit d145740 into DocumentDrivenDX:main Sep 1, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant