CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/pidge

Context tile for pidge notification library v3 - async API with NotificationClient, Message, and dispatch pattern

99

2.85x

Quality

99%

Does it follow best practices?

Impact

100%

2.85x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

rubric.jsonevals/scenario-3/

{
  "context": "Tests whether the agent correctly migrates pidge v2 code to v3, replacing deprecated classes and methods with the correct v3 equivalents, using the async context manager pattern, and following all v3 integration practices.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "No Notifier class",
      "description": "Does NOT import or use the `Notifier` class anywhere in the migrated code",
      "max_score": 10
    },
    {
      "name": "No NotifierConfig class",
      "description": "Does NOT import or use `NotifierConfig` anywhere in the migrated code",
      "max_score": 8
    },
    {
      "name": "No .send() method",
      "description": "Does NOT call `.send()` on any client/notifier object — uses `.dispatch()` instead",
      "max_score": 10
    },
    {
      "name": "Uses NotificationClient",
      "description": "Imports and uses `NotificationClient` from pidge as the client class",
      "max_score": 8
    },
    {
      "name": "Uses NotificationConfig",
      "description": "Imports and uses `NotificationConfig` (not `NotifierConfig`) to configure the client",
      "max_score": 8
    },
    {
      "name": "Async context manager",
      "description": "Uses `async with NotificationClient(config=config) as client:` pattern",
      "max_score": 10
    },
    {
      "name": "API key from env",
      "description": "API key is sourced from an environment variable, not hardcoded",
      "max_score": 8
    },
    {
      "name": "Message keyword args",
      "description": "Message is constructed using `Message(to=..., subject=..., body=...)` with named keyword arguments",
      "max_score": 8
    },
    {
      "name": "Delivery result check",
      "description": "Checks `result.success` or `result.status == Status.SENT` after dispatch",
      "max_score": 8
    },
    {
      "name": "DispatchError handling",
      "description": "Catches `DispatchError` explicitly in a try/except block",
      "max_score": 10
    },
    {
      "name": "notification_sent field",
      "description": "Returns or exposes a `notification_sent` True/False value reflecting dispatch outcome",
      "max_score": 12
    }
  ]
}

tile.json