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
7.7 KiB
JSON
1 line
7.7 KiB
JSON
{"nodes": [{"id": "backend_app_services_planner_score_py", "label": "score.py", "file_type": "code", "source_file": "backend/app/services/planner/score.py", "source_location": "L1"}, {"id": "score_time_bonus", "label": "time_bonus()", "file_type": "code", "source_file": "backend/app/services/planner/score.py", "source_location": "L13"}, {"id": "score_recency_bonus", "label": "recency_bonus()", "file_type": "code", "source_file": "backend/app/services/planner/score.py", "source_location": "L23"}, {"id": "score_normalize_savings", "label": "normalize_savings()", "file_type": "code", "source_file": "backend/app/services/planner/score.py", "source_location": "L42"}, {"id": "score_score_recipes", "label": "score_recipes()", "file_type": "code", "source_file": "backend/app/services/planner/score.py", "source_location": "L52"}, {"id": "score_rationale_1", "label": "Per-recipe scoring with the 5 weighted signals from the spec.", "file_type": "rationale", "source_file": "backend/app/services/planner/score.py", "source_location": "L1"}, {"id": "score_rationale_60", "label": "Returns recipes scored DESC. Caller passes only the feasible set.", "file_type": "rationale", "source_file": "backend/app/services/planner/score.py", "source_location": "L60"}], "edges": [{"source": "backend_app_services_planner_score_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_app_services_planner_score_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L5", "weight": 1.0}, {"source": "backend_app_services_planner_score_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_app_services_planner_score_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_app_services_planner_score_py", "target": "app_services_planner_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_app_services_planner_score_py", "target": "app_services_planner_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L10", "weight": 1.0}, {"source": "backend_app_services_planner_score_py", "target": "score_time_bonus", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L13", "weight": 1.0}, {"source": "backend_app_services_planner_score_py", "target": "score_recency_bonus", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L23", "weight": 1.0}, {"source": "backend_app_services_planner_score_py", "target": "score_normalize_savings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L42", "weight": 1.0}, {"source": "backend_app_services_planner_score_py", "target": "score_score_recipes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L52", "weight": 1.0}, {"source": "score_score_recipes", "target": "score_normalize_savings", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L66", "weight": 1.0}, {"source": "score_score_recipes", "target": "score_time_bonus", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L75", "weight": 1.0}, {"source": "score_score_recipes", "target": "score_recency_bonus", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L76", "weight": 1.0}, {"source": "score_rationale_1", "target": "backend_app_services_planner_score_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L1", "weight": 1.0}, {"source": "score_rationale_60", "target": "score_score_recipes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L60", "weight": 1.0}], "raw_calls": [{"caller_nid": "score_time_bonus", "callee": "max", "source_file": "backend/app/services/planner/score.py", "source_location": "L20"}, {"caller_nid": "score_time_bonus", "callee": "min", "source_file": "backend/app/services/planner/score.py", "source_location": "L20"}, {"caller_nid": "score_recency_bonus", "callee": "max", "source_file": "backend/app/services/planner/score.py", "source_location": "L39"}, {"caller_nid": "score_recency_bonus", "callee": "min", "source_file": "backend/app/services/planner/score.py", "source_location": "L39"}, {"caller_nid": "score_normalize_savings", "callee": "float", "source_file": "backend/app/services/planner/score.py", "source_location": "L45"}, {"caller_nid": "score_normalize_savings", "callee": "min", "source_file": "backend/app/services/planner/score.py", "source_location": "L46"}, {"caller_nid": "score_normalize_savings", "callee": "max", "source_file": "backend/app/services/planner/score.py", "source_location": "L46"}, {"caller_nid": "score_normalize_savings", "callee": "len", "source_file": "backend/app/services/planner/score.py", "source_location": "L48"}, {"caller_nid": "score_score_recipes", "callee": "list", "source_file": "backend/app/services/planner/score.py", "source_location": "L61"}, {"caller_nid": "score_score_recipes", "callee": "zip", "source_file": "backend/app/services/planner/score.py", "source_location": "L69"}, {"caller_nid": "score_score_recipes", "callee": "isinstance", "source_file": "backend/app/services/planner/score.py", "source_location": "L71"}, {"caller_nid": "score_score_recipes", "callee": "UUID", "source_file": "backend/app/services/planner/score.py", "source_location": "L72"}, {"caller_nid": "score_score_recipes", "callee": "int", "source_file": "backend/app/services/planner/score.py", "source_location": "L74"}, {"caller_nid": "score_score_recipes", "callee": "get", "source_file": "backend/app/services/planner/score.py", "source_location": "L74"}, {"caller_nid": "score_score_recipes", "callee": "int", "source_file": "backend/app/services/planner/score.py", "source_location": "L74"}, {"caller_nid": "score_score_recipes", "callee": "get", "source_file": "backend/app/services/planner/score.py", "source_location": "L74"}, {"caller_nid": "score_score_recipes", "callee": "get", "source_file": "backend/app/services/planner/score.py", "source_location": "L76"}, {"caller_nid": "score_score_recipes", "callee": "float", "source_file": "backend/app/services/planner/score.py", "source_location": "L84"}, {"caller_nid": "score_score_recipes", "callee": "get", "source_file": "backend/app/services/planner/score.py", "source_location": "L95"}, {"caller_nid": "score_score_recipes", "callee": "append", "source_file": "backend/app/services/planner/score.py", "source_location": "L98"}, {"caller_nid": "score_score_recipes", "callee": "ScoredRecipe", "source_file": "backend/app/services/planner/score.py", "source_location": "L99"}, {"caller_nid": "score_score_recipes", "callee": "get", "source_file": "backend/app/services/planner/score.py", "source_location": "L104"}, {"caller_nid": "score_score_recipes", "callee": "sort", "source_file": "backend/app/services/planner/score.py", "source_location": "L109"}]} |