Skip to content

Commands

Pyfaro wraps uv, Ruff, ty and pytest behind one command. Every command is a thin, predictable layer: Pyfaro picks the project, builds the arguments, runs the tool and forwards its exit status.

beta The commands below are implemented. Workspaces are planned and not available.

All commands

Command What it does
create Generate a packaged library, command-line or FastAPI project.
init Preview or apply uv-backed initialization of an existing or bare project.
sync Synchronize the project environment through uv.
add, remove Add or remove dependencies through uv, without syncing.
run Run a command, or a named task, in the project environment.
dev Run the development server or process with supervision.
python List, install or pin Python versions through uv.
tools Show resolved paths and versions of the external tools.
doctor Diagnose project configuration, environment and tool availability.
completions Print the tab-completion script for Bash, Zsh, Fish or PowerShell.
lint Lint project files with Ruff.
fmt Format project files with Ruff.
type Type-check project files with ty.
check Run format check, lint and type check, optionally applying safe fixes first.
test Run pytest in the project environment.
build Build a source distribution and a wheel through uv.

Project setup

  • create: start a new library, CLI or FastAPI app.
  • init: adopt an existing project.
  • sync: build the environment.
  • add and remove: manage dependencies.
  • run: run anything, or a named task, in the environment.
  • dev: run the development server.
  • python: manage interpreters.

How project selection works

Most commands find the nearest pyproject.toml in the current directory or its ancestors. Pass --project <PATH> to select an exact directory instead. init is the exception: it takes the directory to initialize as a positional path and never searches upward, and create writes a new directory.

Common flags

Flag Meaning
--uv <path> Choose the uv executable (default uv from PATH).
--offline Disable uv network access.
--locked, --frozen Strict lock handling on sync, run and dev. Mutually exclusive.

uv 0.9.26 or newer is required at runtime.