Skip to content

Commit 58dd696

Browse files
committed
chore(core): use ty for typechecking
Signed-off-by: phernandez <paul@basicmachines.co>
1 parent abd4a5a commit 58dd696

File tree

88 files changed

+961
-551
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+961
-551
lines changed

justfile

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,17 @@ lint: fix
170170
fix:
171171
uv run ruff check --fix --unsafe-fixes src tests test-int
172172

173-
# Type check code (pyright)
173+
# Type check code (ty)
174174
typecheck:
175+
uv run ty check src tests test-int
176+
177+
# Type check code (pyright)
178+
typecheck-pyright:
175179
uv run pyright
176180

177181
# Type check code (ty)
178182
typecheck-ty:
179-
uv run ty check src/
183+
just typecheck
180184

181185
# Clean build artifacts and cache files
182186
clean:

src/basic_memory/api/v2/routers/prompt_router.py

Lines changed: 32 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"""
77

88
from datetime import datetime, timezone
9+
from typing import Any
910
from fastapi import APIRouter, HTTPException, status, Path
1011
from loguru import logger
1112

@@ -59,6 +60,7 @@ async def continue_conversation(
5960

6061
# Initialize search results
6162
search_results = []
63+
hierarchical_results_for_count = []
6264

6365
# Get data needed for template
6466
if request.topic:
@@ -91,7 +93,8 @@ async def continue_conversation(
9193
# Limit to a reasonable number of total results
9294
all_hierarchical_results = all_hierarchical_results[:10]
9395

94-
template_context = {
96+
hierarchical_results_for_count = all_hierarchical_results
97+
template_context: dict[str, Any] = {
9598
"topic": request.topic,
9699
"timeframe": request.timeframe,
97100
"hierarchical_results": all_hierarchical_results,
@@ -110,6 +113,7 @@ async def continue_conversation(
110113

111114
hierarchical_results = recent_context.results[:5] # Limit to top 5 recent items
112115

116+
hierarchical_results_for_count = hierarchical_results
113117
template_context = {
114118
"topic": f"Recent Activity from ({request.timeframe})",
115119
"timeframe": request.timeframe,
@@ -129,9 +133,6 @@ async def continue_conversation(
129133
relation_count = 0
130134
entity_count = 0
131135

132-
# Get the hierarchical results from the template context
133-
hierarchical_results_for_count = template_context.get("hierarchical_results", [])
134-
135136
# For topic-based search
136137
if request.topic:
137138
for item in hierarchical_results_for_count:
@@ -159,29 +160,24 @@ async def continue_conversation(
159160
elif related.type == "entity": # pragma: no cover
160161
entity_count += 1 # pragma: no cover
161162

162-
# Build metadata
163-
metadata = {
164-
"query": request.topic,
165-
"timeframe": request.timeframe,
166-
"search_count": len(search_results)
167-
if request.topic
168-
else 0, # Original search results count
169-
"context_count": len(hierarchical_results_for_count),
170-
"observation_count": observation_count,
171-
"relation_count": relation_count,
172-
"total_items": (
163+
prompt_metadata = PromptMetadata(
164+
query=request.topic,
165+
timeframe=request.timeframe,
166+
search_count=len(search_results) if request.topic else 0,
167+
context_count=len(hierarchical_results_for_count),
168+
observation_count=observation_count,
169+
relation_count=relation_count,
170+
total_items=(
173171
len(hierarchical_results_for_count)
174172
+ observation_count
175173
+ relation_count
176174
+ entity_count
177175
),
178-
"search_limit": request.search_items_limit,
179-
"context_depth": request.depth,
180-
"related_limit": request.related_items_limit,
181-
"generated_at": datetime.now(timezone.utc).isoformat(),
182-
}
183-
184-
prompt_metadata = PromptMetadata(**metadata)
176+
search_limit=request.search_items_limit,
177+
context_depth=request.depth,
178+
related_limit=request.related_items_limit,
179+
generated_at=datetime.now(timezone.utc).isoformat(),
180+
)
185181

186182
return PromptResponse(
187183
prompt=rendered_prompt, context=template_context, metadata=prompt_metadata
@@ -229,7 +225,7 @@ async def search_prompt(
229225
results = await search_service.search(query, limit=limit, offset=offset)
230226
search_results = await to_search_results(entity_service, results)
231227

232-
template_context = {
228+
template_context: dict[str, Any] = {
233229
"query": request.query,
234230
"timeframe": request.timeframe,
235231
"results": search_results,
@@ -241,22 +237,19 @@ async def search_prompt(
241237
# Render template
242238
rendered_prompt = await template_loader.render("prompts/search.hbs", template_context)
243239

244-
# Build metadata
245-
metadata = {
246-
"query": request.query,
247-
"timeframe": request.timeframe,
248-
"search_count": len(search_results),
249-
"context_count": len(search_results),
250-
"observation_count": 0, # Search results don't include observations
251-
"relation_count": 0, # Search results don't include relations
252-
"total_items": len(search_results),
253-
"search_limit": limit,
254-
"context_depth": 0, # No context depth for basic search
255-
"related_limit": 0, # No related items for basic search
256-
"generated_at": datetime.now(timezone.utc).isoformat(),
257-
}
258-
259-
prompt_metadata = PromptMetadata(**metadata)
240+
prompt_metadata = PromptMetadata(
241+
query=request.query,
242+
timeframe=request.timeframe,
243+
search_count=len(search_results),
244+
context_count=len(search_results),
245+
observation_count=0,
246+
relation_count=0,
247+
total_items=len(search_results),
248+
search_limit=limit,
249+
context_depth=0,
250+
related_limit=0,
251+
generated_at=datetime.now(timezone.utc).isoformat(),
252+
)
260253

261254
return PromptResponse(
262255
prompt=rendered_prompt, context=template_context, metadata=prompt_metadata

src/basic_memory/api/v2/routers/resource_router.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ async def create_resource(
211211
action="create",
212212
phase="search_index",
213213
):
214-
await search_service.index_entity(entity) # pyright: ignore
214+
await search_service.index_entity(entity)
215215

216216
return ResourceResponse(
217217
entity_id=entity.id,
@@ -326,14 +326,16 @@ async def update_resource(
326326
"updated_at": file_metadata.modified_at,
327327
},
328328
)
329+
if updated_entity is None:
330+
raise HTTPException(status_code=404, detail=f"Entity {entity_id} not found")
329331

330332
with telemetry.scope(
331333
"api.resource.update.search_index",
332334
domain="resource",
333335
action="update",
334336
phase="search_index",
335337
):
336-
await search_service.index_entity(updated_entity) # pyright: ignore
338+
await search_service.index_entity(updated_entity)
337339

338340
return ResourceResponse(
339341
entity_id=entity.id,

0 commit comments

Comments
 (0)