Skip to main content

Dbt Core Interface

Project description

Dbt Core Interface

PyPI Status Python Version License

Read the documentation at https://dbt-core-interface.readthedocs.io/ Tests

pre-commit Black

Features

An extremely simplified interface is provided to accomplish all of the following with no dependencies outside dbt-core:

  • Parse dbt project on disk loading dbt core classes into memory from a single class/interface

  • Automatic management of the adapter and thread-safe efficient connection pool reuse

  • Run SQL and get results in python fully independent of the dbt adapter which automatically enables support for many databases

  • Run SQL with dbt SQL from a single method call

  • Load macros at runtime enabling custom functionality in third party extensions without requiring the dbt packaging system to be managed in userland

  • Compile dbt jinja extremely fast and efficiently, thread-safe and stress tested at load via a Bottle server which live compiles SQL

  • Manage multiple dbt projects in a single process using the DbtProjectContainer class

dbt-core-interface is a wrapper that allows developers to rapidly develop features and integrations for dbt. This project aims to serve as a place for the community to aggregate the best ways to interface with dbt. It is afforded a much faster iteration cycle and much more freedom due to it's independence from the dbt codebase. It is intended to act as an common library to dbt's existing APIs for developers. Implementations can land here and prove themselves out before landing in the dbt-core codebase and benefit all developers involved. Sqlfluff dbt templater, dbt-osmosis, dbt-fastapi which I am ripping out of dbt-osmosis, an impending metadata manager, a testing framework will all leverage this library. As dbt core evolves and stabilizes its python API, this project will evolve with it. This may manifest in simplification of certain methods but our goal is to maintain the API and focus on driving efficient, innovative/creative, and agile community driven integration patterns.

Requirements

  • The only requirement is dbt-core, tested with versions 1.0.*, 1.1.*, 1.2.*, 1.3.*

Installation

You can install Dbt Core Interface via pip from PyPI:

$ pip install dbt-core-interface

Usage

Please see the Api Reference for details.

To launch the Bottle server for live compiling dbt jinja:

python -m dbt_core_interface.project

This will launch the server on port 8581. You can then make requests to the server, e.g.:

curl -X POST -H "Content-Type: application/json" -H "X-dbt-Project: dbt_project" -d '{"project_dir":"/app/tests/sqlfluff_templater/fixtures/dbt/dbt_project/","profiles_dir":"/app/tests/sqlfluff_templater/fixtures/dbt/profiles_yml/","target":"dev"}' http://localhost:8581/register

You can change the server hostname and port using the --host and --port arguments.

Contributing

Contributions are very welcome. To learn more, see the Contributor Guide.

License

Distributed under the terms of the MIT license, Dbt Core Interface is free and open source software.

Issues

If you encounter any problems, please file an issue along with a detailed description.

Credits

This project was generated from @cjolowicz's Hypermodern Python Cookiecutter template.

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

dbt_core_interface-0.2.4.tar.gz (72.6 kB view details)

Uploaded Source

Built Distribution

dbt_core_interface-0.2.4-py3-none-any.whl (73.4 kB view details)

Uploaded Python 3

File details

Details for the file dbt_core_interface-0.2.4.tar.gz.

File metadata

  • Download URL: dbt_core_interface-0.2.4.tar.gz
  • Upload date:
  • Size: 72.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for dbt_core_interface-0.2.4.tar.gz
Algorithm Hash digest
SHA256 631e10595f152c98bcf9635bff806c7576170f9487d1e83dc40513d1b11242fa
MD5 c2c97344b88ee026193e8d069c9a1eab
BLAKE2b-256 b8c9a35e5c64106c2ccd554653e69240a1f0cc93c8ec95796397f03718c25a8e

See more details on using hashes here.

File details

Details for the file dbt_core_interface-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for dbt_core_interface-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c035dcf1b74356e9033e111760330477047095ef368fc728b5425f015cd1b3e5
MD5 e3c2ad0d2e348eb3b87ce7b634b6c6c4
BLAKE2b-256 856366828b2df7a7c33f3a073980e43ab6104bcd2a64c2ff6dd88f1e4761d33b

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