feat: modernize project with uv, add pytest test suite
- Add pyproject.toml with modern Python packaging (PEP 517/518) - Add uv-based dependency management replacing inline venv bootstrap - Add requirements.txt and requirements-dev.txt for compatibility - Add mise.toml with dev tasks (test, lint, run, sync, ci) - Add .python-version pinned to Python 3.12 - Add comprehensive pytest test suite (73 tests) for: - engine/config, filter, terminal, sources, mic, ntfy modules - Configure pytest with coverage reporting (16% total, 100% on tested modules) - Configure ruff for linting with Python 3.10+ target - Remove redundant venv bootstrap code from mainline.py - Update .gitignore for uv/venv artifacts Run 'uv sync' to install dependencies, 'uv run pytest' to test.
This commit is contained in:
35
mainline.py
35
mainline.py
@@ -5,40 +5,7 @@ Digital news consciousness stream.
|
||||
Matrix aesthetic · THX-1138 hue.
|
||||
"""
|
||||
|
||||
import subprocess, sys, pathlib
|
||||
|
||||
# ─── BOOTSTRAP VENV ───────────────────────────────────────
|
||||
_VENV = pathlib.Path(__file__).resolve().parent / ".mainline_venv"
|
||||
_MARKER = _VENV / ".installed_v3"
|
||||
|
||||
def _ensure_venv():
|
||||
"""Create a local venv and install deps if needed."""
|
||||
if _MARKER.exists():
|
||||
return
|
||||
import venv
|
||||
print("\033[2;38;5;34m > first run — creating environment...\033[0m")
|
||||
venv.create(str(_VENV), with_pip=True, clear=True)
|
||||
pip = str(_VENV / "bin" / "pip")
|
||||
subprocess.check_call(
|
||||
[pip, "install", "feedparser", "Pillow", "-q"],
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,
|
||||
)
|
||||
_MARKER.touch()
|
||||
|
||||
_ensure_venv()
|
||||
|
||||
# Install sounddevice on first run after v3
|
||||
_MARKER_SD = _VENV / ".installed_sd"
|
||||
if not _MARKER_SD.exists():
|
||||
_pip = str(_VENV / "bin" / "pip")
|
||||
subprocess.check_call([_pip, "install", "sounddevice", "numpy", "-q"],
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||
_MARKER_SD.touch()
|
||||
|
||||
sys.path.insert(0, str(next((_VENV / "lib").glob("python*/site-packages"))))
|
||||
|
||||
# ─── DELEGATE TO ENGINE ───────────────────────────────────
|
||||
from engine.app import main # noqa: E402
|
||||
from engine.app import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user