Merge remote-tracking branch 'origin/main' into refine

This commit is contained in:
2025-08-10 20:07:16 -04:00
8 changed files with 0 additions and 4696 deletions

View File

@@ -1,67 +0,0 @@
# LangGraph Async Fixes Summary
## Problem
LangGraph dev server was detecting blocking calls in the async ASGI context, specifically:
- `os.getcwd()` in config loading
- `dotenv_values()` file reads
- Other synchronous I/O operations
## Solution Implemented
### 1. Environment Variable Caching
- Added module-level caching of environment variables to avoid repeated `os.getenv()` calls
- Cache is loaded once at module import time
- Replaced all `os.getenv()` calls with `_ENV_CACHE.get()`
### 2. Config Loading Improvements
- Fixed `Path.cwd()` blocking call by using fixed base path `/app`
- Removed redundant `dotenv_values()` call in `load_config()`
- Enhanced `load_config_async()` to use `asyncio.to_thread()` for thread-safe execution
### 3. Async Factory Functions
Created async wrapper functions for all LangGraph factory functions:
- `buddy_agent_factory_async`
- `graph_factory_async`
- `planner_graph_factory_async`
- `research_graph_factory_async`
- `catalog_factory_async`
- `paperless_graph_factory_async`
- `url_to_r2r_graph_factory_async`
- `error_handling_graph_factory_async`
- `analysis_graph_factory_async`
- `scraping_graph_factory_async`
### 4. Configuration Updates
Updated `langgraph.json` to use all async factory functions
## Files Modified
1. `/app/src/biz_bud/core/config/loader.py`
2. `/app/src/biz_bud/agents/buddy_agent.py`
3. `/app/src/biz_bud/graphs/graph.py`
4. `/app/src/biz_bud/graphs/planner.py`
5. `/app/src/biz_bud/graphs/research/graph.py`
6. `/app/src/biz_bud/graphs/catalog/graph.py`
7. `/app/src/biz_bud/graphs/paperless/graph.py`
8. `/app/src/biz_bud/graphs/rag/graph.py`
9. `/app/src/biz_bud/graphs/error_handling.py`
10. `/app/src/biz_bud/graphs/analysis/graph.py`
11. `/app/src/biz_bud/graphs/scraping/graph.py`
12. `/app/langgraph.json`
13. `/app/src/biz_bud/webapp.py` (Fixed os.getcwd() in app_info and list_graphs endpoints)
## Quick Workaround
If you need to run without these changes:
```bash
langgraph dev --allow-blocking
# OR
export BG_JOB_ISOLATED_LOOPS=true
langgraph dev
```
## Testing
To test the changes:
```bash
langgraph dev
```
The server should now start without blocking call errors.

View File

@@ -1,50 +0,0 @@
import os
from pathlib import Path
# Get all source files in tools package
src_files = []
for root, dirs, files in os.walk('src/biz_bud/tools'):
for file in files:
if file.endswith('.py') and file != '__init__.py':
src_files.append(os.path.join(root, file))
# Get all test files
test_files = []
for root, dirs, files in os.walk('tests/unit_tests/tools'):
for file in files:
if file.startswith('test_') and file.endswith('.py'):
test_files.append(os.path.join(root, file))
print('=== SOURCE FILES WITHOUT CORRESPONDING TESTS ===')
missing_tests = []
for src_file in sorted(src_files):
# Convert src path to expected test path
rel_path = src_file.replace('src/biz_bud/tools/', '')
base_name = Path(src_file).stem
# Check various possible test file locations
found = False
test_patterns = [
f'test_{base_name}.py',
f'{base_name}_test.py',
]
for test_file in test_files:
for pattern in test_patterns:
if pattern in test_file:
found = True
break
if found:
break
if not found:
missing_tests.append(src_file)
for missing in sorted(missing_tests):
print(missing)
print(f'\nTotal missing test files: {len(missing_tests)}')
print('\n=== EXISTING TEST FILES ===')
for test_file in sorted(test_files):
print(test_file)

File diff suppressed because it is too large Load Diff

View File

@@ -1,901 +0,0 @@
Run echo "🔍 Running pyrefly type checking (not in pre-commit)..."
🔍 Running pyrefly type checking (not in pre-commit)...
ERROR Could not find name `FirecrawlApp` [unknown-name]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:42:16
|
42 | async with FirecrawlApp() as app:
| ^^^^^^^^^^^^
|
ERROR Could not find name `FirecrawlOptions` [unknown-name]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:50:18
|
50 | url, FirecrawlOptions(formats=["markdown", "links"], only_main_content=True)
| ^^^^^^^^^^^^^^^^
|
ERROR Could not find name `CrawlOptions` [unknown-name]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:71:21
|
71 | options=CrawlOptions(
| ^^^^^^^^^^^^
|
ERROR Could not find name `FirecrawlOptions` [unknown-name]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:74:32
|
74 | scrape_options=FirecrawlOptions(formats=["markdown"], only_main_content=True),
| ^^^^^^^^^^^^^^^^
|
ERROR Could not find name `CrawlJob` [unknown-name]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:79:34
|
79 | if isinstance(crawl_job, CrawlJob):
| ^^^^^^^^
|
ERROR Could not find name `CrawlJob` [unknown-name]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:127:30
|
127 | def status_callback(job: CrawlJob) -> None:
| ^^^^^^^^
|
ERROR Could not find name `FirecrawlApp` [unknown-name]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:151:16
|
151 | async with FirecrawlApp() as app:
| ^^^^^^^^^^^^
|
ERROR Could not find name `CrawlOptions` [unknown-name]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:156:19
|
156 | options = CrawlOptions(
| ^^^^^^^^^^^^
|
ERROR Could not find name `FirecrawlOptions` [unknown-name]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:159:28
|
159 | scrape_options=FirecrawlOptions(
| ^^^^^^^^^^^^^^^^
|
ERROR Could not find name `CrawlJob` [unknown-name]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:182:40
|
182 | if isinstance(initial_job, CrawlJob) and initial_job.job_id:
| ^^^^^^^^
|
ERROR Could not import `FirecrawlApp` from `biz_bud.tools.clients.firecrawl` [missing-module-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:256:49
|
256 | from biz_bud.tools.clients.firecrawl import FirecrawlApp, FirecrawlOptions
| ^^^^^^^^^^^^
|
ERROR Could not import `FirecrawlOptions` from `biz_bud.tools.clients.firecrawl` [missing-module-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:256:63
|
256 | from biz_bud.tools.clients.firecrawl import FirecrawlApp, FirecrawlOptions
| ^^^^^^^^^^^^^^^^
|
ERROR Object of class `dict` has no attribute `data` [missing-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:301:17
|
301 | and r.data
| ^^^^^^
|
ERROR Object of class `list` has no attribute `data` [missing-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/firecrawl_monitoring_example.py:301:17
|
301 | and r.data
| ^^^^^^
|
ERROR Object of class `bool` has no attribute `get` [missing-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:56:24
|
56 | if processing_result.get("skipped"):
| ^^^^^^^^^^^^^^^^^^^^^
|
ERROR Object of class `str` has no attribute `get` [missing-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:56:24
|
56 | if processing_result.get("skipped"):
| ^^^^^^^^^^^^^^^^^^^^^
|
ERROR Object of class `bool` has no attribute `get` [missing-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:57:45
|
57 | print(f"\nSkipped: {processing_result.get('reason')}")
| ^^^^^^^^^^^^^^^^^^^^^
|
ERROR Object of class `str` has no attribute `get` [missing-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:57:45
|
57 | print(f"\nSkipped: {processing_result.get('reason')}")
| ^^^^^^^^^^^^^^^^^^^^^
|
ERROR Object of class `bool` has no attribute `get` [missing-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:60:28
|
60 | if processing_result.get("scraped_content"):
| ^^^^^^^^^^^^^^^^^^^^^
|
ERROR Object of class `str` has no attribute `get` [missing-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:60:28
|
60 | if processing_result.get("scraped_content"):
| ^^^^^^^^^^^^^^^^^^^^^
|
ERROR Can't apply arguments to non-class, got Literal[True] [bad-specialization]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:61:57
|
61 | ... print(f"Pages scraped: {len(processing_result['scraped_content'])}")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
ERROR Cannot index into `str` [no-matching-overload]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:61:57
|
61 | ... print(f"Pages scraped: {len(processing_result['scraped_content'])}")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
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 Object of class `bool` has no attribute `get` [missing-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:62:28
|
62 | if processing_result.get("r2r_dataset_id"):
| ^^^^^^^^^^^^^^^^^^^^^
|
ERROR Object of class `str` has no attribute `get` [missing-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:62:28
|
62 | if processing_result.get("r2r_dataset_id"):
| ^^^^^^^^^^^^^^^^^^^^^
|
ERROR Can't apply arguments to non-class, got Literal[True] [bad-specialization]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:63:51
|
63 | ... print(f"R2R dataset: {processing_result['r2r_dataset_id']}")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
ERROR Cannot index into `str` [no-matching-overload]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:63:51
|
63 | ... print(f"R2R dataset: {processing_result['r2r_dataset_id']}")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
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 Could not import `ExtractOptions` from `biz_bud.tools.clients.firecrawl` [missing-module-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:72:9
|
72 | ExtractOptions,
| ^^^^^^^^^^^^^^
|
ERROR Could not import `FirecrawlApp` from `biz_bud.tools.clients.firecrawl` [missing-module-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:73:9
|
73 | FirecrawlApp,
| ^^^^^^^^^^^^
|
ERROR Could not import `MapOptions` from `biz_bud.tools.clients.firecrawl` [missing-module-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:74:9
|
74 | MapOptions,
| ^^^^^^^^^^
|
ERROR Could not import `SearchOptions` from `biz_bud.tools.clients.firecrawl` [missing-module-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_rag_agent_firecrawl.py:75:9
|
75 | SearchOptions,
| ^^^^^^^^^^^^^
|
ERROR Could not import `CrawlJob` from `biz_bud.tools.clients.firecrawl` [missing-module-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_selfhosted_firecrawl_rag.py:14:45
|
14 | from biz_bud.tools.clients.firecrawl import CrawlJob, CrawlOptions, FirecrawlApp, FirecrawlOptions
| ^^^^^^^^
|
ERROR Could not import `CrawlOptions` from `biz_bud.tools.clients.firecrawl` [missing-module-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_selfhosted_firecrawl_rag.py:14:55
|
14 | from biz_bud.tools.clients.firecrawl import CrawlJob, CrawlOptions, FirecrawlApp, FirecrawlOptions
| ^^^^^^^^^^^^
|
ERROR Could not import `FirecrawlApp` from `biz_bud.tools.clients.firecrawl` [missing-module-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_selfhosted_firecrawl_rag.py:14:69
|
14 | from biz_bud.tools.clients.firecrawl import CrawlJob, CrawlOptions, FirecrawlApp, FirecrawlOptions
| ^^^^^^^^^^^^
|
ERROR Could not import `FirecrawlOptions` from `biz_bud.tools.clients.firecrawl` [missing-module-attribute]
--> /home/runner/work/biz-bud/biz-bud/examples/test_selfhosted_firecrawl_rag.py:14:83
|
14 | from biz_bud.tools.clients.firecrawl import CrawlJob, CrawlOptions, FirecrawlApp, FirecrawlOptions
| ^^^^^^^^^^^^^^^^
|
ERROR `in` is not supported between `Literal['biz_bud.tools.clients']` and `None` [unsupported-operand]
--> /home/runner/work/biz-bud/biz-bud/scripts/checks/audit_core_dependencies.py:134:20
|
134 | if "biz_bud.tools.clients" in node.module or \
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
ERROR `in` is not supported between `Literal['biz_bud.services']` and `None` [unsupported-operand]
--> /home/runner/work/biz-bud/biz-bud/scripts/checks/audit_core_dependencies.py:135:20
|
135 | "biz_bud.services" in node.module and "factory" not in node.module:
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
ERROR `not in` is not supported between `Literal['factory']` and `None` [unsupported-operand]
--> /home/runner/work/biz-bud/biz-bud/scripts/checks/audit_core_dependencies.py:135:58
|
135 | "biz_bud.services" in node.module and "factory" not in node.module:
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
ERROR Could not find import of `biz_bud.validation` [import-error]
--> /home/runner/work/biz-bud/biz-bud/scripts/demo_validation_system.py:21:1
|
21 | from biz_bud.validation import ValidationRunner # noqa: E402
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `biz_bud.validation.agent_validators` [import-error]
--> /home/runner/work/biz-bud/biz-bud/scripts/demo_validation_system.py:22:1
|
22 | / from biz_bud.validation.agent_validators import ( # noqa: E402
23 | | BuddyAgentValidator,
24 | | CapabilityResolutionValidator,
25 | | ToolFactoryValidator,
26 | | )
| |_^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `biz_bud.validation.base` [import-error]
--> /home/runner/work/biz-bud/biz-bud/scripts/demo_validation_system.py:27:1
|
27 | from biz_bud.validation.base import BaseValidator # noqa: E402
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `biz_bud.validation.deployment_validators` [import-error]
--> /home/runner/work/biz-bud/biz-bud/scripts/demo_validation_system.py:28:1
|
28 | / from biz_bud.validation.deployment_validators import ( # noqa: E402
29 | | PerformanceValidator,
30 | | StateManagementValidator,
31 | | )
| |_^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `biz_bud.validation.registry_validators` [import-error]
--> /home/runner/work/biz-bud/biz-bud/scripts/demo_validation_system.py:32:1
|
32 | / from biz_bud.validation.registry_validators import ( # noqa: E402
33 | | CapabilityConsistencyValidator,
34 | | ComponentDiscoveryValidator,
35 | | RegistryIntegrityValidator,
36 | | )
| |_^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.assertions.custom_assertions` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/conftest.py:31:1
|
31 | from tests.helpers.assertions.custom_assertions import * # noqa: F401, F403, E402
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/conftest.py:32:1
|
32 | from tests.helpers.factories.state_factories import * # noqa: F401, F403, E402
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.fixtures.config_fixtures` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/conftest.py:33:1
|
33 | from tests.helpers.fixtures.config_fixtures import * # noqa: F401, F403, E402
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.fixtures.factory_fixtures` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/conftest.py:34:1
|
34 | from tests.helpers.fixtures.factory_fixtures import * # noqa: F401, F403, E402
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.fixtures.mock_fixtures` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/conftest.py:35:1
|
35 | from tests.helpers.fixtures.mock_fixtures import * # noqa: F401, F403, E402
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.fixtures.state_fixtures` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/conftest.py:36:1
|
36 | from tests.helpers.fixtures.state_fixtures import * # noqa: F401, F403, E402
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/conftest.py:37:1
|
37 | from tests.helpers.mocks.mock_builders import * # noqa: F401, F403, E402
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/e2e/test_analysis_workflow_e2e.py:11:1
|
11 | from tests.helpers.mocks.mock_builders import MockLLMBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.assertions.custom_assertions` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/e2e/test_catalog_intel_caribbean_e2e.py:12:1
|
12 | from tests.helpers.assertions.custom_assertions import assert_state_has_no_errors
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/e2e/test_catalog_intel_caribbean_e2e.py:13:1
|
13 | from tests.helpers.mocks.mock_builders import MockLLMBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.assertions.custom_assertions` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/e2e/test_catalog_intel_workflow_e2e.py:12:1
|
12 | from tests.helpers.assertions.custom_assertions import assert_state_has_no_errors
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/e2e/test_catalog_intel_workflow_e2e.py:13:1
|
13 | from tests.helpers.mocks.mock_builders import MockLLMBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.assertions.custom_assertions` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/e2e/test_rag_workflow_e2e.py:12:1
|
12 | from tests.helpers.assertions.custom_assertions import assert_state_has_no_errors
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/e2e/test_rag_workflow_e2e.py:13:1
|
13 | from tests.helpers.mocks.mock_builders import MockLLMBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.assertions.custom_assertions` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/e2e/test_research_workflow_e2e.py:12:1
|
12 | / from tests.helpers.assertions.custom_assertions import (
13 | | assert_state_has_messages,
14 | | assert_state_has_no_errors,
15 | | )
| |_^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/e2e/test_research_workflow_e2e.py:16:1
|
16 | from tests.helpers.mocks.mock_builders import MockLLMBuilder, MockSearchToolBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.fixtures.config_fixtures` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/helpers/fixtures/__init__.py:3:1
|
3 | from tests.helpers.fixtures.config_fixtures import * # noqa: F403,F401
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.fixtures.factory_fixtures` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/helpers/fixtures/__init__.py:4:1
|
4 | from tests.helpers.fixtures.factory_fixtures import * # noqa: F403,F401
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.fixtures.mock_fixtures` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/helpers/fixtures/__init__.py:5:1
|
5 | from tests.helpers.fixtures.mock_fixtures import * # noqa: F403,F401
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.fixtures.state_fixtures` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/helpers/fixtures/__init__.py:6:1
|
6 | from tests.helpers.fixtures.state_fixtures import * # noqa: F403,F401
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/helpers/fixtures/state_fixtures.py:7:1
|
7 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/integration_tests/graphs/test_research_graph_wiring.py:10:1
|
10 | from tests.helpers.mocks.mock_builders import MockLLMBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/integration_tests/graphs/test_research_synthesis_flow.py:16:1
|
16 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/integration_tests/graphs/test_research_synthesis_flow.py:147:9
|
147 | from tests.helpers.mocks.mock_builders import MockLLMBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.fixtures.mock_fixtures` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/integration_tests/graphs/test_research_synthesis_flow.py:156:9
|
156 | from tests.helpers.fixtures.mock_fixtures import create_mock_service_factory
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/integration_tests/graphs/test_research_synthesis_flow.py:278:9
|
278 | from tests.helpers.mocks.mock_builders import MockLLMBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.fixtures.mock_fixtures` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/integration_tests/graphs/test_research_synthesis_flow.py:287:9
|
287 | from tests.helpers.fixtures.mock_fixtures import create_mock_service_factory
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/integration_tests/nodes/extraction/test_semantic_extraction_debug_integration.py:15:1
|
15 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/integration_tests/nodes/extraction/test_semantic_extraction_debug_integration.py:16:1
|
16 | from tests.helpers.mocks.mock_builders import MockLLMBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/integration_tests/services/test_llm_json_extraction_integration.py:10:1
|
10 | from tests.helpers.mocks.mock_builders import MockLLMBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.assertions.custom_assertions` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/meta/test_fixture_architecture.py:10:1
|
10 | / from tests.helpers.assertions.custom_assertions import (
11 | | assert_message_types,
12 | | assert_metadata_contains,
13 | | assert_search_results_valid,
14 | | assert_state_has_errors,
15 | | assert_state_has_messages,
| |_______________________________^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/meta/test_fixture_architecture.py:20:1
|
20 | / from tests.helpers.factories.state_factories import (
21 | | StateBuilder,
22 | | create_error_state,
23 | | create_menu_intelligence_state,
24 | | create_research_state,
25 | | )
| |_^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/meta/test_fixture_architecture.py:26:1
|
26 | / from tests.helpers.mocks.mock_builders import (
27 | | MockLLMBuilder,
28 | | MockRedisBuilder,
29 | | MockSearchToolBuilder,
30 | | )
| |_^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.assertions.custom_assertions` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/meta/test_simple_fixtures.py:7:1
|
7 | from tests.helpers.assertions.custom_assertions import assert_state_has_messages
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/meta/test_simple_fixtures.py:10:1
|
10 | from tests.helpers.factories.state_factories import StateBuilder, create_research_state
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mocks.mock_builders` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/graphs/test_research.py:17:1
|
17 | from tests.helpers.mocks.mock_builders import MockLLMBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/graphs/test_research.py:49:5
|
49 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.assertions.custom_assertions` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/graphs/test_research.py:131:9
|
131 | from tests.helpers.assertions.custom_assertions import assert_state_has_no_errors
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.assertions.custom_assertions` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/extraction/test_orchestrator.py:11:1
|
11 | from tests.helpers.assertions.custom_assertions import assert_state_has_no_errors
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_agent_nodes.py:18:1
|
18 | from tests.helpers.factories.state_factories import create_minimal_rag_agent_state
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_agent_nodes_r2r.py:14:1
|
14 | from tests.helpers.factories.state_factories import create_minimal_rag_agent_state
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_check_duplicate.py:34:9
|
34 | from tests.helpers.factories.state_factories import create_minimal_rag_agent_state
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_check_duplicate.py:163:13
|
163 | from tests.helpers.factories.state_factories import create_minimal_rag_agent_state
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_check_duplicate.py:201:9
|
201 | from tests.helpers.factories.state_factories import create_minimal_rag_agent_state
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:104:9
|
104 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:205:9
|
205 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:296:9
|
296 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:394:9
|
394 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:481:9
|
481 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:569:9
|
569 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:610:9
|
610 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:666:9
|
666 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:714:9
|
714 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:772:9
|
772 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:839:9
|
839 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:903:9
|
903 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/rag/test_upload_r2r.py:959:9
|
959 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.factories.state_factories` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/nodes/scraping/test_scrape_summary.py:10:1
|
10 | from tests.helpers.factories.state_factories import StateBuilder
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
ERROR Could not find import of `tests.helpers.mock_helpers` [import-error]
--> /home/runner/work/biz-bud/biz-bud/tests/unit_tests/services/test_redis_backend.py:11:1
|
11 | from tests.helpers.mock_helpers import create_mock_redis_client
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Looked in these locations (from config in `/home/runner/work/biz-bud/biz-bud/pyrefly.toml`):
Search path (from config file): ["/home/runner/work/biz-bud/biz-bud/src", "/home/runner/work/biz-bud/biz-bud/tests"]
Import root (inferred from project layout): "/home/runner/work/biz-bud/biz-bud/src"
Site package path queried from interpreter: ["/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12", "/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/lib-dynload", "/home/runner/work/biz-bud/biz-bud/.venv/lib/python3.12/site-packages", "/home/runner/work/biz-bud/biz-bud/src"]
INFO errors shown: 101, errors ignored: 72, modules: 675, transitive dependencies: 8,473, lines: 4,388,206, time: 33.00s, peak memory: physical 1.6 GiB

File diff suppressed because it is too large Load Diff

View File

@@ -1,95 +0,0 @@
#!/usr/bin/env python3
"""Full audit to count total violations."""
import ast
import os
class LoopConditionalFinder(ast.NodeVisitor):
def __init__(self):
self.violations = []
self.current_function = None
def visit_FunctionDef(self, node):
if node.name.startswith('test_'):
old_function = self.current_function
self.current_function = node.name
self.generic_visit(node)
self.current_function = old_function
else:
self.generic_visit(node)
def visit_AsyncFunctionDef(self, node):
if node.name.startswith('test_'):
old_function = self.current_function
self.current_function = node.name
self.generic_visit(node)
self.current_function = old_function
else:
self.generic_visit(node)
def visit_For(self, node):
if self.current_function:
self.violations.append(f"Line {node.lineno}: for loop in {self.current_function}")
self.generic_visit(node)
def visit_While(self, node):
if self.current_function:
self.violations.append(f"Line {node.lineno}: while loop in {self.current_function}")
self.generic_visit(node)
def visit_If(self, node):
if self.current_function:
self.violations.append(f"Line {node.lineno}: if statement in {self.current_function}")
self.generic_visit(node)
def find_violations_in_file(file_path):
try:
with open(file_path, 'r') as f:
content = f.read()
tree = ast.parse(content)
finder = LoopConditionalFinder()
finder.visit(tree)
return finder.violations
except Exception as e:
return [f"Error parsing file: {e}"]
# Find test files and check violations
test_dirs = ['tests/crash_tests', 'tests/e2e', 'tests/integration_tests', 'tests/unit_tests']
total_violations = 0
files_with_violations = 0
print("=== TEST POLICY AUDIT SUMMARY ===")
print()
for test_dir in test_dirs:
if os.path.exists(test_dir):
dir_violations = 0
dir_files = 0
for root, dirs, files in os.walk(test_dir):
for file in files:
if file.startswith('test_') and file.endswith('.py'):
file_path = os.path.join(root, file)
violations = find_violations_in_file(file_path)
if violations:
dir_violations += len(violations)
dir_files += 1
files_with_violations += 1
total_violations += dir_violations
print(f"{test_dir}: {dir_violations} violations in {dir_files} files")
print()
print(f"TOTAL: {total_violations} violations in {files_with_violations} files")
print()
# Show progress from initial 883 violations
original_violations = 883
if total_violations < original_violations:
fixed = original_violations - total_violations
percentage = (fixed / original_violations) * 100
print(f"PROGRESS: Fixed {fixed} violations ({percentage:.1f}% complete)")
else:
print(f"PROGRESS: Current count vs original 883 violations")

View File

@@ -1,74 +0,0 @@
#!/usr/bin/env python3
"""Quick audit to find remaining single-violation files."""
import ast
import os
class LoopConditionalFinder(ast.NodeVisitor):
def __init__(self):
self.violations = []
self.current_function = None
def visit_FunctionDef(self, node):
if node.name.startswith('test_'):
old_function = self.current_function
self.current_function = node.name
self.generic_visit(node)
self.current_function = old_function
else:
self.generic_visit(node)
def visit_AsyncFunctionDef(self, node):
if node.name.startswith('test_'):
old_function = self.current_function
self.current_function = node.name
self.generic_visit(node)
self.current_function = old_function
else:
self.generic_visit(node)
def visit_For(self, node):
if self.current_function:
self.violations.append(f"Line {node.lineno}: for loop in {self.current_function}")
self.generic_visit(node)
def visit_While(self, node):
if self.current_function:
self.violations.append(f"Line {node.lineno}: while loop in {self.current_function}")
self.generic_visit(node)
def visit_If(self, node):
if self.current_function:
self.violations.append(f"Line {node.lineno}: if statement in {self.current_function}")
self.generic_visit(node)
def find_violations_in_file(file_path):
try:
with open(file_path, 'r') as f:
content = f.read()
tree = ast.parse(content)
finder = LoopConditionalFinder()
finder.visit(tree)
return finder.violations
except Exception as e:
return [f"Error parsing file: {e}"]
# Find test files and check violations
test_dirs = ['tests/unit_tests']
single_violation_files = []
for test_dir in test_dirs:
if os.path.exists(test_dir):
for root, dirs, files in os.walk(test_dir):
for file in files:
if file.startswith('test_') and file.endswith('.py'):
file_path = os.path.join(root, file)
violations = find_violations_in_file(file_path)
if len(violations) == 1:
single_violation_files.append((file_path, violations[0]))
print("Remaining single-violation files:")
for file_path, violation in sorted(single_violation_files):
print(f"{file_path}: {violation}")

View File

@@ -1,225 +0,0 @@
Dockerfile.production
Of course. I have reviewed your codebase and identified several opportunities to refactor frequently used variables, literals, and code patterns into module-level constants and helper functions. This will improve maintainability, reduce errors from typos, and adhere to the DRY (Don't Repeat Yourself) principle.
Here is a file-by-file breakdown of my recommendations.
### General Recommendations: State Keys
Across many files, especially in the `graphs/` and `nodes/` directories, you frequently access dictionary keys on the `state` object using string literals. These are prime candidates for constants.
**Recommendation:** Define these common state keys in your global constants file `src/biz_bud/core/config/constants.py` to ensure consistency and prevent typos.
**In `src/biz_bud/core/config/constants.py`:**
```python
# --- State Keys ---
STATE_KEY_MESSAGES = "messages"
STATE_KEY_ERRORS = "errors"
STATE_KEY_CONFIG = "config"
STATE_KEY_QUERY = "query"
STATE_KEY_USER_QUERY = "user_query"
STATE_KEY_SEARCH_RESULTS = "search_results"
STATE_KEY_SYNTHESIS = "synthesis"
STATE_KEY_FINAL_RESPONSE = "final_response"
STATE_KEY_TOOL_CALLS = "tool_calls"
STATE_KEY_INPUT_URL = "input_url"
STATE_KEY_URL = "url"
STATE_KEY_SERVICE_FACTORY = "service_factory"
STATE_KEY_EXTRACTED_INFO = "extracted_info"
STATE_KEY_SOURCES = "sources"
```
You can then import and use these constants throughout your project, for example: `query = state.get(STATE_KEY_QUERY, "")`.
---
### File-Specific Recommendations
#### **File: `src/biz_bud/services/llm/client.py`**
This file contains logic for dynamically binding tools to an LLM based on inferred capabilities. The mapping from capability to tool can be extracted.
* **Constants:**
* The mapping from a normalized capability name (e.g., "search") to the tools that fulfill it is implicitly defined. This should be a constant.
**Recommendation:** Create a `CAPABILITY_TO_TOOLS_MAP` constant.
```python
# At module level in src/biz_bud/services/llm/client.py
CAPABILITY_TO_TOOLS_MAP: dict[str, list[Callable[..., Any]]] = {
"search": [web_search],
"scrape": [scrape_url],
"document_management": [
# Assuming these tools are imported
search_paperless_documents,
get_paperless_document,
update_paperless_document,
],
}
```
#### **File: `src/biz_bud/graphs/rag/nodes/check_duplicate.py` and `upload_r2r.py`**
Both of these files contain logic for interacting with an R2R (Ready-to-Retrieve) service. There is significant code duplication in handling API configuration, client instantiation, and direct API calls.
* **Helper Functions:**
* **R2R Configuration/Client Setup:** The logic to get the R2R base URL and credentials from the application config and environment variables is repeated.
* **Direct API Call:** The `_r2r_direct_api_call` function is present in both files.
* **Collection Management:** The logic to check if a collection exists and create it if it doesn't (`_ensure_collection_exists`) is duplicated.
**Recommendation:** Create a new utility module, for instance `src/biz_bud/tools/clients/r2r_utils.py`, to house these shared functions.
**In a new file `src/biz_bud/tools/clients/r2r_utils.py`:**
```python
import os
from typing import Any, cast
# ... other necessary imports
class R2RConfig(TypedDict):
base_url: str
api_key: str | None
email: str | None
password: str | None
def get_r2r_config(app_config: dict[str, Any]) -> R2RConfig:
"""Extracts R2R configuration from app config and environment variables."""
api_config = app_config.get("api_config", {})
r2r_base_url = api_config.get("r2r_base_url") or os.getenv(
"R2R_BASE_URL", "http://localhost:7272"
)
# ... logic to get api_key, email, password
return R2RConfig(base_url=r2r_base_url, ...)
async def r2r_direct_api_call(client: Any, method: str, endpoint: str, **kwargs: Any) -> dict[str, Any]:
"""Makes a direct HTTP request to the R2R API endpoint."""
# Implementation from your existing _r2r_direct_api_call
...
async def ensure_collection_exists(client: R2RClient, collection_name: str) -> str | None:
"""Checks if a collection exists by name and creates it if not, returning the ID."""
# Implementation from your existing _ensure_collection_exists
...
```
#### **File: `src/biz_bud/graphs/planner.py`**
This file contains logic for discovering available graphs and mapping steps to them.
* **Helper Functions:**
* The `discover_available_graphs` function is self-contained and well-defined but could be moved to a more general location if other agents or modules need to know about available graphs. For now, it is acceptable here.
* The logic for selecting a graph for a given step (`agent_selection_node`) involves creating a detailed LLM prompt. This prompt generation could be its own helper function to improve readability.
**Recommendation:** Extract the prompt generation logic into a helper.
```python
# In src/biz_bud/graphs/planner.py
def _create_graph_selection_prompt(step: QueryStep, graph_context: list[str]) -> str:
"""Creates the prompt for the LLM to select the best graph for a plan step."""
step_query = step["query"]
step_description = step["description"]
context_str = "\n".join(graph_context)
return f"""Given the following query step, select the most appropriate graph workflow:
Query: {step_query}
Description: {step_description}
Available Graphs:
{context_str}
Respond with the graph name and a brief reasoning.
Format:
GRAPH: [graph_name]
REASONING: [reasoning]"""
# agent_selection_node can then be simplified:
async def agent_selection_node(state: PlannerState) -> dict[str, Any]:
# ...
for step in steps:
# ...
selection_prompt = _create_graph_selection_prompt(step, graph_context)
# ...
```
#### **File: `src/biz_bud/agents/buddy_nodes_registry.py`**
This module handles complex logic for analyzing queries, selecting tools, and orchestrating execution.
* **Constants:**
* The introspection keywords (`"capabilities"`, `"tools"`, `"graphs"`) are used to detect if a query is about the agent's own abilities.
* Magic numbers like the `capability_refresh_interval` (300 seconds) should be constants.
**Recommendation:** Define these as module-level constants.
```python
# At module level in src/biz_bud/agents/buddy_nodes_registry.py
INTROSPECTION_KEYWORDS = {"capabilities", "tools", "graphs", "what can you do"}
CAPABILITY_REFRESH_INTERVAL_SECONDS = 300.0
```
* **Helper Functions:**
* The `query_analyzer_node` contains a large block of code dedicated to creating a summary of the agent's capabilities for introspection queries. This can be extracted.
**Recommendation:** Create a helper function to format the capability summary.
```python
# In src/biz_bud/agents/buddy_nodes_registry.py
def _format_introspection_response(capability_map: dict, capability_summary: dict) -> tuple[dict, list]:
"""Formats the agent's capabilities into a structured response for introspection queries."""
# ... logic to create extracted_info and sources from capability maps ...
return extracted_info, sources
# The query_analyzer_node becomes cleaner:
async def query_analyzer_node(state: BuddyState, config: RunnableConfig | None = None) -> dict[str, Any]:
# ...
if is_introspection:
# ...
extracted_info, sources = _format_introspection_response(capability_map, capability_summary)
# ...
return updater.build()
# ...
```
#### **File: `src/biz_bud/nodes/llm/call.py`**
The `call_model_node` function has complex error handling and response parsing logic that can be simplified.
* **Helper Functions:**
* **Error Categorization:** The logic to map a raw exception to a category, message, and retriable status is a clear, self-contained unit.
* **Error Response Generation:** Generating a user-facing error message and structured `ErrorInfo` dict based on the exception category is repeated.
**Recommendation:** Extract these two logical blocks into helper functions.
```python
# In src/biz_bud/nodes/llm/call.py
def _categorize_llm_exception(exception: Exception) -> tuple[str, str, bool]:
"""Categorizes an LLM exception and determines if it's retriable."""
# ... implementation from your existing logic ...
# Returns (category, user_message, is_retriable)
if isinstance(exception, (OpenAIAuthError, AnthropicAuthError)):
return "authentication", "Auth issue.", False
# ... other conditions
return "llm_error", "An error occurred.", True
async def _handle_llm_call_error(
state: dict, exception: Exception, context: dict
) -> dict[str, Any]:
"""Handles an exception during an LLM call, updating state with structured error info."""
category, user_message, _ = _categorize_llm_exception(exception)
error_info = create_error_info(
message=user_message,
category=category,
cause=exception,
context=context,
)
return await add_error_to_state(state.copy(), error_info)
# The call_model_node's exception block becomes:
# ...
# except Exception as e:
# llm_context = {"messages": safe_messages, ...}
# error_state = await _handle_llm_call_error(state, e, llm_context)
# return {**error_state, "final_response": error_state["errors"][-1]["message"]}
```
By implementing these changes, you will make your codebase more robust, readable, and easier to maintain.