)]}'
{
  "log": [
    {
      "commit": "3823062f1296242fe1ac620834540ffae4eba488",
      "tree": "24cc3bec59e91eabdca1a90b5ba59fc0ea4c58cc",
      "parents": [
        "69a9729a6879b37cee4930c85017da5dbc5fb6dd"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu May 07 09:59:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 09:59:07 2026"
      },
      "message": "update dev -- notably mypy 2.0 (#1553)"
    },
    {
      "commit": "69a9729a6879b37cee4930c85017da5dbc5fb6dd",
      "tree": "12a0289fd285a0ed4f42d5fbcafd9d2e84060ce4",
      "parents": [
        "87b7b4ae050cd75469c5d834172bce5299fa300b"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat May 02 09:04:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 09:04:12 2026"
      },
      "message": "update dev (#1552)"
    },
    {
      "commit": "87b7b4ae050cd75469c5d834172bce5299fa300b",
      "tree": "9ad2a614674eadf298a7396bc10afc8fc778efaa",
      "parents": [
        "0f758fe54a8742110f730ebbaf146e79f3937c8d"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Apr 29 06:08:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 06:08:12 2026"
      },
      "message": "docs: build on 3.14 (#1550)\n\n* docs: build on 3.14 and rely on presence of uv\n\n* Add sphinx config\n\n* There\u0027s no uv :(\n\n* What is even happening"
    },
    {
      "commit": "0f758fe54a8742110f730ebbaf146e79f3937c8d",
      "tree": "65a7bd51c0cd75dff4743b163710868facf7ccd5",
      "parents": [
        "57b314c0dc8e0b80c0ed8f61c0be81965137ea41"
      ],
      "author": {
        "name": "Cristian Le",
        "email": "github@lecris.me",
        "time": "Thu Apr 16 20:20:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 20:20:58 2026"
      },
      "message": "Expose converter as a decorator (#1541)\n\n* Expose converter as a decorator\n\n* Update docs/init.md\n\n* Update docs/init.md\n\n* Update src/attr/_make.py\n\n* Update src/attr/_make.py\n\n* Update src/attr/_make.py\n\n* Add missing import\n\n---------\n\nCo-authored-by: Hynek Schlawack \u003chs@ox.cx\u003e"
    },
    {
      "commit": "57b314c0dc8e0b80c0ed8f61c0be81965137ea41",
      "tree": "dd95d51d876800d318386898e673511aa1567917",
      "parents": [
        "eca2ff52a9412feeafed50db1c4ed85a68a04ad7"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Apr 14 05:37:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 05:37:23 2026"
      },
      "message": "Work around flaking mypy test (#1546)\n\nSeems like Pytest 9\u0027s new caching is confusing it."
    },
    {
      "commit": "eca2ff52a9412feeafed50db1c4ed85a68a04ad7",
      "tree": "49de0a42c59810dec8a7131427dc231043d8b5c6",
      "parents": [
        "834136e8f137d4dcc42b3c01f646a38df860ecd4"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Apr 14 05:28:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 05:28:06 2026"
      },
      "message": "update dev (#1545)"
    },
    {
      "commit": "834136e8f137d4dcc42b3c01f646a38df860ecd4",
      "tree": "dc1200ff68f614f09909e90c35a6b4fd957681af",
      "parents": [
        "f0e420b71af1a5cd5dbf43efd1a42aece6ce8f4e"
      ],
      "author": {
        "name": "Cristian Le",
        "email": "github@lecris.me",
        "time": "Mon Apr 13 16:51:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 16:51:16 2026"
      },
      "message": "Update mypy to 1.20.1 (#1542)\n\n* Update mypy to 1.20.1\n\n* Adjust tests for the new mypy"
    },
    {
      "commit": "f0e420b71af1a5cd5dbf43efd1a42aece6ce8f4e",
      "tree": "fe78294828f687095a55f800dfee17a140121d5e",
      "parents": [
        "20734d9cc6e4673c40e4a33bfa2bfaef946533d8"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue Apr 07 05:30:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 05:30:48 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#1538)\n\n* [pre-commit.ci] pre-commit autoupdate\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\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "20734d9cc6e4673c40e4a33bfa2bfaef946533d8",
      "tree": "1d1d24debce818196853a652fc549fe5ecfd3e48",
      "parents": [
        "9c2b7ed54b134dc1c3f0995fcb71131ebdd1450e"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Mar 30 18:18:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 18:18:34 2026"
      },
      "message": "Update dev (#1537)"
    },
    {
      "commit": "9c2b7ed54b134dc1c3f0995fcb71131ebdd1450e",
      "tree": "4b9cac997776c8617039db66a872252d93c50c02",
      "parents": [
        "0cb5cd692b09e1e95993f7f3389b8664e53b1648"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Mar 30 17:09:52 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Mar 30 17:09:52 2026"
      },
      "message": "Add Klaviyo\n"
    },
    {
      "commit": "0cb5cd692b09e1e95993f7f3389b8664e53b1648",
      "tree": "a35d86b1ed1199b4b83952184823f6092bae0a88",
      "parents": [
        "4885c5b1af4e9fa4d97b6bffa2fb78a2efa5f047"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Mar 29 06:31:00 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Mar 29 06:31:00 2026"
      },
      "message": "Consistent endashes\n"
    },
    {
      "commit": "4885c5b1af4e9fa4d97b6bffa2fb78a2efa5f047",
      "tree": "c7934cabd94da2f552c806f8c1d11105cb227939",
      "parents": [
        "25b74d6a4274d938b1ef15a4df658ad5d2c92310"
      ],
      "author": {
        "name": "Carlton Gibson",
        "email": "carlton.gibson@noumenal.es",
        "time": "Fri Mar 27 10:14:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 10:14:01 2026"
      },
      "message": "docs: use modern field API in \u0027boilerplate\u0027 section. (#1535)\n\n* docs: use modern field API in \u0027boilerplate\u0027 section.\n\n* Adjust for review comment\n\n* Tweak to second sentence.\n\n* Apply suggestion from @hynek\n\n---------\n\nCo-authored-by: Hynek Schlawack \u003chs@ox.cx\u003e"
    },
    {
      "commit": "25b74d6a4274d938b1ef15a4df658ad5d2c92310",
      "tree": "a246205900dd25910dadc02ed00642f5b278695b",
      "parents": [
        "caae397b596cab0e58b23eb83de3894581033e1e"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Aug 03 14:44:20 2024"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Mar 19 15:07:30 2026"
      },
      "message": "Actually start new development cycle\n"
    },
    {
      "commit": "caae397b596cab0e58b23eb83de3894581033e1e",
      "tree": "f9ddc6cb8c5fbb73b493414776231565835acbae",
      "parents": [
        "7bfc49e9b22d5ba25b6e429524c3d49fee27cb36"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Mar 19 14:15:18 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Mar 19 14:15:18 2026"
      },
      "message": "Start new development cycle\n"
    },
    {
      "commit": "7bfc49e9b22d5ba25b6e429524c3d49fee27cb36",
      "tree": "31beb3550ee7198eba22b862471ad6ea7bfb16d2",
      "parents": [
        "31e02869da10824b492c378c1dc87ccc720ee5ad"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Mar 19 14:06:02 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Mar 19 14:06:02 2026"
      },
      "message": "Prepare 26.1.0\n"
    },
    {
      "commit": "31e02869da10824b492c378c1dc87ccc720ee5ad",
      "tree": "611945be1b4b6f815d56b9d795aaef22a8278a4e",
      "parents": [
        "48b8611c27779811d161200e17de8da24aae7feb"
      ],
      "author": {
        "name": "Victor Stinner",
        "email": "vstinner@python.org",
        "time": "Wed Mar 18 13:58:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 13:58:41 2026"
      },
      "message": "Update test_validators.py for Python 3.15a7 (#1530)\n\nmatches_re() error message changed in Python 3.15 alpha 7 with the\nintroduction of re.prefixmatch()."
    },
    {
      "commit": "48b8611c27779811d161200e17de8da24aae7feb",
      "tree": "c0b4e0b321bc8ca48ce60d993aea211bbfcc2be1",
      "parents": [
        "3a68d4913221abc6f8ad3be50937f7ae49300a98"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Mar 14 17:51:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 14 17:51:51 2026"
      },
      "message": "Add instance support to attrs.fields() (#1529)\n\n* Add instance support to attrs.fields()\n\nfixes #1400\n\n* fix pr#"
    },
    {
      "commit": "3a68d4913221abc6f8ad3be50937f7ae49300a98",
      "tree": "144284c38ef374563cec0b322319518f48795f26",
      "parents": [
        "a572c3a4c558a8b9b48cf989fcd956ab1a279439"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Mar 14 14:51:25 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Mar 14 14:51:58 2026"
      },
      "message": "dev: document missing git tags failure mode\n\nfixes #1490\n\nCo-authored-by: Aniruddha Saha \u003c9413090+ani0075saha@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "a572c3a4c558a8b9b48cf989fcd956ab1a279439",
      "tree": "5e7e7a30ec2862862cf3ef4f327b92b368b2a4c5",
      "parents": [
        "af9c510912ce604a94896cc35c27368d5baf6ae6"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Mar 14 14:33:41 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Mar 14 14:33:41 2026"
      },
      "message": "Allow field(on_setattr\u003dNO_OP) on frozen classes\n"
    },
    {
      "commit": "af9c510912ce604a94896cc35c27368d5baf6ae6",
      "tree": "cfba3915721207fe51a2debd9078d243b89f555d",
      "parents": [
        "ab7f8b2f4c0f747d5b1575247ce35e5adaad182e"
      ],
      "author": {
        "name": "Kadir Can Ozden",
        "email": "101993364+bysiber@users.noreply.github.com",
        "time": "Sat Mar 14 14:23:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 14 14:23:53 2026"
      },
      "message": "Fix validators.disabled() to save/restore state on nesting (#1513)\n\n* Fix validators.disabled() to save/restore previous state on nesting\n\n* Add news fragment\n\n* Add test\n\n* Add versionchanged tag\n\n---------\n\nCo-authored-by: Hynek Schlawack \u003chs@ox.cx\u003e"
    },
    {
      "commit": "ab7f8b2f4c0f747d5b1575247ce35e5adaad182e",
      "tree": "92d3bb9ff395948eca3ef4b4e30084ff084e814e",
      "parents": [
        "ce89f5d11feb0805da9ed10bb165238cc959f1bb"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Mar 14 13:18:05 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Mar 14 13:18:05 2026"
      },
      "message": "update dev\n"
    },
    {
      "commit": "ce89f5d11feb0805da9ed10bb165238cc959f1bb",
      "tree": "7fda7cabe8e5f7d36b7715a16013f9f2a2b16301",
      "parents": [
        "eccd966d80aff5196efc959316961cfa780439f9"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Mar 14 13:14:10 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Mar 14 13:14:10 2026"
      },
      "message": "Fix message passing in frozen errors\n\nFollow common exception workflows instead of working around it.\n\nfixes #1514\n"
    },
    {
      "commit": "eccd966d80aff5196efc959316961cfa780439f9",
      "tree": "5dc47922cb282f9be2214b2c381ab93bb5de7e00",
      "parents": [
        "e92fe52dfe1eb07167e6473724c5a8ada978add0"
      ],
      "author": {
        "name": "Finite State Machine",
        "email": "38001514+finite-state-machine@users.noreply.github.com",
        "time": "Sat Mar 14 13:04:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 14 13:04:04 2026"
      },
      "message": "Fix `optional` validator to accept tuples of len \u003e 1 (#1496)\n\n* Fix `optional` validator to accept tuples of len \u003e 1\n\n* Add changelog\n\n* Add `optional` validator over 2-tuple test case to `baseline.py`\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Work around `ty` false positive `invalid-argument-type`\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Revert \"fixes\" from pre-commit.com hooks [skip pre-commit.ci]\n\nThis reverts commit 5b413827365559bac9cb7b72e0b75a0ce4328772.\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Silence ty\n\nref https://github.com/astral-sh/ty/issues/3016\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Hynek Schlawack \u003chs@ox.cx\u003e"
    },
    {
      "commit": "e92fe52dfe1eb07167e6473724c5a8ada978add0",
      "tree": "a7b6ddfecce709187f91a9340ce6bb15e9277a5b",
      "parents": [
        "928465a09c508916a7ceb4655a9312accdcc5092"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Mar 14 11:58:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 14 11:58:50 2026"
      },
      "message": "policies: tighten screws (#1528)"
    },
    {
      "commit": "928465a09c508916a7ceb4655a9312accdcc5092",
      "tree": "b105653c119b9d1805710e92de3522abf4125357",
      "parents": [
        "058d7324938085c7a7c09537c92d3980d68c643b"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Mar 08 18:42:57 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Mar 08 18:42:57 2026"
      },
      "message": "docs: further refinement"
    },
    {
      "commit": "058d7324938085c7a7c09537c92d3980d68c643b",
      "tree": "e21bcafd4a129946c1aaf6900f2c2335b3ec7cd2",
      "parents": [
        "65964fc4acf0b03e8578464af04b3342a835303c"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Mar 08 18:34:41 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Mar 08 18:34:41 2026"
      },
      "message": "docs: refine"
    },
    {
      "commit": "65964fc4acf0b03e8578464af04b3342a835303c",
      "tree": "656d5ec9613bd6682ac5d82735f0ae5a565a88dc",
      "parents": [
        "21a1028e2ff0566bc2a77d9c3f0741f02119ad26"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Mar 08 13:27:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 08 13:27:32 2026"
      },
      "message": "docs: overhaul types (#1526)\n\n* docs: overhaul types\n\n* typo\n\n* polish\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Fix link syntax\n\n* Mention VS Code more prominently\n\n* Pyright, ty, and Pyrefly handle frozen\n\n```\nimport attrs\n\n@attrs.frozen\nclass C:\n    x: int\n\ni \u003d C(42)\ni.x \u003d 23\n```\n\n/Users/hynek/FOSS/attrs/t.py\n  /Users/hynek/FOSS/attrs/t.py:9:3 - error: Cannot assign to attribute\n\"x\" for class \"C\"\n    Attribute \"x\" is read-only (reportAttributeAccessIssue)\n1 error, 0 warnings, 0 informations\n\n* improvements\n\n* wordsmith\n\n* mention runtime\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "21a1028e2ff0566bc2a77d9c3f0741f02119ad26",
      "tree": "c5b9ab96e0e5e3bb4db6bbd84cfea8a624807b54",
      "parents": [
        "862696afb52fb7c0d47d45e05ec4feb844c11001"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Mar 08 09:54:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 08 09:54:58 2026"
      },
      "message": "Fix codspeed warning (#1527)"
    },
    {
      "commit": "862696afb52fb7c0d47d45e05ec4feb844c11001",
      "tree": "90a02e10eecf2038fb8340c7f7fa63685a2047bf",
      "parents": [
        "f3bcc37c3d2dc3199715f825a86b748c3b3805f9"
      ],
      "author": {
        "name": "Varun Chawla",
        "email": "34209028+veeceey@users.noreply.github.com",
        "time": "Sat Mar 07 09:20:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 07 09:20:01 2026"
      },
      "message": "Resolve field aliases before calling field_transformer (#1509)\n\n* Resolve field aliases before calling field_transformer\n\nPreviously, field_transformer received attributes with alias\u003dNone for\nfields without an explicit alias. The default alias (e.g., stripping\nleading underscores) was only resolved after the transformer ran, making\nit impossible for transformers to access or use alias values.\n\nThis moves alias resolution to before the field_transformer call, so\ntransformers receive fully populated Attribute objects. A second pass\nafter the transformer handles any new fields the transformer may have\nadded.\n\nAdditionally, Attribute.evolve() now automatically updates the alias\nwhen the name changes, if the alias was auto-generated (matching the\ndefault for the old name). Explicit aliases are preserved.\n\nFixes #1479\n\n* Fix CI failures: update doctest, add changelog, fix coverage\n\n- Update extending.md doctest to reflect that field_transformer now\n  receives pre-resolved aliases (use alias \u003d\u003d name.lstrip(\"_\") instead\n  of `not field.alias` to detect auto-generated aliases)\n- Add changelog entry for #1479\n- Add test_hook_new_field_without_alias to cover the post-transformer\n  alias resolution path (line 496 of _make.py)\n\n* Fix pre-commit\n\n* Change is neat but breaking\n\nPoint change at PR, not bug.\n\n* Handle default alias detection explicitly\n\n* Fix docs build\n\n* We actually load 25.3-style\n\n---------\n\nCo-authored-by: Hynek Schlawack \u003chs@ox.cx\u003e"
    },
    {
      "commit": "f3bcc37c3d2dc3199715f825a86b748c3b3805f9",
      "tree": "37a5c702fd158c4d65f1341c54a14e37162a7229",
      "parents": [
        "2173fc7049f7ea938b754e2563959d3c902dfaf4"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Mar 04 05:39:43 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Mar 04 05:39:43 2026"
      },
      "message": "docs: use public link in AI policy\n"
    },
    {
      "commit": "2173fc7049f7ea938b754e2563959d3c902dfaf4",
      "tree": "1a180b434371f5dd56d568c6dc4f2840feb3a5e4",
      "parents": [
        "390efdc41fcac3f6a51c9ed5bb2078c1f820d82f"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Mar 02 20:49:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 20:49:57 2026"
      },
      "message": "update dev (#1522)\n\n"
    },
    {
      "commit": "390efdc41fcac3f6a51c9ed5bb2078c1f820d82f",
      "tree": "1ea19e018ce332138ba6cb8ac1292abb0be89950",
      "parents": [
        "853d78e34de57aa2ecedd933c1b83ee0781b88af"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Mar 02 20:37:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 20:37:27 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#1523)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.15.0 → v0.15.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.0...v0.15.4)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "853d78e34de57aa2ecedd933c1b83ee0781b88af",
      "tree": "5c67bac008bd55b272c7a8fcb61d766276e56a78",
      "parents": [
        "46354916414ae32050818fa5e7532f5fa72278db"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Mar 02 15:08:56 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Mar 02 15:08:56 2026"
      },
      "message": "Build docs locally to prevent unnecessary CI breakage\n"
    },
    {
      "commit": "46354916414ae32050818fa5e7532f5fa72278db",
      "tree": "3002d88125e676e706df26ec98c62ae55fe0bde1",
      "parents": [
        "384267d742ab817af7393e08fc72789eedc46dcf"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Feb 23 09:06:21 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Feb 23 09:06:21 2026"
      },
      "message": "Link prominently\n"
    },
    {
      "commit": "384267d742ab817af7393e08fc72789eedc46dcf",
      "tree": "3e08aa8aa5d146550105b448ff54598df525fd32",
      "parents": [
        "6468b669abd8c5f00bf7866e7deb311f99800a8b"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Feb 22 11:51:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Feb 22 11:51:53 2026"
      },
      "message": "docs: typo"
    },
    {
      "commit": "6468b669abd8c5f00bf7866e7deb311f99800a8b",
      "tree": "7034ad96772740563fd04d5334784c004a788ec2",
      "parents": [
        "97432db1abbd8d58f1b9712efc6580b7f613f625"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Feb 22 07:10:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Feb 22 07:10:14 2026"
      },
      "message": "Update pull request template"
    },
    {
      "commit": "97432db1abbd8d58f1b9712efc6580b7f613f625",
      "tree": "d12114245f93d853f10e026fc779e4520adfa397",
      "parents": [
        "fb9ea679f92ae5c911a3fce644fff763da2ca02b"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Feb 21 19:03:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 21 19:03:56 2026"
      },
      "message": "Add explicit AI policy (#1518)\n\n* Add explicit AI policy\n\n* Phrasing\n\n* Don\u0027t mix smart and dumb interpunction\n\n* Keep the crabs out"
    },
    {
      "commit": "fb9ea679f92ae5c911a3fce644fff763da2ca02b",
      "tree": "da6ad38251b22ea1c553eb4bdd417102c016dfef",
      "parents": [
        "53e7a9c3d47ebe431e1c9ca18fda74902a189620"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Feb 10 17:59:26 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Feb 10 17:59:36 2026"
      },
      "message": "Actually update\n"
    },
    {
      "commit": "53e7a9c3d47ebe431e1c9ca18fda74902a189620",
      "tree": "6073fa489040dc7518764dc2e8aef13e8ac5d9d6",
      "parents": [
        "c44b8b0052ca3a4594219efa702129e1537d8966"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Feb 10 16:41:27 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Feb 10 16:41:27 2026"
      },
      "message": "sponsors: update URL\n"
    },
    {
      "commit": "c44b8b0052ca3a4594219efa702129e1537d8966",
      "tree": "9ad47202068c4c5a2cd50adf195d5e6ef2d0c3b0",
      "parents": [
        "e140354a11de334f14d5345b1ebbde4157e69def"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Feb 04 08:08:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 04 08:08:14 2026"
      },
      "message": "update dev (#1507)\n\n"
    },
    {
      "commit": "e140354a11de334f14d5345b1ebbde4157e69def",
      "tree": "e558d7fdc586de8498d37d4db25fcdc71213c888",
      "parents": [
        "587d15a000f3a889e1dbdd000087497e380f09b4"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Jan 22 10:36:11 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Jan 22 10:36:11 2026"
      },
      "message": "sponsors: pure-SVG logo\n"
    },
    {
      "commit": "587d15a000f3a889e1dbdd000087497e380f09b4",
      "tree": "44fd5fdac854eaf29cdece3bacad355fe17edac5",
      "parents": [
        "2d6da44be25395cdc96d71eee22fbe0c2d255448"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Jan 22 06:10:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 22 06:10:51 2026"
      },
      "message": "update dev (#1502)\n\n"
    },
    {
      "commit": "2d6da44be25395cdc96d71eee22fbe0c2d255448",
      "tree": "173d680690c820663bd15e5ce868bfb262ad6681",
      "parents": [
        "175edec3d5d47604f5ca8a0ff83d22cad3888e0a"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Jan 22 05:41:58 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Jan 22 05:41:58 2026"
      },
      "message": "Case-insensitive FS strike again\n"
    },
    {
      "commit": "175edec3d5d47604f5ca8a0ff83d22cad3888e0a",
      "tree": "6c54c8f124d9a96e24fd40c0e2763fb750ffed65",
      "parents": [
        "28526a872ec882c69d5d30932c1a520ef2520309"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Jan 22 05:39:18 2026"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Jan 22 05:39:18 2026"
      },
      "message": "sponsors: LambdaTest is now TestMu AI\n"
    },
    {
      "commit": "28526a872ec882c69d5d30932c1a520ef2520309",
      "tree": "5f634ecd87211b05a33c762ef8726cb0cae4b63c",
      "parents": [
        "c73e7c00ba834f084e5ef9fd05c7a0ee7a689c88"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Jan 05 15:53:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 05 15:53:36 2026"
      },
      "message": "Update dev (#1497)\n\n* Update dev\n\n* document min tox version"
    },
    {
      "commit": "c73e7c00ba834f084e5ef9fd05c7a0ee7a689c88",
      "tree": "9be9ccaf712d6bc5b8c6e7611eecdbcb71d367da",
      "parents": [
        "674c31266e7115c8dafb8a31e86f84fd0fe0c22a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jan 05 15:42:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 05 15:42:24 2026"
      },
      "message": "Bump the github-actions group with 4 updates (#1494)\n\nBumps the github-actions group with 4 updates: [actions/upload-artifact](https://github.com/actions/upload-artifact), [actions/download-artifact](https://github.com/actions/download-artifact), [github/codeql-action](https://github.com/github/codeql-action) and [CodSpeedHQ/action](https://github.com/codspeedhq/action).\n\n\nUpdates `actions/upload-artifact` from 5.0.0 to 6.0.0\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/330a01c490aca151604b8cf639adc76d48f6c5d4...b7c566a772e6b6bfb58ed0dc250532a479d7789f)\n\nUpdates `actions/download-artifact` from 6.0.0 to 7.0.0\n- [Release notes](https://github.com/actions/download-artifact/releases)\n- [Commits](https://github.com/actions/download-artifact/compare/018cc2cf5baa6db3ef3c5f8a56943fffe632ef53...37930b1c2abaa49bbe596cd826c3c89aef350131)\n\nUpdates `github/codeql-action` from 4.31.7 to 4.31.9\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/cf1bb45a277cb3c205638b2cd5c984db1c46a412...5d4e8d1aca955e8d8589aabd499c5cae939e33c7)\n\nUpdates `CodSpeedHQ/action` from 4.4.1 to 4.5.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/346a2d8a8d9d38909abd0bc3d23f773110f076ad...972e3437949c89e1357ebd1a2dbc852fcbc57245)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: 6.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions\n- dependency-name: actions/download-artifact\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions\n- dependency-name: github/codeql-action\n  dependency-version: 4.31.9\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: github-actions\n- dependency-name: CodSpeedHQ/action\n  dependency-version: 4.5.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n  dependency-group: github-actions\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": "674c31266e7115c8dafb8a31e86f84fd0fe0c22a",
      "tree": "35d29868d8b1212cbaff53d831ecce525ddff6df",
      "parents": [
        "460f019d105c34cbac8e737ce2eb8466448f0506"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Thu Dec 18 06:31:29 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 18 06:31:29 2025"
      },
      "message": "Use 3.14 in dev (#1492)\n\n"
    },
    {
      "commit": "460f019d105c34cbac8e737ce2eb8466448f0506",
      "tree": "7e0e6542332c3f929cf0edab74b918aed10ca933",
      "parents": [
        "5127e7ee47ea40f04d34cbe1186c78e93213b7fd"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Dec 17 13:12:13 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 17 13:12:13 2025"
      },
      "message": "update dev (#1491)\n\n"
    },
    {
      "commit": "5127e7ee47ea40f04d34cbe1186c78e93213b7fd",
      "tree": "d3b920e93df541ee2144306a2cea385a828bac43",
      "parents": [
        "3615c75ddfe669e8d07f99fda0b76a42606c4631"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Dec 16 10:06:36 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Dec 16 10:06:36 2025"
      },
      "message": "Fix DOI badge\n"
    },
    {
      "commit": "3615c75ddfe669e8d07f99fda0b76a42606c4631",
      "tree": "d3f9889a296b06d134c8f71a587b7208ed5cac26",
      "parents": [
        "573eeb0197e6f8536c8af04184a8276d72da46d8"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Dec 16 08:38:11 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Dec 16 08:38:11 2025"
      },
      "message": "Optimize sponsor svgs\n"
    },
    {
      "commit": "573eeb0197e6f8536c8af04184a8276d72da46d8",
      "tree": "273b2adfe2cabc1972e39a437155a5010b5278b3",
      "parents": [
        "87f0587468a2db0801d81e35886f0be936ea71ab"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Dec 16 08:34:22 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Dec 16 08:34:22 2025"
      },
      "message": "Add @kraken-tech to sponsors\n\n❤️\n"
    },
    {
      "commit": "87f0587468a2db0801d81e35886f0be936ea71ab",
      "tree": "6de3c99dcb14e6a4c1e3456078f0b58f18889423",
      "parents": [
        "850084d72864a7b387188d80fbbc109b3c663f9d"
      ],
      "author": {
        "name": "David C Ellis",
        "email": "ducksual@gmail.com",
        "time": "Mon Dec 08 16:21:20 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Dec 14 11:43:07 2025"
      },
      "message": "Add a benchmark for constructing classes with cached properties\n"
    },
    {
      "commit": "850084d72864a7b387188d80fbbc109b3c663f9d",
      "tree": "8dcaa34a3dcacfabfe472793cbc22f43381d0c1a",
      "parents": [
        "c0111e6aad3a70080b7191aa9c7eda459a25f3dc"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Dec 08 11:59:02 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 08 11:59:02 2025"
      },
      "message": "Add benchmarks for cached properties on slotted classes (#1489)\n\nTo have some numbers for #1333."
    },
    {
      "commit": "c0111e6aad3a70080b7191aa9c7eda459a25f3dc",
      "tree": "868a4a5680859caf11759736d1038f019f0cc46f",
      "parents": [
        "5eb8701fca8c5ab920985c16583da7d23c2d9d7b"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Dec 02 20:18:48 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Dec 02 20:18:48 2025"
      },
      "message": "dependabot: longer cooldown\n"
    },
    {
      "commit": "5eb8701fca8c5ab920985c16583da7d23c2d9d7b",
      "tree": "ff16b98daadbf859c485a267f9630c8e4026f3f2",
      "parents": [
        "f1469ce45ee90e0cd61cf1223bc817fdb0897807"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue Dec 02 19:58:33 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 19:58:33 2025"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#1486)\n\nupdates:\n- [github.com/astral-sh/ruff-pre-commit: v0.14.3 → v0.14.7](https://github.com/astral-sh/ruff-pre-commit/compare/v0.14.3...v0.14.7)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f1469ce45ee90e0cd61cf1223bc817fdb0897807",
      "tree": "4a4920a040c85b8ef29e20709da790138bc69294",
      "parents": [
        "43a868d703f06fffb724d5d03d4f80ac447cb27c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Dec 02 19:58:05 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 19:58:05 2025"
      },
      "message": "Bump the github-actions group with 4 updates (#1485)\n\nBumps the github-actions group with 4 updates: [actions/checkout](https://github.com/actions/checkout), [actions/setup-python](https://github.com/actions/setup-python), [github/codeql-action](https://github.com/github/codeql-action) and [CodSpeedHQ/action](https://github.com/codspeedhq/action).\n\n\nUpdates `actions/checkout` from 5.0.0 to 6.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/08c6903cd8c0fde910a37f88322edcfb5dd907a8...1af3b93b6815bc44a9784bd300feb67ff0d1eeb3)\n\nUpdates `actions/setup-python` from 6.0.0 to 6.1.0\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/e797f83bcb11b83ae66e0230d6156d7c80228e7c...83679a892e2d95755f2dac6acb0bfd1e9ac5d548)\n\nUpdates `github/codeql-action` from 4.31.2 to 4.31.5\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/0499de31b99561a6d14a36a5f662c2a54f91beee...fdbfb4d2750291e159f0156def62b853c2798ca2)\n\nUpdates `CodSpeedHQ/action` from 4.3.1 to 4.4.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/4348f634fa7309fe23aac9502e88b999ec90a164...346a2d8a8d9d38909abd0bc3d23f773110f076ad)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: 6.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions\n- dependency-name: actions/setup-python\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n  dependency-group: github-actions\n- dependency-name: github/codeql-action\n  dependency-version: 4.31.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: github-actions\n- dependency-name: CodSpeedHQ/action\n  dependency-version: 4.4.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n  dependency-group: github-actions\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": "43a868d703f06fffb724d5d03d4f80ac447cb27c",
      "tree": "64da5063da0def4fa6556a168bc1c7277f53d263",
      "parents": [
        "985981b1042874745e8a410b106c1a75cd3683e5"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Nov 12 11:06:00 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Nov 12 11:06:00 2025"
      },
      "message": "fix path\n"
    },
    {
      "commit": "985981b1042874745e8a410b106c1a75cd3683e5",
      "tree": "35c27dade8e436d18a89ee5236a9e65acb22577e",
      "parents": [
        "68b8d1e1b5cb42f79f1ea9b7e45f668ac534394c"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Nov 12 11:05:11 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Nov 12 11:05:11 2025"
      },
      "message": "Align CoC with PSF\n"
    },
    {
      "commit": "68b8d1e1b5cb42f79f1ea9b7e45f668ac534394c",
      "tree": "d882abe463af2b56483b9117b4fdf4b4c59ec36f",
      "parents": [
        "fe68c06f4313ae836acdc7ee680a205fe673af18"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Nov 08 13:17:05 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Nov 08 13:17:35 2025"
      },
      "message": "docs: explicitly mention decorated methods\n\nref #1038 and #1484\n"
    },
    {
      "commit": "fe68c06f4313ae836acdc7ee680a205fe673af18",
      "tree": "12fde8cbcc5f64ead115fdedef808acfaf7648b1",
      "parents": [
        "6396de6fe5402195ee399b4f5fc9f04859e0fc06"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Nov 04 08:34:09 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Nov 04 08:34:09 2025"
      },
      "message": "dependabot: add cooldown\n"
    },
    {
      "commit": "6396de6fe5402195ee399b4f5fc9f04859e0fc06",
      "tree": "dcb5e37978c95ddda1de47a3e1b0f952c31a57ba",
      "parents": [
        "79109ab96d9f76fce1bae518f88199bd69aee5f9"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Nov 04 08:33:42 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Nov 04 08:33:42 2025"
      },
      "message": "Update template\n"
    },
    {
      "commit": "79109ab96d9f76fce1bae518f88199bd69aee5f9",
      "tree": "71885640814918dadea56b42aa5b5ab15dbdc570",
      "parents": [
        "ed01832dc8440e14d747b8616e811e82256617cb"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Nov 02 09:46:40 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Nov 02 09:46:40 2025"
      },
      "message": "update dev\n"
    },
    {
      "commit": "ed01832dc8440e14d747b8616e811e82256617cb",
      "tree": "03ed69116cf91eb84709328d77b6af4a98a98101",
      "parents": [
        "632d961ac9764b02006be96c2f8c5e7cdc0dc0a7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Nov 01 11:28:58 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 01 11:28:58 2025"
      },
      "message": "Bump github/codeql-action from 4.31.0 to 4.31.2 in the github-actions group (#1481)\n\nBump github/codeql-action in the github-actions group\n\nBumps the github-actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).\n\n\nUpdates `github/codeql-action` from 4.31.0 to 4.31.2\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/4e94bd11f71e507f7f87df81788dff88d1dacbfb...0499de31b99561a6d14a36a5f662c2a54f91beee)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action\n  dependency-version: 4.31.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: github-actions\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": "632d961ac9764b02006be96c2f8c5e7cdc0dc0a7",
      "tree": "6f6224ee10f0b0ae7633847e6d88dbc0df80a74a",
      "parents": [
        "f588f1a5d4c9c349c98c84c8db61ba5b129fe58b"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Oct 28 08:59:38 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Oct 28 08:59:38 2025"
      },
      "message": "sponsors: make Polar logo fit better\n"
    },
    {
      "commit": "f588f1a5d4c9c349c98c84c8db61ba5b129fe58b",
      "tree": "5a93be63486ced5ead77d2dd7c0070fbf6f656c3",
      "parents": [
        "fc7f897acaa096cc18449c3ad92cd4edc3b2e38a"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Oct 28 08:31:48 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Oct 28 08:31:48 2025"
      },
      "message": "sponsors: add LambdaTest\n"
    },
    {
      "commit": "fc7f897acaa096cc18449c3ad92cd4edc3b2e38a",
      "tree": "fef6e675e017d95eaa7eb2a9c170b5e31ada554f",
      "parents": [
        "c95b177682e76a63478d29d040f9cb36a8d31915"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Oct 28 07:57:23 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Oct 28 07:57:23 2025"
      },
      "message": "Cleanup unused logos\n"
    },
    {
      "commit": "c95b177682e76a63478d29d040f9cb36a8d31915",
      "tree": "15331f1f99e61b068fe70492d5bd249ae7506f09",
      "parents": [
        "8c381c397cca48a563089aafb5f6434b03c6cc48"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 27 09:52:10 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 27 09:52:10 2025"
      },
      "message": "update dev\n"
    },
    {
      "commit": "8c381c397cca48a563089aafb5f6434b03c6cc48",
      "tree": "fa099eda1eadb9285eb7256fd51ba3f7146e179b",
      "parents": [
        "5084de361bf9e722dda6876e6e2b8ce8c63b7272"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 15 07:51:14 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 15 07:51:31 2025"
      },
      "message": "update funding\n"
    },
    {
      "commit": "5084de361bf9e722dda6876e6e2b8ce8c63b7272",
      "tree": "1e80ad0fa49f7fa59b16983fbeaeb7b4f668e5c5",
      "parents": [
        "9a98e00a7c078360add417c5d62db820d4645ab1"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Fri Oct 10 08:00:50 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Fri Oct 10 08:00:50 2025"
      },
      "message": "Shorter tox\n"
    },
    {
      "commit": "9a98e00a7c078360add417c5d62db820d4645ab1",
      "tree": "1a89cec703f192afebbdf353d04f13de00952d2b",
      "parents": [
        "abe8284315d55d68b5d23d83736a182562620f50"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 06 09:22:26 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 06 09:22:26 2025"
      },
      "message": "Prepare 25.4.0\n"
    },
    {
      "commit": "abe8284315d55d68b5d23d83736a182562620f50",
      "tree": "b37bf5f7802dbe0a8ec7c704719a0911b578e568",
      "parents": [
        "9e90669d61581f8d0167faad9b7e0bacb8649cc3"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 06 09:21:09 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 06 09:21:09 2025"
      },
      "message": "Fix Mars link\n"
    },
    {
      "commit": "9e90669d61581f8d0167faad9b7e0bacb8649cc3",
      "tree": "6dbae97d50454211096561be2e66045a9137e2ee",
      "parents": [
        "6c54145aac47b60a4c0838acead291ae4a298771"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 06 07:26:12 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 06 07:26:12 2025"
      },
      "message": "Nicer interpunction\n"
    },
    {
      "commit": "6c54145aac47b60a4c0838acead291ae4a298771",
      "tree": "76dd1167721c8613a6d99e3fa8b5c06d13d37d3e",
      "parents": [
        "83a53b5c4ccef050472801f85b9448e0d94fece5"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 06 07:21:07 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 06 07:21:24 2025"
      },
      "message": "LLM statement\n"
    },
    {
      "commit": "83a53b5c4ccef050472801f85b9448e0d94fece5",
      "tree": "5dedb2c7ae58d27845f08bdb5daac75c72e7c221",
      "parents": [
        "91ce28db10f4f76beaafdf836f70dd68f3f7cd85"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Oct 06 04:28:21 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 06 04:28:21 2025"
      },
      "message": "update dev (#1476)\n\n"
    },
    {
      "commit": "91ce28db10f4f76beaafdf836f70dd68f3f7cd85",
      "tree": "83ff1b09bd014d2230eed10144a7b92e4dee15bf",
      "parents": [
        "5058e41892dede51f3c00eccc18f1283f147bd4f"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 10:21:58 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 10:21:58 2025"
      },
      "message": "ci: use the same command line as in docs\n"
    },
    {
      "commit": "5058e41892dede51f3c00eccc18f1283f147bd4f",
      "tree": "cc8055756b3f22df130386045b88078cb8b963ce",
      "parents": [
        "824567a2a774e44335ebd7056cc25affe4e4f256"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 10:20:31 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 10:20:31 2025"
      },
      "message": "ci: use uv sync for dev env\n"
    },
    {
      "commit": "824567a2a774e44335ebd7056cc25affe4e4f256",
      "tree": "3c50749ac10118fb735dc8cd04384b437d72068e",
      "parents": [
        "c02e3fb438f22586707d7c25fcb5b2ef9afb6cdc"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 10:14:24 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 10:14:24 2025"
      },
      "message": "Actually test dev env in CI\n"
    },
    {
      "commit": "c02e3fb438f22586707d7c25fcb5b2ef9afb6cdc",
      "tree": "5ad612beb8d64f4e536987d5c03202fea268ce3a",
      "parents": [
        "8a78116883c4584f0abe235c7746757bcd276247"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 10:01:15 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 10:01:15 2025"
      },
      "message": "Group dependabot updates\n"
    },
    {
      "commit": "8a78116883c4584f0abe235c7746757bcd276247",
      "tree": "1c9931eb7e536c5b6474b83769856d12b92092a7",
      "parents": [
        "27b3c3713cf7b317d22939d2240211282e641305"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 03:35:28 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 03:35:28 2025"
      },
      "message": "De-dup typing examples names; fix PR template\n"
    },
    {
      "commit": "27b3c3713cf7b317d22939d2240211282e641305",
      "tree": "42827b92635ffe5998b82bbe8bb95dbda1d60108",
      "parents": [
        "112dd1d49848da7a956c78415e0f571e0dc70d90"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 03:23:00 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Wed Oct 01 03:23:00 2025"
      },
      "message": "Update dev\n"
    },
    {
      "commit": "112dd1d49848da7a956c78415e0f571e0dc70d90",
      "tree": "5c8509ff8f7547f6f8fd73efafbed2e62880df1e",
      "parents": [
        "4737f0e6c77f2bd4501322b1b5d1e265181849b9"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Sep 30 08:56:23 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 30 08:56:23 2025"
      },
      "message": "Expose effective class construction properties (#1454)\n\n* Implement _AttrsParams\n\nref #602\n\n* Set __attrs_base_of_slotted__ for unused base classes\n\n* Rename to ClassProps\n\nThis reflects that the instance is NOT just the parameters as passed to\nthe decorator, but how the class is actually constructed.\n\n* Start renaming fields so it\u0027s clearer these aren\u0027t just arguments\n\n* Reorder\n\n* Dont\u0027s expose has_custom_setattr\n\n* Make KeywordOnly an Enum\n\nAnd make Hashability public\n\n* Make cache_hash part of the Hashability Enum\n\n* Add attrs.inspect()\n\n* Refactor enums into class since they\u0027re only used by that class\n\n* Docs\n\n* Move back, rip out type hints\n\n* Revert \"Move back, rip out type hints\"\n\nThis reverts commit 84bb6da79999466c80e9c825e31279f23fbe9527.\n\n* Use internal mechanisms instead of NamedTuple\n\nMostly to prevent Mypy from looking at our code, but sadly it wasn\u0027t\nenough courtesy of enums for some reason.\n\n* Add news fragment\n\n* Document it\u0027s experimental\n\n* Improve ClassProps documentation\n\n* Add type information to docs\n\n* Improve field names\n\nTo make it clearer these are derived values and nothing you can pass\ninto define/attr.s\n\n* Avoid repeated attribute lookups\n\n* More more helpful field names\n\n* Add warning to class too\n\n* Add explanation\n\n* Add to changelog, too\n\n* Nicer phrasing\n\n* Grammar\n\n* docs\n\n* Consistency\n\n* Make inspect/ClassProps NG-only\n\n* Remove stray empty line\n\n* Don\u0027t half-ass next_gen-ing\n\n_funcs is terribly generic too\n\n* Avoid attribute lookups in hot loop\n\n* Add field access type tests\n\n* A docstring is not appropriate here\n\n* Move typing example to baseline"
    },
    {
      "commit": "4737f0e6c77f2bd4501322b1b5d1e265181849b9",
      "tree": "73cfc2cc1dba71045c3a28ff6b770208cc397b5e",
      "parents": [
        "f8f7a2e9aa8f0a8c7da01290622b0969facea86c"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Sep 28 16:37:43 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Sep 28 16:38:05 2025"
      },
      "message": "Run Pyright in strict mode\n"
    },
    {
      "commit": "f8f7a2e9aa8f0a8c7da01290622b0969facea86c",
      "tree": "78465335e250fee0476363e75c72ede6d3a4affd",
      "parents": [
        "b1dc8f673579137e14e44afdf0e40e4b4f1b9e3c"
      ],
      "author": {
        "name": "John Marsden",
        "email": "john@johnmarsden.dev",
        "time": "Sun Sep 28 16:07:48 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 28 16:07:48 2025"
      },
      "message": "Improve type hinting of or_ (#1471)\n\n* Improve type hinting of instance_of and or_\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Moved _U to same location as all other TypeVar definitions\n\nAdded a new TypeVar \u0027_U\u0027 bound to UnionType for type validation.\n\n* Revert to UnionType\n\n* Add (failing) typing example\n\n* Oops, the type checkers were just smarter\n\n* Add news fragment\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Hynek Schlawack \u003chs@ox.cx\u003e"
    },
    {
      "commit": "b1dc8f673579137e14e44afdf0e40e4b4f1b9e3c",
      "tree": "4c19e491e979eefcdc5d4419de0a137e97cfa1e9",
      "parents": [
        "c53a61190cefa92960ec15e79124b6c7eb3fe742"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Sep 28 15:35:47 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 28 15:35:47 2025"
      },
      "message": "Split out Mypy-dependent typing examples, add more type checkers (#1474)\n\n* Split out Mypy-dependant typing examples, add more type checkers\n\n* Add explanation\n\n* link"
    },
    {
      "commit": "c53a61190cefa92960ec15e79124b6c7eb3fe742",
      "tree": "4fb4d101c844139d244369140d33e4169b236143",
      "parents": [
        "1fc2c69f81a12b33dce3e2e6c63b492d629b585f"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Sep 28 11:11:51 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Sep 28 11:11:51 2025"
      },
      "message": "docs: add true story\n"
    },
    {
      "commit": "1fc2c69f81a12b33dce3e2e6c63b492d629b585f",
      "tree": "a7da33a7f93e6b61f40d0456f083268a8ddf7ccf",
      "parents": [
        "50334f3fe759013f52cc533161e9b474e98bc460"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Sep 28 11:07:02 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Sep 28 11:07:02 2025"
      },
      "message": "docs: update artisanal example\n\nRef https://github.com/python-attrs/attrs/issues/1472\n"
    },
    {
      "commit": "50334f3fe759013f52cc533161e9b474e98bc460",
      "tree": "eb4bc416e0cf38d826dd2f9cc89e9293f7597d44",
      "parents": [
        "4e2c89c82398914dbbe24fe00b03f00a8b8efe05"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Fri Sep 26 08:30:39 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Fri Sep 26 08:30:39 2025"
      },
      "message": "Update sponsors\n"
    },
    {
      "commit": "4e2c89c82398914dbbe24fe00b03f00a8b8efe05",
      "tree": "301f1eb7e382cb189716eca23d053b8b1a4eb9e1",
      "parents": [
        "1315e42fe51743fe1c3529da6792dcda2ef6cc1f"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sun Sep 21 11:16:40 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 21 11:16:40 2025"
      },
      "message": "Update dev (#1473)\n\n* Update dev env\n\n* Fix linter errors\n\n* Fix mypy tests"
    },
    {
      "commit": "1315e42fe51743fe1c3529da6792dcda2ef6cc1f",
      "tree": "d356a13243dffea965aca9b7fb6859021ac245f3",
      "parents": [
        "6ef8d73dd728cdebf939b3a2cd694af57d1f6b5d"
      ],
      "author": {
        "name": "Pieter Eendebak",
        "email": "pieter.eendebak@gmail.com",
        "time": "Mon Sep 08 15:47:27 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 08 15:47:27 2025"
      },
      "message": "Improve performance of attr.astuple (#1469)\n\n* Improve performance of attr.astuple\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Add news fragment\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Hynek Schlawack \u003chs@ox.cx\u003e"
    },
    {
      "commit": "6ef8d73dd728cdebf939b3a2cd694af57d1f6b5d",
      "tree": "db67ef1af43b084713583cce5c6f7fef890ca0eb",
      "parents": [
        "7369ad9f4b273e400478c8e65399d826ab3f3b32"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Mon Sep 08 14:11:07 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 08 14:11:07 2025"
      },
      "message": "Update actions (#1468)\n\n* Update actions\n\n* Set codspeed mode"
    },
    {
      "commit": "7369ad9f4b273e400478c8e65399d826ab3f3b32",
      "tree": "54959ada17e3b647b774614db80c9e4810129981",
      "parents": [
        "57f0d5441c9deaac44aebbbf45e38e477651e4f2"
      ],
      "author": {
        "name": "Pieter Eendebak",
        "email": "pieter.eendebak@gmail.com",
        "time": "Mon Sep 08 13:42:31 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 08 13:42:31 2025"
      },
      "message": "Improve performance of asdict in the common case (#1463)\n\n* Improve performance of asdict in the common case\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* fix for python 3.9\n\n* fix for python3.9\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* coverage\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* docstring\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* add benchmark for asdict\n\n* Remove now-redundant benchmark\n\n* Fix test docstring\n\n* Add news fragment\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Hynek Schlawack \u003chs@ox.cx\u003e"
    },
    {
      "commit": "57f0d5441c9deaac44aebbbf45e38e477651e4f2",
      "tree": "420dde7a2133873b6cdab85580afd0dd2d737103",
      "parents": [
        "666edb6440ddfdd1d38beaa9903316e2f41917e0"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Fri Sep 05 09:13:50 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 05 09:13:50 2025"
      },
      "message": "tests: use --import-mode\u003dimportlib (#1467)\n\nTurns out, it\u0027s the only mode where `import src` doesn\u0027t fail."
    },
    {
      "commit": "666edb6440ddfdd1d38beaa9903316e2f41917e0",
      "tree": "0a48d6be2904219d403a04e0fe4681056b4b6980",
      "parents": [
        "5d216e698dc7fff48d4fe7bb4adb0aeb7676bb25"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Sep 02 05:06:57 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 02 05:06:57 2025"
      },
      "message": "Update dev dependencies (#1466)\n\n* Update dev dependencies\n\n* Add Ruff to dev deps"
    },
    {
      "commit": "5d216e698dc7fff48d4fe7bb4adb0aeb7676bb25",
      "tree": "5e627ac6e987a342bc8036aee9365d0502918a02",
      "parents": [
        "ce358ed0e6c4bf38a46efa51cc03a02164e2795d"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Sat Aug 30 10:46:36 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 30 10:46:36 2025"
      },
      "message": "Add benchmarks for asdict and astuple (#1464)\n\nIn preparation for #1463\n\nCo-authored-by: Pieter Eendebak \u003c883786+eendebakpt@users.noreply.github.com\u003e"
    },
    {
      "commit": "ce358ed0e6c4bf38a46efa51cc03a02164e2795d",
      "tree": "ed97e135d9dfbb600995f33bf7b59352e35e66e7",
      "parents": [
        "19175d91df292e9d0722ecb6575043f1d124a123"
      ],
      "author": {
        "name": "Finite State Machine",
        "email": "38001514+finite-state-machine@users.noreply.github.com",
        "time": "Fri Aug 29 14:53:19 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 29 14:53:19 2025"
      },
      "message": "Fix `attrs.field(converter\u003d...)` type annotations (#1461)\n\n* Fix `attrs.field(converter\u003d...)` type annotations\n\n    Converters can currently be specified as `_ConverterType`,\n    `list[_ConverterType]`, or `tuple[_ConverterType]`. The last of\n    these does not mean \"tuple of `_ConverterType` instances\" as was\n    likely intended; it specifies a tuple with exactly one\n    `_ConverterType` element. The correct form for a `tuple` with any\n    number of instances is `tuple[_ConverterType, ...]`.\n\n* Add to `changelog.d`\n\n* Add regression test for PR 1461\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Update changelog.d/1461.change.md\n\n* Update tests/test_pyright.py\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Hynek Schlawack \u003chs@ox.cx\u003e"
    },
    {
      "commit": "19175d91df292e9d0722ecb6575043f1d124a123",
      "tree": "b7718f917e56f2bac50990266d48968e95385844",
      "parents": [
        "616adf5af936b9e690e72d740440dcfc9df25c87"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle.zijlstra@gmail.com",
        "time": "Fri Aug 15 08:14:22 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 15 08:14:22 2025"
      },
      "message": "Use sys._clear_type_descriptors() on 3.14 to break slot reference cycle (#1459)\n\n* Use sys._clear_type_descriptors() on 3.14\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* No more deproxying\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "616adf5af936b9e690e72d740440dcfc9df25c87",
      "tree": "2ee9c1cd979d9c74fe7f2adb6a297102e4b18a92",
      "parents": [
        "a296a129c60f5c736165086621f03c10a4d14065"
      ],
      "author": {
        "name": "Carlton Gibson",
        "email": "carlton@noumenal.es",
        "time": "Fri Aug 08 05:11:58 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 08 05:11:58 2025"
      },
      "message": "Update API usage in .has() example. (#1458)\n\n"
    },
    {
      "commit": "a296a129c60f5c736165086621f03c10a4d14065",
      "tree": "e0ed194bc0a2525480bc26e80786a6e6a3b1a93f",
      "parents": [
        "b8c63c35b3e347bf411b1008aa7be7a443e7e4ee"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Aug 05 08:57:51 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Aug 05 08:57:51 2025"
      },
      "message": "Need to explicitly ask for combine\n"
    },
    {
      "commit": "b8c63c35b3e347bf411b1008aa7be7a443e7e4ee",
      "tree": "e59d39fb984f49c932d6bb3639f5ad86e986f9af",
      "parents": [
        "d47e199d1ca0c4410e17f9a7459bd0724bf7ab23"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Aug 05 07:36:43 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Aug 05 07:36:43 2025"
      },
      "message": "Splite coverage combine \u0026 report in local tox\n\nAvoids 80+ lines saying something like:\n\nCombined data file .coverage.nazare.fritz.box.54735.XtvwSeqx\n"
    },
    {
      "commit": "d47e199d1ca0c4410e17f9a7459bd0724bf7ab23",
      "tree": "b47a236b5ecbef463a2b669449abf6299b91d899",
      "parents": [
        "a06fef95a859d16afa80cb96fd5709b6b27c1f48"
      ],
      "author": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Aug 05 07:33:04 2025"
      },
      "committer": {
        "name": "Hynek Schlawack",
        "email": "hs@ox.cx",
        "time": "Tue Aug 05 07:33:04 2025"
      },
      "message": "Show coverage output when running in parallel\n"
    }
  ],
  "next": "a06fef95a859d16afa80cb96fd5709b6b27c1f48"
}
