Metadata-Version: 2.3
Name: synapse-controller
Version: 0.1.0
Summary: CLI and backend for driving Azure Synapse Analytics pipelines and notebooks from a single config.yaml.
Author: TheScriptingGuy
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: Microsoft :: Windows
Classifier: Topic :: System :: Systems Administration
Requires-Dist: typer>=0.12
Requires-Dist: rich>=13.7
Requires-Dist: pydantic>=2.6
Requires-Dist: pyyaml>=6.0
Requires-Dist: azure-identity>=1.16
Requires-Dist: azure-synapse-artifacts>=0.19
Requires-Dist: azure-synapse-spark>=0.7
Requires-Dist: six>=1.16
Requires-Dist: black>=24.4 ; extra == 'dev'
Requires-Dist: isort>=5.13 ; extra == 'dev'
Requires-Dist: flake8>=7.1 ; extra == 'dev'
Requires-Dist: flake8-pyproject>=1.2 ; extra == 'dev'
Requires-Dist: mypy>=1.10 ; extra == 'dev'
Requires-Dist: pytest>=8.2 ; extra == 'dev'
Requires-Dist: pytest-mock>=3.14 ; extra == 'dev'
Requires-Dist: respx>=0.21 ; extra == 'dev'
Requires-Dist: responses>=0.25 ; extra == 'dev'
Requires-Dist: types-pyyaml>=6.0 ; extra == 'dev'
Requires-Python: >=3.13, <3.14
Project-URL: Homepage, https://github.com/TheScriptingGuy/synapse-controller
Project-URL: Repository, https://github.com/TheScriptingGuy/synapse-controller
Project-URL: Issues, https://github.com/TheScriptingGuy/synapse-controller/issues
Provides-Extra: dev
Description-Content-Type: text/markdown

# synapse-controller

A Python CLI + backend that drives Azure Synapse Analytics from a single
`config.yaml`. Wraps `azure-synapse-artifacts` to start, monitor, list, and
cancel pipeline runs, and to run / debug notebooks against a Spark session.

See [`ARCHITECTURE.md`](./ARCHITECTURE.md) for the architectural source of
truth: stack, layout, config shape, CLI behavior, and project conventions.

## Quickstart

```bash
uv sync --extra dev
uv run python -m synapse_controller --help
```

Copy `config.example.yaml` to `config.yaml`, fill in your workspace identity,
then:

```bash
uv run python -m synapse_controller --config config.yaml --profile dev pipelines list
```

> **Note** — invoke as `python -m synapse_controller`, not as a script entry
> point. Defender on Belastingdienst-managed Windows blocks executing
> binaries from `.venv\Scripts\`, so all tools (black, isort, flake8, mypy,
> pytest, this CLI) are launched via `python -m`.

> **Notebook output streaming caveat** — `notebooks run` and `notebooks debug`
> execute a workspace notebook by submitting each code cell to a Livy Spark
> session. Synapse's Livy returns a cell's captured output **only when the
> cell finishes**, so per-line stdout during a long-running cell is not
> available. Feedback granularity is one cell.

## Development

```bash
uv run python -m black .
uv run python -m isort .
uv run python -m flake8 src tests
uv run python -m mypy src tests
uv run python -m pytest
```

Authentication is always `DefaultAzureCredential`. Make sure you are signed in
(e.g. `az login`) before running commands that touch the workspace.
