Skip to main content

dbtenv is a version manager for dbt, automatically installing and switching to the needed adapter and version of dbt.

Project description

dbtenv

dbtenv is a version manager for dbt, automatically installing and switching to the needed adapter and version of dbt.

Quickstart

Installation

  1. Install pipx (What is pipx?).
  2. Run pipx install dbtenv-dbt-alias

Usage

If dbtenv-dbt-alias is installed per the above, dbt commands can be used as normal and will be routed through dbtenv. dbtenv will automatically determine, install and use the required dbt adapter and version.

Illustrative example

➜  dev/dbt_project ✗ dbt compile
dbtenv info:  Using dbt-bigquery==1.0.0 (set by dbt_project.yml).
10:48:43  Running with dbt=1.0.4

10:48:45  Found 73 models, 142 tests, 2 snapshots, 0 analyses, 383 macros, 0 operations, 0 seed files, 44 sources, 0 exposures, 0 metrics
10:48:45
10:49:14  Concurrency: 1 threads (target='dev')
10:49:14
10:49:20  Done.

Installation Options

There are two packages available for installation:

  • dbtenv
  • dbtenv-dbt-alias

dbtenv-dbt-alias is identical to dbtenv, with the exception of adding a dbt entry point. The dbt command then acts as a direct shortcut to dbtenv execute --, and means that dbtenv can used as a drop-in replacement to installing dbt normally.

Available Commands

  • dbtenv --help - Print documentation and available commands. Can also be run for information on a individual command, e.g. dbtenv versions --help.
  • dbtenv versions - List the installable versions of dbt, marking those which are currently installed. Add the --installed flag to show only those which are installed.
  • dbtenv install <dbt_pip_specifier> - Install a specific version of dbt, e.g. dbtenv install dbt-snowflake==1.0.0.
  • dbtenv uninstall <dbt_pip_specifier> - Uninstall a specific version of dbt, e.g. dbtenv uninstall dbt-snowflake==1.0.0.
  • dbtenv version - Print the dbt version dbtenv determines automatically for the current environment.
  • dbtenv which - Print the full path to the executable of the dbt version dbtenv determines automatically for the current environment.
  • dbtenv execute - Execute a dbt command.

If dbtenv-dbt-alias is installed:

  • All the above plus:
  • dbt <args> - The dbt CLI.

dbt Version Management

dbtenv will automatically install the required version of dbt for the current project by default. To disable this behaviour, set the environment variable DBTENV_AUTO_INSTALL to false.

By default, dbtenv creates virtual environments for each dbt package version within ~/.dbt/versions. You can customize this location by setting the DBTENV_VENVS_DIRECTORY environment variable.

By default, dbtenv uses whichever Python version it was installed with to install dbt, but that can be changed by setting a DBTENV_PYTHON environment variable to the path of a different Python executable, or specifying --python <path> when running dbtenv install.

Switching between dbt versions

Adapter type

If dbtenv is invoked within a dbt project, dbtenv will look for the project's default target adapter type in profiles.yml. If dbt's --target argument is set, dbtenv will use that target's adapter type instead. To use the dbtenv execute command outside of a dbt project (such as dbt init), a pip specifier should be passed to dbtenv execute's --dbt argument so that dbtenv knows which adapter to use.

dbt version

dbtenv determines the dbt version to use from the following sources, using the first one it finds:

  1. The dbtenv execute command's optional --dbt <version> argument.

  2. The DBT_VERSION environment variable.

  3. If not running within a dbt project:

    1. The first .dbt_version file found searching the working directory path (local version).
    2. The ~/.dbt/version file (global version).
  4. The current dbt project's dbt_project.yml version requirements.

    • If a local or global dbt version has been set, dbtenv will use that version if in the range set by require-dbt-version.
  5. The locally or globally set version.

  6. The max installed dbt version (preferring stable versions).

  7. The max installable dbt version (preferring stable versions).

You can:

  • Run dbtenv version --global <version> to set the dbt version globally in the ~/.dbt/version file. The <version> can be either a dbt version (e.g. 1.0.0) or full pip specifier (e.g. dbt-snowflake==1.0.0). dbtenv will attempt to automatically detect the required adapter or version from the environment if not specified.
  • Run dbtenv version --local <version> to set the dbt version for the current directory in a .dbt_version file. The <version> can be either a dbt version (e.g. 1.0.0) or full pip specifier (e.g. dbt-snowflake==1.0.0). dbtenv will attempt to automatically detect the required adapter or version from the environment if not specified.

Running dbt through dbtenv

If dbtenv-dbt-alias installed

The dbt command then acts as a direct shortcut to dbtenv execute --, and means that dbtenv can used as a drop-in replacement to installing dbt normally. dbtenv will automatically identify which package and version of dbt to use. If you need to manually specify a dbt package version to run with, use the dbtenv execute command.

dbtenv execute

Run dbtenv execute -- <dbt arguments> to execute the dbt version determined automatically from the current environment, or run dbtenv execute --dbt <version> -- <dbt arguments> to execute a specific dbt version.

For example:

  • dbtenv execute -- run will execute dbt run using the version determined automatically from the current environment.
  • dbtenv execute --dbt 1.0.0 -- run will execute dbt run using dbt 1.0.0, automatically detecting the required adapter from the default target in profiles.yml.
  • dbtenv execute --dbt 1.0.0 -- run --target prod will execute dbt run using dbt 1.0.0, using the required adapter for the 'prod' target in profiles.yml.
  • dbtenv execute --dbt dbt-bigquery==1.0.0 -- run will execute dbt run using dbt-bigquery==1.0.0.

Development

Development setup

  1. Clone this repository onto your computer.
  2. Install Poetry pipx install poetry (What is pipx?)
  3. Navigate to the dbtenv directory, and install the project into a virtual environment poetry install
  4. Activate the virtual environment poetry shell
  5. Any dbtenv commands will run using the local version of the project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dbtenv-2.2.2.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

dbtenv-2.2.2-py3-none-any.whl (22.2 kB view details)

Uploaded Python 3

File details

Details for the file dbtenv-2.2.2.tar.gz.

File metadata

  • Download URL: dbtenv-2.2.2.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for dbtenv-2.2.2.tar.gz
Algorithm Hash digest
SHA256 49e9b737efa93075d48ae1e2aebfd400de858df10f0ca04e2101a3545a4943c2
MD5 d3e9b88bcc8a134e87af536e8db80625
BLAKE2b-256 6095608a21f15b8ff9fa36acd01407a6b27fd4691a7935c81b34811501aade93

See more details on using hashes here.

File details

Details for the file dbtenv-2.2.2-py3-none-any.whl.

File metadata

  • Download URL: dbtenv-2.2.2-py3-none-any.whl
  • Upload date:
  • Size: 22.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for dbtenv-2.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 65e9e69a5d4311f3d1217deae448b29b847864ced3cd116c416333f7c92b1c40
MD5 0466991bfe22d20b230a48fa5142c462
BLAKE2b-256 85bc43bf26406faeaa521271982b315abd24543c31f6693594088e105d99f3b8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page