Rename the import package app to fluksio
A wheel whose top-level module is `app` collides with anything else in a user's venv, so the package that is about to be published takes the name it is published under. Only the Python package moves; the repo, the Docker WORKDIR and the compose project keep theirs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,7 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.alerts import (
|
||||
from fluksio.flow.alerts import (
|
||||
ALERTING_EVENTS,
|
||||
FLAP_THRESHOLD,
|
||||
RATE_LIMIT,
|
||||
@@ -17,7 +17,7 @@ from app.flow.alerts import (
|
||||
Rule,
|
||||
describe,
|
||||
)
|
||||
from app.flow.events import EventBus
|
||||
from fluksio.flow.events import EventBus
|
||||
|
||||
|
||||
class Clock:
|
||||
|
||||
@@ -9,12 +9,12 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.controller import FlowController
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import MqttNode
|
||||
from app.flow.pipeline import ValidationIssue
|
||||
from app.flow.schemas import FlowDef, NodeDef
|
||||
from app.flow.store import FlowStore
|
||||
from fluksio.flow.controller import FlowController
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import MqttNode
|
||||
from fluksio.flow.pipeline import ValidationIssue
|
||||
from fluksio.flow.schemas import FlowDef, NodeDef
|
||||
from fluksio.flow.store import FlowStore
|
||||
|
||||
BROKER = {"broker_host": "mosquitto", "broker_port": 1883, "topic": "sensors/temp"}
|
||||
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
import asyncio
|
||||
from typing import Any
|
||||
|
||||
from app.flow.connector import CONTRACT_VERSION, ConnectorNode
|
||||
from app.flow.controller import NODE_TYPES
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.plugins import load_plugins
|
||||
from fluksio.flow.connector import CONTRACT_VERSION, ConnectorNode
|
||||
from fluksio.flow.controller import NODE_TYPES
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.plugins import load_plugins
|
||||
|
||||
|
||||
class Sensor(ConnectorNode):
|
||||
@@ -146,7 +146,7 @@ def test_a_connector_is_discovered_from_its_entry_point(monkeypatch):
|
||||
def load(self):
|
||||
return Sensor
|
||||
|
||||
monkeypatch.setattr("app.flow.plugins.entry_points", lambda group: [FakeEntry()])
|
||||
monkeypatch.setattr("fluksio.flow.plugins.entry_points", lambda group: [FakeEntry()])
|
||||
try:
|
||||
assert load_plugins() == ["test_sensor"]
|
||||
assert NODE_TYPES["test_sensor"].plugin == "fluksio-connector-test 0.1.0"
|
||||
@@ -166,7 +166,7 @@ def test_a_connector_written_for_another_contract_is_refused(monkeypatch):
|
||||
def load(self):
|
||||
return Outdated
|
||||
|
||||
monkeypatch.setattr("app.flow.plugins.entry_points", lambda group: [FakeEntry()])
|
||||
monkeypatch.setattr("fluksio.flow.plugins.entry_points", lambda group: [FakeEntry()])
|
||||
assert load_plugins() == []
|
||||
assert "outdated" not in NODE_TYPES
|
||||
|
||||
@@ -179,6 +179,6 @@ def test_a_connector_may_not_take_over_a_built_in_type(monkeypatch):
|
||||
def load(self): # pragma: no cover - never reached
|
||||
raise AssertionError("should not be loaded")
|
||||
|
||||
monkeypatch.setattr("app.flow.plugins.entry_points", lambda group: [FakeEntry()])
|
||||
monkeypatch.setattr("fluksio.flow.plugins.entry_points", lambda group: [FakeEntry()])
|
||||
assert load_plugins() == []
|
||||
assert NODE_TYPES["mqtt"].plugin is None
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.dashboards import (
|
||||
from fluksio.flow.dashboards import (
|
||||
DashboardDef,
|
||||
DashboardNotFound,
|
||||
DashboardStore,
|
||||
@@ -11,11 +11,11 @@ from app.flow.dashboards import (
|
||||
WidgetDef,
|
||||
default_dashboard,
|
||||
)
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.state import MemoryState
|
||||
from app.flow.store import FlowStore, StaleVersion
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.state import MemoryState
|
||||
from fluksio.flow.store import FlowStore, StaleVersion
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
import time
|
||||
|
||||
from app.flow.executor import ExecutionService
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.queue import MemoryWorkQueue
|
||||
from fluksio.flow.executor import ExecutionService
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.queue import MemoryWorkQueue
|
||||
|
||||
# Short enough to wait out in a test, long enough not to race the engine.
|
||||
WINDOW = 0.05
|
||||
|
||||
@@ -4,9 +4,9 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.messages import MessageSpec
|
||||
from app.flow.schemas import FlowDef, NodeDef
|
||||
from app.flow.store import FlowStore, StaleVersion
|
||||
from fluksio.flow.messages import MessageSpec
|
||||
from fluksio.flow.schemas import FlowDef, NodeDef
|
||||
from fluksio.flow.store import FlowStore, StaleVersion
|
||||
|
||||
SOURCE = "def process():\n return {}\n"
|
||||
EDITED = "def process():\n return {'temp': 1}\n"
|
||||
|
||||
@@ -9,13 +9,13 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.api.routes.flows import snapshot_payload
|
||||
from app.flow.controller import FlowController
|
||||
from app.flow.events import EventBus, event_bus
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.store import FlowStore
|
||||
from fluksio.api.routes.flows import snapshot_payload
|
||||
from fluksio.flow.controller import FlowController
|
||||
from fluksio.flow.events import EventBus, event_bus
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.store import FlowStore
|
||||
|
||||
|
||||
def make_node(node_id: str, f, provides=()) -> Node:
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
"""Message history: the series a node panel draws as a sparkline."""
|
||||
|
||||
from app.flow.messages import MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.state import HISTORY_LIMIT, MemoryState
|
||||
from fluksio.flow.messages import MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.state import HISTORY_LIMIT, MemoryState
|
||||
|
||||
|
||||
def emitter(values) -> Node:
|
||||
|
||||
@@ -11,13 +11,13 @@ import pytest
|
||||
from fastapi import FastAPI
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from app.flow.controller import HOOK_PREFIX, FlowController
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import HttpNode
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.schemas import FlowDef, NodeDef
|
||||
from app.flow.secrets import init_secrets, resolve_params
|
||||
from app.flow.store import FlowStore
|
||||
from fluksio.flow.controller import HOOK_PREFIX, FlowController
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import HttpNode
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.schemas import FlowDef, NodeDef
|
||||
from fluksio.flow.secrets import init_secrets, resolve_params
|
||||
from fluksio.flow.store import FlowStore
|
||||
|
||||
SECRET = "d3vice-key"
|
||||
HOOK = f"{HOOK_PREFIX}/house/sensor"
|
||||
|
||||
@@ -4,9 +4,9 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.messages import MessageSpec
|
||||
from app.flow.schemas import FlowDef, NodeDef
|
||||
from app.flow.store import FlowStore, LibExists, LibNotFound
|
||||
from fluksio.flow.messages import MessageSpec
|
||||
from fluksio.flow.schemas import FlowDef, NodeDef
|
||||
from fluksio.flow.store import FlowStore, LibExists, LibNotFound
|
||||
|
||||
SOURCE = "def process():\n return {'temp': 1}\n"
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
import sys
|
||||
from typing import Any
|
||||
|
||||
from app.flow import logs
|
||||
from app.flow.controller import with_settings
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from fluksio.flow import logs
|
||||
from fluksio.flow.controller import with_settings
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
|
||||
|
||||
def run_with_capture(nodes: list[Node], bus: "RecordingBus") -> None:
|
||||
|
||||
@@ -2,7 +2,7 @@ import json
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.messages import DType, MessageSpec, flow_of, qualify
|
||||
from fluksio.flow.messages import DType, MessageSpec, flow_of, qualify
|
||||
|
||||
|
||||
def test_port_defaults_to_last_name_segment():
|
||||
|
||||
@@ -6,8 +6,8 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow import modules
|
||||
from app.flow.store import FlowStore
|
||||
from fluksio.flow import modules
|
||||
from fluksio.flow.store import FlowStore
|
||||
|
||||
pytestmark = pytest.mark.skipif(
|
||||
shutil.which("uv") is None, reason="module management needs uv"
|
||||
|
||||
@@ -9,12 +9,12 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.controller import FlowController
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.schemas import FlowDef, NodeDef
|
||||
from app.flow.state import MemoryState
|
||||
from app.flow.store import FlowStore
|
||||
from fluksio.flow.controller import FlowController
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.schemas import FlowDef, NodeDef
|
||||
from fluksio.flow.state import MemoryState
|
||||
from fluksio.flow.store import FlowStore
|
||||
|
||||
SOURCE = "def process(reading, factor):\n return {'scaled': reading * factor}\n"
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ only fails when someone places that node. Building one of each catches it.
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.controller import NODE_TYPES, node_type_info
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.controller import NODE_TYPES, node_type_info
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
|
||||
# Enough configuration for each type to construct; the ports decide the
|
||||
# direction, so every type gets both an input and an output where it allows it.
|
||||
@@ -160,7 +160,7 @@ def test_every_offered_type_has_a_fixture():
|
||||
|
||||
def test_a_flux_request_is_run_rather_than_written(monkeypatch):
|
||||
"""A query passing through is not a point to store."""
|
||||
from app.flow.nodes import InfluxDbNode
|
||||
from fluksio.flow.nodes import InfluxDbNode
|
||||
|
||||
node = InfluxDbNode(
|
||||
requires=[
|
||||
@@ -199,8 +199,8 @@ def test_a_flux_request_is_run_rather_than_written(monkeypatch):
|
||||
|
||||
def test_a_falsy_return_is_a_mistake_not_silence():
|
||||
"""Only None means "nothing to publish"."""
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.nodes.base import NodeOutputError
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.nodes.base import NodeOutputError
|
||||
|
||||
def make(retval):
|
||||
return Node(
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
"""The wiring fundamentals: name binding, fan-in, namespaces, validation."""
|
||||
|
||||
from app.flow.events import EventBus
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from fluksio.flow.events import EventBus
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
|
||||
|
||||
def spec(name: str, dtype: DType = DType.FLOAT, port: str = "") -> MessageSpec:
|
||||
|
||||
@@ -5,19 +5,19 @@ actually published, it pulses all of them — and when the cause is a dashboard
|
||||
control or another flow, it pulses a node that did nothing at all.
|
||||
"""
|
||||
|
||||
from app.flow.dashboards import (
|
||||
from fluksio.flow.dashboards import (
|
||||
DashboardDef,
|
||||
DashboardStore,
|
||||
PageDef,
|
||||
SectionDef,
|
||||
WidgetDef,
|
||||
)
|
||||
from app.flow.events import EventBus
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline, ValueSource
|
||||
from app.flow.state import MemoryState
|
||||
from app.flow.store import FlowStore
|
||||
from fluksio.flow.events import EventBus
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline, ValueSource
|
||||
from fluksio.flow.state import MemoryState
|
||||
from fluksio.flow.store import FlowStore
|
||||
|
||||
|
||||
def collect(bus: EventBus) -> list[dict]:
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
import time
|
||||
|
||||
from app.flow.executor import ExecutionService
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.queue import MemoryWorkQueue, WorkItem
|
||||
from app.flow.state import MemoryState
|
||||
from fluksio.flow.executor import ExecutionService
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.queue import MemoryWorkQueue, WorkItem
|
||||
from fluksio.flow.state import MemoryState
|
||||
|
||||
|
||||
def test_items_come_back_in_the_order_they_went_in():
|
||||
|
||||
@@ -13,8 +13,8 @@ from collections.abc import Iterator
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.remote import NoWorker, RemoteWorker, RemoteWorkerHub
|
||||
from app.flow.workers import NodeTimeout, RemoteError
|
||||
from fluksio.flow.remote import NoWorker, RemoteWorker, RemoteWorkerHub
|
||||
from fluksio.flow.workers import NodeTimeout, RemoteError
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -8,10 +8,10 @@ parameters a caller sends are refused before anything runs if they are wrong.
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import NodeOutcome, Pipeline
|
||||
from app.flow.runs import (
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import NodeOutcome, Pipeline
|
||||
from fluksio.flow.runs import (
|
||||
MetricSink,
|
||||
RunRejected,
|
||||
batch_issues,
|
||||
@@ -20,8 +20,8 @@ from app.flow.runs import (
|
||||
required_labels,
|
||||
seed_values,
|
||||
)
|
||||
from app.flow.schemas import FlowDef, FlowInput, NodeDef
|
||||
from app.flow.state import MemoryState
|
||||
from fluksio.flow.schemas import FlowDef, FlowInput, NodeDef
|
||||
from fluksio.flow.state import MemoryState
|
||||
|
||||
|
||||
def spec(name: str, dtype: DType = DType.FLOAT, **kwargs) -> MessageSpec:
|
||||
|
||||
@@ -6,13 +6,13 @@ from typing import Any
|
||||
from fastapi import FastAPI
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from app.api.deps import get_current_user
|
||||
from app.api.routes.flows import router
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.schemas import FlowDef
|
||||
from app.flow.store import FlowStore
|
||||
from fluksio.api.deps import get_current_user
|
||||
from fluksio.api.routes.flows import router
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.schemas import FlowDef
|
||||
from fluksio.flow.store import FlowStore
|
||||
|
||||
|
||||
def spec(name: str) -> MessageSpec:
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
import asyncio
|
||||
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import MqttNode
|
||||
from app.flow.nodes.http import close_shared_client, shared_client
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import MqttNode
|
||||
from fluksio.flow.nodes.http import close_shared_client, shared_client
|
||||
|
||||
|
||||
def test_http_senders_share_one_pooled_client():
|
||||
|
||||
@@ -5,10 +5,10 @@ running value in a message it both reads and writes. That is the sanctioned
|
||||
shape, and these tests pin what it means.
|
||||
"""
|
||||
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.state import MemoryState
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.state import MemoryState
|
||||
|
||||
|
||||
def counter() -> Node:
|
||||
|
||||
@@ -3,9 +3,9 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.messages import MessageSpec
|
||||
from app.flow.schemas import FlowDef, NodeDef
|
||||
from app.flow.store import FlowExists, FlowNotFound, FlowStore
|
||||
from fluksio.flow.messages import MessageSpec
|
||||
from fluksio.flow.schemas import FlowDef, NodeDef
|
||||
from fluksio.flow.store import FlowExists, FlowNotFound, FlowStore
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -4,9 +4,9 @@ import asyncio
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow import supervision
|
||||
from app.flow.events import EventBus
|
||||
from app.flow.supervision import FAILURE_BUDGET, Supervisor
|
||||
from fluksio.flow import supervision
|
||||
from fluksio.flow.events import EventBus
|
||||
from fluksio.flow.supervision import FAILURE_BUDGET, Supervisor
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
|
||||
@@ -6,10 +6,10 @@ atomic operations, so those are covered here too.
|
||||
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import Node
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.state import MemoryState
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import Node
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.state import MemoryState
|
||||
|
||||
|
||||
def spec(name: str) -> MessageSpec:
|
||||
|
||||
@@ -4,10 +4,17 @@ These are the shapes a Node-RED installation is mostly made of, so their
|
||||
behaviour is worth pinning rather than just their construction.
|
||||
"""
|
||||
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.nodes import ChangeNode, ExecNode, FileNode, JoinNode, RbeNode, SwitchNode
|
||||
from app.flow.pipeline import Pipeline
|
||||
from app.flow.state import MemoryState
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.nodes import (
|
||||
ChangeNode,
|
||||
ExecNode,
|
||||
FileNode,
|
||||
JoinNode,
|
||||
RbeNode,
|
||||
SwitchNode,
|
||||
)
|
||||
from fluksio.flow.pipeline import Pipeline
|
||||
from fluksio.flow.state import MemoryState
|
||||
|
||||
|
||||
def spec(name: str, dtype: DType = DType.FLOAT) -> MessageSpec:
|
||||
@@ -233,7 +240,7 @@ def test_a_file_node_refuses_to_leave_its_directory():
|
||||
|
||||
|
||||
def test_a_file_round_trips_through_the_sandbox(tmp_path, monkeypatch):
|
||||
from app.core.config import settings
|
||||
from fluksio.core.config import settings
|
||||
|
||||
monkeypatch.setattr(settings, "FLOWS_DIR", tmp_path / "flows")
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from app.flow.events import EventBus
|
||||
from app.flow.watchdog import DEGRADED_STRIKES, LoopWatchdog
|
||||
from app.main import app
|
||||
from fluksio.flow.events import EventBus
|
||||
from fluksio.flow.watchdog import DEGRADED_STRIKES, LoopWatchdog
|
||||
from fluksio.main import app
|
||||
|
||||
|
||||
def test_a_responsive_loop_stays_healthy():
|
||||
|
||||
@@ -7,10 +7,10 @@ from collections.abc import Iterator
|
||||
|
||||
import pytest
|
||||
|
||||
from app.flow.artifacts import ArtifactStore
|
||||
from app.flow.messages import DType, MessageSpec
|
||||
from app.flow.worker_main import ARTIFACT_DIR_ENV
|
||||
from app.flow.workers import NodeCancelled, NodeTimeout, PythonWorkerPool
|
||||
from fluksio.flow.artifacts import ArtifactStore
|
||||
from fluksio.flow.messages import DType, MessageSpec
|
||||
from fluksio.flow.worker_main import ARTIFACT_DIR_ENV
|
||||
from fluksio.flow.workers import NodeCancelled, NodeTimeout, PythonWorkerPool
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
Reference in New Issue
Block a user