dbt-rpc-client

A python SDK for the dbt RPC server.


Keywords
dbt, python, rpc
License
MIT
Install
pip install dbt-rpc-client==0.1.0

Documentation

dbt-rpc-client

PyPI version PyPI - Status PyPI - Python Version PyPI - License Build Status

A python SDK for interacting with a dbt rpc server.

Installation

$ pip install dbt-rpc-client

Basic Usage

from dbt_rpc_client import DbtRpcClient
import requests

rpc = DbtRpcClient(hostname="0.0.0.0", port=8580)

# Getting the current status of the dbt rpc server.
response = rpc.status()
assert isinstance(response, requests.Response)
assert response.ok

# Running dbt models via CLI command.
response = rpc.cli(cli_args="dbt run --models @model1 +model2+")
assert response.ok

# Running dbt models via `run` method.
response = rpc.run(models=["@model1", "+model2+"])
assert response.ok

# Polling a dbt rpc operation.
response = rpc.poll(request_token=response.get("id"))
assert response.ok
print(response.get("result").get("status"))

# Compiling/Running a SQL query.
sql = """
select 1
from {{ ref("my_dbt_model") }}
"""

response = rpc.compile_sql(sql=sql, name="my_sql_query")
assert response.ok

response = rpc.run_sql(sql=sql, name="my_sql_query")
assert response.ok

Contributing

  1. The first step to contributing is getting a copy of the source code. First, fork dbt-rpc-client on GitHub. Then, cd into the directory where you want your copy of the source code to live and clone the source code:
$ cd repos
$ git clone git@github.com:YourGitHubName/dbt-rpc-client.git
  1. Now that you have a copy of the source code on your machine, create and activate a virtual envionment for dbt-rpc-client:
$ python3 -mvenv ~/.venvs/dbt-rpc-client
$ source ~/.venvs/dbt-rpc-client/bin/activate
  1. Once inside the virtual environment, run make dev_install at the root of the repository:
$ (dbt-rpc-client) make dev_install
  1. Run the tox testing suite in the appropriate python environment to ensure things are working properly:
$ (dbt-rpc-client) tox -e py37

To format your code using isort and flake8 before commiting changes, run the following commands:

$ (dbt-rpc-client) make isort
$ (dbt-rpc-client) make flake8

Once you've confirmed that your changes work and the testing suite passes, feel free to put out a PR!