fix: clean-install and Path B fixes surfaced by from-scratch release test - #25
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
import tablespecfails on every clean install —sqlglotlived only in the dev group whileschemas/sql_generator.pyimports it at module load on the top-level import chain (broken since89bf9f8). Moved to runtimedependencies.import tablespec.clifails on a fresh resolve — typer 0.26.0 dropped click (and theclick_type=bridge cli.py uses); an unpinned install picks 0.27.2 which no longer brings click. Pinnedtyper>=0.9.0,<0.26.0and declaredclick>=8.0.0,<9.0.0(cli.py imports it directly).tablespec bootstrap/bootstrap_from_specscrashes on split directories (IsADirectoryError) —umfs_from_specssent every path through the legacy inline-YAML reader despite the public docstring promising split dirs and JSON. Now auto-detects viaUMFLoader; regression test covers split-dir + JSON inputs.claude plugin install --scope user -ydoesn'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 staleeasel/tablespeclinks.Test plan
import tablespec,import tablespec.cli, all README Quick Start snippets,info/generate/convert/guidebook,bootstrapon 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 passedclaude plugin marketplace add+claude plugin install tablespec@tablespec— all six skills present in the installed plugin🤖 Generated with Claude Code