Files
Meal-Planner/graphify-out/cache/917979cbe96e6bdc52d9e944917dc51a0907d7fbc8b2603fcd67a6dfd21b36d7.json
T
admin 019f9020ad tests: fix suite-wide collection and failures
- 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.
2026-05-18 17:43:30 -07:00

1 line
7.7 KiB
JSON

{"nodes": [{"id": "backend_app_services_approval_py", "label": "approval.py", "file_type": "code", "source_file": "backend/app/services/approval.py", "source_location": "L1"}, {"id": "approval_serializer", "label": "_serializer()", "file_type": "code", "source_file": "backend/app/services/approval.py", "source_location": "L33"}, {"id": "approval_issue_token", "label": "issue_token()", "file_type": "code", "source_file": "backend/app/services/approval.py", "source_location": "L37"}, {"id": "approval_verify_token", "label": "verify_token()", "file_type": "code", "source_file": "backend/app/services/approval.py", "source_location": "L45"}, {"id": "approval_consume_token", "label": "consume_token()", "file_type": "code", "source_file": "backend/app/services/approval.py", "source_location": "L57"}, {"id": "approval_rationale_1", "label": "Per-voter approval tokens. Stateless signed tokens (itsdangerous) keyed on sett", "file_type": "rationale", "source_file": "backend/app/services/approval.py", "source_location": "L1"}, {"id": "approval_rationale_63", "label": "Verify + match URL + enforce single-use. Returns the voter on success. Sing", "file_type": "rationale", "source_file": "backend/app/services/approval.py", "source_location": "L63"}], "edges": [{"source": "backend_app_services_approval_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L12", "weight": 1.0}, {"source": "backend_app_services_approval_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L13", "weight": 1.0}, {"source": "backend_app_services_approval_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L15", "weight": 1.0}, {"source": "backend_app_services_approval_py", "target": "itsdangerous", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L16", "weight": 1.0}, {"source": "backend_app_services_approval_py", "target": "app_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L22", "weight": 1.0}, {"source": "backend_app_services_approval_py", "target": "app_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L23", "weight": 1.0}, {"source": "backend_app_services_approval_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L26", "weight": 1.0}, {"source": "backend_app_services_approval_py", "target": "approval_serializer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L33", "weight": 1.0}, {"source": "backend_app_services_approval_py", "target": "approval_issue_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L37", "weight": 1.0}, {"source": "backend_app_services_approval_py", "target": "approval_verify_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L45", "weight": 1.0}, {"source": "backend_app_services_approval_py", "target": "approval_consume_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L57", "weight": 1.0}, {"source": "approval_issue_token", "target": "approval_serializer", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L42", "weight": 1.0}, {"source": "approval_verify_token", "target": "approval_serializer", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L47", "weight": 1.0}, {"source": "approval_consume_token", "target": "approval_verify_token", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L68", "weight": 1.0}, {"source": "approval_rationale_1", "target": "backend_app_services_approval_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L1", "weight": 1.0}, {"source": "approval_rationale_63", "target": "approval_consume_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L63", "weight": 1.0}], "raw_calls": [{"caller_nid": "approval_serializer", "callee": "URLSafeTimedSerializer", "source_file": "backend/app/services/approval.py", "source_location": "L34"}, {"caller_nid": "approval_issue_token", "callee": "str", "source_file": "backend/app/services/approval.py", "source_location": "L39"}, {"caller_nid": "approval_issue_token", "callee": "str", "source_file": "backend/app/services/approval.py", "source_location": "L40"}, {"caller_nid": "approval_issue_token", "callee": "dumps", "source_file": "backend/app/services/approval.py", "source_location": "L42"}, {"caller_nid": "approval_verify_token", "callee": "loads", "source_file": "backend/app/services/approval.py", "source_location": "L47"}, {"caller_nid": "approval_verify_token", "callee": "HTTPException", "source_file": "backend/app/services/approval.py", "source_location": "L49"}, {"caller_nid": "approval_verify_token", "callee": "HTTPException", "source_file": "backend/app/services/approval.py", "source_location": "L51"}, {"caller_nid": "approval_verify_token", "callee": "isinstance", "source_file": "backend/app/services/approval.py", "source_location": "L52"}, {"caller_nid": "approval_verify_token", "callee": "HTTPException", "source_file": "backend/app/services/approval.py", "source_location": "L53"}, {"caller_nid": "approval_consume_token", "callee": "str", "source_file": "backend/app/services/approval.py", "source_location": "L70"}, {"caller_nid": "approval_consume_token", "callee": "str", "source_file": "backend/app/services/approval.py", "source_location": "L70"}, {"caller_nid": "approval_consume_token", "callee": "HTTPException", "source_file": "backend/app/services/approval.py", "source_location": "L71"}, {"caller_nid": "approval_consume_token", "callee": "UUID", "source_file": "backend/app/services/approval.py", "source_location": "L73"}, {"caller_nid": "approval_consume_token", "callee": "str", "source_file": "backend/app/services/approval.py", "source_location": "L73"}, {"caller_nid": "approval_consume_token", "callee": "first", "source_file": "backend/app/services/approval.py", "source_location": "L74"}, {"caller_nid": "approval_consume_token", "callee": "filter", "source_file": "backend/app/services/approval.py", "source_location": "L74"}, {"caller_nid": "approval_consume_token", "callee": "query", "source_file": "backend/app/services/approval.py", "source_location": "L74"}, {"caller_nid": "approval_consume_token", "callee": "HTTPException", "source_file": "backend/app/services/approval.py", "source_location": "L76"}, {"caller_nid": "approval_consume_token", "callee": "first", "source_file": "backend/app/services/approval.py", "source_location": "L79"}, {"caller_nid": "approval_consume_token", "callee": "filter", "source_file": "backend/app/services/approval.py", "source_location": "L79"}, {"caller_nid": "approval_consume_token", "callee": "query", "source_file": "backend/app/services/approval.py", "source_location": "L79"}, {"caller_nid": "approval_consume_token", "callee": "HTTPException", "source_file": "backend/app/services/approval.py", "source_location": "L87"}]}