refactor: move effects_plugins to engine/effects/plugins

- Move effects_plugins/ to engine/effects/plugins/
- Update imports in engine/app.py
- Update imports in all test files
- Follows capability-based deps architecture

Closes #27
This commit is contained in:
2026-03-18 03:56:31 -07:00
parent b926b346ad
commit b37b2ccc73
16 changed files with 21 additions and 22 deletions

View File

@@ -5,7 +5,7 @@ Application orchestrator — pipeline mode entry point.
import sys
import time
import effects_plugins
import engine.effects.plugins as effects_plugins
from engine import config
from engine.display import DisplayRegistry
from engine.effects import PerformanceMonitor, get_registry, set_monitor

View File

@@ -18,7 +18,7 @@ def discover_plugins():
continue
try:
module = __import__(f"effects_plugins.{module_name}", fromlist=[""])
module = __import__(f"engine.effects.plugins.{module_name}", fromlist=[""])
for attr_name in dir(module):
attr = getattr(module, attr_name)
if (

View File

@@ -37,8 +37,8 @@ class TestBenchmarkNullDisplay:
"""Effects should meet minimum processing throughput."""
import time
from effects_plugins import discover_plugins
from engine.effects import EffectContext, get_registry
from engine.effects.plugins import discover_plugins
discover_plugins()
registry = get_registry()

View File

@@ -2,8 +2,7 @@
Tests for BorderEffect.
"""
from effects_plugins.border import BorderEffect
from engine.effects.plugins.border import BorderEffect
from engine.effects.types import EffectContext

View File

@@ -2,8 +2,7 @@
Tests for CropEffect.
"""
from effects_plugins.crop import CropEffect
from engine.effects.plugins.crop import CropEffect
from engine.effects.types import EffectContext

View File

@@ -36,7 +36,7 @@ class TestGlitchEffectStability:
def test_glitch_preserves_line_count(self, effect_context, stable_buffer):
"""Glitch should not change the number of lines in buffer."""
from effects_plugins.glitch import GlitchEffect
from engine.effects.plugins.glitch import GlitchEffect
effect = GlitchEffect()
result = effect.process(stable_buffer, effect_context)
@@ -50,7 +50,7 @@ class TestGlitchEffectStability:
Note: Effects may add ANSI color codes, so we check VISIBLE length (stripped).
"""
from effects_plugins.glitch import GlitchEffect
from engine.effects.plugins.glitch import GlitchEffect
effect = GlitchEffect()
@@ -69,7 +69,7 @@ class TestGlitchEffectStability:
Regression test: Previously glitch used \\033[{row};1H which caused
conflicts with HUD and border rendering.
"""
from effects_plugins.glitch import GlitchEffect
from engine.effects.plugins.glitch import GlitchEffect
effect = GlitchEffect()
result = effect.process(stable_buffer, effect_context)
@@ -86,7 +86,7 @@ class TestGlitchEffectStability:
self, effect_context, stable_buffer
):
"""Glitch output should be deterministic given the same random seed."""
from effects_plugins.glitch import GlitchEffect
from engine.effects.plugins.glitch import GlitchEffect
effect = GlitchEffect()
effect.config = EffectConfig(enabled=True, intensity=1.0)
@@ -127,9 +127,9 @@ class TestEffectViewportStability:
def test_effect_chain_preserves_dimensions(self):
"""Effect chain should preserve buffer dimensions."""
from effects_plugins.fade import FadeEffect
from effects_plugins.glitch import GlitchEffect
from effects_plugins.noise import NoiseEffect
from engine.effects.plugins.fade import FadeEffect
from engine.effects.plugins.glitch import GlitchEffect
from engine.effects.plugins.noise import NoiseEffect
ctx = EffectContext(
terminal_width=80,
@@ -152,7 +152,9 @@ class TestEffectViewportStability:
assert len(buffer) == original_len, (
f"{effect.name} changed line count from {original_len} to {len(buffer)}"
)
for i, (orig_w, new_line) in enumerate(zip(original_widths, buffer, strict=False)):
for i, (orig_w, new_line) in enumerate(
zip(original_widths, buffer, strict=False)
):
visible_len = len(strip_ansi(new_line))
assert visible_len == orig_w, (
f"{effect.name} changed line {i} visible width from {orig_w} to {visible_len}"
@@ -181,7 +183,7 @@ class TestEffectTestMatrix:
pytest.skip("Border handled by display")
else:
effect_module = __import__(
f"effects_plugins.{effect_name}",
f"engine.effects.plugins.{effect_name}",
fromlist=[f"{effect_name.title()}Effect"],
)
effect_class = getattr(effect_module, f"{effect_name.title()}Effect")
@@ -213,7 +215,7 @@ class TestEffectTestMatrix:
"""Effects should not use cursor positioning (causes display conflicts)."""
try:
effect_module = __import__(
f"effects_plugins.{effect_name}",
f"engine.effects.plugins.{effect_name}",
fromlist=[f"{effect_name.title()}Effect"],
)
effect_class = getattr(effect_module, f"{effect_name.title()}Effect")

View File

@@ -1,11 +1,10 @@
from engine.effects.performance import PerformanceMonitor, set_monitor
from engine.effects.types import EffectContext
def test_hud_effect_adds_hud_lines():
"""Test that HUD effect adds HUD lines to the buffer."""
from effects_plugins.hud import HudEffect
from engine.effects.plugins.hud import HudEffect
set_monitor(PerformanceMonitor())
@@ -51,7 +50,7 @@ def test_hud_effect_adds_hud_lines():
def test_hud_effect_shows_current_effect():
"""Test that HUD displays the correct effect name."""
from effects_plugins.hud import HudEffect
from engine.effects.plugins.hud import HudEffect
set_monitor(PerformanceMonitor())
@@ -80,7 +79,7 @@ def test_hud_effect_shows_current_effect():
def test_hud_effect_shows_intensity():
"""Test that HUD displays intensity percentage."""
from effects_plugins.hud import HudEffect
from engine.effects.plugins.hud import HudEffect
set_monitor(PerformanceMonitor())

View File

@@ -1,6 +1,6 @@
import pytest
from effects_plugins.tint import TintEffect
from engine.effects.plugins.tint import TintEffect
from engine.effects.types import EffectConfig