ParallelPrint / AGENTS.md
CyGuy8's picture
Initial ParallelPrint import
5a79264
|
Raw
History Blame Contribute Delete
2.12 kB
# Project Instructions
## Python Environment
- Always use `uv` to run Python scripts and manage dependencies β€” never use `pip` or `python` directly
- Run scripts with `uv run python script.py` instead of `python script.py`
- Install packages with `uv add package-name` instead of `pip install`
- To run one-off commands: `uv run <command>`
- The project uses `uv` for virtual environment management; do not create venvs manually with `python -m venv`
## Common Commands
- `uv run python script.py` β€” run a script
- `uv add <package>` β€” add a dependency
- `uv sync` β€” install all dependencies from lockfile
- `uv run pytest` β€” run tests
## Dependencies
- After any `uv add` / `uv remove`, regenerate the Hugging Face requirements file or the deploy will not get the change β€” the Space installs from `requirements.txt`, not from `uv.lock`:
`uv export --format requirements.txt --no-hashes --no-dev --frozen --output-file requirements.txt`
- Commit `pyproject.toml`, `uv.lock`, and `requirements.txt` together when dependencies change.
## Rendering Constraints (Hugging Face)
- Hugging Face Spaces run headless with no GPU/WebGL and no guaranteed `ffmpeg`.
- For any server-side image or animation rendering, use CPU-only paths: Matplotlib's `Agg` backend, GIF via Pillow.
- Avoid `kaleido` / Plotly static-image export (3D is extremely slow headless) and ffmpeg-dependent MP4 output. Both were tried and proved unreliable here; the parallel-print GIF export uses Matplotlib `Agg` instead.
## Local Tooling
- `.claude/` (e.g. `launch.json` for the local preview server) is gitignored and not deployed.
## Hugging Face Deployment
- `.stl` files must be tracked by Git LFS (`*.stl filter=lfs` in `.gitattributes`)
- Verify Git LFS is available before push: `git lfs version`
- Confirm tracked LFS files: `git lfs ls-files`
- Standard push sequence: `git push origin main` then `git push hf-space main`
- If Hugging Face rejects binaries, re-check `.gitattributes` and LFS status before retrying
- `git lfs migrate` rewrites history; only use it intentionally and coordinate with collaborators first