mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-03 09:53:45 +00:00
fix(mypy): add fast and full mypy modes (#3975)
Some checks failed
SqlStore Integration Tests / test-postgres (3.12) (push) Failing after 0s
Integration Auth Tests / test-matrix (oauth2_token) (push) Failing after 2s
Integration Tests (Replay) / Integration Tests (, , , client=, ) (push) Failing after 3s
Test Llama Stack Build / build-single-provider (push) Failing after 3s
Test External Providers Installed via Module / test-external-providers-from-module (venv) (push) Has been skipped
Python Package Build Test / build (3.12) (push) Failing after 2s
Python Package Build Test / build (3.13) (push) Failing after 3s
Test Llama Stack Build / build-ubi9-container-distribution (push) Failing after 5s
SqlStore Integration Tests / test-postgres (3.13) (push) Failing after 1s
Pre-commit / pre-commit (push) Failing after 2s
Test Llama Stack Build / generate-matrix (push) Successful in 3s
Test Llama Stack Build / build-custom-container-distribution (push) Failing after 3s
Vector IO Integration Tests / test-matrix (push) Failing after 6s
Test llama stack list-deps / show-single-provider (push) Failing after 4s
Test llama stack list-deps / list-deps-from-config (push) Failing after 4s
Test llama stack list-deps / generate-matrix (push) Successful in 5s
Test External API and Providers / test-external (venv) (push) Failing after 4s
Unit Tests / unit-tests (3.12) (push) Failing after 4s
API Conformance Tests / check-schema-compatibility (push) Successful in 13s
Test Llama Stack Build / build (push) Failing after 4s
Test llama stack list-deps / list-deps (push) Failing after 5s
Unit Tests / unit-tests (3.13) (push) Failing after 8s
UI Tests / ui-tests (22) (push) Successful in 38s
Some checks failed
SqlStore Integration Tests / test-postgres (3.12) (push) Failing after 0s
Integration Auth Tests / test-matrix (oauth2_token) (push) Failing after 2s
Integration Tests (Replay) / Integration Tests (, , , client=, ) (push) Failing after 3s
Test Llama Stack Build / build-single-provider (push) Failing after 3s
Test External Providers Installed via Module / test-external-providers-from-module (venv) (push) Has been skipped
Python Package Build Test / build (3.12) (push) Failing after 2s
Python Package Build Test / build (3.13) (push) Failing after 3s
Test Llama Stack Build / build-ubi9-container-distribution (push) Failing after 5s
SqlStore Integration Tests / test-postgres (3.13) (push) Failing after 1s
Pre-commit / pre-commit (push) Failing after 2s
Test Llama Stack Build / generate-matrix (push) Successful in 3s
Test Llama Stack Build / build-custom-container-distribution (push) Failing after 3s
Vector IO Integration Tests / test-matrix (push) Failing after 6s
Test llama stack list-deps / show-single-provider (push) Failing after 4s
Test llama stack list-deps / list-deps-from-config (push) Failing after 4s
Test llama stack list-deps / generate-matrix (push) Successful in 5s
Test External API and Providers / test-external (venv) (push) Failing after 4s
Unit Tests / unit-tests (3.12) (push) Failing after 4s
API Conformance Tests / check-schema-compatibility (push) Successful in 13s
Test Llama Stack Build / build (push) Failing after 4s
Test llama stack list-deps / list-deps (push) Failing after 5s
Unit Tests / unit-tests (3.13) (push) Failing after 8s
UI Tests / ui-tests (22) (push) Successful in 38s
`mypy` became very slow for the common path. This can make local pre-commit runs very slow. Let's restore that. - restore fast mirrors-mypy hook for local runs - add optional mypy-full hook and docs so devs can match CI - run full mypy in CI with a hint when failures occur ### Test Plan - uv run pre-commit run mypy --all-files - uv run pre-commit run mypy-full --hook-stage manual --all-files - uv run --group dev --group type_checking mypy
This commit is contained in:
parent
e8ecc99524
commit
174ef162b3
4 changed files with 57 additions and 16 deletions
18
.github/workflows/pre-commit.yml
vendored
18
.github/workflows/pre-commit.yml
vendored
|
|
@ -43,6 +43,9 @@ jobs:
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
cache-dependency-path: 'src/llama_stack/ui/'
|
cache-dependency-path: 'src/llama_stack/ui/'
|
||||||
|
|
||||||
|
- name: Set up uv
|
||||||
|
uses: astral-sh/setup-uv@2ddd2b9cb38ad8efd50337e8ab201519a34c9f24 # v7.1.1
|
||||||
|
|
||||||
- name: Install npm dependencies
|
- name: Install npm dependencies
|
||||||
run: npm ci
|
run: npm ci
|
||||||
working-directory: src/llama_stack/ui
|
working-directory: src/llama_stack/ui
|
||||||
|
|
@ -52,7 +55,7 @@ jobs:
|
||||||
uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
|
uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
env:
|
env:
|
||||||
SKIP: no-commit-to-branch
|
SKIP: no-commit-to-branch,mypy
|
||||||
RUFF_OUTPUT_FORMAT: github
|
RUFF_OUTPUT_FORMAT: github
|
||||||
|
|
||||||
- name: Check pre-commit results
|
- name: Check pre-commit results
|
||||||
|
|
@ -109,3 +112,16 @@ jobs:
|
||||||
echo "$unstaged_files"
|
echo "$unstaged_files"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
- name: Sync dev + type_checking dependencies
|
||||||
|
run: uv sync --group dev --group type_checking
|
||||||
|
|
||||||
|
- name: Run mypy (full type_checking)
|
||||||
|
run: |
|
||||||
|
set +e
|
||||||
|
uv run --group dev --group type_checking mypy
|
||||||
|
status=$?
|
||||||
|
if [ $status -ne 0 ]; then
|
||||||
|
echo "::error::Full mypy failed. Reproduce locally with 'uv run pre-commit run mypy-full --hook-stage manual --all-files'."
|
||||||
|
fi
|
||||||
|
exit $status
|
||||||
|
|
|
||||||
|
|
@ -57,17 +57,27 @@ repos:
|
||||||
hooks:
|
hooks:
|
||||||
- id: uv-lock
|
- id: uv-lock
|
||||||
|
|
||||||
- repo: local
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||||
|
rev: v1.18.2
|
||||||
hooks:
|
hooks:
|
||||||
- id: mypy
|
- id: mypy
|
||||||
name: mypy
|
|
||||||
additional_dependencies:
|
additional_dependencies:
|
||||||
- uv==0.7.8
|
- uv==0.6.2
|
||||||
entry: uv run --group dev --group type_checking mypy
|
- pytest
|
||||||
language: python
|
- rich
|
||||||
types: [python]
|
- types-requests
|
||||||
|
- pydantic
|
||||||
|
- httpx
|
||||||
pass_filenames: false
|
pass_filenames: false
|
||||||
require_serial: true
|
|
||||||
|
- repo: local
|
||||||
|
hooks:
|
||||||
|
- id: mypy-full
|
||||||
|
name: mypy (full type_checking)
|
||||||
|
entry: uv run --group dev --group type_checking mypy
|
||||||
|
language: system
|
||||||
|
pass_filenames: false
|
||||||
|
stages: [manual]
|
||||||
|
|
||||||
# - repo: https://github.com/tcort/markdown-link-check
|
# - repo: https://github.com/tcort/markdown-link-check
|
||||||
# rev: v3.11.2
|
# rev: v3.11.2
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,18 @@ uv run pre-commit run --all-files -v
|
||||||
|
|
||||||
The `-v` (verbose) parameter is optional but often helpful for getting more information about any issues with that the pre-commit checks identify.
|
The `-v` (verbose) parameter is optional but often helpful for getting more information about any issues with that the pre-commit checks identify.
|
||||||
|
|
||||||
|
To run the expanded mypy configuration that CI enforces, use:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
uv run pre-commit run mypy-full --hook-stage manual --all-files
|
||||||
|
```
|
||||||
|
|
||||||
|
or invoke mypy directly with all optional dependencies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
uv run --group dev --group type_checking mypy
|
||||||
|
```
|
||||||
|
|
||||||
```{caution}
|
```{caution}
|
||||||
Before pushing your changes, make sure that the pre-commit hooks have passed successfully.
|
Before pushing your changes, make sure that the pre-commit hooks have passed successfully.
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -995,7 +995,9 @@ class ChatAgent(ShieldRunnerMixin):
|
||||||
except json.JSONDecodeError as e:
|
except json.JSONDecodeError as e:
|
||||||
raise ValueError(f"Failed to parse arguments for tool call: {tool_call.arguments}") from e
|
raise ValueError(f"Failed to parse arguments for tool call: {tool_call.arguments}") from e
|
||||||
|
|
||||||
result = await self.tool_runtime_api.invoke_tool(
|
result = cast(
|
||||||
|
ToolInvocationResult,
|
||||||
|
await self.tool_runtime_api.invoke_tool(
|
||||||
tool_name=tool_name_str,
|
tool_name=tool_name_str,
|
||||||
kwargs={
|
kwargs={
|
||||||
"session_id": session_id,
|
"session_id": session_id,
|
||||||
|
|
@ -1003,6 +1005,7 @@ class ChatAgent(ShieldRunnerMixin):
|
||||||
**args,
|
**args,
|
||||||
**self.tool_name_to_args.get(tool_name_str, {}),
|
**self.tool_name_to_args.get(tool_name_str, {}),
|
||||||
},
|
},
|
||||||
|
),
|
||||||
)
|
)
|
||||||
logger.debug(f"tool call {tool_name_str} completed with result: {result}")
|
logger.debug(f"tool call {tool_name_str} completed with result: {result}")
|
||||||
return result
|
return result
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue