From 1814d5e1c0362bfd0dd16c28f341a8ce94a1a4f4 Mon Sep 17 00:00:00 2001 From: Shepard2154 Date: Sat, 30 May 2026 22:29:22 +0300 Subject: [PATCH 1/2] feat: add ci config --- .github/workflows/ci.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..c6f7c3f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,28 @@ +name: CI + +on: + push: + branches: + - master + pull_request: + +jobs: + check-and-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: pip + cache-dependency-path: pyproject.toml + + - name: Install package with dev extras + run: pip install -e ".[dev]" + + - name: Lint, format check, and typecheck + run: poe check + + - name: Unit tests + run: poe test From 5661c62e3f2daa486edbea00cc60dbc0b5156a7d Mon Sep 17 00:00:00 2001 From: Shepard2154 Date: Sat, 30 May 2026 22:36:16 +0300 Subject: [PATCH 2/2] fix: mypy warnings --- .../core/retrieval/poisoning/adapters/chroma.py | 7 ++++--- vexrag/usecases/config_io.py | 15 +++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/vexrag/core/retrieval/poisoning/adapters/chroma.py b/vexrag/core/retrieval/poisoning/adapters/chroma.py index fb5c12b..0edd6a0 100644 --- a/vexrag/core/retrieval/poisoning/adapters/chroma.py +++ b/vexrag/core/retrieval/poisoning/adapters/chroma.py @@ -1,7 +1,7 @@ import uuid from collections.abc import Mapping, Sequence from pathlib import Path -from typing import Any +from typing import Any, cast from vexrag.core.llm.contracts import EmbeddingClient @@ -90,11 +90,12 @@ def add_texts( for pid in ids: self._owned_ids.add(pid) try: + # Chroma Collection.add stubs disagree with our embed/metadata payloads. self._collection.add( ids=ids, - embeddings=vectors, # type: ignore[arg-type] # chromadb stubs vs list[list[float]] + embeddings=cast(Any, vectors), documents=stripped, - metadatas=metadatas, # type: ignore[arg-type] # chromadb Metadata typing + metadatas=cast(Any, metadatas), ) except Exception as exc: for pid in ids: diff --git a/vexrag/usecases/config_io.py b/vexrag/usecases/config_io.py index 545df0a..d7534e2 100644 --- a/vexrag/usecases/config_io.py +++ b/vexrag/usecases/config_io.py @@ -1,6 +1,6 @@ from collections.abc import Mapping from pathlib import Path -from typing import Any, cast +from typing import Any from vexrag.usecases.errors import UseCaseConfigError @@ -39,14 +39,13 @@ def dump_yaml(content: Mapping[str, Any]) -> str: import yaml except ImportError as exc: raise UseCaseConfigError("PyYAML is required to write YAML files") from exc - return cast( - str, - yaml.safe_dump( - content, - allow_unicode=True, - sort_keys=False, - ), + dumped = yaml.safe_dump( + content, + allow_unicode=True, + sort_keys=False, ) + assert isinstance(dumped, str) + return dumped def write_yaml(path: Path, content: Mapping[str, Any]) -> None: