From 1948dce913ca83757c64ce590cbfba1136bcadbe Mon Sep 17 00:00:00 2001 From: CooperSheroy Date: Tue, 23 Jun 2026 11:23:37 +0530 Subject: [PATCH] build: make Python targets use python3 --- Makefile | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/Makefile b/Makefile index 91021ee0..9881d360 100644 --- a/Makefile +++ b/Makefile @@ -1,24 +1,26 @@ +PYTHON ?= python3 + .PHONY: setup install install-dev install-gpu test test-contracts lint clean preflight demo demo-list hyperframes-doctor hyperframes-warm # ---- One-command setup ---- setup: @echo "==> Installing Python dependencies..." - pip install -r requirements.txt + $(PYTHON) -m pip install -r requirements.txt @echo "" @echo "==> Installing Remotion composer..." cd remotion-composer && npm install @echo "" @echo "==> Installing free offline TTS (Piper)..." - pip install piper-tts || echo " [skip] piper-tts install failed — TTS will use cloud providers instead" + $(PYTHON) -m pip install piper-tts || echo " [skip] piper-tts install failed — TTS will use cloud providers instead" @echo "" @echo "==> Installing HyperFrames runtime (cache-warm via npx)..." @echo " Pulls the 'hyperframes' npm package into the local npx cache so the" @echo " first render doesn't pay a 30-60s cold-fetch penalty. ~20MB of disk." @npx --yes hyperframes --version >/dev/null 2>&1 && echo " HyperFrames CLI cached (npx)" || echo " [skip] HyperFrames cache-warm failed — offline or npm unavailable; first render will fetch on demand" - @python -c "from tools.video.hyperframes_compose import HyperFramesCompose; HyperFramesCompose._npm_resolve_cache=None; c=HyperFramesCompose()._runtime_check(); print(f' HyperFrames runtime_available={c[\"runtime_available\"]}, npm={c.get(\"npm_package_version\") or c.get(\"npm_resolve_error\")}'); [print(f' note: {r}') for r in c['reasons']]" || echo " [skip] HyperFrames check failed — runtime can be set up later" + @$(PYTHON) -c "from tools.video.hyperframes_compose import HyperFramesCompose; HyperFramesCompose._npm_resolve_cache=None; c=HyperFramesCompose()._runtime_check(); print(f' HyperFrames runtime_available={c[\"runtime_available\"]}, npm={c.get(\"npm_package_version\") or c.get(\"npm_resolve_error\")}'); [print(f' note: {r}') for r in c['reasons']]" || echo " [skip] HyperFrames check failed — runtime can be set up later" @echo "" - python -c "import shutil, os; e=os.path.exists('.env'); shutil.copy('.env.example','.env') if not e else None; print('==> Created .env from .env.example — add your API keys there.' if not e else '==> .env already exists — skipping.')" + $(PYTHON) -c "import shutil, os; e=os.path.exists('.env'); shutil.copy('.env.example','.env') if not e else None; print('==> Created .env from .env.example — add your API keys there.' if not e else '==> .env already exists — skipping.')" @echo "" @echo "Done! Open this project in your AI coding assistant and start creating." @echo " Optional: add API keys to .env to unlock cloud providers." @@ -29,31 +31,31 @@ setup: # ---- Individual installs ---- install: - pip install -r requirements.txt + $(PYTHON) -m pip install -r requirements.txt install-dev: - pip install -r requirements-dev.txt + $(PYTHON) -m pip install -r requirements-dev.txt install-gpu: - pip install -r requirements-gpu.txt - pip install diffusers transformers accelerate + $(PYTHON) -m pip install -r requirements-gpu.txt + $(PYTHON) -m pip install diffusers transformers accelerate # ---- Testing ---- test: - python -m pytest tests/ -v + $(PYTHON) -m pytest tests/ -v test-contracts: - python -m pytest tests/contracts/ -v + $(PYTHON) -m pytest tests/contracts/ -v # ---- Utilities ---- preflight: - python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.provider_menu(), indent=2))" + $(PYTHON) -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.provider_menu(), indent=2))" hyperframes-doctor: @echo "==> Probing HyperFrames runtime (node/ffmpeg/npx + hyperframes doctor)..." - python -c "from tools.video.hyperframes_compose import HyperFramesCompose; r=HyperFramesCompose().execute({'operation':'doctor'}); import json; print(json.dumps(r.data, indent=2)); print('OK' if r.success else f'FAIL: {r.error}')" + $(PYTHON) -c "from tools.video.hyperframes_compose import HyperFramesCompose; r=HyperFramesCompose().execute({'operation':'doctor'}); import json; print(json.dumps(r.data, indent=2)); print('OK' if r.success else f'FAIL: {r.error}')" hyperframes-warm: @echo "==> Refreshing the HyperFrames npx cache to latest..." @@ -65,16 +67,16 @@ demo: @echo "==> Rendering zero-key demo videos (no API keys needed)..." @echo " These use only Remotion components — animated charts, text, data viz." @echo "" - python render_demo.py + $(PYTHON) render_demo.py demo-list: - @python render_demo.py --list + @$(PYTHON) render_demo.py --list lint: - python -m py_compile tools/base_tool.py - python -m py_compile tools/tool_registry.py - python -m py_compile tools/cost_tracker.py - python -m py_compile tools/composition_validator.py + $(PYTHON) -m py_compile tools/base_tool.py + $(PYTHON) -m py_compile tools/tool_registry.py + $(PYTHON) -m py_compile tools/cost_tracker.py + $(PYTHON) -m py_compile tools/analysis/composition_validator.py clean: - python -c "import pathlib, shutil; [shutil.rmtree(p) for p in pathlib.Path('.').rglob('__pycache__')]; [p.unlink() for p in pathlib.Path('.').rglob('*.pyc')]" + $(PYTHON) -c "import pathlib, shutil; [shutil.rmtree(p) for p in pathlib.Path('.').rglob('__pycache__')]; [p.unlink() for p in pathlib.Path('.').rglob('*.pyc')]"