chore: add pre-commit setup instructions
This commit is contained in:
parent
1a620697b1
commit
964537f885
2 changed files with 32 additions and 1 deletions
|
|
@ -51,7 +51,36 @@ cd hindsight-api
|
||||||
uv run pytest tests/
|
uv run pytest tests/
|
||||||
```
|
```
|
||||||
|
|
||||||
### Code style
|
### Code Style
|
||||||
|
|
||||||
|
We use [Ruff](https://docs.astral.sh/ruff/) for Python linting and formatting, and ESLint/Prettier for TypeScript.
|
||||||
|
|
||||||
|
#### Setting up git hooks (recommended)
|
||||||
|
|
||||||
|
Set up git hooks to automatically lint and format code before each commit:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/setup-hooks.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
This configures git to use the hooks in `.githooks/`, which run all scripts in `scripts/hooks/` on commit. The lint hook runs in parallel:
|
||||||
|
- **Python**: `ruff check --fix`, `ruff format`, `ty check`
|
||||||
|
- **TypeScript**: `eslint --fix`, `prettier`
|
||||||
|
|
||||||
|
#### Manual linting and formatting
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run all lints (same as pre-commit)
|
||||||
|
./scripts/hooks/lint.sh
|
||||||
|
|
||||||
|
# Or run individually for Python:
|
||||||
|
cd hindsight-api
|
||||||
|
uv run ruff check --fix . # Lint and auto-fix
|
||||||
|
uv run ruff format . # Format code
|
||||||
|
uv run ty check hindsight_api # Type check
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Style guidelines
|
||||||
|
|
||||||
- Use Python type hints
|
- Use Python type hints
|
||||||
- Follow existing code patterns
|
- Follow existing code patterns
|
||||||
|
|
|
||||||
|
|
@ -300,6 +300,8 @@ class LLMProvider:
|
||||||
schema_msg + "\n\n" + call_params["messages"][0]["content"]
|
schema_msg + "\n\n" + call_params["messages"][0]["content"]
|
||||||
)
|
)
|
||||||
if self.provider not in ("lmstudio", "ollama"):
|
if self.provider not in ("lmstudio", "ollama"):
|
||||||
|
# LM Studio and Ollama don't support json_object response format reliably
|
||||||
|
# We rely on the schema in the system message instead
|
||||||
call_params["response_format"] = {"type": "json_object"}
|
call_params["response_format"] = {"type": "json_object"}
|
||||||
|
|
||||||
logger.debug(f"Sending request to {self.provider}/{self.model} (timeout={self.timeout})")
|
logger.debug(f"Sending request to {self.provider}/{self.model} (timeout={self.timeout})")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue