)]}'
{
  "log": [
    {
      "commit": "47401e73bd130c5bd379c19efaef053b6a28e6ae",
      "tree": "d9fca3e3040a0d975adf1a7fbc15f279733153b6",
      "parents": [
        "cf34ca737e4391bf803e769e406b0c7faa900707"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 14 09:42:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 09:42:35 2026 +0200"
      },
      "message": "build(deps): bump CodSpeedHQ/action from 4.18.1 to 4.18.5 (#3143)\n\nBumps [CodSpeedHQ/action](https://github.com/codspeedhq/action) from 4.18.1 to 4.18.5.\n- [Release notes](https://github.com/codspeedhq/action/releases)\n- [Changelog](https://github.com/CodSpeedHQ/action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codspeedhq/action/compare/v4.18.1...v4.18.5)\n\n---\nupdated-dependencies:\n- dependency-name: CodSpeedHQ/action\n  dependency-version: 4.18.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "cf34ca737e4391bf803e769e406b0c7faa900707",
      "tree": "62de4e87a98c67ee0b61976751d0cc5fb3538dba",
      "parents": [
        "0053ffc6699afe1c04456cebdbb002005fec3a49"
      ],
      "author": {
        "name": "MUHAMED FAZAL PS",
        "email": "107547381+muhamedfazalps@users.noreply.github.com",
        "time": "Wed Jul 08 13:19:49 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 07:49:49 2026 +0000"
      },
      "message": "fix: add qname method to Slice node class (#3137)\n\n\nThe Slice node class was missing a qname() method, which caused an\nAttributeError when pylint\u0027s basic_checker tried to call it on a\nSlice node (e.g. when @slice(0) is used as a decorator).\n\nFixes #3115\n\nCo-authored-by: Muhamed Fazal PS \u003cmuhamedfazalps@users.noreply.github.com\u003e\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "0053ffc6699afe1c04456cebdbb002005fec3a49",
      "tree": "ebe81f3c43c48374d063a6e9dd2158dca8e3be52",
      "parents": [
        "faf2884b08a59e3a1b187d222bce84c25de55390"
      ],
      "author": {
        "name": "Genny-oo",
        "email": "156810188+Genny-oo@users.noreply.github.com",
        "time": "Tue Jul 07 19:46:45 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 19:46:45 2026 +0000"
      },
      "message": "Add brain tip for numpy.fromfile inference support (#3121)\n\n\nCo-authored-by: Genny-oo \u003cgenevieveowusu.20@gmail.com\u003e\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "faf2884b08a59e3a1b187d222bce84c25de55390",
      "tree": "d58ed9ae51b6352fa12b4288c31a8c577d4ad67f",
      "parents": [
        "c8a3a53768ac2f6d8a9da74fcfdb4ddaef51398d"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue Jul 07 06:33:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 06:33:44 2026 +0200"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3136)\n\nupdates:\n- [github.com/rbubley/mirrors-prettier: v3.9.1 → v3.9.4](https://github.com/rbubley/mirrors-prettier/compare/v3.9.1...v3.9.4)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c8a3a53768ac2f6d8a9da74fcfdb4ddaef51398d",
      "tree": "f315d140d21959452396ce8ed3df2596e0813d55",
      "parents": [
        "2731779d86f29d30c631b1dd21948842b3d17914"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 06 22:10:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 22:10:40 2026 +0200"
      },
      "message": "build(deps): update coverage requirement from ~\u003d7.14 to ~\u003d7.15 (#3134)\n\nUpdates the requirements on [coverage](https://github.com/coveragepy/coveragepy) to permit the latest version.\n- [Release notes](https://github.com/coveragepy/coveragepy/releases)\n- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)\n- [Commits](https://github.com/coveragepy/coveragepy/compare/7.14.0...7.15.0)\n\n---\nupdated-dependencies:\n- dependency-name: coverage\n  dependency-version: 7.15.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2731779d86f29d30c631b1dd21948842b3d17914",
      "tree": "6830742c8f786f3c9ad39f1468e7877c54896be5",
      "parents": [
        "b8feb27513bbc60d0ee6b426cbdd94354fc5ab9a"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sat Jul 04 17:59:43 2026 +0200"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sat Jul 04 19:02:52 2026 +0200"
      },
      "message": "Bump astroid to 4.2.0b4, update changelog\n"
    },
    {
      "commit": "b8feb27513bbc60d0ee6b426cbdd94354fc5ab9a",
      "tree": "60b6bac6aaf81ae9a73e4c64b5669e2a7afb3b7a",
      "parents": [
        "fe29fb1f7e3e7e9e44c3d96849cb685e815e335b"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sat Jul 04 17:57:37 2026 +0200"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sat Jul 04 19:02:52 2026 +0200"
      },
      "message": "Remove `kwargs` from `_infer`\n"
    },
    {
      "commit": "fe29fb1f7e3e7e9e44c3d96849cb685e815e335b",
      "tree": "6f740a0df092573fdd503a05c76db4803d8c5e67",
      "parents": [
        "367b25ae935f235f00688635b55ab25d8f2f93d3"
      ],
      "author": {
        "name": "MJSHANG",
        "email": "shangmengjiajiajia@gmail.com",
        "time": "Wed Jul 01 12:47:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 21:47:06 2026 +0200"
      },
      "message": "Remove `asname` kwarg from Import/ImportFrom `_infer` (#3109)\n\n* Remove ``asname`` kwarg from Import/ImportFrom ``_infer``\n\nThe ``asname`` keyword argument on ``Import._infer`` and\n``ImportFrom._infer`` only switched whether ``self.real_name(name)`` was\napplied to the ``lookupname`` before resolving the import. It was not\nincluded in the inference cache key, so two semantically distinct calls\n(default ``asname\u003dTrue`` translating the alias to the underlying name vs\n``asname\u003dFalse`` resolving the raw alias) collapsed to the same cache\nentry. Whichever ran first poisoned the result of the second.\n\nThis is the root cause of pylint-dev/pylint#10193: pylint\u0027s\n``_infer_name_module`` calls ``node.infer(context, asname\u003dFalse)`` to\nfetch the unaliased module, but the prior ``asname\u003dTrue`` traversal had\nalready cached the aliased module under the same key, so the\n``asname\u003dFalse`` lookup returned the wrong module and downstream\n``no-name-in-module`` analysis raised a spurious E0611.\n\nHoist the ``real_name`` translation up to\n``ImportNode._infer_name``, the per-statement hook invoked by\n``_infer_stmts`` to choose ``context.lookupname`` before dispatching\n``_infer``. With the translation done before ``infer()`` is reached:\n\n* The standard ``Name`` inference flow (the only path that previously\n  benefited from ``asname\u003dTrue``) now lands on ``_infer`` with\n  ``lookupname`` already translated to the real module name.\n* Direct callers of ``Import.infer``/``ImportFrom.infer`` (the path\n  pylint\u0027s ``_infer_name_module`` uses) receive the lookup name as-is,\n  matching the old ``asname\u003dFalse`` semantics. The ``asname`` kwarg is\n  no longer accepted on ``_infer`` (``**kwargs`` swallows it for\n  back-compatible call sites).\n* The cache key (``(node, lookupname, callcontext, boundnode)``)\n  differs between the two flows because their ``lookupname`` values\n  differ, so the cross-flow collision is gone.\n\nWhen ``real_name`` cannot find a matching alias, ``_infer_name`` returns\n``None`` and ``_infer`` raises ``InferenceError`` on the resulting\n``name is None`` guard, preserving the original handling of the\nunresolvable-alias case (see pylint-dev/pylint#4692).\n\nAdd a regression test that exercises both flows on the same\n``import os.path as os`` node in the order that previously triggered\nthe bug, and assert ``_infer_stmts`` yields ``os.path`` while the\ndirect ``infer`` call yields the raw stdlib ``os`` module.\n\nRefs pylint-dev/pylint#10193\nCloses #3007\n\n* tests: hoist _infer_stmts import to module top to satisfy pylint\n\nThe regression test added in this PR imported _infer_stmts inside\nthe test method body, which trips pylint\u0027s import-outside-toplevel\nrule (C0415) and breaks the pylint pre-commit hook in CI.\n\nMove the import to the existing from astroid.bases import ... block\nat the top of the file."
    },
    {
      "commit": "367b25ae935f235f00688635b55ab25d8f2f93d3",
      "tree": "daed8e171a76c0be5f6a4e6082708eef0324179c",
      "parents": [
        "4d1e0fb49a6b21f5b4ffe4ea15c5e7c8200ab0ff"
      ],
      "author": {
        "name": "Dani Alcala",
        "email": "112832187+clavedeluna@users.noreply.github.com",
        "time": "Wed Jul 01 16:28:19 2026 -0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 21:28:19 2026 +0200"
      },
      "message": "Don\u0027t crash when a local package shadows the stdlib `multiprocessing` (#3116)\n\nDon\u0027t crash when local multiprocessing module"
    },
    {
      "commit": "4d1e0fb49a6b21f5b4ffe4ea15c5e7c8200ab0ff",
      "tree": "f602e94b6f37adb3a05837c01195900381c55170",
      "parents": [
        "344d1196b30fdd7c948ef0b2c465df8713fcf61d"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue Jun 30 07:23:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 07:23:37 2026 +0200"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3125)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.18 → v0.15.20](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.18...v0.15.20)\n- [github.com/rbubley/mirrors-prettier: v3.8.4 → v3.9.1](https://github.com/rbubley/mirrors-prettier/compare/v3.8.4...v3.9.1)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "344d1196b30fdd7c948ef0b2c465df8713fcf61d",
      "tree": "f08daf02c1698c7adc2a6de84eb10206faf88646",
      "parents": [
        "b7774f10566f902d513796ba6a580a94aa5b7aef"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 21:15:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 21:15:27 2026 +0200"
      },
      "message": "build(deps): bump CodSpeedHQ/action from 4.17.6 to 4.18.1 (#3122)\n\nBumps [CodSpeedHQ/action](https://github.com/codspeedhq/action) from 4.17.6 to 4.18.1.\n- [Release notes](https://github.com/codspeedhq/action/releases)\n- [Changelog](https://github.com/CodSpeedHQ/action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codspeedhq/action/compare/v4.17.6...v4.18.1)\n\n---\nupdated-dependencies:\n- dependency-name: CodSpeedHQ/action\n  dependency-version: 4.18.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b7774f10566f902d513796ba6a580a94aa5b7aef",
      "tree": "a89f14c03d7fa0ea421a98f002acb3841048621f",
      "parents": [
        "675ff60a890148b185aea6cf7f260769ae9ea572"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 21:14:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 21:14:57 2026 +0200"
      },
      "message": "build(deps): bump actions/setup-python from 6.2.0 to 6.3.0 (#3124)\n\nBumps [actions/setup-python](https://github.com/actions/setup-python) from 6.2.0 to 6.3.0.\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/v6.2.0...v6.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-python\n  dependency-version: 6.3.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "675ff60a890148b185aea6cf7f260769ae9ea572",
      "tree": "b8ace25a3cfa614426ab43a1e731223cfb29b602",
      "parents": [
        "e8826f1d926d230383c17cb4ad2c2f7aedb095cc"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 21:14:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 21:14:27 2026 +0200"
      },
      "message": "build(deps): bump actions/cache from 5.0.5 to 6.1.0 (#3123)\n\nBumps [actions/cache](https://github.com/actions/cache) from 5.0.5 to 6.1.0.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v5.0.5...v6.1.0)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e8826f1d926d230383c17cb4ad2c2f7aedb095cc",
      "tree": "dc5d3b297251dc24b12fb7a5f95e0637620162aa",
      "parents": [
        "279500b99e9bad8889e0c79d66e4f16f36261583"
      ],
      "author": {
        "name": "Vincent Gao",
        "email": "gaobing1230@gmail.com",
        "time": "Sat Jun 20 10:49:10 2026 +0200"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Jun 28 22:35:14 2026 +0200"
      },
      "message": "Fix AttributeError in ClassDef.infer_call_result without a call context\n\nClassDef.infer_call_result may be called through the public API without a\ncontext (it defaults to None). For a class whose metaclass defines __call__,\nthe metaclass branch did \u0027context.callcontext.callee \u003d dunder_call\u0027 after\nbind_context_to_node, but bind_context_to_node(None, ...) yields a context\nwhose callcontext is None, so the assignment crashed with\n\"AttributeError: \u0027NoneType\u0027 object has no attribute \u0027callee\u0027\".\n\nGuard the assignment on context.callcontext, matching the check already\npresent elsewhere in the method. Normal call inference (which always supplies\na call context) is unchanged.\n"
    },
    {
      "commit": "279500b99e9bad8889e0c79d66e4f16f36261583",
      "tree": "c2ce136ad7f8f5490a543a1b05d893ff34d0ff6f",
      "parents": [
        "65f1e616b82856b28a7d1ed0b6e142e62f7f9bd6"
      ],
      "author": {
        "name": "KALI 834X",
        "email": "kali834x@gmail.com",
        "time": "Sat Jun 27 14:16:33 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 27 10:46:33 2026 +0200"
      },
      "message": "cap oversized str/bytes multiply and shift in const_infer_binary_op (#3107)\n\n\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "65f1e616b82856b28a7d1ed0b6e142e62f7f9bd6",
      "tree": "c25444b3928f05d890385ede6edc45b61719cb32",
      "parents": [
        "4e1842043b61350d0469c07741d7ea12eee31bf3"
      ],
      "author": {
        "name": "Vincent Gao",
        "email": "gaobing1230@gmail.com",
        "time": "Tue Jun 23 21:03:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 21:03:43 2026 +0200"
      },
      "message": "Fix AttributeError in Arguments.assigned_stmts called without a context (#3110)\n\nFix AttributeError in Arguments assigned_stmts without a context\n\n_arguments_infer_argname dereferenced context.boundnode while resolving a\nfunction\u0027s first parameter, but the public assigned_stmts() API defaults its\ncontext to None (arguments_assigned_stmts forwards it through). Calling e.g.\nargs.assigned_stmts(node\u003dargs.args[0]) therefore crashed with\n\"AttributeError: \u0027NoneType\u0027 object has no attribute \u0027boundnode\u0027\".\n\nAdd the missing \u0027context and\u0027 guard, matching the checks a few lines below\nand at the call site, and correct the annotation to InferenceContext | None.\nWith no context there is no bound instance to resolve, so inference degrades\nto Uninferable."
    },
    {
      "commit": "4e1842043b61350d0469c07741d7ea12eee31bf3",
      "tree": "f49afdbfed393a25367aaef9aca3bc381a6610ae",
      "parents": [
        "848d754518b062f7db0167d3107bb49aab4580a9"
      ],
      "author": {
        "name": "Omkar Kabde",
        "email": "omkarkabde@gmail.com",
        "time": "Wed Jun 24 00:32:34 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 21:02:34 2026 +0200"
      },
      "message": "Fix partial descriptor binding crash"
    },
    {
      "commit": "848d754518b062f7db0167d3107bb49aab4580a9",
      "tree": "50264a06c12c480c5adcd40382e20d96299c7c86",
      "parents": [
        "0b9b5616c9af8d41b534b353a34b575b06a3ef23"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Jun 22 22:06:06 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 22:06:06 2026 +0000"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3114)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.17 → v0.15.18](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.17...v0.15.18)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0b9b5616c9af8d41b534b353a34b575b06a3ef23",
      "tree": "0a1eba730abc2f7dcac046e490ff2cb5a417fe5e",
      "parents": [
        "d80c8a27cfcbf4d9b42eeb34b1096280d0cee0c3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 22 23:39:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 23:39:25 2026 +0200"
      },
      "message": "build(deps): bump actions/checkout from 6.0.3 to 7.0.0 (#3112)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6.0.3...v7.0.0)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d80c8a27cfcbf4d9b42eeb34b1096280d0cee0c3",
      "tree": "e2d02154db5d3097c3937a9a7462b3c7d58eacee",
      "parents": [
        "1d382512d851d4378a6dc6804010f72ee181c553"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 22 23:39:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 23:39:02 2026 +0200"
      },
      "message": "build(deps): bump CodSpeedHQ/action from 4.17.5 to 4.17.6 (#3113)\n\nBumps [CodSpeedHQ/action](https://github.com/codspeedhq/action) from 4.17.5 to 4.17.6.\n- [Release notes](https://github.com/codspeedhq/action/releases)\n- [Changelog](https://github.com/CodSpeedHQ/action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codspeedhq/action/compare/v4.17.5...v4.17.6)\n\n---\nupdated-dependencies:\n- dependency-name: CodSpeedHQ/action\n  dependency-version: 4.17.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1d382512d851d4378a6dc6804010f72ee181c553",
      "tree": "8963f9bbc8f63685a74c4576ca9cdc656e7948eb",
      "parents": [
        "4ff48be5408578cb91e301595694de737bb968ba"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 06:22:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 06:22:22 2026 +0200"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3105)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.16 → v0.15.17](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.16...v0.15.17)\n- [github.com/rbubley/mirrors-prettier: v3.8.3 → v3.8.4](https://github.com/rbubley/mirrors-prettier/compare/v3.8.3...v3.8.4)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "4ff48be5408578cb91e301595694de737bb968ba",
      "tree": "f34f4024f255440e8e381545bf8c0ccc27a8dc9c",
      "parents": [
        "fc6f07829b69b890ff5ed69fcd26a3d886df00f7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 15 20:14:20 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 20:14:20 2026 +0200"
      },
      "message": "build(deps): bump CodSpeedHQ/action from 4.17.0 to 4.17.5 (#3103)\n\nBumps [CodSpeedHQ/action](https://github.com/codspeedhq/action) from 4.17.0 to 4.17.5.\n- [Release notes](https://github.com/codspeedhq/action/releases)\n- [Changelog](https://github.com/CodSpeedHQ/action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codspeedhq/action/compare/v4.17.0...v4.17.5)\n\n---\nupdated-dependencies:\n- dependency-name: CodSpeedHQ/action\n  dependency-version: 4.17.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fc6f07829b69b890ff5ed69fcd26a3d886df00f7",
      "tree": "e6f74d63fa4f693c432d74da4135cadd80c7be9b",
      "parents": [
        "75f04c970336f13999bb968f1cee913fd7a0bcf7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 15 20:12:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 20:12:46 2026 +0200"
      },
      "message": "build(deps): bump sigstore/gh-action-sigstore-python from 3.3.0 to 3.4.0 (#3102)\n\nBumps [sigstore/gh-action-sigstore-python](https://github.com/sigstore/gh-action-sigstore-python) from 3.3.0 to 3.4.0.\n- [Release notes](https://github.com/sigstore/gh-action-sigstore-python/releases)\n- [Changelog](https://github.com/sigstore/gh-action-sigstore-python/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/sigstore/gh-action-sigstore-python/compare/v3.3.0...v3.4.0)\n\n---\nupdated-dependencies:\n- dependency-name: sigstore/gh-action-sigstore-python\n  dependency-version: 3.4.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "75f04c970336f13999bb968f1cee913fd7a0bcf7",
      "tree": "879ebfd9265ac6363d24b6ba57e2e25c156b92f7",
      "parents": [
        "ea46cd329208b4031f7e1cdd12ce29f114fa2a6b"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Sun Jun 14 20:49:56 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 20:49:56 2026 +0000"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3092)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.14 → v0.15.16](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.14...v0.15.16)\n\nMoved from tox-dev to pytest-dev fork for pyproject.toml formatting because enough is enough.\n\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "ea46cd329208b4031f7e1cdd12ce29f114fa2a6b",
      "tree": "2112232acca23a20446a2fb8e9007070df1e43e7",
      "parents": [
        "cf2db9b5c7554cc03c7925b7852698c6cf02d563"
      ],
      "author": {
        "name": "Vincent Gao",
        "email": "gaobing1230@gmail.com",
        "time": "Sun Jun 14 22:30:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 20:30:34 2026 +0000"
      },
      "message": "fix: avoid uncaught IndentationError when computing node positions (#3100)\n\nThe tokenizer treats a lone carriage return as a line terminator while\nRebuildVisitor keeps the source split on newlines only, so for code with\n\\r-terminated lines the slice tokenized by _get_position_info can be\nmisaligned with the AST line numbers and raise IndentationError. Catch\nSyntaxError (IndentationError\u0027s base) alongside the existing TokenError\nguard so such nodes simply have no position information.\n\nCloses #3091"
    },
    {
      "commit": "cf2db9b5c7554cc03c7925b7852698c6cf02d563",
      "tree": "10aa20cff662721d06739214e18d30e81a15087b",
      "parents": [
        "5547b4295ca1066242734a33cada5014205e7313"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 08 18:25:16 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 18:25:16 2026 +0000"
      },
      "message": "Bump codecov/codecov-action from 6 to 7 (#3096)\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6 to 7.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: codecov/codecov-action\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5547b4295ca1066242734a33cada5014205e7313",
      "tree": "bb123dc11076884c287ec1e0829b75f1439787d9",
      "parents": [
        "963bbe28cf8cdc7ddf4520ee596acec0603d30e7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 08 20:19:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 20:19:19 2026 +0200"
      },
      "message": "Bump CodSpeedHQ/action from 4.13.0 to 4.17.0 (#3098)\n\nBumps [CodSpeedHQ/action](https://github.com/codspeedhq/action) from 4.13.0 to 4.17.0.\n- [Release notes](https://github.com/codspeedhq/action/releases)\n- [Changelog](https://github.com/CodSpeedHQ/action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codspeedhq/action/compare/v4.13.0...v4.17.0)\n\n---\nupdated-dependencies:\n- dependency-name: CodSpeedHQ/action\n  dependency-version: 4.17.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "963bbe28cf8cdc7ddf4520ee596acec0603d30e7",
      "tree": "b7ca442f29e9f4ee2e84d556724a2df77a350f96",
      "parents": [
        "c50a1f452153ddb8b2efe233043ae5fc1f33a151"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 08 17:58:45 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 17:58:45 2026 +0000"
      },
      "message": "Bump actions/checkout from 6.0.2 to 6.0.3 (#3097)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6.0.2...v6.0.3)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: 6.0.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c50a1f452153ddb8b2efe233043ae5fc1f33a151",
      "tree": "b56d6c60c5add75067ac01f429ef3e3f1a90ac5e",
      "parents": [
        "926f4c9d5e165def5cc7bb288bff46b28d2eba9a"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Sat Jun 06 23:41:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 23:41:15 2026 +0200"
      },
      "message": "Add CodSpeed CI with end-to-end primer benchmarks (flask + black) and a cold start test using initial imports (#3079)\n\nAdds CodSpeed CI to astroid with three end-to-end benchmarks for black and flask, alongside a cold start test to exercise the import time which is important because we often lint single file in parallel inside pre-commit.\n\nSupersedes #3022."
    },
    {
      "commit": "926f4c9d5e165def5cc7bb288bff46b28d2eba9a",
      "tree": "bcc85f2ddfd452139a4667ac77d60588b2113fbf",
      "parents": [
        "88d20dc6037d9af5283be89bfc9f1a65e93213ad"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jun 03 06:28:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 06:28:35 2026 +0200"
      },
      "message": "Bump actions/checkout from 6.0.2 to 6.0.3 (#3093)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6.0.2...v6.0.3)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: 6.0.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "88d20dc6037d9af5283be89bfc9f1a65e93213ad",
      "tree": "64309a5962a3a6a7ad2c70763e394eb42858d766",
      "parents": [
        "1f3b8fad1ff075ad3487bce47e36178243e1d968"
      ],
      "author": {
        "name": "nanookclaw",
        "email": "nanook@agentmail.to",
        "time": "Sun May 31 14:09:06 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 31 14:09:06 2026 +0000"
      },
      "message": "docs: correct ImportFrom.level description (#3088)\n\nCo-authored-by: Nanook \u003cnanookclaw@users.noreply.github.com\u003e"
    },
    {
      "commit": "1f3b8fad1ff075ad3487bce47e36178243e1d968",
      "tree": "1637988920e17600a92c1a79f547ddda849c487c",
      "parents": [
        "d254bb9c6dfa1fc56ede24a610d1cb52055cd054"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Wed May 27 05:26:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 05:26:26 2026 +0200"
      },
      "message": "fix: avoid TypeError crash for functional Enum with non-string member (#3072)\n\n\n``infer_func_form`` filters whitespace out of member names with\n``\" \" not in attr``, assuming every attribute is a string. A functional\n``Enum`` call such as ``Enum(\"e\", (1,))`` yields an integer member name,\nmaking that check raise ``TypeError``. Such a definition is invalid, so\nraise ``UseInferenceDefault`` and let inference fall back instead.\n\nCloses #3068"
    },
    {
      "commit": "d254bb9c6dfa1fc56ede24a610d1cb52055cd054",
      "tree": "7d050458eba430a393b73be4564cf34f2b704ef2",
      "parents": [
        "4af7bce078a422aa9fe3ab0a6dfbf2676fd07a9c"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Wed May 27 05:25:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 05:25:22 2026 +0200"
      },
      "message": "Fix: avoid TypeError from getset descriptors on PyPy 7.3.22 (#3083)\n\nfix: avoid bootstrap crash on PyPy 7.3.22 (TypeError from getset descriptors)\n\nPyPy 7.3.22 changed the exception type raised when accessing certain\ngetset descriptors on the type (rather than an instance): e.g.\n\n    getattr(types.FunctionType, \u0027__text_signature__\u0027)\n\nnow raises TypeError(\"expected str, got getset_descriptor object\")\ninstead of AttributeError. PyPy 7.3.21 and CPython still raise\nAttributeError.\n\nInspectBuilder.object_build only caught AttributeError around the\ngetattr(obj, alias) call, so on PyPy 7.3.22 the new TypeError propagates\nout of _astroid_bootstrapping() and crashes any call into astroid at\nimport time (extract_node, parse, MANAGER.ast_from_module_name, ...).\nThis is what motivated pylint-dev/pylint#10999 to pin pypy-3.11-v7.3.20\non the maintenance/4.0.x CI.\n\nBroaden the except to also catch TypeError, treating it the same as the\nexisting \u0027skip this alias\u0027 path (attach_dummy_node). Kept narrow on\npurpose — only TypeError is added, not a bare Exception. CPython\nbehavior is unchanged because CPython still raises AttributeError.\n\nAdd a regression test that constructs a ModuleType subclass whose\n__getattr__ raises the exact PyPy 7.3.22 TypeError, and asserts\ninspect_build completes and attaches a dummy node for the alias.\n\nRefs pylint-dev/pylint#10999"
    },
    {
      "commit": "4af7bce078a422aa9fe3ab0a6dfbf2676fd07a9c",
      "tree": "51e549d855296cfd44a662ce32103425f1287cfb",
      "parents": [
        "9787d53a5e90848f1859a1cd5aa2ac88debb59bc"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue May 26 06:50:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 06:50:40 2026 +0200"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3084)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.13 → v0.15.14](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.13...v0.15.14)\n- [github.com/psf/black-pre-commit-mirror: 26.5.0 → 26.5.1](https://github.com/psf/black-pre-commit-mirror/compare/26.5.0...26.5.1)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9787d53a5e90848f1859a1cd5aa2ac88debb59bc",
      "tree": "732cace7b18a8fe9690369aa0922410a6aee6d1a",
      "parents": [
        "1e092757d393090f89d9b367cc0c2834bf68b440"
      ],
      "author": {
        "name": "Sai Asish Y",
        "email": "say.apm35@gmail.com",
        "time": "Mon May 25 00:13:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 09:13:29 2026 +0200"
      },
      "message": "Wrap walrus expressions in parens in as_string output (#3045)\n\n\nSigned-off-by: Sai Asish Y \u003csay.apm35@gmail.com\u003e\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "1e092757d393090f89d9b367cc0c2834bf68b440",
      "tree": "7be0197ddf1055ba9dd34572043cc7a46ba21125",
      "parents": [
        "55b0adcd51ffe2f93ab42389411d4c951770d644"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Sun May 24 21:43:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 21:43:48 2026 +0200"
      },
      "message": "fix: handle PEP 695 type parameters in helpers.object_type (#3082)\n\nPR #3058 changed generic_type_assigned_stmts to yield the TypeVar/\nTypeVarTuple/ParamSpec node itself instead of Const(None). As a result,\ninferring an expression like \u0027_T | None\u0027 inside \u0027def func[_T]: ...\u0027\nreached helpers._object_type with one of these new AST nodes, which it\ndidn\u0027t recognize, raising AssertionError(\"We don\u0027t handle \u003cclass\n\u0027astroid.nodes.node_classes.TypeVar\u0027\u003e currently\").\n\nA PEP 695 type parameter has no concrete type at static-analysis time,\nso yield util.Uninferable for these nodes. The binop inference path\nalready handles Uninferable operands gracefully.\n\nReported at https://github.com/pylint-dev/astroid/pull/3058#issuecomment-4528993032"
    },
    {
      "commit": "55b0adcd51ffe2f93ab42389411d4c951770d644",
      "tree": "cbc3a61d04bf334b234a692cf4c3188d2bb20755",
      "parents": [
        "e4ebd57d626a357ef4599288121958298589631a"
      ],
      "author": {
        "name": "jkmnt",
        "email": "git@firewood.fastmail.com",
        "time": "Sun May 24 18:13:08 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 17:13:08 2026 +0200"
      },
      "message": "Wrong inference for the `str(const)` (#2995)\n\n\nCloses #2994\n\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "e4ebd57d626a357ef4599288121958298589631a",
      "tree": "12cfaa1a7325750a07a073b608b2d72449f3c6fb",
      "parents": [
        "a7f7a7d552cb46c8d6ce51977893cf2a809ea624"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Sun May 24 10:34:09 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 10:34:09 2026 +0200"
      },
      "message": "fix: handle non-callable __class_getitem__ in ClassDef.getitem (#3073)\n\n\nWhen subscripting a class, ``getitem`` falls back to ``__class_getitem__``\nand assumes the resolved node is callable. If it instead resolves to a\nnon-callable node such as an ``AssignName`` (e.g. ``dataclasses.Field``,\nwhose ``__class_getitem__`` is assigned rather than ``def``-ined), calling\n``infer_call_result`` raised an ``AttributeError`` that escaped inference.\nRaise ``AstroidTypeError`` instead, matching ``getitem``\u0027s documented\ncontract.\n\nCloses #3064"
    },
    {
      "commit": "a7f7a7d552cb46c8d6ce51977893cf2a809ea624",
      "tree": "4b3dfdf0e49ac0dfa1e26bd01af82c242935477c",
      "parents": [
        "3258d5ff67d39b0a04383066f7a135aaf7edc422"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Sun May 24 09:23:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 09:23:16 2026 +0200"
      },
      "message": "fix: avoid uncaught TokenError when computing node positions (#3075)\n\n``RebuildVisitor._get_position_info`` tokenizes a slice of the source to\nlocate the keyword/name span of a class or function. On Python \u003c 3.12\n``tokenize.generate_tokens`` can raise ``TokenError`` for malformed input\n(e.g. an unterminated bracket), which escaped as an uncaught non-Astroid\nexception. Such a node now simply has no position information.\n\nCloses #2527"
    },
    {
      "commit": "3258d5ff67d39b0a04383066f7a135aaf7edc422",
      "tree": "2fdef71c732522b8beeb31ff1ad7f727ef6b6567",
      "parents": [
        "5007097c106843b0c9f31f039137d9b50075adfb"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Fri May 22 17:01:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 17:01:01 2026 +0200"
      },
      "message": "fix: avoid crash in dunder lookup with a non-class metaclass (#3070)\n\n``_class_lookup`` passed the result of ``ClassDef.metaclass()`` straight\nto ``_lookup_in_mro``, which calls ``ancestors()``. When a class declares\nan explicit metaclass that infers to a non-class node (e.g. a function),\nthat node has no MRO and the lookup crashed with an ``AttributeError``.\nTreat such a metaclass as if no special method was found.\n\nCloses #3063"
    },
    {
      "commit": "5007097c106843b0c9f31f039137d9b50075adfb",
      "tree": "9e73cf39acc6b2282061a1b78752bb2f22fdf8bf",
      "parents": [
        "400ccd7aa7467ea7cfc89caf3bf37be567f33f62"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Fri May 22 16:46:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 16:46:15 2026 +0200"
      },
      "message": "fix: avoid InferenceError crash in slots() for annotation-only __slots__ (#3074)\n\n``_islots`` checks for ``__slots__`` in ``locals`` and then infers it via\n``igetattr``. When ``__slots__`` is declared as a bare annotation with no\nvalue (e.g. ``__slots__: None``), it is present in ``locals`` but cannot\nbe inferred, so ``igetattr`` raised an ``InferenceError`` that escaped\n``slots()``. Treat such a ``__slots__`` as not inferable and return None.\n\nCloses #3067"
    },
    {
      "commit": "400ccd7aa7467ea7cfc89caf3bf37be567f33f62",
      "tree": "0f6ee28451bef5f4eb02effc70f72b902a632959",
      "parents": [
        "4ea0c82fdf5a0eced6f64e1494b348911bbf0121"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Mon May 18 22:49:19 2026 +0200"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Fri May 22 16:26:54 2026 +0200"
      },
      "message": "chore: pin setuptools\u003c82 unconditionally, drop pkg_resources importorskip\n\n``pkg_resources`` is required by\n``tests/testdata/python3/data/path_pkg_resources_1`` to declare its\nnamespace, independent of the Python version. setuptools 82.0.0 removes\n``pkg_resources`` entirely, so cap setuptools on every supported Python\nand drop the ``pytest.importorskip(\"pkg_resources\")`` workaround added\nin #3049 — preserving real test coverage rather than silently skipping.\n"
    },
    {
      "commit": "4ea0c82fdf5a0eced6f64e1494b348911bbf0121",
      "tree": "f5a36f9db022a7979c30494c3beb07013d061ddd",
      "parents": [
        "d704469e65e992f078be8f479b4e91462ba21490"
      ],
      "author": {
        "name": "Kyle D Kavanagh",
        "email": "kkavanagh@jumptrading.com",
        "time": "Sat Apr 18 08:46:15 2026 -0500"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Fri May 22 16:20:56 2026 +0200"
      },
      "message": "Fix TypeVarTuple ABC inference, fixes #10972\n"
    },
    {
      "commit": "d704469e65e992f078be8f479b4e91462ba21490",
      "tree": "801ef7d3c3ee9af3fb5272c5ed6923feb68191c6",
      "parents": [
        "37a5681e5a9514445d8cf2b437aa74e4bd0ff8bb"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Wed May 20 11:05:44 2026 +0200"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Fri May 22 16:16:12 2026 +0200"
      },
      "message": "fix: avoid DuplicateBasesError crash inferring malformed enum class\n\n``infer_enum_class`` iterates over ``node.mro()`` without guarding against\nan unresolvable MRO. A class with duplicate bases (e.g.\n``class C(enum.Enum, enum.Enum)``) made ``mro()`` raise\n``DuplicateBasesError``, which escaped the transform. Catch ``MroError``\nand leave such a malformed class untransformed.\n\nCloses #3065\n"
    },
    {
      "commit": "37a5681e5a9514445d8cf2b437aa74e4bd0ff8bb",
      "tree": "01bbe00f99c51e52fa794bbbe2ce5d37352fde3c",
      "parents": [
        "649ec7d37d1826a6c93d1c178339b2e3aaf818f5"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Fri May 22 16:10:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 16:10:28 2026 +0200"
      },
      "message": "perf: defer cold-path imports to shorten ``import astroid`` (#3062)\n\n* perf: defer the ``logging`` import to its cold path\n\n``logging`` was imported eagerly by ``modutils`` and ``raw_building``\nonly for a module-level ``logger \u003d logging.getLogger(__name__)``. The\nlogger is used solely when a module emits stderr/stdout while being\nimported -- a rare diagnostic path. Move the import and logger\ncreation inside the branches that actually log, so ``import astroid``\nno longer pulls ``logging`` and its ``traceback`` / ``weakref`` chain.\n\n* refactor: import astroid.typing under TYPE_CHECKING in exceptions\n\n``InferenceResult`` and ``SuccessfulInferenceResult`` are used only in\nannotations in ``exceptions``; with ``from __future__ import\nannotations`` already in effect they are never needed at runtime, so\nmove the import into the ``TYPE_CHECKING`` block.\n\n* perf: defer pprint imports used only in __str__/__repr__/repr_tree\n\n``pprint`` was imported eagerly by ``context``,\n``interpreter.objectmodel`` and ``nodes.node_ng`` solely to format\ndebug ``__str__`` / ``__repr__`` / ``repr_tree`` output. Move the\nimports into those methods so ``pprint`` is no longer pulled into\n``import astroid`` -- a normal run never formats a node for display.\n\n* Add ChangeLog entry for cold-path import deferral\n\n* test: cover InferenceContext.__str__\n\n``InferenceContext.__str__`` was not exercised by any test, so the\ndeferred ``import pprint`` it now performs showed up as uncovered.\nAdd a small test that renders an ``InferenceContext`` via ``str()``."
    },
    {
      "commit": "649ec7d37d1826a6c93d1c178339b2e3aaf818f5",
      "tree": "14fc6ad9360f8db6c4b65a0808ab1eed3b92607f",
      "parents": [
        "62393ee225980c462c55b3b2464f17c0776ccaa3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue May 19 07:48:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 07:48:26 2026 +0200"
      },
      "message": "Bump actions/create-github-app-token from 3.1.1 to 3.2.0 (#3060)\n\nBumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 3.1.1 to 3.2.0.\n- [Release notes](https://github.com/actions/create-github-app-token/releases)\n- [Changelog](https://github.com/actions/create-github-app-token/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/create-github-app-token/compare/1b10c78c7865c340bc4f6099eb2f838309f1e8c3...bcd2ba49218906704ab6c1aa796996da409d3eb1)\n\n---\nupdated-dependencies:\n- dependency-name: actions/create-github-app-token\n  dependency-version: 3.2.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "62393ee225980c462c55b3b2464f17c0776ccaa3",
      "tree": "387397d1d9f1fdce87178f1e7e68e60838ef7ba1",
      "parents": [
        "056f9fff5fb544b0830f49491f2f11d81935993a"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue May 19 07:45:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 07:45:37 2026 +0200"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3059)\n\nupdates:\n- [github.com/psf/black-pre-commit-mirror: 26.3.1 → 26.5.0](https://github.com/psf/black-pre-commit-mirror/compare/26.3.1...26.5.0)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "056f9fff5fb544b0830f49491f2f11d81935993a",
      "tree": "0e55383e15fb337327bb334787fc58b18f3b02e0",
      "parents": [
        "ec0b675967e6c2153901b7041257bf6e34c18a12"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Sat May 16 20:22:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 16 20:22:43 2026 +0200"
      },
      "message": "Apply pyupgrade fixes (UP031, UP032) after enabling UP in ruff fixable (#3055)\n\n\nConvert remaining %-formatting and .format() calls to f-strings now that\nthe UP rules are auto-fixable."
    },
    {
      "commit": "ec0b675967e6c2153901b7041257bf6e34c18a12",
      "tree": "7f08bda7719fc9e7452ef7d8ba0e698fc015a342",
      "parents": [
        "ac6f22bcb602509f6edf5df2b35ff10ba2620023"
      ],
      "author": {
        "name": "Jam Balaya",
        "email": "jambalaya.pyoncafe@outlook.jp",
        "time": "Sat May 16 21:56:20 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 16 12:56:20 2026 +0000"
      },
      "message": "Fix MemoryError when parsing pathological type comments (#3049)\n\nA type comment like ``# type: i{{{{{...`` with deeply nested braces causes\n``ast.parse`` to raise ``MemoryError`` while validating the type comment.\n``check_type_comment`` and ``check_function_type_comment`` only caught\n``SyntaxError``, so the error propagated and crashed module parsing.\n Also catch RecursionError in type-comment parsing\n\nTreat ``MemoryError`` and ``ValueError`` the same way as ``SyntaxError``:\nthe type comment is invalid, skip it.\n\nCloses #2993"
    },
    {
      "commit": "ac6f22bcb602509f6edf5df2b35ff10ba2620023",
      "tree": "27a5134e0370e9015241274f295c80ba58bc776f",
      "parents": [
        "4aaceee4919a278be778dd272b443f578d902ce6"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Sat May 16 12:48:13 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 16 12:48:13 2026 +0000"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3050)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.12 → v0.15.13](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.12...v0.15.13)\n- [github.com/pre-commit/mirrors-mypy: v1.20.2 → v2.1.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.20.2...v2.1.0)\n- [github.com/tox-dev/pyproject-fmt: v2.21.1 → v2.21.2](https://github.com/tox-dev/pyproject-fmt/compare/v2.21.1...v2.21.2)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "4aaceee4919a278be778dd272b443f578d902ce6",
      "tree": "65759086a06243a75ba6fd171a0d65938eaac529",
      "parents": [
        "3c9d1d9e78bb0096c8c55df96e6abcfb19e6aa32"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat May 16 14:41:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 16 14:41:10 2026 +0200"
      },
      "message": "Update coverage requirement from ~\u003d7.13 to ~\u003d7.14 (#3052)\n\nUpdates the requirements on [coverage](https://github.com/coveragepy/coveragepy) to permit the latest version.\n- [Release notes](https://github.com/coveragepy/coveragepy/releases)\n- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)\n- [Commits](https://github.com/coveragepy/coveragepy/compare/7.13.0...7.14.0)\n\n---\nupdated-dependencies:\n- dependency-name: coverage\n  dependency-version: 7.14.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3c9d1d9e78bb0096c8c55df96e6abcfb19e6aa32",
      "tree": "0c89bae2398476d3eb1881040816e897b4976a48",
      "parents": [
        "96c41339f36348e2a3048e2d85566cd95a7ace73"
      ],
      "author": {
        "name": "Sai Asish Y",
        "email": "say.apm35@gmail.com",
        "time": "Sat May 16 05:29:53 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 16 14:29:53 2026 +0200"
      },
      "message": "fix: handle Python 3.15 KW_ONLY and namespace .pth test behavior (#3047)\n\n\nSigned-off-by: SAY-5 \u003csay.apm35@gmail.com\u003e\nCo-authored-by: SAY-5 \u003cSAY-5@users.noreply.github.com\u003e\nCo-authored-by: Sai Asish Y \u003csaiasish.cnp@gmail.com\u003e\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "96c41339f36348e2a3048e2d85566cd95a7ace73",
      "tree": "96f1a533447fd0175aa53971520e76371a836eb1",
      "parents": [
        "e56ac290f41f2360e3442b05f285664beafd9020"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Tue May 12 21:57:41 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 21:57:41 2026 +0200"
      },
      "message": "perf: hoist obj_type.mro() out of subclass-check loop (#3051)\n\n`_object_type_is_subclass` was calling `obj_type.mro()` inside the loop\nover `class_seq`, recomputing C3 linearization for every candidate. The\nresult is path-independent here, so compute it once before the loop.\nThis is on the hot path for `isinstance`/`issubclass` inference."
    },
    {
      "commit": "e56ac290f41f2360e3442b05f285664beafd9020",
      "tree": "b4b9d6c2ae312318295e5d2d8609a5da65a36f77",
      "parents": [
        "3b4b7d437074f55ea0595ca3035d185e8704bb75"
      ],
      "author": {
        "name": "June",
        "email": "kimjune01@gmail.com",
        "time": "Tue May 12 12:39:49 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 21:39:49 2026 +0200"
      },
      "message": "test: add Subscript target coverage for starred crash fix (#3053)\n\n* fix: crash in starred_assigned_stmts with AssignAttr targets\n\n`_determine_starred_iteration_lookups` compared starred nodes via\n`.value.name`, which only exists on Name/AssignName nodes. When the\nstarred target is an attribute (e.g. `*o.attr`), `.value` is an\nAssignAttr which has no `.name` attribute, causing an AttributeError.\n\nReplace the name comparison with node identity (`element is starred`),\nwhich is both more correct (handles all target types) and simpler\n(avoids matching different starred nodes that share a name).\n\nCloses #2646\n\n* test: strengthen starred crash regression tests\n\nAdd coverage for both starred nodes in the AssignAttr crash case, and\na same-name identity test showing the fix correctly distinguishes\n`*a, (*a,)` where name comparison would match the wrong node.\nTrim changelog to user-visible behavior.\n\n* test: add Subscript target coverage for starred crash fix\n\nGemini review flagged that the crash also affected Subscript targets\n(e.g. *d[0]), not just AssignAttr. Add explicit test."
    },
    {
      "commit": "3b4b7d437074f55ea0595ca3035d185e8704bb75",
      "tree": "04c03b8ff9856ccb79bca0a27df0dcbe180cb3bd",
      "parents": [
        "53cd2243deb7edcaffa2feb8abb5c8f6c158af16"
      ],
      "author": {
        "name": "SAY-5",
        "email": "say.apm35@gmail.com",
        "time": "Mon May 04 19:11:32 2026 -0700"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Tue May 05 22:18:44 2026 +0200"
      },
      "message": "fix: filter clone init params in random.sample brain (#3043)\n\nModule.__init__ does not accept lineno/col_offset kwargs, so cloning a\nModule element via _clone_node_with_lineno raised TypeError. Filter the\ncandidate init params to those the target class actually accepts.\n\nCloses #3043\n\nSigned-off-by: SAY-5 \u003csay.apm35@gmail.com\u003e\n"
    },
    {
      "commit": "53cd2243deb7edcaffa2feb8abb5c8f6c158af16",
      "tree": "76274f4ba3a805d794c07ff59769a8a859a81914",
      "parents": [
        "6404a9eab50b5a1d58608a8481459694dda66cd2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 29 23:07:20 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 23:07:20 2026 +0200"
      },
      "message": "Update contributors-txt requirement from \u003e\u003d1.0.1 to \u003e\u003d1.0.2 (#3039)\n\nUpdates the requirements on [contributors-txt](https://github.com/Pierre-Sassoulas/contributors-txt) to permit the latest version.\n- [Release notes](https://github.com/Pierre-Sassoulas/contributors-txt/releases)\n- [Commits](https://github.com/Pierre-Sassoulas/contributors-txt/compare/v1.0.1...v1.0.2)\n\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "6404a9eab50b5a1d58608a8481459694dda66cd2",
      "tree": "58e048c81317e9459f16c6f73dc793f885876f15",
      "parents": [
        "bd08c3f80ea1165e3932c5d067d2368a845389e7"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue Apr 28 07:06:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 07:06:24 2026 +0200"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3041)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.11 → v0.15.12](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.11...v0.15.12)\n- [github.com/pre-commit/mirrors-mypy: v1.20.1 → v1.20.2](https://github.com/pre-commit/mirrors-mypy/compare/v1.20.1...v1.20.2)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bd08c3f80ea1165e3932c5d067d2368a845389e7",
      "tree": "c947f2ebea7f1ad68b9e4a2b0f35c107656640e1",
      "parents": [
        "7fe3057bc2864ccf18c524b5e85fe57a12f32ef6"
      ],
      "author": {
        "name": "Jacob Walls",
        "email": "jacobtylerwalls@gmail.com",
        "time": "Fri Apr 24 06:32:25 2026 -0400"
      },
      "committer": {
        "name": "Jacob Walls",
        "email": "jacobtylerwalls@gmail.com",
        "time": "Fri Apr 24 07:08:27 2026 -0400"
      },
      "message": "Bump astroid to 4.2.0b3, update changelog\n"
    },
    {
      "commit": "7fe3057bc2864ccf18c524b5e85fe57a12f32ef6",
      "tree": "56ca063edca0977924fb5fbcea724b5f9ed548c1",
      "parents": [
        "00477a9a9c625be33d3f07bffbdac5bfd7e1531c"
      ],
      "author": {
        "name": "Jacob Walls",
        "email": "jacobtylerwalls@gmail.com",
        "time": "Fri Apr 24 06:30:50 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 06:30:50 2026 -0400"
      },
      "message": "Cope with Python 3.15 change for ModuleNotFoundError (#3035)"
    },
    {
      "commit": "00477a9a9c625be33d3f07bffbdac5bfd7e1531c",
      "tree": "f108eb33a92611d4edee0a00ecf11dd729b82e95",
      "parents": [
        "341ef0a19c8f68e4b89c9ccafc535a66a59da0a4"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Thu Apr 23 20:47:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 20:47:13 2026 +0200"
      },
      "message": "Bump astroid to 4.2.0b2, update changelog (#3034)"
    },
    {
      "commit": "341ef0a19c8f68e4b89c9ccafc535a66a59da0a4",
      "tree": "081397dac6d0540393b359b6c868e5203683986e",
      "parents": [
        "0a80be06e6f49b095f7be99846fd88b3ce4be759"
      ],
      "author": {
        "name": "Copilot",
        "email": "198982749+Copilot@users.noreply.github.com",
        "time": "Thu Apr 23 08:14:41 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 08:14:41 2026 +0200"
      },
      "message": "Add Python 3.15 compatibility: CI, ByteString stub, and test fixes (#3033)\n\n* Add initial support for Python 3.15\n\n* Fix for `test_typing_object_notsubscriptable_3`\n\n---------\n\nCo-authored-by: Daniël van Noord \u003c13665637+DanielNoord@users.noreply.github.com\u003e"
    },
    {
      "commit": "0a80be06e6f49b095f7be99846fd88b3ce4be759",
      "tree": "7b1a1b5c2a82e04db8896193546b76663cec87db",
      "parents": [
        "447aaeb2aff8d4b7d63e35c778035af109a11b3d"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Apr 20 21:16:45 2026 +0000"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Mon Apr 20 23:58:46 2026 +0200"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.9 → v0.15.11](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.9...v0.15.11)\n- [github.com/pre-commit/mirrors-mypy: v1.20.0 → v1.20.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.20.0...v1.20.1)\n- [github.com/rbubley/mirrors-prettier: v3.8.1 → v3.8.3](https://github.com/rbubley/mirrors-prettier/compare/v3.8.1...v3.8.3)\n- [github.com/tox-dev/pyproject-fmt: v2.21.0 → v2.21.1](https://github.com/tox-dev/pyproject-fmt/compare/v2.21.0...v2.21.1)\n"
    },
    {
      "commit": "447aaeb2aff8d4b7d63e35c778035af109a11b3d",
      "tree": "9ea52ea9c13b380b539a8e1f74a90f30b5e0b562",
      "parents": [
        "7d1213ed8eac0169efe1e0aafc8ba002db46a1e6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 13 23:19:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 23:19:13 2026 +0200"
      },
      "message": "Bump actions/cache from 5.0.4 to 5.0.5 (#3029)\n\nBumps [actions/cache](https://github.com/actions/cache) from 5.0.4 to 5.0.5.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v5.0.4...v5.0.5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache\n  dependency-version: 5.0.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7d1213ed8eac0169efe1e0aafc8ba002db46a1e6",
      "tree": "2f05a2a299849ce6b0ad66969c47fcdaebd576d8",
      "parents": [
        "7b7dbe3d0e3640c99935fb4a44996328a9df5cf0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 13 13:51:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 13:51:35 2026 +0200"
      },
      "message": "Bump actions/create-github-app-token from 3.0.0 to 3.1.1 (#3028)\n\nCo-authored-by: Marc Mueller \u003c30130371+cdce8p@users.noreply.github.com\u003e\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "7b7dbe3d0e3640c99935fb4a44996328a9df5cf0",
      "tree": "ff61396f3d6bad248bfb565acf22c34d2d24d8fe",
      "parents": [
        "45f37305d4f7280cde2dcbb975b472f047588c57"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 13 13:23:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 13:23:42 2026 +0200"
      },
      "message": "Bump actions/upload-artifact from 7.0.0 to 7.0.1 (#3027)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.0 to 7.0.1.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v7.0.0...v7.0.1)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: 7.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "45f37305d4f7280cde2dcbb975b472f047588c57",
      "tree": "ac1baf865e50866c3e5ca10cfc84cf7e8327268a",
      "parents": [
        "33d1947a045339efa22a04bce010eeb2bf6598ae"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Wed Apr 08 16:55:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 16:55:01 2026 +0200"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3025)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.8 → v0.15.9](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.8...v0.15.9)\n- [github.com/pre-commit/mirrors-mypy: v1.19.1 → v1.20.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.19.1...v1.20.0)\n- [github.com/tox-dev/pyproject-fmt: v2.20.0 → v2.21.0](https://github.com/tox-dev/pyproject-fmt/compare/v2.20.0...v2.21.0)\n\nCo-authored-by: Marc Mueller \u003c30130371+cdce8p@users.noreply.github.com\u003e"
    },
    {
      "commit": "33d1947a045339efa22a04bce010eeb2bf6598ae",
      "tree": "19b7d25fce690e0bcd57c52734bc3c47ccab05e7",
      "parents": [
        "04b78da7074d2d8e8b8a1f2c09a34ef8a6fabcbb"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 08 14:47:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 14:47:38 2026 +0200"
      },
      "message": "Bump sigstore/gh-action-sigstore-python from 3.2.0 to 3.3.0 (#3020)"
    },
    {
      "commit": "04b78da7074d2d8e8b8a1f2c09a34ef8a6fabcbb",
      "tree": "253b6460adf79fedf6cff1e53884626a428f4e7e",
      "parents": [
        "0994342e964b22a10a9717d28595aba1fd2381ff"
      ],
      "author": {
        "name": "Joshix-1",
        "email": "57299889+Joshix-1@users.noreply.github.com",
        "time": "Tue Apr 07 23:27:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 23:27:02 2026 +0200"
      },
      "message": "fix infinite recursion (#3026)"
    },
    {
      "commit": "0994342e964b22a10a9717d28595aba1fd2381ff",
      "tree": "22639f6abf04fb498b14b62f6e047058d89459ea",
      "parents": [
        "bf12d8fc53ed2118952c7bcd745fa8a73debec5e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 06 20:02:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 20:02:51 2026 +0200"
      },
      "message": "Bump pylint-dev/backport from 2.1.7 to 2.1.8 (#3024)\n\nBumps [pylint-dev/backport](https://github.com/pylint-dev/backport) from 2.1.7 to 2.1.8.\n- [Release notes](https://github.com/pylint-dev/backport/releases)\n- [Commits](https://github.com/pylint-dev/backport/compare/35f69bb3064974a24ba7da019038cd616f09e66d...3adad52e5a8ba2ea731c32037442d507eed68b4c)\n\n---\nupdated-dependencies:\n- dependency-name: pylint-dev/backport\n  dependency-version: 2.1.8\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bf12d8fc53ed2118952c7bcd745fa8a73debec5e",
      "tree": "aec8fd87768a8278fa3361b5fd89dbad3b7c018e",
      "parents": [
        "d440a5f5da3878e46b4c41aad2c4bfb6f410fb7f"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Mar 30 21:40:16 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 21:40:16 2026 +0000"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3021)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.7 → v0.15.8](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.7...v0.15.8)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d440a5f5da3878e46b4c41aad2c4bfb6f410fb7f",
      "tree": "e38b356e7073488093d98b47baf5832713dc1637",
      "parents": [
        "5162c4bb7851fa52d2457772866b822208e99a68"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 30 21:33:41 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 21:33:41 2026 +0200"
      },
      "message": "Bump codecov/codecov-action from 5 to 6 (#3019)\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5 to 6.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/v5...v6)\n\n---\nupdated-dependencies:\n- dependency-name: codecov/codecov-action\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5162c4bb7851fa52d2457772866b822208e99a68",
      "tree": "5a7ab465b7a2f25fda7e053c03ec2ef21bc702af",
      "parents": [
        "b45f2c3d0532cd6ee747fc0e4c1a3053ea703784"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Mar 23 21:38:28 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 21:38:28 2026 +0000"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3017)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.6 → v0.15.7](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.6...v0.15.7)\n- [github.com/tox-dev/pyproject-fmt: v2.19.0 → v2.20.0](https://github.com/tox-dev/pyproject-fmt/compare/v2.19.0...v2.20.0)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b45f2c3d0532cd6ee747fc0e4c1a3053ea703784",
      "tree": "402627a0c5120a39b06cc217914dc7a0c1ba82fb",
      "parents": [
        "87aef845dc8f9e5892099759b89e08959167ad1c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 23 21:27:32 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 21:27:32 2026 +0100"
      },
      "message": "Bump actions/cache from 5.0.3 to 5.0.4 (#3014)\n\nBumps [actions/cache](https://github.com/actions/cache) from 5.0.3 to 5.0.4.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v5.0.3...v5.0.4)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache\n  dependency-version: 5.0.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "87aef845dc8f9e5892099759b89e08959167ad1c",
      "tree": "09ce1636bbb520018d6683e1f6f9ee53251cf6df",
      "parents": [
        "b87f531a4ab02039faf556dd23a52bb8ef6a97d3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 23 21:26:44 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 21:26:44 2026 +0100"
      },
      "message": "Bump pylint-dev/backport from 2.1.6 to 2.1.7 (#3015)\n\nBumps [pylint-dev/backport](https://github.com/pylint-dev/backport) from 2.1.6 to 2.1.7.\n- [Release notes](https://github.com/pylint-dev/backport/releases)\n- [Commits](https://github.com/pylint-dev/backport/compare/e071919112ee369aaf4453465fa5037ac25cdd2d...35f69bb3064974a24ba7da019038cd616f09e66d)\n\n---\nupdated-dependencies:\n- dependency-name: pylint-dev/backport\n  dependency-version: 2.1.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b87f531a4ab02039faf556dd23a52bb8ef6a97d3",
      "tree": "f8ee5b21916b4d702308d84d07f17787d9e996d7",
      "parents": [
        "0a8c390a57b7913a650cc23c84e7e2af501113f1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 23 21:26:15 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 21:26:15 2026 +0100"
      },
      "message": "Update pytest-cov requirement from ~\u003d7.0 to ~\u003d7.1 (#3016)\n\nUpdates the requirements on [pytest-cov](https://github.com/pytest-dev/pytest-cov) to permit the latest version.\n- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0)\n\n---\nupdated-dependencies:\n- dependency-name: pytest-cov\n  dependency-version: 7.1.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0a8c390a57b7913a650cc23c84e7e2af501113f1",
      "tree": "97b0a0a69581263dde458b6d931159436c2eaa5e",
      "parents": [
        "4ab9cab37dd454407424646026963c5828915479",
        "dae321e2af6d7599e2dd250fef800b8f38bff863"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Mon Mar 23 09:08:31 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 09:08:31 2026 +0100"
      },
      "message": "Bump astroid to 4.2.0b1, update changelog (#3013)"
    },
    {
      "commit": "dae321e2af6d7599e2dd250fef800b8f38bff863",
      "tree": "97b0a0a69581263dde458b6d931159436c2eaa5e",
      "parents": [
        "4ab9cab37dd454407424646026963c5828915479"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 23:21:09 2026 +0100"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 23:21:09 2026 +0100"
      },
      "message": "Bump astroid to 4.2.0b1, update changelog\n"
    },
    {
      "commit": "4ab9cab37dd454407424646026963c5828915479",
      "tree": "bc908b01562760fb686eda9fd4997c3844721137",
      "parents": [
        "8532118bb5aff6ae662856473bb4c476cb3f3490",
        "f0cb44a286ec18bd0da0401705e42ec3b1886586"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 22:57:49 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 22 22:57:49 2026 +0100"
      },
      "message": "Post 4.1.2 (#3012)"
    },
    {
      "commit": "f0cb44a286ec18bd0da0401705e42ec3b1886586",
      "tree": "ab7c0b33cd32d293a4e9256f00ac3a736318ea96",
      "parents": [
        "d131497970a7eb6e5e13ae8f4ba92b7b98a3fe32"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 22:17:07 2026 +0100"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 22:17:07 2026 +0100"
      },
      "message": "Fix changelog\n"
    },
    {
      "commit": "8532118bb5aff6ae662856473bb4c476cb3f3490",
      "tree": "e044e7470b082a06188cbf5f989c14a8c8a14c44",
      "parents": [
        "4d84bc2adfc72aa8ba3cb27753fdc702cdcb7ec3"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Sun Mar 22 17:31:08 2026 +0100"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 20:57:17 2026 +0100"
      },
      "message": "Remove deprecated `is_standard_module()` from modutils\n\nThis function has been deprecated in favor of `is_stdlib_module()` and\n`module_in_path()`. Remove it along with the now-unused `warnings`\nimport and the `IsStandardModuleTest` test class.\n"
    },
    {
      "commit": "4d84bc2adfc72aa8ba3cb27753fdc702cdcb7ec3",
      "tree": "f5822ec9a0f12277ea316fac0043ea1c267087b1",
      "parents": [
        "e33dec4998e4770ed5e3531d40f2e20a05ac855c"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Sun Mar 22 17:25:26 2026 +0100"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 20:57:17 2026 +0100"
      },
      "message": "Remove the rec argument from \u0027find_argname\u0027 as promised\n\nThe `rec` parameter and `DEPRECATED_ARGUMENT_DEFAULT` sentinel were\ndeprecated since astroid 3.1. Remove them now that we\u0027re on 4.2.\n"
    },
    {
      "commit": "e33dec4998e4770ed5e3531d40f2e20a05ac855c",
      "tree": "92c738cd4609dfd4679af4c2e972baf98cfabfcc",
      "parents": [
        "107a1237f36cc86fa64a4f46f879042bcb62ee29"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Mon Oct 27 21:46:04 2025 +0100"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 20:57:17 2026 +0100"
      },
      "message": "Remove \u0027_instancecheck\u0027 from the codebase as promised for astroid 2.0\n"
    },
    {
      "commit": "107a1237f36cc86fa64a4f46f879042bcb62ee29",
      "tree": "dedf210100ab47c20b7a251eeb9a1be3c9748fbf",
      "parents": [
        "c5d140d41e114832879f45c44ad9409cd9dc9b5a"
      ],
      "author": {
        "name": "Pierre Sassoulas",
        "email": "pierre.sassoulas@gmail.com",
        "time": "Mon Oct 27 21:41:34 2025 +0100"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 20:57:17 2026 +0100"
      },
      "message": "Remove safe_infer import from astroid.helpers\n"
    },
    {
      "commit": "d131497970a7eb6e5e13ae8f4ba92b7b98a3fe32",
      "tree": "6dd02cafdd585e3c6bb01520763d761b378fcf0b",
      "parents": [
        "c5d140d41e114832879f45c44ad9409cd9dc9b5a",
        "91dac1330a52c8e606f18720d02667d49cdce8bd"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 20:24:55 2026 +0100"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 20:24:55 2026 +0100"
      },
      "message": "Merge remote-tracking branch \u0027upstream/maintenance/4.1.x\u0027 into post-4.1.2\n"
    },
    {
      "commit": "91dac1330a52c8e606f18720d02667d49cdce8bd",
      "tree": "a4007a583cdc7aaa6a73c244d1e71da7a719040d",
      "parents": [
        "796eba878e3b1767bc817298d0243e1d1c7c0d21"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 22 16:06:01 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 22 16:06:01 2026 +0100"
      },
      "message": "Bump astroid to 4.1.2, update changelog (#3011)\n\n* Fix contributors.txt and upgrade lib\n\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "c5d140d41e114832879f45c44ad9409cd9dc9b5a",
      "tree": "81a27946995bb75aa1900296aaa54110ab564d08",
      "parents": [
        "723fc332d268d8cb9e216e7278bfc6e4c148b0dc"
      ],
      "author": {
        "name": "sergiochan",
        "email": "yuheng9211@qq.com",
        "time": "Fri Mar 20 09:34:39 2026 -0700"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sat Mar 21 18:38:55 2026 +0100"
      },
      "message": "helpers: simplify Uninferable type error message\n"
    },
    {
      "commit": "723fc332d268d8cb9e216e7278bfc6e4c148b0dc",
      "tree": "0dd4e9ae74c597a2e39bfe754caf575af900ad03",
      "parents": [
        "b4824be66a1bbae8addec815eed98510373d9616"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sat Mar 21 18:36:19 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 21 18:36:19 2026 +0100"
      },
      "message": "Make `else` its own scope and standardize behaviour of `block_range`"
    },
    {
      "commit": "b4824be66a1bbae8addec815eed98510373d9616",
      "tree": "4ba5f54caad8abecc83b2c3f1f6d56e10f4f51dd",
      "parents": [
        "fb3e1f9598431f49001242b408f24a0ad381060b"
      ],
      "author": {
        "name": "Marc Mueller",
        "email": "30130371+cdce8p@users.noreply.github.com",
        "time": "Fri Mar 20 17:24:15 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 17:24:15 2026 +0100"
      },
      "message": "Skip deployment for backport job (#3009)"
    },
    {
      "commit": "fb3e1f9598431f49001242b408f24a0ad381060b",
      "tree": "0342acc1d7e30d6f07a832a90736b0190fa6c105",
      "parents": [
        "c7e8612ccaedb7987e7aab695e1864882c13a101"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 16 18:21:07 2026 +0000"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Tue Mar 17 22:02:32 2026 +0100"
      },
      "message": "Bump actions/create-github-app-token from 2.2.1 to 3.0.0\n\nBumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.2.1 to 3.0.0.\n- [Release notes](https://github.com/actions/create-github-app-token/releases)\n- [Commits](https://github.com/actions/create-github-app-token/compare/29824e69f54612133e76f7eaac726eef6c875baf...f8d387b68d61c58ab83c6c016672934102569859)\n\n---\nupdated-dependencies:\n- dependency-name: actions/create-github-app-token\n  dependency-version: 3.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "c7e8612ccaedb7987e7aab695e1864882c13a101",
      "tree": "1fac1f7e405629d226d7d7bf4fa3878661db35e6",
      "parents": [
        "1f5dbc88669a3f3a4a1f2584a22d3c1b378e11f1"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Mar 16 22:24:31 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 22:24:31 2026 +0000"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3008)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.5 → v0.15.6](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.5...v0.15.6)\n- [github.com/psf/black-pre-commit-mirror: 26.3.0 → 26.3.1](https://github.com/psf/black-pre-commit-mirror/compare/26.3.0...26.3.1)\n- [github.com/tox-dev/pyproject-fmt: v2.16.2 → v2.19.0](https://github.com/tox-dev/pyproject-fmt/compare/v2.16.2...v2.19.0)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1f5dbc88669a3f3a4a1f2584a22d3c1b378e11f1",
      "tree": "87457ffbe24196dd4d40b9da9b1557159cdfb8a6",
      "parents": [
        "83b6ddd37f427c399eb435b7a01e1f6653f2a007"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 16 20:12:11 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 20:12:11 2026 +0100"
      },
      "message": "Bump actions/download-artifact from 8.0.0 to 8.0.1 (#3004)\n\nBumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.0 to 8.0.1.\n- [Release notes](https://github.com/actions/download-artifact/releases)\n- [Commits](https://github.com/actions/download-artifact/compare/v8.0.0...v8.0.1)\n\n---\nupdated-dependencies:\n- dependency-name: actions/download-artifact\n  dependency-version: 8.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "83b6ddd37f427c399eb435b7a01e1f6653f2a007",
      "tree": "da23440f685ef04429e5ed9ac56d4e44746acf67",
      "parents": [
        "a0488ceab0436dd7fac738098b3ee0f05a485a15"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 16 20:11:51 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 20:11:51 2026 +0100"
      },
      "message": "Bump pylint-dev/backport from 2.1.5 to 2.1.6 (#3005)\n\nBumps [pylint-dev/backport](https://github.com/pylint-dev/backport) from 2.1.5 to 2.1.6.\n- [Release notes](https://github.com/pylint-dev/backport/releases)\n- [Commits](https://github.com/pylint-dev/backport/compare/964024cacb774019138fb67254342bec9cef4934...e071919112ee369aaf4453465fa5037ac25cdd2d)\n\n---\nupdated-dependencies:\n- dependency-name: pylint-dev/backport\n  dependency-version: 2.1.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a0488ceab0436dd7fac738098b3ee0f05a485a15",
      "tree": "b79afac323485ee2862165d86fedd9516a8c602f",
      "parents": [
        "9b75c6e1967537ee5e3e7126e59c996ec8f446cc"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue Mar 10 06:14:43 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 06:14:43 2026 +0000"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3003)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.4 → v0.15.5](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.4...v0.15.5)\n- [github.com/psf/black-pre-commit-mirror: 26.1.0 → 26.3.0](https://github.com/psf/black-pre-commit-mirror/compare/26.1.0...26.3.0)\n\nCo-authored-by: Pierre Sassoulas \u003cpierre.sassoulas@gmail.com\u003e"
    },
    {
      "commit": "9b75c6e1967537ee5e3e7126e59c996ec8f446cc",
      "tree": "d0ddf8e4dc156d15c769ef4d1fb3cecb766e646a",
      "parents": [
        "a59574c3fd3c7a67b68f4aaede4b9b9f8154495b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 10 07:01:09 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 07:01:09 2026 +0100"
      },
      "message": "Bump pylint-dev/backport from 2.1.3 to 2.1.5 (#3002)\n\nBumps [pylint-dev/backport](https://github.com/pylint-dev/backport) from 2.1.3 to 2.1.5.\n- [Release notes](https://github.com/pylint-dev/backport/releases)\n- [Commits](https://github.com/pylint-dev/backport/compare/6accae9e09c5ad1bc3a0b56adf37c45357e7bcdc...964024cacb774019138fb67254342bec9cef4934)\n\n---\nupdated-dependencies:\n- dependency-name: pylint-dev/backport\n  dependency-version: 2.1.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "796eba878e3b1767bc817298d0243e1d1c7c0d21",
      "tree": "16a5d34e6dca81d6019a074ffffd14c2d8c9a454",
      "parents": [
        "ca814f0d7106a24f5d2b101ee7aaabaad3428b61"
      ],
      "author": {
        "name": "doctorcolossus",
        "email": "731937+doctorcolossus@users.noreply.github.com",
        "time": "Sun Mar 08 11:42:23 2026 +0200"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sun Mar 08 10:50:47 2026 +0100"
      },
      "message": "objectmodel: fix crash analyzing property fset in generic classes with type annotations (#2997)\n\n* objectmodel: fix AnnAssign has no attribute \u0027name\u0027\n\nThe `find_setter` function previously searched through all child nodes looking for nodes with a name matching the property function, then checked for `.setter` decorators. This caused a crash when encountering `AnnAssign` nodes (like type hints) which don\u0027t have a \u0027name\u0027 attribute.\n\nInstead, search only through `FunctionDef` and `AsyncFunctionDef` nodes in the class body, checking their decorators directly. This is more semantically correct (setters are always functions) and avoids the crash on non-function nodes.\n\nFixes #2996.\n\n(cherry picked from commit a59574c3fd3c7a67b68f4aaede4b9b9f8154495b)\n"
    },
    {
      "commit": "a59574c3fd3c7a67b68f4aaede4b9b9f8154495b",
      "tree": "e7c0266c4f915bf9dfef633883c4cf06ac39a084",
      "parents": [
        "26f3e6081bae1873e3a1a6aa67d9e7a5dfe5c581"
      ],
      "author": {
        "name": "doctorcolossus",
        "email": "731937+doctorcolossus@users.noreply.github.com",
        "time": "Sun Mar 08 11:42:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 08 10:42:23 2026 +0100"
      },
      "message": "objectmodel: fix crash analyzing property fset in generic classes with type annotations (#2997)\n\n* objectmodel: fix AnnAssign has no attribute \u0027name\u0027\n\nThe `find_setter` function previously searched through all child nodes looking for nodes with a name matching the property function, then checked for `.setter` decorators. This caused a crash when encountering `AnnAssign` nodes (like type hints) which don\u0027t have a \u0027name\u0027 attribute.\n\nInstead, search only through `FunctionDef` and `AsyncFunctionDef` nodes in the class body, checking their decorators directly. This is more semantically correct (setters are always functions) and avoids the crash on non-function nodes.\n\nFixes #2996."
    },
    {
      "commit": "ca814f0d7106a24f5d2b101ee7aaabaad3428b61",
      "tree": "8351bd8cfc134db2b764b18e61f6875b066e97a7",
      "parents": [
        "75938774dfaff2e062abd519a82670a9bc19fbc0"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sat Mar 07 22:53:06 2026 +0100"
      },
      "committer": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sat Mar 07 23:00:30 2026 +0100"
      },
      "message": "Update CI workflow to include maintenance branch (#2999)\n\n(cherry picked from commit 26f3e6081bae1873e3a1a6aa67d9e7a5dfe5c581)\n"
    },
    {
      "commit": "26f3e6081bae1873e3a1a6aa67d9e7a5dfe5c581",
      "tree": "05a14e788d137e8cc2b5ea7dc65514bbdbf1987e",
      "parents": [
        "6cddfc8c498818b14c78f6b58ec1e72f72444c68"
      ],
      "author": {
        "name": "Daniël van Noord",
        "email": "13665637+DanielNoord@users.noreply.github.com",
        "time": "Sat Mar 07 22:53:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 07 22:53:06 2026 +0100"
      },
      "message": "Update CI workflow to include maintenance branch (#2999)"
    },
    {
      "commit": "75938774dfaff2e062abd519a82670a9bc19fbc0",
      "tree": "8b3228f3f57c83a37689b2c85c96838ccd6204dd",
      "parents": [
        "3f63f905cb2f2e01cdf11451d1ec7733239adbea"
      ],
      "author": {
        "name": "pylint-backport[bot]",
        "email": "212256041+pylint-backport[bot]@users.noreply.github.com",
        "time": "Sat Mar 07 12:52:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 07 12:52:06 2026 +0100"
      },
      "message": "[Backport maintenance/4.1.x] Fix cyclic inference by constraints (#2998)\n\nFix cyclic inference by constraints (#2984)\n\n(cherry picked from commit 1e683cc98cb7d3f6b5d8eb32390a6aea85e9111e)\n\nCo-authored-by: Zen Lee \u003c53538590+zenlyj@users.noreply.github.com\u003e"
    },
    {
      "commit": "6cddfc8c498818b14c78f6b58ec1e72f72444c68",
      "tree": "b5e40418d188a176e58316864e25daef0339ecce",
      "parents": [
        "5e45a16eafe64d3b24aeb8c58bf9ba73be5598ba"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Sat Mar 07 12:43:54 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 07 12:43:54 2026 +0100"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#2991)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.2 → v0.15.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.2...v0.15.4)"
    }
  ],
  "next": "5e45a16eafe64d3b24aeb8c58bf9ba73be5598ba"
}
