"""Memory diagnostics helpers."""

from __future__ import annotations

import gc
import sys


def memory_snapshot() -> dict:
    gc.collect()

    objects = gc.get_objects()

    return {
        "gc_objects": len(objects),
        "gc_garbage": len(gc.garbage),
        "tracked_tasks": sum(1 for obj in objects if "Task" in type(obj).__name__),
        "approx_memory_mb": round(sum(sys.getsizeof(obj) for obj in objects[:5000]) / 1024 / 1024, 2),
    }
