)]}'
{
  "commit": "15d1637f8cc874e57a2db382dae69313b6b11792",
  "tree": "5bf87f43bd55fca209270fe1461d303f469c649c",
  "parents": [
    "b5051ff170e8fbe46ff217d21c837898a4209c04"
  ],
  "author": {
    "name": "Pierre Sassoulas",
    "email": "pierre.sassoulas@gmail.com",
    "time": "Sun Sep 13 19:46:17 2026 +0200"
  },
  "committer": {
    "name": "Pierre Sassoulas",
    "email": "pierre.sassoulas@gmail.com",
    "time": "Sun Sep 13 19:46:17 2026 +0200"
  },
  "message": "Do not let the failed-import cache pin caller stacks\n\n``file_from_module_name`` caches failed imports in ``_mod_file_cache`` and\nraises the cached exception instance directly. Clearing ``__traceback__``\nright before the ``raise`` does nothing: Python attaches a fresh traceback\nto the object as it propagates, so the cache ends up holding the whole\ncaller stack, and every later cache hit re-pins a new one.\n\nRaise a copy instead, leaving the cached instance traceback-free.\n\nThe sibling strip on ``error\u003de.with_traceback(None)`` is kept: that one is\neffective, since the ``ImportError`` it clears is stored rather than raised.\n\nRefs #1780, refs #792\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a515ab5b763c12240ce6fef4450bda6565d0ab9d",
      "old_mode": 33188,
      "old_path": "astroid/manager.py",
      "new_id": "33e1c7893158d949ee3d581c04a2162fd5d23ebe",
      "new_mode": 33188,
      "new_path": "astroid/manager.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "72a02a2faa344e71f7322e23477543e96f552d5e",
      "new_mode": 33188,
      "new_path": "doc/whatsnew/fragments/3278.performance"
    },
    {
      "type": "modify",
      "old_id": "4dac202f60ec4914a3c485a782dccae15f67a158",
      "old_mode": 33188,
      "old_path": "tests/test_manager.py",
      "new_id": "82bff702b72d6e83cbc3e0209d9511a27513b2b8",
      "new_mode": 33188,
      "new_path": "tests/test_manager.py"
    }
  ]
}
