Files
Meal-Planner/graphify-out/cache/ea22f185346c06a80048c1b30c06ced102d5657a2d867a77bcfe5a9a11039d36.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
28 KiB
JSON

{"nodes": [{"id": "backend_app_services_scraper_service_py", "label": "scraper_service.py", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L1"}, {"id": "scraper_service_enqueue_scrape", "label": "enqueue_scrape()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L36"}, {"id": "scraper_service_run_scrape_in_background", "label": "_run_scrape_in_background()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L65"}, {"id": "scraper_service_scraperservice", "label": "ScraperService", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L123"}, {"id": "scraper_service_scraperservice_init", "label": ".__init__()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L124"}, {"id": "scraper_service_scraperservice_run_scrape", "label": ".run_scrape()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L127"}, {"id": "scraper_service_scraperservice_do_scrape", "label": "._do_scrape()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L180"}, {"id": "scraper_service_scraperservice_save_grocery_item", "label": "._save_grocery_item()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L200"}, {"id": "scraper_service_scraperservice_get_sale_items", "label": ".get_sale_items()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L285"}, {"id": "scraper_service_rationale_1", "label": "Scraper service. Two entry points: - ``enqueue_scrape(db, source, scrape_type,", "file_type": "rationale", "source_file": "backend/app/services/scraper_service.py", "source_location": "L1"}, {"id": "scraper_service_rationale_43", "label": "Create the ScrapeLog row, commit, and schedule the background scrape. Retur", "file_type": "rationale", "source_file": "backend/app/services/scraper_service.py", "source_location": "L43"}, {"id": "scraper_service_rationale_68", "label": "Background entry point. Opens a fresh DB session \u2014 the request-scoped sessio", "file_type": "rationale", "source_file": "backend/app/services/scraper_service.py", "source_location": "L68"}, {"id": "scraper_service_rationale_130", "label": "Synchronous end-to-end scrape (legacy path). Creates the log row, runs t", "file_type": "rationale", "source_file": "backend/app/services/scraper_service.py", "source_location": "L130"}, {"id": "scraper_service_rationale_181", "label": "Run the scraper and persist items. Returns (saved, found). Raises any s", "file_type": "rationale", "source_file": "backend/app/services/scraper_service.py", "source_location": "L181"}], "edges": [{"source": "backend_app_services_scraper_service_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L19", "weight": 1.0}, {"source": "backend_app_services_scraper_service_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L20", "weight": 1.0}, {"source": "backend_app_services_scraper_service_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L21", "weight": 1.0}, {"source": "backend_app_services_scraper_service_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L22", "weight": 1.0}, {"source": "backend_app_services_scraper_service_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L24", "weight": 1.0}, {"source": "backend_app_services_scraper_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L25", "weight": 1.0}, {"source": "backend_app_services_scraper_service_py", "target": "app_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L27", "weight": 1.0}, {"source": "backend_app_services_scraper_service_py", "target": "app_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L28", "weight": 1.0}, {"source": "backend_app_services_scraper_service_py", "target": "scraper_service_enqueue_scrape", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L36", "weight": 1.0}, {"source": "backend_app_services_scraper_service_py", "target": "scraper_service_run_scrape_in_background", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L65", "weight": 1.0}, {"source": "backend_app_services_scraper_service_py", "target": "scraper_service_scraperservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L123", "weight": 1.0}, {"source": "scraper_service_scraperservice", "target": "scraper_service_scraperservice_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L124", "weight": 1.0}, {"source": "scraper_service_scraperservice", "target": "scraper_service_scraperservice_run_scrape", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L127", "weight": 1.0}, {"source": "scraper_service_scraperservice", "target": "scraper_service_scraperservice_do_scrape", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L180", "weight": 1.0}, {"source": "scraper_service_scraperservice", "target": "scraper_service_scraperservice_save_grocery_item", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L200", "weight": 1.0}, {"source": "scraper_service_scraperservice", "target": "scraper_service_scraperservice_get_sale_items", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L285", "weight": 1.0}, {"source": "scraper_service_run_scrape_in_background", "target": "scraper_service_scraperservice", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L81", "weight": 1.0}, {"source": "scraper_service_run_scrape_in_background", "target": "scraper_service_scraperservice_do_scrape", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L82", "weight": 1.0}, {"source": "scraper_service_scraperservice_run_scrape", "target": "scraper_service_scraperservice_do_scrape", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L147", "weight": 1.0}, {"source": "scraper_service_scraperservice_do_scrape", "target": "scraper_service_scraperservice_save_grocery_item", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L194", "weight": 1.0}, {"source": "scraper_service_rationale_1", "target": "backend_app_services_scraper_service_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L1", "weight": 1.0}, {"source": "scraper_service_rationale_43", "target": "scraper_service_enqueue_scrape", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L43", "weight": 1.0}, {"source": "scraper_service_rationale_68", "target": "scraper_service_run_scrape_in_background", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L68", "weight": 1.0}, {"source": "scraper_service_rationale_130", "target": "scraper_service_scraperservice_run_scrape", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L130", "weight": 1.0}, {"source": "scraper_service_rationale_181", "target": "scraper_service_scraperservice_do_scrape", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L181", "weight": 1.0}], "raw_calls": [{"caller_nid": "scraper_service_enqueue_scrape", "callee": "ScrapeLog", "source_file": "backend/app/services/scraper_service.py", "source_location": "L48"}, {"caller_nid": "scraper_service_enqueue_scrape", "callee": "uuid4", "source_file": "backend/app/services/scraper_service.py", "source_location": "L49"}, {"caller_nid": "scraper_service_enqueue_scrape", "callee": "now", "source_file": "backend/app/services/scraper_service.py", "source_location": "L53"}, {"caller_nid": "scraper_service_enqueue_scrape", "callee": "add", "source_file": "backend/app/services/scraper_service.py", "source_location": "L55"}, {"caller_nid": "scraper_service_enqueue_scrape", "callee": "commit", "source_file": "backend/app/services/scraper_service.py", "source_location": "L56"}, {"caller_nid": "scraper_service_enqueue_scrape", "callee": "refresh", "source_file": "backend/app/services/scraper_service.py", "source_location": "L57"}, {"caller_nid": "scraper_service_enqueue_scrape", "callee": "add_task", "source_file": "backend/app/services/scraper_service.py", "source_location": "L59"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "SessionLocal", "source_file": "backend/app/services/scraper_service.py", "source_location": "L71"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "first", "source_file": "backend/app/services/scraper_service.py", "source_location": "L73"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "filter", "source_file": "backend/app/services/scraper_service.py", "source_location": "L73"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "query", "source_file": "backend/app/services/scraper_service.py", "source_location": "L73"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "error", "source_file": "backend/app/services/scraper_service.py", "source_location": "L75"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "now", "source_file": "backend/app/services/scraper_service.py", "source_location": "L85"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "int", "source_file": "backend/app/services/scraper_service.py", "source_location": "L86"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "total_seconds", "source_file": "backend/app/services/scraper_service.py", "source_location": "L87"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "run_match_job", "source_file": "backend/app/services/scraper_service.py", "source_location": "L91"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "run_llm_match_job", "source_file": "backend/app/services/scraper_service.py", "source_location": "L93"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "exception", "source_file": "backend/app/services/scraper_service.py", "source_location": "L96"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "commit", "source_file": "backend/app/services/scraper_service.py", "source_location": "L97"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "info", "source_file": "backend/app/services/scraper_service.py", "source_location": "L98"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "exception", "source_file": "backend/app/services/scraper_service.py", "source_location": "L103"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "rollback", "source_file": "backend/app/services/scraper_service.py", "source_location": "L104"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "first", "source_file": "backend/app/services/scraper_service.py", "source_location": "L106"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "filter", "source_file": "backend/app/services/scraper_service.py", "source_location": "L106"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "query", "source_file": "backend/app/services/scraper_service.py", "source_location": "L106"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "str", "source_file": "backend/app/services/scraper_service.py", "source_location": "L109"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "now", "source_file": "backend/app/services/scraper_service.py", "source_location": "L110"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "int", "source_file": "backend/app/services/scraper_service.py", "source_location": "L112"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "total_seconds", "source_file": "backend/app/services/scraper_service.py", "source_location": "L113"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "commit", "source_file": "backend/app/services/scraper_service.py", "source_location": "L115"}, {"caller_nid": "scraper_service_run_scrape_in_background", "callee": "close", "source_file": "backend/app/services/scraper_service.py", "source_location": "L117"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "ScrapeLog", "source_file": "backend/app/services/scraper_service.py", "source_location": "L134"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "uuid4", "source_file": "backend/app/services/scraper_service.py", "source_location": "L135"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "now", "source_file": "backend/app/services/scraper_service.py", "source_location": "L139"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "add", "source_file": "backend/app/services/scraper_service.py", "source_location": "L141"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "commit", "source_file": "backend/app/services/scraper_service.py", "source_location": "L142"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "info", "source_file": "backend/app/services/scraper_service.py", "source_location": "L144"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "now", "source_file": "backend/app/services/scraper_service.py", "source_location": "L150"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "int", "source_file": "backend/app/services/scraper_service.py", "source_location": "L151"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "total_seconds", "source_file": "backend/app/services/scraper_service.py", "source_location": "L152"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "commit", "source_file": "backend/app/services/scraper_service.py", "source_location": "L154"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "info", "source_file": "backend/app/services/scraper_service.py", "source_location": "L155"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "str", "source_file": "backend/app/services/scraper_service.py", "source_location": "L157"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "error", "source_file": "backend/app/services/scraper_service.py", "source_location": "L163"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "str", "source_file": "backend/app/services/scraper_service.py", "source_location": "L165"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "now", "source_file": "backend/app/services/scraper_service.py", "source_location": "L166"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "int", "source_file": "backend/app/services/scraper_service.py", "source_location": "L167"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "total_seconds", "source_file": "backend/app/services/scraper_service.py", "source_location": "L168"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "commit", "source_file": "backend/app/services/scraper_service.py", "source_location": "L170"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "str", "source_file": "backend/app/services/scraper_service.py", "source_location": "L172"}, {"caller_nid": "scraper_service_scraperservice_run_scrape", "callee": "str", "source_file": "backend/app/services/scraper_service.py", "source_location": "L174"}, {"caller_nid": "scraper_service_scraperservice_do_scrape", "callee": "LuckyCaliforniaScraper", "source_file": "backend/app/services/scraper_service.py", "source_location": "L188"}, {"caller_nid": "scraper_service_scraperservice_do_scrape", "callee": "fetch_all", "source_file": "backend/app/services/scraper_service.py", "source_location": "L192"}, {"caller_nid": "scraper_service_scraperservice_do_scrape", "callee": "cleanup", "source_file": "backend/app/services/scraper_service.py", "source_location": "L197"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "strip", "source_file": "backend/app/services/scraper_service.py", "source_location": "L203"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L203"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "lower", "source_file": "backend/app/services/scraper_service.py", "source_location": "L207"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L208"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L209"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "first", "source_file": "backend/app/services/scraper_service.py", "source_location": "L211"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "filter", "source_file": "backend/app/services/scraper_service.py", "source_location": "L211"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "query", "source_file": "backend/app/services/scraper_service.py", "source_location": "L211"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "Ingredient", "source_file": "backend/app/services/scraper_service.py", "source_location": "L216"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "uuid4", "source_file": "backend/app/services/scraper_service.py", "source_location": "L217"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L220"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L221"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "add", "source_file": "backend/app/services/scraper_service.py", "source_location": "L223"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "flush", "source_file": "backend/app/services/scraper_service.py", "source_location": "L224"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "first", "source_file": "backend/app/services/scraper_service.py", "source_location": "L231"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "filter", "source_file": "backend/app/services/scraper_service.py", "source_location": "L231"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "query", "source_file": "backend/app/services/scraper_service.py", "source_location": "L231"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "first", "source_file": "backend/app/services/scraper_service.py", "source_location": "L236"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "filter", "source_file": "backend/app/services/scraper_service.py", "source_location": "L236"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "query", "source_file": "backend/app/services/scraper_service.py", "source_location": "L236"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L238"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L243"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L244"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L245"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L246"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L247"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L248"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L249"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L250"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "bool", "source_file": "backend/app/services/scraper_service.py", "source_location": "L251"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L251"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "now", "source_file": "backend/app/services/scraper_service.py", "source_location": "L252"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L253"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "flush", "source_file": "backend/app/services/scraper_service.py", "source_location": "L256"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "GroceryItem", "source_file": "backend/app/services/scraper_service.py", "source_location": "L259"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "uuid4", "source_file": "backend/app/services/scraper_service.py", "source_location": "L260"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L263"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L264"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L265"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L266"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L267"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L268"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L269"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L270"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "bool", "source_file": "backend/app/services/scraper_service.py", "source_location": "L271"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L271"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L272"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L273"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L274"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "now", "source_file": "backend/app/services/scraper_service.py", "source_location": "L275"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "get", "source_file": "backend/app/services/scraper_service.py", "source_location": "L276"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "add", "source_file": "backend/app/services/scraper_service.py", "source_location": "L281"}, {"caller_nid": "scraper_service_scraperservice_save_grocery_item", "callee": "flush", "source_file": "backend/app/services/scraper_service.py", "source_location": "L282"}, {"caller_nid": "scraper_service_scraperservice_get_sale_items", "callee": "all", "source_file": "backend/app/services/scraper_service.py", "source_location": "L286"}, {"caller_nid": "scraper_service_scraperservice_get_sale_items", "callee": "limit", "source_file": "backend/app/services/scraper_service.py", "source_location": "L286"}, {"caller_nid": "scraper_service_scraperservice_get_sale_items", "callee": "order_by", "source_file": "backend/app/services/scraper_service.py", "source_location": "L286"}, {"caller_nid": "scraper_service_scraperservice_get_sale_items", "callee": "filter", "source_file": "backend/app/services/scraper_service.py", "source_location": "L286"}, {"caller_nid": "scraper_service_scraperservice_get_sale_items", "callee": "query", "source_file": "backend/app/services/scraper_service.py", "source_location": "L286"}, {"caller_nid": "scraper_service_scraperservice_get_sale_items", "callee": "desc", "source_file": "backend/app/services/scraper_service.py", "source_location": "L288"}, {"caller_nid": "scraper_service_scraperservice_get_sale_items", "callee": "str", "source_file": "backend/app/services/scraper_service.py", "source_location": "L292"}, {"caller_nid": "scraper_service_scraperservice_get_sale_items", "callee": "float", "source_file": "backend/app/services/scraper_service.py", "source_location": "L294"}, {"caller_nid": "scraper_service_scraperservice_get_sale_items", "callee": "float", "source_file": "backend/app/services/scraper_service.py", "source_location": "L295"}, {"caller_nid": "scraper_service_scraperservice_get_sale_items", "callee": "isoformat", "source_file": "backend/app/services/scraper_service.py", "source_location": "L300"}]}