fix: rename root package to beanflows-pipeline to avoid workspace conflict
Some checks failed
CI / test-cli (push) Failing after 11s
CI / test-sqlmesh (push) Failing after 9s
CI / test-web (push) Successful in 15s
CI / tag (push) Has been skipped

The web package is already named 'beanflows'. Renaming the root CLI/infra
package to 'beanflows-pipeline' (src/beanflows_pipeline/) resolves the
uv workspace name conflict and Python namespace collision.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Deeman
2026-02-28 23:32:07 +01:00
parent d14990bb01
commit 79ce3f2913
12 changed files with 19 additions and 19 deletions

View File

@@ -115,6 +115,6 @@ echo "=== Bootstrap complete! ==="
echo ""
echo "Check status: systemctl status beanflows-supervisor"
echo "View logs: journalctl -u beanflows-supervisor -f"
echo "Workflow status: sudo -u ${SERVICE_USER} ${UV} run -p ${REPO_DIR} python src/beanflows/supervisor.py status"
echo "Workflow status: sudo -u ${SERVICE_USER} ${UV} run -p ${REPO_DIR} python src/beanflows_pipeline/supervisor.py status"
echo "Backup timer: systemctl list-timers beanflows-backup.timer"
echo "Tag: $(sudo -u "${SERVICE_USER}" git -C "${REPO_DIR}" describe --tags --always)"

View File

@@ -7,7 +7,7 @@ Wants=network-online.target
Type=simple
User=beanflows_service
WorkingDirectory=/opt/beanflows
ExecStart=/bin/sh -c 'exec uv run python src/beanflows/supervisor.py'
ExecStart=/bin/sh -c 'exec uv run python src/beanflows_pipeline/supervisor.py'
Restart=always
RestartSec=10
EnvironmentFile=/opt/beanflows/.env

View File

@@ -1,5 +1,5 @@
[project]
name = "beanflows"
name = "beanflows-pipeline"
version = "0.1.0"
description = "Add your description here"
readme = "readme.md"
@@ -20,7 +20,7 @@ dependencies = [
]
[project.scripts]
beanflows = "beanflows.cli:app"
beanflows = "beanflows_pipeline.cli:app"
[dependency-groups]

View File

@@ -26,7 +26,7 @@ def worker_list(
provider: Annotated[str, typer.Option("--provider", "-p")] = "hetzner",
):
"""List all active worker instances."""
from beanflows.workers import list_workers
from beanflows_pipeline.workers import list_workers
workers = list_workers(provider)
if not workers:
@@ -47,7 +47,7 @@ def worker_create(
location: Annotated[str | None, typer.Option("--location", "-l")] = None,
):
"""Create a new worker instance."""
from beanflows.workers import create_worker
from beanflows_pipeline.workers import create_worker
typer.echo(f"Creating worker '{name}' ({server_type}) on {provider}...")
worker = create_worker(name, server_type, provider, location)
@@ -61,7 +61,7 @@ def worker_destroy(
force: Annotated[bool, typer.Option("--force", "-f")] = False,
):
"""Destroy a worker instance."""
from beanflows.workers import destroy_worker
from beanflows_pipeline.workers import destroy_worker
if not force:
confirm = typer.confirm(f"Destroy worker '{name}'?")
@@ -82,7 +82,7 @@ def pipeline_run(
name: Annotated[str, typer.Argument(help="Pipeline name (extract, transform)")],
):
"""Run a pipeline locally."""
from beanflows.pipelines import run_pipeline
from beanflows_pipeline.pipelines import run_pipeline
typer.echo(f"Running pipeline '{name}'...")
result = run_pipeline(name)
@@ -98,7 +98,7 @@ def pipeline_run(
@pipeline_app.command("list")
def pipeline_list():
"""List available pipelines."""
from beanflows.pipelines import PIPELINES
from beanflows_pipeline.pipelines import PIPELINES
typer.echo("Available pipelines:")
for name, config in PIPELINES.items():
@@ -113,7 +113,7 @@ app.add_typer(secrets_app, name="secrets")
@secrets_app.command("list")
def secrets_list():
"""List available secrets (keys only)."""
from beanflows.secrets import list_secrets
from beanflows_pipeline.secrets import list_secrets
secrets = list_secrets()
if not secrets:
@@ -130,7 +130,7 @@ def secrets_get(
key: Annotated[str, typer.Argument(help="Secret key")],
):
"""Get a secret value."""
from beanflows.secrets import get_secret
from beanflows_pipeline.secrets import get_secret
value = get_secret(key)
if value is None:
@@ -143,7 +143,7 @@ def secrets_get(
@secrets_app.command("test")
def secrets_test():
"""Test sops decryption (verifies sops is installed and age key is present)."""
from beanflows.secrets import test_connection
from beanflows_pipeline.secrets import test_connection
typer.echo("Testing SOPS decryption...")
if test_connection():

View File

@@ -65,7 +65,7 @@ PIPELINES = {
"export_serving": {
"command": ["uv", "run", "python", "-c",
"import logging; logging.basicConfig(level=logging.INFO); "
"from beanflows.export_serving import export_serving; export_serving()"],
"from beanflows_pipeline.export_serving import export_serving; export_serving()"],
"timeout_seconds": 300,
},
}

View File

@@ -15,7 +15,7 @@ class Instance:
def get_provider(provider_name: str):
if provider_name == "hetzner":
from beanflows.providers import hetzner
from beanflows_pipeline.providers import hetzner
return hetzner
else:

View File

@@ -7,8 +7,8 @@ from hcloud import Client
from hcloud.images import Image
from hcloud.server_types import ServerType
from beanflows.providers import Instance
from beanflows.secrets import get_secret
from beanflows_pipeline.providers import Instance
from beanflows_pipeline.secrets import get_secret
def _get_client() -> Client:

View File

@@ -58,7 +58,7 @@ logging.basicConfig(
datefmt="%Y-%m-%d %H:%M:%S",
handlers=[logging.StreamHandler(sys.stdout)],
)
logger = logging.getLogger("beanflows.supervisor")
logger = logging.getLogger("beanflows_pipeline.supervisor")
# ---------------------------------------------------------------------------

View File

@@ -1,7 +1,7 @@
"""Worker instance management."""
from beanflows.providers import Instance, get_provider
from beanflows.secrets import get_secret
from beanflows_pipeline.providers import Instance, get_provider
from beanflows_pipeline.secrets import get_secret
DEFAULT_PROVIDER = "hetzner"