Release v0.1.1#2
Merged
Merged
Conversation
- `tycoon data query` replaces `tycoon data db query` - `tycoon data schema` replaces `tycoon data db stats` (shows all DBs in data/) - `tycoon data clean` replaces `tycoon data db clean` - Add --source and --db flags to `tycoon data query` so per-source raw databases can be queried (fixes #1) - `tycoon doctor` dbt check is now a warning, not an error Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Per-component init wizard with inline + sibling detection of existing dbt / Rill projects, register-existing (path or GitHub URL with clone), and explicit skip as a first-class option for each component. - Flattened tycoon data db <sub> into tycoon data schema / query / clean. - tycoon data query gains --source and --db flags (closes #1). - tycoon data analyze --rill now scaffolds the Rill project directory on demand instead of silently skipping. - New TransformationTool enum + stack.transformation field so "skip dbt" is recorded explicitly in tycoon.yml. - tycoon doctor reports "skipped by choice" for intentionally-off components instead of warning about them. - tycoon data transform falls back to ~/.dbt/profiles.yml when an externally-registered dbt project has no co-located profiles file. - server/check-updates now queries the correct PyPI package name via httpx. Release notes: docs/releases/v0.1.1.md Tests: 174 passing (was 162; added 12 wizard tests). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…late smoke tests - tycoon register dbt / tycoon register rill subcommands: attach existing projects to tycoon.yml without re-running init. Supports local paths and GitHub URLs (clone-on-register). Prompts before overwriting. - Warehouse-alignment check: when a registered dbt project's profiles.yml targets a different DuckDB than tycoon's warehouse, warn and offer to adopt the dbt path. Prevents silent dbt-writes-here, query-reads-there divergence. - Smoke tests for all four built-in templates (csv-import, github-analytics, nyc-transit, weather-station): init + doctor must run cleanly. Tests: 201 passing, 1 skipped (was 174). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
`tycoon data analyze` and `tycoon data sources run` crashed with AttributeError when invoked without a source argument, because the interactive "pick a source" prompt referenced `typer.Choice`, which doesn't exist at runtime. `click.Choice` is the correct reference (click is already a typer dependency). Added a regression test so this can't silently come back. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7 tasks
db-tycoon-stephen
added a commit
that referenced
this pull request
Apr 30, 2026
Closes #20. Tycoon already accumulates rich metadata in .tycoon/metadata.duckdb (10+ tables tracking dlt runs, dlt traces, dbt invocations, dbt nodes, manifest snapshots, schema-diff history). Rill sees it via Parquet exports; this commit makes the same data visible to dbt and to Nao. Three pieces compose: 1. ATTACH the metadata DB into every scaffolded dbt profile under the alias `tycoon_meta` (READ_ONLY). Implemented in: - src/tycoon/scaffolding/observability_dbt.py:attach_metadata_to_profiles - src/tycoon/scaffolding/templates.py:_scaffold_dbt_project (dynamic scaffolding from the wizard) - src/tycoon/templates/csv-import/dbt_project/profiles.yml (static template ATTACH entry) 2. Generate `dbt_project/models/_tycoon/` with one stg_tycoon__<table>.sql view per metadata table (9 staging models), a dim_runs.sql mart that UNIONs dlt + dbt runs into one timeline, and _tycoon__schema.yml documenting every model. All `materialized: view` so they don't double-store data. Implemented in scaffolding/observability_dbt.py:scaffold_observability_models. Wired into both scaffolding paths and into `tycoon register dbt`. 3. Once the staging views exist, `tycoon ask sync` exposes them to Nao via the existing warehouse-introspection pass. Emergent from #1+#2 — no extra plumbing. New surfaces: - `tycoon data observability scaffold [--no-attach] [--no-models]` for retrofitting existing projects (or partial control). Idempotent. - `tycoon register dbt --no-attach-metadata` opt-out for the auto-attach during registration. Pre-flight detail worth knowing: scaffolding pre-creates .tycoon/metadata.duckdb with the empty observability schema (via observability.ensure_schema), so the very first `dbt run` on a fresh project doesn't trip on the ATTACH targeting a missing file. Also bundled: pymdownx.emoji + Material twemoji backend in mkdocs.yml so :material-rocket-launch: etc. render as actual SVG icons in the docs site (was rendering as literal text before). Tests: 385 passed. Bug caught + fixed during e2e — dim_runs.sql originally used `elapsed_seconds` but the captured schema is `elapsed_s`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
JesuFemi-O
added a commit
that referenced
this pull request
Jul 7, 2026
…ite, dbt in POC, push-vs-pull test - Command name, package path, metadata dir, and dbty prose all reconciled to tycoon throughout (3a–d) - D1/D2 rewritten: parallel-package + tycli dropped in favour of a long-lived feature branch directly in src/tycoon/ (feedback #1) - D5 updated: dbt Transformation adapter added to POC scope to exercise a second adapter shape alongside Runtime (feedback #2) - Phase 2 acceptance test sharpened: push-vs-pull (dlt streams, Fivetran polls) named as the specific failure mode to watch for; added to risks table (feedback #4)
3 tasks
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
Cleanup release + a real onboarding wizard. Full details in
docs/releases/v0.1.1.md.Key additions:
tycoon initwizard (ingestion → warehouse → dbt → Rill → orchestrator) with auto-detection, register-existing (path or GitHub URL with clone), and explicit skip.tycoon register dbtandtycoon register rillsubcommands.tycoon data querygains--sourceand--dbflags. Closes tycoon data db query cannot reach per-source raw databases #1.tycoon data db <sub>flattened intotycoon data schema / query / clean.Fixes:
tycoon data analyze/tycoon data sources runno longer crash withAttributeErrorwhen invoked without a source argument (typer.Choice→click.Choice).tycoon doctorno longer falsely claimstycoon data analyzescaffolds dbt.server/check-updatesqueries the correct PyPI package.Test plan
tycoon --versionreturns0.1.1tycoon --helpshowsregisterin Project sectiondatabase-tycoon==0.1.1appears on PyPIRelease notes live at
docs/releases/v0.1.1.md.