dbt-extractor
A tool to analyze and extract information from Jinja used in dbt projects.
Decision gist · record as of 2026-08-14
Yes, if you need static extraction of dbt metadata from Jinja templates. The tool is production-stable, has no external runtime dependencies, and carries no security vulnerabilities. Install friction is moderate due to compiled bindings, but prebuilt wheels cover common platforms. The 494-day gap since last release is notable but the repository remains active; verify that the version supports your dbt and Jinja patterns before committing.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python ≥3.9.
- Compiled Rust bindings may require build tools on platforms without prebuilt wheels.
- Medium install friction due to compiled Rust bindings, but wheels are available for common platforms (Linux x86_64, macOS, Windows).
License · maintenance · safety
Apache-2.0 (permissive) — Apache-2.0 permissive license allows commercial and private use with minimal restrictions; suitable for most projects.
last release 2025-04-07 (494 days) · last repo commit 2026-07-23 · 33 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 28,371,326 downloads/mo, #836 on PyPI
Alternatives
Verify before relying
import dbt_extractor
# Extract refs, sources, and configs from a dbt model file
result = dbt_extractor.parse(model_jinja_content)- Exact API surface and available functions beyond parse() are not documented in the excerpt.
- Whether the package is actively maintained or in maintenance mode given 494 days since last release.
- Performance characteristics and scalability limits for large dbt projects.
What it is and what it does
dbt-extractor is a Rust-based tool that parses and analyzes Jinja templates found in dbt model files. It uses tree-sitter and tree-sitter-jinja2 to build a typed abstract syntax tree, then extracts metadata like refs, sources, and config values without executing Python Jinja rendering. The tool prioritizes correctness over coverage: it returns an error when it cannot confidently extract values, rather than risk false positives or misses that could corrupt a user's project.
The package is designed for dbt workflows where you need to understand model dependencies and configurations statically, without running the full dbt parser. It has no runtime dependencies and ships as precompiled wheels for most platforms, making installation straightforward on Linux, macOS, and Windows.
Use it for
- Analyze dbt model files in CI/CD pipelines to extract and validate refs and sources before running dbt.
- Build tooling that needs to understand dbt project structure without invoking the full dbt parser.
- Static validation of dbt Jinja syntax and config values in model files.
- Generate dependency graphs or metadata reports from dbt projects programmatically.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need static extraction of dbt metadata from Jinja templates.
The tool is production-stable, has no external runtime dependencies, and carries no security vulnerabilities. Install friction is moderate due to compiled bindings, but prebuilt wheels cover common platforms. The 494-day gap since last release is notable but the repository remains active; verify that the version supports your dbt and Jinja patterns before committing.
Install
dbt-extractor on PyPI
Before you install
Medium install friction due to compiled Rust bindings, but wheels are available for common platforms (Linux x86_64, macOS, Windows). Last release was 494 days ago; repository is active with recent commits.
Requires Python ≥3.9. Compiled Rust bindings may require build tools on platforms without prebuilt wheels.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions; suitable for most projects.
Quickstart
import dbt_extractor
# Extract refs, sources, and configs from a dbt model file
result = dbt_extractor.parse(model_jinja_content)
Verify before relying
- Exact API surface and available functions beyond parse() are not documented in the excerpt.
- Whether the package is actively maintained or in maintenance mode given 494 days since last release.
- Performance characteristics and scalability limits for large dbt projects.
Package facts
| License | Apache-2.0 permissive |
| Python support | Supports the current Python release >=3.9 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 494 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 28,371,326 / month, #836 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableLicense :: OSI Approved :: Apache Software LicenseOperating System :: MacOS :: MacOS XOperating System :: Microsoft :: WindowsOperating System :: POSIX :: LinuxProgramming Language :: Rust |
Evidence: dbt_extractor-0.6.0-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl; dbt_extractor-0.6.0-cp39-abi3-macosx_10_12_x86_64.whl; dbt_extractor-0.6.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; dbt_extractor-0.6.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; dbt_extractor-0.6.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl; dbt_extractor-0.6.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl; dbt_extractor-0.6.0-cp39-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl; dbt_extractor-0.6.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl; dbt_extractor-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; dbt_extractor-0.6.0-cp39-abi3-musllinux_1_2_aarch64.whl; dbt_extractor-0.6.0-cp39-abi3-musllinux_1_2_armv7l.whl; dbt_extractor-0.6.0-cp39-abi3-musllinux_1_2_i686.whl; dbt_extractor-0.6.0-cp39-abi3-musllinux_1_2_x86_64.whl; dbt_extractor-0.6.0-cp39-abi3-win32.whl; dbt_extractor-0.6.0-cp39-abi3-win_amd64.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “dbt jinja extraction”
- dbt-extractorExtracts metadata (refs, sources, configs) from Jinja templates in…
- sqlfluffSQLFluff is a SQL linter and auto-fixer that checks SQL code for…
- shandy-sqlfmtA command-line SQL formatter that automatically reformats SQL files…
Give your agent the search over MCP, or paste the wish link into any chat.
Similar packages
Enables SQLFluff to lint and auto-fix dbt project SQL using dbt templating, integrating dbt-core and Jinja2 template processing into SQLFluff's multi-dialect SQL linting workflow.
Syncs dbt project metadata (table relationships, descriptions, semantic types) to Metabase and extracts Metabase questions and dashboards back into dbt as exposures.
Install it if you use both tools and want a single source of truth for metadata.
Provides a tree-sitter grammar for parsing Markdown documents, enabling syntactic analysis of Markdown text according to CommonMark with optional extensions like GitHub flavored markdown, task lists, and tables.
However, do not use it where Markdown correctness is critical—the authors acknowledge known inaccuracies.
Experimental parser for dbt Core v2.0 (alpha), a ground-up Rust rewrite of the data transformation framework that parses, compiles, and executes dbt projects faster than v1.
No, not for production use.
Parses dbt artifact JSON files (catalog, manifest, run-results, sources) into typed Python objects using pydantic, supporting multiple schema versions across dbt 0.19 to 1.12.
A tree-sitter parser grammar for YAML files that enables incremental parsing and syntax tree extraction from YAML 1.2 documents.
Not recommended if you simply need to read or write YAML data—use PyYAML or similar instead.
See also collate-dbt-artifacts-parser · tree-sitter-sql · dbt-core · tree-sitter-language-pack