Shift_left
CLI to manage Flink projects and migrate batch SQL pipelines to real-time Apache Flink on Confluent Cloud. Supports KSQL, Spark SQL, and dbt as sources.
Documentation: https://jbcodeforce.github.io/shift_left_utils/
Install
pip install shift_left
Major features
- Project management: Initialize Flink projects (Kimball or data-product layout), validate config, list Kafka topics and Flink compute pools, and report cross-product or single-child tables.
- Pipeline deployment: Build table inventory and pipeline metadata, deploy DDL/DML with execution planning. Optional parallel deploy, dml-only, and blue-green via modified-files tracking.
- Table lifecycle: Create table scaffolding, run AI migration per table (with optional recursion), and manage unit tests (init, run, delete) against Confluent Cloud.
- SQL migration: Migrate KSQL, Spark SQL, and dbt to Flink SQL using LLM-based agents (OpenAI-compatible, including local Ollama). Handles table detection, DDL creation, and translation with validation.
- Unit test harness: Develop synthetic test data from SQL DML semantic, with test suite and test case metadata to help Data Engineers to unit test their SQL on Confluent Cloud.
- Blue-green and operations: List modified files by branch for safe deployments, integrate with your CI/CD and Confluent Cloud APIs.
Quick start
# Initialize a Flink project
shift_left project init my-flink-project /path/to/project --project-type data_product
# Validate Confluent Cloud config
shift_left project validate-config
# Migrate a table from Spark SQL to Flink SQL (one time work)
shift_left table migrate my_table /path/to/script.sql /path/to/staging --source-type spark --recursive
# Build pipeline execution plan
shift_left table build-inventory
shift_left pipeline build-all-metadata
shift_left pipeline build-execution-plan /path/to/inventor --table-name my_table --may-start-de
# Deploy pipelines from inventory
shift_left pipeline deploy /path/to/inventory --table-name my_table
Documentation
Full guides, tutorials, CLI reference, and MCP server setup:
https://jbcodeforce.github.io/shift_left_utils/
- User guide: environment setup, recipes, pipeline management, blue-green deployment
- Tutorials: setup, project management, migration with AI
- CLI reference and MCP (Model Context Protocol) integration for Cursor and other tools
Requirements
- Python 3.12
- Confluent Cloud (Kafka and Flink). For AI migration: OpenAI-compatible API or local Ollama.
License
Apache-2.0
Metadata
Release files for shift_left 0.1.52
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| shift_left-0.1.52.tar.gz | 915.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shift_left-0.1.52-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / shift_left-0.1.52.tar.gz
| Download URL | shift_left-0.1.52.tar.gz |
|---|---|
| Size | 915.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
23fc3313fe32c42339ff692a7bea5047b3402dee28dfcdac05199aef84c12992
|
|
BLAKE2b-256 checksum How to use checksums |
fb95c4ea6a18957531d934b96f2f9ebb4389c2aec44be198c5c675a78a65da99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"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}
|
Release files / shift_left-0.1.52-py3-none-any.whl
| Download URL | shift_left-0.1.52-py3-none-any.whl |
|---|---|
| Size | 229.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f6592ab1decd82f57032dbd2ef027cb8105d92c96aa3c7abd72dfaa2236d8c5
|
|
BLAKE2b-256 checksum How to use checksums |
cc7b85b83cc70dfe2771b4a025e1ebb8ff0ff7132a3d5791d5bb3e824ac1181d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"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}
|