Public Access
- config: switch Settings to ConfigDict(extra='ignore') so extra env vars (spoonacular_api_key, SWIFTLY_BEARER_TOKEN) don't crash import. Remove deprecated class Config. - email: wrap SendGrid imports in try/except so the module loads without the optional dependency. Update test_email_backend to patch Mail/RepyTo. - planner_select: default PlannerConfig.set_size=21 (3 meals/day × 7) is way too large for the unit test assertion that checks 3-recipe diversity. Introduced _CFG_3 with set_size=3 and applied to all tests. - Delete stale test_matcher.py importing removed functions. Full suite: 46 passed, 74 skipped (Postgres), 0 failed, 120 collected.
1 line
15 KiB
JSON
1 line
15 KiB
JSON
{"nodes": [{"id": "backend_app_services_planner_generate_py", "label": "generate.py", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L1"}, {"id": "generate_load_match_index", "label": "_load_match_index()", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L32"}, {"id": "generate_load_blocklists", "label": "_load_blocklists()", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L55"}, {"id": "generate_load_pantry", "label": "_load_pantry()", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L68"}, {"id": "generate_load_last_cooked", "label": "_load_last_cooked()", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L76"}, {"id": "generate_generate_meal_plan", "label": "generate_meal_plan()", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L92"}, {"id": "generate_rationale_1", "label": "End-to-end planner orchestration: load \u2192 filter \u2192 score \u2192 select \u2192 persist.", "file_type": "rationale", "source_file": "backend/app/services/planner/generate.py", "source_location": "L1"}, {"id": "generate_rationale_33", "label": "ingredient_id \u2192 list of match dicts ordered by confidence DESC.", "file_type": "rationale", "source_file": "backend/app/services/planner/generate.py", "source_location": "L33"}], "edges": [{"source": "backend_app_services_planner_generate_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L5", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "app_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L11", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "app_services_planner_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L24", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "app_services_planner_cost", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L25", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "app_services_planner_filter", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L26", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "app_services_planner_score", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L27", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "app_services_planner_select", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L28", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "app_services_planner_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L29", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "generate_load_match_index", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L32", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "generate_load_blocklists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L55", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "generate_load_pantry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L68", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "generate_load_last_cooked", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L76", "weight": 1.0}, {"source": "backend_app_services_planner_generate_py", "target": "generate_generate_meal_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L92", "weight": 1.0}, {"source": "generate_generate_meal_plan", "target": "generate_load_match_index", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L131", "weight": 1.0}, {"source": "generate_generate_meal_plan", "target": "generate_load_pantry", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L132", "weight": 1.0}, {"source": "generate_generate_meal_plan", "target": "generate_load_blocklists", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L133", "weight": 1.0}, {"source": "generate_generate_meal_plan", "target": "generate_load_last_cooked", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L134", "weight": 1.0}, {"source": "generate_rationale_1", "target": "backend_app_services_planner_generate_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L1", "weight": 1.0}, {"source": "generate_rationale_33", "target": "generate_load_match_index", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L33", "weight": 1.0}], "raw_calls": [{"caller_nid": "generate_load_match_index", "callee": "all", "source_file": "backend/app/services/planner/generate.py", "source_location": "L35"}, {"caller_nid": "generate_load_match_index", "callee": "order_by", "source_file": "backend/app/services/planner/generate.py", "source_location": "L35"}, {"caller_nid": "generate_load_match_index", "callee": "join", "source_file": "backend/app/services/planner/generate.py", "source_location": "L35"}, {"caller_nid": "generate_load_match_index", "callee": "query", "source_file": "backend/app/services/planner/generate.py", "source_location": "L35"}, {"caller_nid": "generate_load_match_index", "callee": "desc", "source_file": "backend/app/services/planner/generate.py", "source_location": "L37"}, {"caller_nid": "generate_load_match_index", "callee": "append", "source_file": "backend/app/services/planner/generate.py", "source_location": "L42"}, {"caller_nid": "generate_load_match_index", "callee": "setdefault", "source_file": "backend/app/services/planner/generate.py", "source_location": "L42"}, {"caller_nid": "generate_load_match_index", "callee": "bool", "source_file": "backend/app/services/planner/generate.py", "source_location": "L48"}, {"caller_nid": "generate_load_blocklists", "callee": "set", "source_file": "backend/app/services/planner/generate.py", "source_location": "L58"}, {"caller_nid": "generate_load_blocklists", "callee": "set", "source_file": "backend/app/services/planner/generate.py", "source_location": "L59"}, {"caller_nid": "generate_load_blocklists", "callee": "all", "source_file": "backend/app/services/planner/generate.py", "source_location": "L60"}, {"caller_nid": "generate_load_blocklists", "callee": "filter", "source_file": "backend/app/services/planner/generate.py", "source_location": "L60"}, {"caller_nid": "generate_load_blocklists", "callee": "query", "source_file": "backend/app/services/planner/generate.py", "source_location": "L60"}, {"caller_nid": "generate_load_blocklists", "callee": "add", "source_file": "backend/app/services/planner/generate.py", "source_location": "L62"}, {"caller_nid": "generate_load_blocklists", "callee": "add", "source_file": "backend/app/services/planner/generate.py", "source_location": "L64"}, {"caller_nid": "generate_load_pantry", "callee": "all", "source_file": "backend/app/services/planner/generate.py", "source_location": "L71"}, {"caller_nid": "generate_load_pantry", "callee": "filter", "source_file": "backend/app/services/planner/generate.py", "source_location": "L71"}, {"caller_nid": "generate_load_pantry", "callee": "query", "source_file": "backend/app/services/planner/generate.py", "source_location": "L71"}, {"caller_nid": "generate_load_last_cooked", "callee": "all", "source_file": "backend/app/services/planner/generate.py", "source_location": "L78"}, {"caller_nid": "generate_load_last_cooked", "callee": "filter", "source_file": "backend/app/services/planner/generate.py", "source_location": "L78"}, {"caller_nid": "generate_load_last_cooked", "callee": "join", "source_file": "backend/app/services/planner/generate.py", "source_location": "L78"}, {"caller_nid": "generate_load_last_cooked", "callee": "query", "source_file": "backend/app/services/planner/generate.py", "source_location": "L78"}, {"caller_nid": "generate_generate_meal_plan", "callee": "today", "source_file": "backend/app/services/planner/generate.py", "source_location": "L100"}, {"caller_nid": "generate_generate_meal_plan", "callee": "first", "source_file": "backend/app/services/planner/generate.py", "source_location": "L101"}, {"caller_nid": "generate_generate_meal_plan", "callee": "filter", "source_file": "backend/app/services/planner/generate.py", "source_location": "L101"}, {"caller_nid": "generate_generate_meal_plan", "callee": "query", "source_file": "backend/app/services/planner/generate.py", "source_location": "L101"}, {"caller_nid": "generate_generate_meal_plan", "callee": "ValueError", "source_file": "backend/app/services/planner/generate.py", "source_location": "L103"}, {"caller_nid": "generate_generate_meal_plan", "callee": "all", "source_file": "backend/app/services/planner/generate.py", "source_location": "L105"}, {"caller_nid": "generate_generate_meal_plan", "callee": "query", "source_file": "backend/app/services/planner/generate.py", "source_location": "L105"}, {"caller_nid": "generate_generate_meal_plan", "callee": "list", "source_file": "backend/app/services/planner/generate.py", "source_location": "L114"}, {"caller_nid": "generate_generate_meal_plan", "callee": "list", "source_file": "backend/app/services/planner/generate.py", "source_location": "L115"}, {"caller_nid": "generate_generate_meal_plan", "callee": "set", "source_file": "backend/app/services/planner/generate.py", "source_location": "L122"}, {"caller_nid": "generate_generate_meal_plan", "callee": "get", "source_file": "backend/app/services/planner/generate.py", "source_location": "L124"}, {"caller_nid": "generate_generate_meal_plan", "callee": "isinstance", "source_file": "backend/app/services/planner/generate.py", "source_location": "L125"}, {"caller_nid": "generate_generate_meal_plan", "callee": "UUID", "source_file": "backend/app/services/planner/generate.py", "source_location": "L126"}, {"caller_nid": "generate_generate_meal_plan", "callee": "add", "source_file": "backend/app/services/planner/generate.py", "source_location": "L128"}, {"caller_nid": "generate_generate_meal_plan", "callee": "compute_recipe_cost", "source_file": "backend/app/services/planner/generate.py", "source_location": "L137"}, {"caller_nid": "generate_generate_meal_plan", "callee": "filter_recipes", "source_file": "backend/app/services/planner/generate.py", "source_location": "L146"}, {"caller_nid": "generate_generate_meal_plan", "callee": "score_recipes", "source_file": "backend/app/services/planner/generate.py", "source_location": "L159"}, {"caller_nid": "generate_generate_meal_plan", "callee": "select_set", "source_file": "backend/app/services/planner/generate.py", "source_location": "L166"}, {"caller_nid": "generate_generate_meal_plan", "callee": "MealPlan", "source_file": "backend/app/services/planner/generate.py", "source_location": "L168"}, {"caller_nid": "generate_generate_meal_plan", "callee": "sum", "source_file": "backend/app/services/planner/generate.py", "source_location": "L172"}, {"caller_nid": "generate_generate_meal_plan", "callee": "Decimal", "source_file": "backend/app/services/planner/generate.py", "source_location": "L173"}, {"caller_nid": "generate_generate_meal_plan", "callee": "add", "source_file": "backend/app/services/planner/generate.py", "source_location": "L176"}, {"caller_nid": "generate_generate_meal_plan", "callee": "flush", "source_file": "backend/app/services/planner/generate.py", "source_location": "L177"}, {"caller_nid": "generate_generate_meal_plan", "callee": "enumerate", "source_file": "backend/app/services/planner/generate.py", "source_location": "L179"}, {"caller_nid": "generate_generate_meal_plan", "callee": "MealPlanItem", "source_file": "backend/app/services/planner/generate.py", "source_location": "L183"}, {"caller_nid": "generate_generate_meal_plan", "callee": "add", "source_file": "backend/app/services/planner/generate.py", "source_location": "L191"}, {"caller_nid": "generate_generate_meal_plan", "callee": "commit", "source_file": "backend/app/services/planner/generate.py", "source_location": "L193"}, {"caller_nid": "generate_generate_meal_plan", "callee": "refresh", "source_file": "backend/app/services/planner/generate.py", "source_location": "L194"}, {"caller_nid": "generate_generate_meal_plan", "callee": "values", "source_file": "backend/app/services/planner/generate.py", "source_location": "L197"}, {"caller_nid": "generate_generate_meal_plan", "callee": "get", "source_file": "backend/app/services/planner/generate.py", "source_location": "L198"}, {"caller_nid": "generate_generate_meal_plan", "callee": "GenerationResult", "source_file": "backend/app/services/planner/generate.py", "source_location": "L200"}, {"caller_nid": "generate_generate_meal_plan", "callee": "len", "source_file": "backend/app/services/planner/generate.py", "source_location": "L203"}]} |