wrapper of the Google Cloud Dataform API (google-cloud-dataform) that simplifies common operations such as listing repositories, managing workspaces, creating compilation results, and triggering workflow invocations.
Project description
Dataform Tools for Google Cloud Platform
Wrapper for the Google Cloud Dataform Python Package (google-cloud-dataform) that simplifies common operations such as listing repositories, managing workspaces, creating compilation results, and triggering workflow invocations.
Installation
Required python >=3.10
pip install dataform-tools
Usage
Run Dataform workflow in GCP
from dataform_tools import DataformTools, CodeCompilationConfigType, InvocationConfigType
tags_to_run = ["your-tag"]
code_compilation_config: CodeCompilationConfigType = {} # overrides such as table prefix
invocation_config: InvocationConfigType = {
"included_tags": tags_to_run,
"fully_refresh_incremental_tables_enabled": False,
"transitive_dependents_included": False,
"transitive_dependencies_included":False,
}
repository_name = "repository-name"
workspace_name = None # use workspace name if you want to compile a workspace.
git_commitish = "develop" # branch name, tag, commit sha
client = DataformTools("your-gcp-project", "europe-west2")
output = client.run_dataform_remotely(repository_name, code_compilation_config, invocation_config, workspace_name, git_commitish)
print(output)
List Repositories
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
repositories = client.list_repositories()
print(repositories)
List Workspaces
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
workspaces = client.list_workspaces("repository_name")
print(workspaces)
Create Workspace
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
workspace = client.create_workspace("repository_name", "workspace_name")
print(workspace)
Get repository
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
repository = client.get_repository("repository_name")
print(repository)
Create Compilation Result
Creates a compilation object from Dataform Pipeline using either the code from a specific git_commitish or workspace.
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
compilation_result = client.create_compilation_result("repository_name", "git_branch_name", None, code_compilation_config={"table_prefix": "aa"})
print(compilation_result)
Compilation Result Actions
Quries a list of actions that will be created by a compilation object from Dataform Pipeline using either the code from a specific git_commitish or workspace.
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
compilation_result = client.create_compilation_result("repository_name", "git_branch_name", None, code_compilation_config={"table_prefix": "aa"})
if(compilation_result and compilation_result.name):
actions = client.query_compilation_result_actions(compilation_result.name)
print(actions)
Create Workflow Invocation
Creates a execution of Dataform Pipeline using either the code from a specific git_commitish or workspace.
from dataform_tools import DataformTools
from dataform_tools import InvocationConfigType
client = DataformTools("your-gcp-project-id", "europe-west2")
repository_name = "repository_name"
compilation_result = client.create_compilation_request(repository_name, "git_branch_name", None, code_compilation_config={"table_prefix": "aa"})
if(compilation_result and compilation_result.name):
invocation_config: InvocationConfigType = {
"included_tags" : ["your-tag"],
"transitive_dependencies_included" : False,
"transitive_dependents_included" : False,
"fully_refresh_incremental_tables_enabled" : False,
}
workflow_invocation = client.create_workflow_invocation(repository_name, compilation_result.name, invocation_config)
workflow_invocation_id = workflow_invocation.name.split("/").pop()
if(workflow_invocation_id):
workflow_invocation_url = client.get_workflow_invocation_url(repository_name, workflow_invocation_id)
print(workflow_invocation_url)
Write content to a file in workspace
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
client.write_file("repository_name", "workspace_name", "relative/path/to/file/in/workspace.sql", "select 1 as a")
Remove a file from workspace
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
client.remove_file("repository_name", "workspace_name", "relative/path/to/file/in/workspace.sql")
Installs NPM packages in a Dataform workspace.
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
client.install_npm_packages("repository-name", "my-workspace");
Pull git commits from remote repository to workspace
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
client.pull_git_commits("repository-name", "workspace-name", {"remote-git-branch", "git-user-name", "git-user-email"});
Get git status of the remote workspace
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
client.get_workspace_git_state("repository-name", "workspace-name")
Reset changes in workspace
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
const paths = []; # array of file paths to reset. If empty, all changes will be reset.
const clean = true; # If true, untracked files will be removed. Defaults to true.
client.reset_workspace_changes("repository-name", "workspace-name", paths, clean)
Fetch Git ahead/behind against a remote branch for a workspace
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
client.fetch_git_ahead_behind("repository-name", "workspace-name", "remote-git-branch")
Push workspace commits to git remote repository
from dataform_tools import DataformTools
client = DataformTools("your-gcp-project-id", "europe-west2")
client.push_workspace_commits("repository-name", "my-worksapce", "remote_git_branch")
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dataform_tools-1.0.7.tar.gz.
File metadata
- Download URL: dataform_tools-1.0.7.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7c52fe534997ec170128269a5ba5d948ed55e1d8535608a49aced8f7b022eb3
|
|
| MD5 |
5a81edb6e2a33e1e762c93fa89aa3ea3
|
|
| BLAKE2b-256 |
9170055654c1b3417bdb7e1f47f7c9daf506d0c9e3d55ef466ddcdd331a04f6f
|
File details
Details for the file dataform_tools-1.0.7-py3-none-any.whl.
File metadata
- Download URL: dataform_tools-1.0.7-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43c0ee5362f36a76b54ccd8aa0e17fd1cb743e5ff3ebbd911e69b1c2ee4193cf
|
|
| MD5 |
cb0fb26ac10b6b693ecc7c7a1fccceff
|
|
| BLAKE2b-256 |
a2f6461c58a85667e4c3aca424f076f5ad062426610d6b58df7fc062becd682f
|