Files
biz-bud/errors.md
Travis Vasceannie 7a84d75d8e Refactor type safety checks and enhance error handling across various modules
- Update typing in error handling and validation nodes to improve type safety.
- Refactor cache decorators for async compatibility and cleanup functionality.
- Enhance URL processing and validation logic with improved type checks.
- Centralize error handling and recovery mechanisms in nodes.
- Simplify and standardize function signatures across multiple modules for consistency.
- Resolve linting issues and ensure compliance with type safety standards.
2025-09-28 13:45:52 -04:00

58 KiB

Typing Backlog (updated 2025-09-28)

Recently Resolved

  • src/biz_bud/core/caching/decorators.py: cache wrappers now cast async/sync callables and their args/kwargs before awaiting or unpacking, clearing Pyrefly diagnostics about non-awaitable object | None results.
  • src/biz_bud/core/errors/base.py: error-handling and retry decorators normalise ParamSpec usage by casting to concrete tuple[Any, ...] / dict[str, object] payloads, eliminating ParamSpec unpack errors and iterable complaints.
  • src/biz_bud/core/langgraph/state_immutability.py: pandas sentinels retyped with type[object] guards and ImmutableDict.popitem now raises an explicit unreachable assertion, satisfying Pyrefly.
  • src/biz_bud/core/validation/merge.py: cache merge helpers now cast the working JSONObject before using .get, keeping Pyrefly happy with numeric min/max and additive merges.
  • src/biz_bud/graphs/node_registry.py: registry builder casts incoming callables to the NodeCallableT TypeVar before storing, resolving OrderedDict variance complaints.
  • src/biz_bud/tools/capabilities/url_processing/init.py: enum status values funnel through literal helpers so TypedDict expectations match ProcessingStatus/ValidationStatus enums.

Next Checks

  • ☐ Run PYTHONPATH=src pyrefly check across the full repo to refresh the broader backlog (the raw log below predates the latest module fixes).
  • ☐ Triage the remaining RAG analyzer and unified state suite errors listed in the legacy log; many stem from untyped fixtures returning bool | dict.

Legacy Pyrefly Output

The following raw diagnostics (captured before the targeted fixes above) are retained for historical context and require re-validation after the next full type-check run.

292 | assert result["processed_content"]["pages"][0]["title"] == "Empty Document" | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Cannot index into bool [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:307:20 | 307 | assert len(result["processed_content"]["pages"]) == 12 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class bool has no attribute __getitem__ ERROR Cannot index into float [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:307:20 | 307 | assert len(result["processed_content"]["pages"]) == 12 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class float has no attribute __getitem__ ERROR Cannot index into int [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:307:20 | 307 | assert len(result["processed_content"]["pages"]) == 12 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class int has no attribute __getitem__ ERROR Cannot index into list[Unknown] [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:307:20 | 307 | assert len(result["processed_content"]["pages"]) == 12 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function list.__getitem__ Possible overloads: (i: SupportsIndex, /) -> Unknown [closest match] (s: slice[Any, Any, Any], /) -> list[Unknown] ERROR Cannot index into str [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:307:20 | 307 | assert len(result["processed_content"]["pages"]) == 12 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function str.__getitem__ Possible overloads: (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match] ERROR None is not subscriptable [unsupported-operation] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:307:20 | 307 | assert len(result["processed_content"]["pages"]) == 12 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Cannot index into bool [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:310:21 | 310 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class bool has no attribute __getitem__ ERROR Cannot index into float [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:310:21 | 310 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class float has no attribute __getitem__ ERROR Cannot index into int [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:310:21 | 310 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class int has no attribute __getitem__ ERROR Cannot index into list[Unknown] [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:310:21 | 310 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function list.__getitem__ Possible overloads: (i: SupportsIndex, /) -> Unknown [closest match] (s: slice[Any, Any, Any], /) -> list[Unknown] ERROR Cannot index into str [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:310:21 | 310 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function str.__getitem__ Possible overloads: (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match] ERROR None is not subscriptable [unsupported-operation] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:310:21 | 310 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Cannot index into bool [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:329:20 | 329 | assert len(result["processed_content"]["pages"]) == 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class bool has no attribute __getitem__ ERROR Cannot index into float [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:329:20 | 329 | assert len(result["processed_content"]["pages"]) == 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class float has no attribute __getitem__ ERROR Cannot index into int [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:329:20 | 329 | assert len(result["processed_content"]["pages"]) == 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class int has no attribute __getitem__ ERROR Cannot index into list[Unknown] [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:329:20 | 329 | assert len(result["processed_content"]["pages"]) == 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function list.__getitem__ Possible overloads: (i: SupportsIndex, /) -> Unknown [closest match] (s: slice[Any, Any, Any], /) -> list[Unknown] ERROR Cannot index into str [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:329:20 | 329 | assert len(result["processed_content"]["pages"]) == 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function str.__getitem__ Possible overloads: (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match] ERROR None is not subscriptable [unsupported-operation] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:329:20 | 329 | assert len(result["processed_content"]["pages"]) == 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Cannot index into bool [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:332:21 | 332 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class bool has no attribute __getitem__ ERROR Cannot index into float [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:332:21 | 332 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class float has no attribute __getitem__ ERROR Cannot index into int [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:332:21 | 332 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class int has no attribute __getitem__ ERROR Cannot index into list[Unknown] [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:332:21 | 332 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function list.__getitem__ Possible overloads: (i: SupportsIndex, /) -> Unknown [closest match] (s: slice[Any, Any, Any], /) -> list[Unknown] ERROR Cannot index into str [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:332:21 | 332 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function str.__getitem__ Possible overloads: (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match] ERROR None is not subscriptable [unsupported-operation] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:332:21 | 332 | for page in result["processed_content"]["pages"]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Cannot index into bool [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:354:16 | 354 | assert result["r2r_info"]["chunk_size"] == 1000 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class bool has no attribute __getitem__ ERROR Cannot index into float [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:354:16 | 354 | assert result["r2r_info"]["chunk_size"] == 1000 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class float has no attribute __getitem__ ERROR Cannot index into int [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:354:16 | 354 | assert result["r2r_info"]["chunk_size"] == 1000 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class int has no attribute __getitem__ ERROR Cannot index into list[Unknown] [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:354:16 | 354 | assert result["r2r_info"]["chunk_size"] == 1000 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function list.__getitem__ Possible overloads: (i: SupportsIndex, /) -> Unknown [closest match] (s: slice[Any, Any, Any], /) -> list[Unknown] ERROR Cannot index into str [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:354:16 | 354 | assert result["r2r_info"]["chunk_size"] == 1000 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function str.__getitem__ Possible overloads: (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match] ERROR None is not subscriptable [unsupported-operation] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:354:16 | 354 | assert result["r2r_info"]["chunk_size"] == 1000 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Cannot index into bool [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:355:16 | 355 | assert result["r2r_info"]["extract_entities"] is False | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class bool has no attribute __getitem__ ERROR Cannot index into float [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:355:16 | 355 | assert result["r2r_info"]["extract_entities"] is False | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class float has no attribute __getitem__ ERROR Cannot index into int [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:355:16 | 355 | assert result["r2r_info"]["extract_entities"] is False | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class int has no attribute __getitem__ ERROR Cannot index into list[Unknown] [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:355:16 | 355 | assert result["r2r_info"]["extract_entities"] is False | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function list.__getitem__ Possible overloads: (i: SupportsIndex, /) -> Unknown [closest match] (s: slice[Any, Any, Any], /) -> list[Unknown] ERROR Cannot index into str [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:355:16 | 355 | assert result["r2r_info"]["extract_entities"] is False | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function str.__getitem__ Possible overloads: (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match] ERROR None is not subscriptable [unsupported-operation] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:355:16 | 355 | assert result["r2r_info"]["extract_entities"] is False | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Cannot index into bool [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:358:16 | 358 | in result["r2r_info"]["rationale"] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class bool has no attribute __getitem__ ERROR Cannot index into float [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:358:16 | 358 | in result["r2r_info"]["rationale"] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class float has no attribute __getitem__ ERROR Cannot index into int [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:358:16 | 358 | in result["r2r_info"]["rationale"] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class int has no attribute __getitem__ ERROR Cannot index into list[Unknown] [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:358:16 | 358 | in result["r2r_info"]["rationale"] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function list.__getitem__ Possible overloads: (i: SupportsIndex, /) -> Unknown [closest match] (s: slice[Any, Any, Any], /) -> list[Unknown] ERROR Cannot index into str [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:358:16 | 358 | in result["r2r_info"]["rationale"] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function str.__getitem__ Possible overloads: (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match] ERROR None is not subscriptable [unsupported-operation] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:358:16 | 358 | in result["r2r_info"]["rationale"] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Cannot index into bool [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:360:20 | 360 | assert len(result["processed_content"]["pages"]) == 4 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class bool has no attribute __getitem__ ERROR Cannot index into float [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:360:20 | 360 | assert len(result["processed_content"]["pages"]) == 4 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class float has no attribute __getitem__ ERROR Cannot index into int [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:360:20 | 360 | assert len(result["processed_content"]["pages"]) == 4 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class int has no attribute __getitem__ ERROR Cannot index into list[Unknown] [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:360:20 | 360 | assert len(result["processed_content"]["pages"]) == 4 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function list.__getitem__ Possible overloads: (i: SupportsIndex, /) -> Unknown [closest match] (s: slice[Any, Any, Any], /) -> list[Unknown] ERROR Cannot index into str [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:360:20 | 360 | assert len(result["processed_content"]["pages"]) == 4 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | No matching overload found for function str.__getitem__ Possible overloads: (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match] ERROR None is not subscriptable [unsupported-operation] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_analyzer.py:360:20 | 360 | assert len(result["processed_content"]["pages"]) == 4 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_check_duplicate.py:36:9 | 36 | / from tests.helpers.factories.state_factories import ( 37 | | create_minimal_rag_agent_state, 38 | | ) | |^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_check_duplicate.py:171:13 | 171 | / from tests.helpers.factories.state_factories import ( 172 | | create_minimal_rag_agent_state, 173 | | ) | |^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_check_duplicate.py:212:9 | 212 | / from tests.helpers.factories.state_factories import ( 213 | | create_minimal_rag_agent_state, 214 | | ) | |_____^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Argument TypedDict[ResearchState] is not assignable to parameter state with type dict[str, Any] in function biz_bud.graphs.rag.nodes.rag_enhance.rag_enhance_node [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_enhance.py:161:37 | 161 | result = await rag_enhance_node(cast("ResearchState", state), config) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Argument TypedDict[ResearchState] is not assignable to parameter state with type dict[str, Any] in function biz_bud.graphs.rag.nodes.rag_enhance.rag_enhance_node [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_enhance.py:192:37 | 192 | result = await rag_enhance_node(state, config) | ^^^^^ | ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:106:9 | 106 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:208:9 | 208 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:307:9 | 307 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:406:9 | 406 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:498:9 | 498 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:589:9 | 589 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:631:9 | 631 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:690:9 | 690 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:743:9 | 743 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:806:9 | 806 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:884:9 | 884 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:953:9 | 953 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/rag/test_upload_r2r.py:1014:9 | 1014 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Could not find import of tests.helpers.factories.state_factories [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/scraping/test_scrape_summary.py:11:1 | 11 | from tests.helpers.factories.state_factories import StateBuilder | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:37:46 | 37 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, float | str]]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:37:47 | 37 | result = await prepare_search_results(state) | ^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_0 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:46:45 | 46 | source_0 = result["extracted_info"]["source_0"] | ^^^^^^^^^^ | ERROR TypedDict SourceDict does not have key key [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:56:37 | 56 | assert result["sources"][0]["key"] == "source_0" | ^^^^^ | ERROR TypedDict SourceDict does not have key provider [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:57:37 | 57 | assert result["sources"][0]["provider"] == "google" | ^^^^^^^^^^ | ERROR TypedDict SourceDict does not have key provider [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:58:37 | 58 | assert result["sources"][1]["provider"] == "bing" | ^^^^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:74:46 | 74 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, list[dict[str, float | str]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:74:47 | 74 | result = await prepare_search_results(state) | ^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_0 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:78:43 | 78 | source = result["extracted_info"]["source_0"] | ^^^^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:97:46 | 97 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, str]]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:97:47 | 97 | result = await prepare_search_results(state) | ^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_0 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:100:43 | 100 | source = result["extracted_info"]["source_0"] | ^^^^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:123:46 | 123 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, dict[str, str] | str]]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:123:47 | 123 | result = await prepare_search_results(state) | ^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_0 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:125:43 | 125 | source = result["extracted_info"]["source_0"] | ^^^^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:147:46 | 147 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, str]]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:147:47 | 147 | result = await prepare_search_results(state) | ^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_0 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:152:45 | 152 | source_0 = result["extracted_info"]["source_0"] | ^^^^^^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_1 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:157:45 | 157 | source_1 = result["extracted_info"]["source_1"] | ^^^^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:166:46 | 166 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[@_]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:166:47 | 166 | result = await prepare_search_results(state) | ^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:189:50 | 189 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, str] | str | None]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:189:51 | 189 | result = await prepare_search_results(state) | ^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:209:46 | 209 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, str]] | str]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:209:47 | 209 | result = await prepare_search_results(state) | ^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:225:46 | 225 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, str]]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:225:47 | 225 | result = await prepare_search_results(state) | ^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:235:46 | 235 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, str]]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:235:47 | 235 | result = await prepare_search_results(state) | ^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:250:46 | 250 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, str]] | str] | list[str] | str] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:250:47 | 250 | result = await prepare_search_results(state) | ^^^^^ | ERROR TypedDict ResearchState does not have key existing_field [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:253:23 | 253 | assert result["existing_field"] == "preserved" | ^^^^^^^^^^^^^^^^ | ERROR TypedDict ContextTypedDict does not have key other_context [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:255:34 | 255 | assert result["context"]["other_context"] == "preserved" | ^^^^^^^^^^^^^^^ | ERROR TypedDict ResearchState does not have key _preparation_complete [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:260:23 | 260 | assert result["_preparation_complete"] is True | ^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:280:46 | 280 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, str]]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:280:47 | 280 | result = await prepare_search_results(state) | ^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_0 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:282:45 | 282 | metadata = result["extracted_info"]["source_0"]["metadata"] | ^^^^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:308:46 | 308 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, str]]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:308:47 | 308 | result = await prepare_search_results(state) | ^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_0 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:310:46 | 310 | extracted = result["extracted_info"]["source_0"] | ^^^^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:351:46 | 351 | result = await prepare_search_results(state) | ^^^^^^^ | ERROR Argument dict[str, dict[str, list[dict[str, float | str] | dict[str, str | None] | dict[str, str]]]] is not assignable to parameter state with type TypedDict[ResearchState] in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:351:47 | 351 | result = await prepare_search_results(state) | ^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_0 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:353:41 | 353 | assert result["extracted_info"]["source_0"]["relevance"] == 0.95 | ^^^^^^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_1 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:354:41 | 354 | assert result["extracted_info"]["source_1"]["relevance"] == 0.85 | ^^^^^^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_2 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:355:41 | 355 | assert result["extracted_info"]["source_2"]["relevance"] == 1.0 # Default | ^^^^^^^^^^ | ERROR TypedDict ExtractedInfoDict does not have key source_3 [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:357:38 | 357 | result["extracted_info"]["source_3"]["relevance"] == 1.0 | ^^^^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:367:52 | 367 | result_state = await prepare_search_results(state_with_search_results) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:385:52 | 385 | result_state = await prepare_search_results(state) | ^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:417:52 | 417 | result_state = await prepare_search_results(state) | ^^^^^^^ | ERROR Missing argument config in function biz_bud.graphs.research.nodes.prepare.prepare_search_results [missing-argument] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:435:52 | 435 | result_state = await prepare_search_results(state_with_search_results) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR TypedDict ResearchState does not have key custom_field [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/nodes/synthesis/test_prepare.py:438:29 | 438 | assert result_state["custom_field"] == "should_be_preserved" | ^^^^^^^^^^^^^^ | ERROR Could not find import of tests.helpers.mock_helpers [import-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/services/test_redis_backend.py:17:1 | 17 | from tests.helpers.mock_helpers import create_mock_redis_client | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Looked in these locations (from config in /home/vasceannie/repos/biz-budz/pyrefly.toml): Search path (from config file): ["/home/vasceannie/repos/biz-budz/src", "/home/vasceannie/repos/biz-budz/tests"] Import root (inferred from project layout): "/home/vasceannie/repos/biz-budz/src" Site package path queried from interpreter: ["/usr/lib/python3.12", "/usr/lib/python3.12/lib-dynload", "/home/vasceannie/repos/biz-budz/.venv/lib/python3.12/site-packages", "/home/vasceannie/repos/biz-budz/src"] ERROR Cannot index into object [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_focused_states.py:381:16 | 381 | assert result[0]["title"] == "Result 1" | ^^^^^^^^^^^^^^^^^^ | Object of class object has no attribute __getitem__ ERROR Cannot index into object [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_focused_states.py:382:16 | 382 | assert result[1]["title"] == "Result 2" | ^^^^^^^^^^^^^^^^^^ | Object of class object has no attribute __getitem__ ERROR list[object] is not assignable to TypedDict key search_results with type list[TypedDict[SearchResultTypedDict]] [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_focused_states.py:454:35 | 454 | state["search_results"] = safe_list_add(state.get("search_results", []), [result1]) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR list[object] is not assignable to TypedDict key visited_urls with type list[str] [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_focused_states.py:457:33 | 457 | state["visited_urls"] = unique_add(state.get("visited_urls", []), [result1["url"]]) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ERROR list[object] is not assignable to TypedDict key validation_issues with type list[str] [typed-dict-key-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_focused_states.py:477:38 | 477 | state["validation_issues"] = safe_list_add( | _____________________________^ 478 | | state.get("validation_issues", []), 479 | | ["Content unclear", "Missing references"] 480 | | ) | |^ | ERROR < is not supported between Literal[25] and object [unsupported-operation] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_tools.py:331:16 | 331 | assert state["tool_invocation_count"] < state["config"]["max_tool_calls"] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Argument object is not assignable to parameter value with type int in function int.__lt__ ERROR Cannot index into object [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_unified_state.py:369:16 | 369 | assert state["config"]["test_key"] == "test_value" | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class object has no attribute __getitem__ ERROR Argument object is not assignable to parameter obj with type Sized in function len [bad-argument-type] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_unified_state.py:406:20 | 406 | assert len(state["messages"]) == 2 | ^^^^^^^^^^^^^^^^^ | ERROR Cannot index into object [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_unified_state.py:408:16 | 408 | assert state["messages"][0].content == "Hello" | ^^^^^^^^^^^^^^^^^^^^ | Object of class object has no attribute __getitem__ ERROR Cannot index into object [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_unified_state.py:409:16 | 409 | assert state["messages"][1].content == "Hi there!" | ^^^^^^^^^^^^^^^^^^^^ | Object of class object has no attribute __getitem__ ERROR Cannot index into object [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_unified_state.py:605:16 | 605 | assert state["errors"][0]["message"] == "Field validation failed" | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class object has no attribute __getitem__ ERROR Cannot index into object [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_unified_state.py:606:16 | 606 | assert state["errors"][1]["message"] == "API call failed" | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | Object of class object has no attribute __getitem__ ERROR Cannot index into object [index-error] --> /home/vasceannie/repos/biz-budz/tests/unit_tests/states/test_unified_state.py:641:16 | 641 | assert result[0]["message"] == "This is a duplicate error" | ^^^^^^^^^^^^^^^^^^^^ | Object of class object has no attribute __getitem__ INFO 1,204 errors (38 ignored) make: *** [Makefile:130: pyrefly] Error 1