)]}'
{
  "log": [
    {
      "commit": "c47958a797edceaf451929ae0b3f868e3df95aaa",
      "tree": "7b0d720b226d5a82c6c1227c03a20d4fb1f4d8ac",
      "parents": [
        "c7ec1701e233ca9c89758df9827cca5389c7b1e9"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Sat Mar 28 12:57:41 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 28 12:57:41 2026 +0000"
      },
      "message": "Try to fix missing types for mypy"
    },
    {
      "commit": "c7ec1701e233ca9c89758df9827cca5389c7b1e9",
      "tree": "17d55d0c2f5ea6182b868c739a8169126e5e8ea5",
      "parents": [
        "4fb922c35492b3ab9273e3d80ba8e4d5bcdc714d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Mar 28 12:45:08 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 28 12:45:08 2026 +0000"
      },
      "message": "Bump pyasn1 from 0.6.2 to 0.6.3 (#37)\n\nBumps [pyasn1](https://github.com/pyasn1/pyasn1) from 0.6.2 to 0.6.3.\n- [Release notes](https://github.com/pyasn1/pyasn1/releases)\n- [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst)\n- [Commits](https://github.com/pyasn1/pyasn1/compare/v0.6.2...v0.6.3)\n\n---\nupdated-dependencies:\n- dependency-name: pyasn1\n  dependency-version: 0.6.3\n  dependency-type: indirect\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": "4fb922c35492b3ab9273e3d80ba8e4d5bcdc714d",
      "tree": "ccc741866f35e5c7a6e96e8393554d0dba0efc18",
      "parents": [
        "9ebd1488239c765a530d884408e6723046b04d2f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Mar 28 12:44:15 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 28 12:44:15 2026 +0000"
      },
      "message": "Bump cryptography from 46.0.5 to 46.0.6 (#41)\n\nBumps [cryptography](https://github.com/pyca/cryptography) from 46.0.5 to 46.0.6.\n- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pyca/cryptography/compare/46.0.5...46.0.6)\n\n---\nupdated-dependencies:\n- dependency-name: cryptography\n  dependency-version: 46.0.6\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": "9ebd1488239c765a530d884408e6723046b04d2f",
      "tree": "3fe3650702202d469c982154b6238fe4af2af70d",
      "parents": [
        "3d9be06428692ec08b57c3f12a58051894c4ddc7",
        "5c6e9cae3a80ac3c15639c208cffe3252b665191"
      ],
      "author": {
        "name": "Dave Fisher",
        "email": "dave2wave@comcast.net",
        "time": "Fri Mar 27 17:50:56 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 17:50:56 2026 -0700"
      },
      "message": "Merge pull request #40 from apache/enable-issues"
    },
    {
      "commit": "3d9be06428692ec08b57c3f12a58051894c4ddc7",
      "tree": "85e22a402df23297fe8d8546a64d86eb5ac20f2d",
      "parents": [
        "f62e82a3d46e42df1434b4ad167daa7f411408bb"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Sat Mar 28 00:22:16 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 28 00:22:16 2026 +0000"
      },
      "message": "Revert to 3.9"
    },
    {
      "commit": "f62e82a3d46e42df1434b4ad167daa7f411408bb",
      "tree": "f17636e8930330054e319372b903179f829474d9",
      "parents": [
        "a99b8d288f6eab1fb9e6feafe6949203d9d997bf"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Sat Mar 28 00:20:32 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 28 00:20:32 2026 +0000"
      },
      "message": "Python 3.8 is very old"
    },
    {
      "commit": "5c6e9cae3a80ac3c15639c208cffe3252b665191",
      "tree": "d46f9e035b9feec6f2d93e08e1972f9cbd975836",
      "parents": [
        "a99b8d288f6eab1fb9e6feafe6949203d9d997bf"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Sat Mar 28 00:14:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 28 00:14:40 2026 +0000"
      },
      "message": "Enable issues"
    },
    {
      "commit": "a99b8d288f6eab1fb9e6feafe6949203d9d997bf",
      "tree": "a7906ce94eeb30db45fc5031b405d2fa1b4e1388",
      "parents": [
        "fab2fa5e49bbd6f852b803cbe04ea07284baa9ed"
      ],
      "author": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Fri Mar 27 18:38:45 2026 +0000"
      },
      "committer": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Fri Mar 27 18:41:03 2026 +0000"
      },
      "message": "Lower the required Python to align with tests\n"
    },
    {
      "commit": "fab2fa5e49bbd6f852b803cbe04ea07284baa9ed",
      "tree": "7c78dd7a671ecf5fc081a70559ab62c723888d45",
      "parents": [
        "a459cac7ef955471b54deec10987bd9c8fa7aae3"
      ],
      "author": {
        "name": "Dave Fisher",
        "email": "dave2wave@comcast.net",
        "time": "Fri Mar 27 11:10:07 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 11:10:07 2026 -0700"
      },
      "message": "Update unittest.yml"
    },
    {
      "commit": "a459cac7ef955471b54deec10987bd9c8fa7aae3",
      "tree": "64a4a6451e1bd96da18bdb187b441c87d356de3e",
      "parents": [
        "c8ff315a261d6f49fcb0569947f11917b2f6afa7"
      ],
      "author": {
        "name": "Dave Fisher",
        "email": "dave2wave@comcast.net",
        "time": "Fri Mar 27 11:09:37 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 11:09:37 2026 -0700"
      },
      "message": "Update pylint.yml"
    },
    {
      "commit": "c8ff315a261d6f49fcb0569947f11917b2f6afa7",
      "tree": "c4bc7fec6d8bfe961e02f4065e5ea0f601585218",
      "parents": [
        "5ccc4ed28e4d99d2d5515b074ab1f7e19e157288",
        "02bb80330997b3dfa59eb17976fca3ab250f909f"
      ],
      "author": {
        "name": "Dave Fisher",
        "email": "dave2wave@comcast.net",
        "time": "Fri Mar 27 11:05:40 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 11:05:40 2026 -0700"
      },
      "message": "Merge pull request #38 from apache/sbp-pin-action\n\nBump and pin the checkout action"
    },
    {
      "commit": "02bb80330997b3dfa59eb17976fca3ab250f909f",
      "tree": "c4bc7fec6d8bfe961e02f4065e5ea0f601585218",
      "parents": [
        "5ccc4ed28e4d99d2d5515b074ab1f7e19e157288"
      ],
      "author": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Fri Mar 27 18:02:52 2026 +0000"
      },
      "committer": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Fri Mar 27 18:02:52 2026 +0000"
      },
      "message": "Bump and pin the checkout action\n"
    },
    {
      "commit": "5ccc4ed28e4d99d2d5515b074ab1f7e19e157288",
      "tree": "3ba47705f91f8f2d81754f7dd2dbd5ee8afa73cd",
      "parents": [
        "cfa849c5f1491fc29367d5589eccf21cf55ff3ff",
        "6794e3d62bdbe8ae2172a0b63f0bace9e6f48026"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Feb 18 16:48:09 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 18 16:48:09 2026 +0100"
      },
      "message": "Merge pull request #34 from apache/INFRA-27542\n\nINFRA-27542 - fix bug"
    },
    {
      "commit": "cfa849c5f1491fc29367d5589eccf21cf55ff3ff",
      "tree": "0c533fbbb1e4e03c8fef2c2ec70c968a3eab755d",
      "parents": [
        "1f275032aeacaabf8505028ed813eab22ca81947"
      ],
      "author": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Thu Feb 12 19:52:43 2026 +0000"
      },
      "committer": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Thu Feb 12 19:52:43 2026 +0000"
      },
      "message": "Onwards to 0.59\n"
    },
    {
      "commit": "1f275032aeacaabf8505028ed813eab22ca81947",
      "tree": "e9341d7e41433ec5a3a094cec45b387e08a234e4",
      "parents": [
        "b83a0c24a1d927a6b6d8e50af23268f6da4e47dd"
      ],
      "author": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Thu Feb 12 15:59:54 2026 +0000"
      },
      "committer": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Thu Feb 12 19:34:42 2026 +0000"
      },
      "message": "Migrate the build tool from poetry to uv\n"
    },
    {
      "commit": "b83a0c24a1d927a6b6d8e50af23268f6da4e47dd",
      "tree": "6e26e946271cceedeb20c7a41545c938e83287f5",
      "parents": [
        "7081c40682856a6eb0c39cd44a75f9be0b73cb70"
      ],
      "author": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Thu Feb 12 14:38:10 2026 +0000"
      },
      "committer": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Thu Feb 12 14:38:10 2026 +0000"
      },
      "message": "Onwards to 0.58\n"
    },
    {
      "commit": "7081c40682856a6eb0c39cd44a75f9be0b73cb70",
      "tree": "15d98418e807f6a8687bba34ffabffbcc26db5b1",
      "parents": [
        "cdda2b608db8c1ce76b6fd3b0d54a34cb0db8fbe",
        "8bfb3811e9c96f03063fe0c20a1946281ee6f9b6"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Feb 11 21:19:51 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 11 21:19:51 2026 -0700"
      },
      "message": "Fix: handle CVE-2026-26007\n\nUpdate the cryptography package dependency due to CVE-2026-26007"
    },
    {
      "commit": "8bfb3811e9c96f03063fe0c20a1946281ee6f9b6",
      "tree": "15d98418e807f6a8687bba34ffabffbcc26db5b1",
      "parents": [
        "cdda2b608db8c1ce76b6fd3b0d54a34cb0db8fbe"
      ],
      "author": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Wed Feb 11 12:07:45 2026 +0000"
      },
      "committer": {
        "name": "Sean B. Palmer",
        "email": "sean@miscoranda.com",
        "time": "Wed Feb 11 12:07:45 2026 +0000"
      },
      "message": "Update the cryptography package dependency due to CVE-2026-26007\n"
    },
    {
      "commit": "cdda2b608db8c1ce76b6fd3b0d54a34cb0db8fbe",
      "tree": "aa5a399b75bb5dc2a3720742d554700f3e71cd95",
      "parents": [
        "fe71e70d0e1115e72c147499b009fda9ac56a63f"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Jan 04 18:00:30 2026 +0000"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Jan 04 18:00:30 2026 +0000"
      },
      "message": "Mypy fixes\n"
    },
    {
      "commit": "fe71e70d0e1115e72c147499b009fda9ac56a63f",
      "tree": "1dab0d86220de725814c50294b0d28a63efbd020",
      "parents": [
        "92e80647ca1485725618250edb3255d32119ae41"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Jan 04 13:03:25 2026 +0000"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Jan 04 13:03:25 2026 +0000"
      },
      "message": "Satisy mypy\n"
    },
    {
      "commit": "92e80647ca1485725618250edb3255d32119ae41",
      "tree": "1bada23b00da7355419690a2b5bfd04708e21dbc",
      "parents": [
        "6ef28e8ce13cb9024e170439279870162413f1a6"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Jan 04 12:37:44 2026 +0000"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Jan 04 12:37:44 2026 +0000"
      },
      "message": "mypy checks [skip ci]\n"
    },
    {
      "commit": "6ef28e8ce13cb9024e170439279870162413f1a6",
      "tree": "590e3b7d235bfc7925419c8b491c8c88cfbc5e61",
      "parents": [
        "56e8ade99cedc400cc8c4ba9f3dec0247b975283"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Jan 04 12:35:42 2026 +0000"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Jan 04 12:35:42 2026 +0000"
      },
      "message": "mypy check [skip ci]\n"
    },
    {
      "commit": "6794e3d62bdbe8ae2172a0b63f0bace9e6f48026",
      "tree": "47a2792e9770c7cc73c793891048d7cf1d854311",
      "parents": [
        "56e8ade99cedc400cc8c4ba9f3dec0247b975283"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Sun Jan 04 12:15:46 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 04 12:15:46 2026 +0000"
      },
      "message": "INFRA-27542 - fix bug"
    },
    {
      "commit": "56e8ade99cedc400cc8c4ba9f3dec0247b975283",
      "tree": "767125ac1aa0e386aed72d7336539a8bd95cd802",
      "parents": [
        "fa44a529ed9ab824ecb159bd2da2c470563504f0"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Sun Jan 04 09:44:29 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 04 09:44:29 2026 +0000"
      },
      "message": "Add mypy checks (#32)\n\nAlso ignore pylint violation in test code"
    },
    {
      "commit": "fa44a529ed9ab824ecb159bd2da2c470563504f0",
      "tree": "0c3f49f3a2690467421f98dd46279ae107276daf",
      "parents": [
        "62ad5b0aa00519cc2270db9f9f49093d3edc7900"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Oct 18 00:25:05 2025 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Oct 18 00:25:05 2025 -0500"
      },
      "message": "Add Signer class for HMAC-signing/verifying URLs.\n"
    },
    {
      "commit": "62ad5b0aa00519cc2270db9f9f49093d3edc7900",
      "tree": "578ae41cdb37755685ad31b72e3eefdfb07b7c9b",
      "parents": [
        "f5b2f7c62c2e146edac3d7c1494ef9abc30f0a15"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Sep 25 14:21:32 2025 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Sep 25 14:22:22 2025 -0500"
      },
      "message": "add reminder for bumping version in pyproject.toml\n"
    },
    {
      "commit": "f5b2f7c62c2e146edac3d7c1494ef9abc30f0a15",
      "tree": "8d96051f4595881a34b37e46fd93f91e8d340de1",
      "parents": [
        "dcb9cde4ff60aba903e7715508b6b68ecb6e5ea3"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Sep 25 14:18:50 2025 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Sep 25 14:22:22 2025 -0500"
      },
      "message": "explain how to tag\n"
    },
    {
      "commit": "dcb9cde4ff60aba903e7715508b6b68ecb6e5ea3",
      "tree": "ecfd5f9ce0fc024c9c31f1c9a415113c1b171703",
      "parents": [
        "a802f9bf0e9434003b8d64962a76ceb6453d4665"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Sep 25 14:22:02 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 25 14:22:02 2025 -0500"
      },
      "message": "onwards to 0.57"
    },
    {
      "commit": "a802f9bf0e9434003b8d64962a76ceb6453d4665",
      "tree": "227773e18534e1ac60c862036774d06b3af173f3",
      "parents": [
        "287c39f06fedb8e6cc37050574dba1fe910f3dc8"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Sep 25 14:14:06 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 25 14:14:06 2025 -0500"
      },
      "message": "revise build/test instructions\n\nEnsure poetry\u0027s virtualenv is prepared and loaded with the correct wheel."
    },
    {
      "commit": "287c39f06fedb8e6cc37050574dba1fe910f3dc8",
      "tree": "701a542b251bc36ff6d611b941b28e15f4413700",
      "parents": [
        "92279e89a3be7d8a79f3f2b9bb6f7249a2c48603"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Sep 25 13:12:08 2025 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Sep 25 13:12:08 2025 -0500"
      },
      "message": "Make ISOLATION_LEVEL configurable as a param.\n"
    },
    {
      "commit": "92279e89a3be7d8a79f3f2b9bb6f7249a2c48603",
      "tree": "c8a1a9c186ea0bdee4e2d2cc5738a66a61dcec38",
      "parents": [
        "9a7a52575e46658a47956721d3c1415da8afe617"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Sep 23 00:21:22 2025 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Sep 23 00:21:22 2025 -0500"
      },
      "message": "this access is acceptable within a test\n"
    },
    {
      "commit": "9a7a52575e46658a47956721d3c1415da8afe617",
      "tree": "9d0238628e1c18397d9c7789df2159b442fc4f8c",
      "parents": [
        "46d056ab4c14a0f86984076143440c2f708dc1e7"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Aug 24 08:47:10 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 24 08:47:10 2025 -0500"
      },
      "message": "tweak index of modules in the package"
    },
    {
      "commit": "46d056ab4c14a0f86984076143440c2f708dc1e7",
      "tree": "7528a92b9bf79e1ab73cd91c8cb48944eb1e46fa",
      "parents": [
        "329e89d5d25a8be914b2f5312a9b2d2ab0d0752b"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Aug 24 07:35:56 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 24 07:35:56 2025 -0500"
      },
      "message": "add placeholder for docco links"
    },
    {
      "commit": "329e89d5d25a8be914b2f5312a9b2d2ab0d0752b",
      "tree": "89f141bb0727053b44bf0773b73901ff302ecdd1",
      "parents": [
        "aab71abe84fbf45a5eb6bf30173bab68daa45f54",
        "6aeb24dcd2004f390008ead728ced9481cf73ac8"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Aug 24 05:07:37 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 24 05:07:37 2025 -0700"
      },
      "message": "Merge pull request #31 from apache/sebb-fixtest\n\nFix stopwatch import, and run the available asfpy tests."
    },
    {
      "commit": "6aeb24dcd2004f390008ead728ced9481cf73ac8",
      "tree": "89f141bb0727053b44bf0773b73901ff302ecdd1",
      "parents": [
        "e34fb01b09b4bcd23c12279b8ff3bece0d9d9731"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Aug 24 13:03:45 2025 +0100"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Aug 24 13:03:45 2025 +0100"
      },
      "message": "Fix stopwatch import error\n"
    },
    {
      "commit": "e34fb01b09b4bcd23c12279b8ff3bece0d9d9731",
      "tree": "06c45a21e21b798a752bf75c9ca401037c6fb01c",
      "parents": [
        "aab71abe84fbf45a5eb6bf30173bab68daa45f54"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Aug 24 13:03:21 2025 +0100"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sun Aug 24 13:03:21 2025 +0100"
      },
      "message": "Run pylint on test files\n"
    },
    {
      "commit": "aab71abe84fbf45a5eb6bf30173bab68daa45f54",
      "tree": "e8b32da50c9a7c9b01691bf0a10042a32a323757",
      "parents": [
        "c0102bea87ad30ef51ef70f4613ec199d71e669d",
        "d40238021c153a682b32843f3232ea142ea9f73f"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Aug 24 02:49:48 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 24 02:49:48 2025 -0700"
      },
      "message": "Merge pull request #30 from apache/gs/stopwatch\n\nAdd code for stopwatch functionality, with demonstration/test and documentation."
    },
    {
      "commit": "d40238021c153a682b32843f3232ea142ea9f73f",
      "tree": "0c59b8e41c7a87f4387ed0cadfb84b75c60e179e",
      "parents": [
        "a76510e6ddf01b0aa42cd60933c62ab0d050c766"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Aug 24 04:46:17 2025 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Aug 24 04:46:17 2025 -0500"
      },
      "message": "remove a symlink\n"
    },
    {
      "commit": "a76510e6ddf01b0aa42cd60933c62ab0d050c766",
      "tree": "4b87b4d19b814bffaada517367f4f1537d8ae942",
      "parents": [
        "cef46e6ffe3926fdb98e86df29bbf928b99ab4b8"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Aug 24 04:44:12 2025 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Aug 24 04:44:12 2025 -0500"
      },
      "message": "add docco and test\n"
    },
    {
      "commit": "c0102bea87ad30ef51ef70f4613ec199d71e669d",
      "tree": "399042b2ae2152628ea005757a4fdc94613130e8",
      "parents": [
        "3001fc5017b965e72c34a65bdc4b635183697509"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sat Aug 02 15:24:33 2025 +0100"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sat Aug 02 15:24:33 2025 +0100"
      },
      "message": "OF: align comment with code\n"
    },
    {
      "commit": "cef46e6ffe3926fdb98e86df29bbf928b99ab4b8",
      "tree": "271685cc744954661f82007f8332cf4895045047",
      "parents": [
        "29a93940becf5647a03194225d6f2cc1c60e9d95"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Jul 30 22:27:47 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 30 22:27:47 2025 -0500"
      },
      "message": "set .start_time at last moment possible"
    },
    {
      "commit": "29a93940becf5647a03194225d6f2cc1c60e9d95",
      "tree": "e0ca0e61a2678369eb09a61b11e6c17fbe5efd42",
      "parents": [
        "3001fc5017b965e72c34a65bdc4b635183697509"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Jul 29 21:42:17 2025 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Jul 29 21:42:17 2025 -0500"
      },
      "message": "Draft code for stopwatch functionality, with demonstration/test\n"
    },
    {
      "commit": "3001fc5017b965e72c34a65bdc4b635183697509",
      "tree": "000e3c831f234b4d0dc04f9229cdf6fcd0657153",
      "parents": [
        "545a6053690a48218ea1978411c66027651e0a40",
        "440f97f68b81f3fc459b0b17757499fcf5137764"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed May 21 08:22:07 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 21 08:22:07 2025 -0500"
      },
      "message": "Merge pull request #29 from apache/wells/replace_crypt\n\nReplace `crypt` library with `passlib`. Salt the password creation."
    },
    {
      "commit": "440f97f68b81f3fc459b0b17757499fcf5137764",
      "tree": "000e3c831f234b4d0dc04f9229cdf6fcd0657153",
      "parents": [
        "734b4f61f03914b472c9088b590e7092f43dcaf6"
      ],
      "author": {
        "name": "Chris Wells",
        "email": "wells@apache.org",
        "time": "Tue May 20 17:31:01 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 20 17:31:01 2025 -0400"
      },
      "message": "use existing salt generation method\n\nI also switched from random.choice to secrets.choice for security."
    },
    {
      "commit": "734b4f61f03914b472c9088b590e7092f43dcaf6",
      "tree": "45b5915fcedfda9b6d38cea1f92935e4c380ad0c",
      "parents": [
        "545a6053690a48218ea1978411c66027651e0a40"
      ],
      "author": {
        "name": "Chris Wells",
        "email": "ehlo@cwlls.com",
        "time": "Mon May 19 15:57:25 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 19 15:57:25 2025 -0400"
      },
      "message": "replace crypt library\n\nThe stdlib crypt library has been deprecated and is removed in the 3.13 release of Python. This PR subs in the passlib library, which is one of the recommended replacements."
    },
    {
      "commit": "545a6053690a48218ea1978411c66027651e0a40",
      "tree": "359dbec374d564a6ea6996e2be66c2cb165dde93",
      "parents": [
        "4da0cec4151e0c17fd93edc361983c9362bde552"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Tue Mar 18 23:17:35 2025 +0000"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Tue Mar 18 23:17:35 2025 +0000"
      },
      "message": "crypt code due to be removed\n\nsuppress warnings to ensure other problems are more obvious\n"
    },
    {
      "commit": "4da0cec4151e0c17fd93edc361983c9362bde552",
      "tree": "57197c66983e65369e69b6fd1e70fe571883b69f",
      "parents": [
        "11949ae80ab3880e2c2df6ffbaff3c47ab3b8d04"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Tue Mar 18 23:08:36 2025 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 18 23:08:36 2025 +0000"
      },
      "message": "Python 3.8 is still in general use"
    },
    {
      "commit": "11949ae80ab3880e2c2df6ffbaff3c47ab3b8d04",
      "tree": "237bb985e0eba171aac0df0dfe09b3804ee4f038",
      "parents": [
        "c90b8bb021990a025851758c9eeea2b46def146b"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Tue Mar 18 23:05:04 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 18 23:05:04 2025 +0100"
      },
      "message": "Update pyproject.toml, 0.55 published, we are now on 0.56 in main"
    },
    {
      "commit": "c90b8bb021990a025851758c9eeea2b46def146b",
      "tree": "4f26e19ea0e3d066a1d3f2fb0ac7520cb4336f52",
      "parents": [
        "b4c5f35c4b21c881d47ad6401f88c41a7e5f894a"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Mon Mar 17 09:31:52 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 17 09:31:52 2025 +0100"
      },
      "message": "Add Makefile to simplify publishing, update README with latest publishing instructions (#28)\n\n* Add publishing details to readme, add Makefile for publishing with some basic checks\n\n* further improve publishing, setup testpypi repo if it does not exist yet, add more output\n\n* update building section\n\n* add safeguard to not release dev versions"
    },
    {
      "commit": "b4c5f35c4b21c881d47ad6401f88c41a7e5f894a",
      "tree": "9c0528f5d571c3e18d189f263c13c42f27d9227b",
      "parents": [
        "9068361f0261106b2336620c65cf214577dc5b11"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Sat Mar 08 08:00:53 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Sat Mar 08 08:00:53 2025 +0100"
      },
      "message": "fix badge link\n"
    },
    {
      "commit": "9068361f0261106b2336620c65cf214577dc5b11",
      "tree": "7efc97c8942281381d7195d712b4be206decb80b",
      "parents": [
        "94c87e15be07640650711ba6dd91488ed5874a4a",
        "26d3735e6417560b8713b5c568de307db1266e86"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Mar 08 00:57:27 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 08 00:57:27 2025 -0600"
      },
      "message": "Merge pull request #27 from apache/add-asf-yml\n\nAdd config to delete branches after being merged"
    },
    {
      "commit": "26d3735e6417560b8713b5c568de307db1266e86",
      "tree": "7efc97c8942281381d7195d712b4be206decb80b",
      "parents": [
        "94c87e15be07640650711ba6dd91488ed5874a4a"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Sat Mar 08 07:55:52 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Sat Mar 08 07:55:52 2025 +0100"
      },
      "message": "add config to delete branches after being merged\n"
    },
    {
      "commit": "94c87e15be07640650711ba6dd91488ed5874a4a",
      "tree": "7271eb2f4d287702271661f7273f9f52ca83ea7c",
      "parents": [
        "037a48c674cd701fb0fe990ecdd9dba1aa52f20c",
        "fa9b171907bd146df346067286add15753093b66"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sat Mar 08 00:53:28 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 08 00:53:28 2025 -0600"
      },
      "message": "Merge pull request #26 from apache/add-badges\n\nAdd badges, LICENSE and get rid of one pylint warning"
    },
    {
      "commit": "fa9b171907bd146df346067286add15753093b66",
      "tree": "7271eb2f4d287702271661f7273f9f52ca83ea7c",
      "parents": [
        "1c4e44a94681dfcd902bb83afdea9170315c1ea2"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Sat Mar 08 07:51:01 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Sat Mar 08 07:51:01 2025 +0100"
      },
      "message": "get rid of pylint warning wrt unused argument\n"
    },
    {
      "commit": "1c4e44a94681dfcd902bb83afdea9170315c1ea2",
      "tree": "584a49e7a3612a8b58038b4a9d6d3d8dff18b880",
      "parents": [
        "a0534e14fdd8907c423c5fc2bbb87ea97b6c737c"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Sat Mar 08 07:50:46 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Sat Mar 08 07:50:46 2025 +0100"
      },
      "message": "add license file\n"
    },
    {
      "commit": "a0534e14fdd8907c423c5fc2bbb87ea97b6c737c",
      "tree": "5b94c9a75298f090d29eb9e66f6bfd44de58dcd9",
      "parents": [
        "037a48c674cd701fb0fe990ecdd9dba1aa52f20c"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Sat Mar 08 07:50:36 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Sat Mar 08 07:50:36 2025 +0100"
      },
      "message": "add badges\n"
    },
    {
      "commit": "037a48c674cd701fb0fe990ecdd9dba1aa52f20c",
      "tree": "9765d077d3fb0dd2f41d93dd0b869201ca686e00",
      "parents": [
        "85790b8df8772fc6c78c96bfbc65054ecd617c4e",
        "12dcdba85bef3344001c455f651e15659e73388d"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 07 22:08:54 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 07 22:08:54 2025 -0600"
      },
      "message": "Merge pull request #24 from apache/update-python-versions-in-workflows\n\nUpdate python versions in workflows"
    },
    {
      "commit": "85790b8df8772fc6c78c96bfbc65054ecd617c4e",
      "tree": "80949bf444495b51580811ba4d344f641c394ed5",
      "parents": [
        "9b0f002b43a922aba683c49f9331adacbff089fa",
        "a47e2e4abc02b457ed7fec4517c5b8a2569cc424"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 07 22:07:40 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 07 22:07:40 2025 -0600"
      },
      "message": "Merge pull request #25 from apache/update-deps\n\nbump cryptography to 44.0.2"
    },
    {
      "commit": "9b0f002b43a922aba683c49f9331adacbff089fa",
      "tree": "bc6438276bd8c867e0768782faac00c47b2985ff",
      "parents": [
        "6054beabc50c12001ed4e8d4dc5e7852d5ad718e",
        "ceb805b1f327904666087b2bd9c7dc34e9697512"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Fri Mar 07 22:06:58 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 07 22:06:58 2025 -0600"
      },
      "message": "Merge pull request #22 from apache/create-ldap-extras\n\nCreate extras for ldap related dependencies to make the truly optional"
    },
    {
      "commit": "a47e2e4abc02b457ed7fec4517c5b8a2569cc424",
      "tree": "62dbbbc5be888f418354e27603837362cd3d9a8d",
      "parents": [
        "6054beabc50c12001ed4e8d4dc5e7852d5ad718e"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 22:37:17 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 22:37:17 2025 +0100"
      },
      "message": "bump cryptography to 44.0.2, and python as cryptography excludes 3.9.0 and 3.9.1\n"
    },
    {
      "commit": "12dcdba85bef3344001c455f651e15659e73388d",
      "tree": "dd25829972cf6cb0d6ff600985c3f70fbfb075af",
      "parents": [
        "222d2408287159f1a681872ba212ebfb391d921c"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 22:31:18 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 22:31:18 2025 +0100"
      },
      "message": "quote python versions\n"
    },
    {
      "commit": "222d2408287159f1a681872ba212ebfb391d921c",
      "tree": "8d0bc13cc1c82dca2bdb759babcb3c362e077525",
      "parents": [
        "7150cc6d7af49d53a66f6dc67232de659146fc14"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 22:28:33 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 22:28:33 2025 +0100"
      },
      "message": "run tests with a wider range of python versions\n"
    },
    {
      "commit": "7150cc6d7af49d53a66f6dc67232de659146fc14",
      "tree": "7e10437531706048988b32b63c6315b68f163a66",
      "parents": [
        "6054beabc50c12001ed4e8d4dc5e7852d5ad718e"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 22:28:13 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 22:28:13 2025 +0100"
      },
      "message": "run pylint with 3.13 and use 3.9 as minimum version for checks\n"
    },
    {
      "commit": "ceb805b1f327904666087b2bd9c7dc34e9697512",
      "tree": "bc6438276bd8c867e0768782faac00c47b2985ff",
      "parents": [
        "d6ef9df22993997fdeeaa77e9e05bfc946e82303"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 19:43:28 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 19:43:28 2025 +0100"
      },
      "message": "update pylint invocation with removed file\n"
    },
    {
      "commit": "d6ef9df22993997fdeeaa77e9e05bfc946e82303",
      "tree": "f37e0a81258c68306c2daa54859a9118a25e1b51",
      "parents": [
        "6416f50c46238e8c5abf6e45902047a7dac326f4"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 19:40:13 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 19:40:13 2025 +0100"
      },
      "message": "fix version number, remove obsolete file which makes pylint complain\n"
    },
    {
      "commit": "6416f50c46238e8c5abf6e45902047a7dac326f4",
      "tree": "a9c3d81f68b9b9ff0847879a3702c00b97a0f380",
      "parents": [
        "6054beabc50c12001ed4e8d4dc5e7852d5ad718e"
      ],
      "author": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 19:35:28 2025 +0100"
      },
      "committer": {
        "name": "Thomas Neidhart",
        "email": "tn@apache.org",
        "time": "Fri Mar 07 19:35:28 2025 +0100"
      },
      "message": "make extras for ldap deps, improve unit tests\n"
    },
    {
      "commit": "6054beabc50c12001ed4e8d4dc5e7852d5ad718e",
      "tree": "64e231a7f41a844e25b7f580c9a97105672ab16e",
      "parents": [
        "09e4ee75b64b1ad0e3846f5c5f1ac090a56d1dea"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 06 09:08:21 2025 -0600"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Mar 06 09:08:21 2025 -0600"
      },
      "message": "bump past broken 0.53, and released 0.54 to future 0.55\n"
    },
    {
      "commit": "09e4ee75b64b1ad0e3846f5c5f1ac090a56d1dea",
      "tree": "ebadc4b026d3a6a9de62d36fc328adfe31eb4878",
      "parents": [
        "330b2235e19fc8531ab3505823d448c359a2d946"
      ],
      "author": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Fri Feb 14 14:25:13 2025 -0500"
      },
      "committer": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Fri Feb 14 14:25:13 2025 -0500"
      },
      "message": "fix watch_filter logic\n"
    },
    {
      "commit": "330b2235e19fc8531ab3505823d448c359a2d946",
      "tree": "ed0ff89df0096ec9cc201bdcccaa55b9082cf73d",
      "parents": [
        "c56ae7dd2e35bbf067d2ba1c576faf83cf35f102",
        "6ea4eda217d67d6ce5826111a98f0ed3d5b53564"
      ],
      "author": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Fri Feb 14 13:48:53 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 14 13:48:53 2025 -0500"
      },
      "message": "Merge pull request #20 from apache/iroh/watchfiles\n\nswitch twatcher dependency from asyncinotify to watchfiles"
    },
    {
      "commit": "6ea4eda217d67d6ce5826111a98f0ed3d5b53564",
      "tree": "ed0ff89df0096ec9cc201bdcccaa55b9082cf73d",
      "parents": [
        "4c0beb3c4d6225d82db648c8d9ddbae5fb6ce356"
      ],
      "author": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Wed Nov 27 15:53:44 2024 -0500"
      },
      "committer": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Wed Nov 27 15:53:44 2024 -0500"
      },
      "message": "dependency changes for watchfiles\n\n- watchfiles \u003e\u003d 1.0.0 requires python \u003d\u003e3.9\n- asyncinotify is no longer needed\n- watchfiles replaces the above\n"
    },
    {
      "commit": "4c0beb3c4d6225d82db648c8d9ddbae5fb6ce356",
      "tree": "c31fa165e722a571fe79d4a66c8eae0bd158a823",
      "parents": [
        "6d30327728a83b19108bd1c0af47218578b5730f",
        "c56ae7dd2e35bbf067d2ba1c576faf83cf35f102"
      ],
      "author": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Wed Nov 27 15:50:20 2024 -0500"
      },
      "committer": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Wed Nov 27 15:50:20 2024 -0500"
      },
      "message": "Merge branch \u0027main\u0027 into iroh/watchfiles\n"
    },
    {
      "commit": "6d30327728a83b19108bd1c0af47218578b5730f",
      "tree": "d56fe199a14aed8539c690482db1723554eeb048",
      "parents": [
        "842b5b44e9898a08f90790c89b38aeb99d1c1a98"
      ],
      "author": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Wed Nov 27 15:47:35 2024 -0500"
      },
      "committer": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Wed Nov 27 15:47:35 2024 -0500"
      },
      "message": "use a watch_filter method to only watch for added/modified files\n"
    },
    {
      "commit": "842b5b44e9898a08f90790c89b38aeb99d1c1a98",
      "tree": "1aadeda7ae1befc5408cbe4ff71e18743ba39002",
      "parents": [
        "d9472a702c83b6579095d259a2f70486db8fc47d"
      ],
      "author": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Wed Nov 27 15:43:02 2024 -0500"
      },
      "committer": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Wed Nov 27 15:43:02 2024 -0500"
      },
      "message": "ignore poetry.lock files\n"
    },
    {
      "commit": "c56ae7dd2e35bbf067d2ba1c576faf83cf35f102",
      "tree": "7b61bcb38b8c4124dbcf85d34d3137dbc5270cdb",
      "parents": [
        "2cf1bf20226a77ac9a0f4c0da9fc5a76bc3c65cb"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Oct 01 03:43:24 2024 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Tue Oct 01 03:43:24 2024 -0500"
      },
      "message": "old kernels do not have MASK_CREATE, throwing EINVAL\n"
    },
    {
      "commit": "2cf1bf20226a77ac9a0f4c0da9fc5a76bc3c65cb",
      "tree": "4e7d6f8b3d9d323fb48a08212c93895c5bc821d6",
      "parents": [
        "71cd45caa7f4935e6d3fdc4b4d6e18a0b6b50389"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Thu Sep 19 11:26:32 2024 -0500"
      },
      "committer": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Thu Sep 19 11:26:32 2024 -0500"
      },
      "message": "add source headers needed for build, run pylint through poetry\n"
    },
    {
      "commit": "71cd45caa7f4935e6d3fdc4b4d6e18a0b6b50389",
      "tree": "d779d70de9f1fd8a31d1791a7cd3ea7ce08fa970",
      "parents": [
        "182828ed7342e2273739f65f8ea9ffa51b8450bc"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Thu Sep 19 11:23:07 2024 -0500"
      },
      "committer": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Thu Sep 19 11:23:07 2024 -0500"
      },
      "message": "3.8 is needed for cffi\n"
    },
    {
      "commit": "182828ed7342e2273739f65f8ea9ffa51b8450bc",
      "tree": "81c7d597db87a1c2c020487a95153f5b19201440",
      "parents": [
        "cd05932d06e1a97530328c138f4949c9bd972d2a"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Thu Sep 19 11:20:55 2024 -0500"
      },
      "committer": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Thu Sep 19 11:20:55 2024 -0500"
      },
      "message": "tweak python version requirements\n\n\u003e\u003d3.7 will suffice\n"
    },
    {
      "commit": "cd05932d06e1a97530328c138f4949c9bd972d2a",
      "tree": "45a6dc42a496537af1b55692d967d0f77c399c41",
      "parents": [
        "41436c7ed7593911e82dbebe041a1907161eec5c"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Thu Sep 19 11:15:44 2024 -0500"
      },
      "committer": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Thu Sep 19 11:15:44 2024 -0500"
      },
      "message": "Switch to poetry for setup and testing\n"
    },
    {
      "commit": "41436c7ed7593911e82dbebe041a1907161eec5c",
      "tree": "70625db04da4808311a5dc729ce76f4ad34948e9",
      "parents": [
        "94b7ccc1e0542214ddd9c35c837cb1a8a2fc680e"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 14:29:29 2024 -0500"
      },
      "committer": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 14:29:29 2024 -0500"
      },
      "message": "Change signing and verification behavior\n\nInstead of just singing a nonce, the app should be able to sign an\narbitrary data string, which a client can then verify. Adding a base64\noutput option makes it possible to use the signed data as a HTTP header,\nfor instance:\n\nimport asfpy.crypto\nkeypair \u003d asfpy.crypto.ED25519()\nsigned_data \u003d keypair.sign_data(\"this is a test\")\n\n....\n\nverified_data \u003d keypair.verify_data(signed_data)\nif verified_data is not None:\n    do_things(verified_data)  # verified_data \u003d\u003d \"this is a test\"\n"
    },
    {
      "commit": "94b7ccc1e0542214ddd9c35c837cb1a8a2fc680e",
      "tree": "13293f7af22009231ce75410bebdb0ec70e843f9",
      "parents": [
        "49ce128f467b1021d3ab831e47da5c7de9cf48d7"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 13:57:01 2024 -0500"
      },
      "committer": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 13:57:01 2024 -0500"
      },
      "message": "private key can regenerate a new public key\n"
    },
    {
      "commit": "49ce128f467b1021d3ab831e47da5c7de9cf48d7",
      "tree": "95f81921697bdb3f03bbc40c00eb7676142d0ff8",
      "parents": [
        "c38deb4677bbe15bd4ef1cd571c4e8a8df502e84"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 19:08:09 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 18 19:08:09 2024 +0200"
      },
      "message": "Update setup.py, add crypto+cffi deps"
    },
    {
      "commit": "c38deb4677bbe15bd4ef1cd571c4e8a8df502e84",
      "tree": "6c2456e78d5e7d5a27ad56a430296b0812019d27",
      "parents": [
        "2ef5e28b864ffd220524acdb9ef91fd269748587",
        "91da3c9a1fd9316efe23ca11613313954d5ae00b"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 19:02:33 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 18 19:02:33 2024 +0200"
      },
      "message": "Merge branch \u0027humbedooh/crypto\u0027 into main"
    },
    {
      "commit": "2ef5e28b864ffd220524acdb9ef91fd269748587",
      "tree": "4e65e64d9ad82f9a1710e922d06eb57c1661bc86",
      "parents": [
        "d0378b225cefa8c375ec685ac4c02c59598e8965"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 18:59:35 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 18 18:59:35 2024 +0200"
      },
      "message": "add PyYaml to requirements.txt, for db.py"
    },
    {
      "commit": "d0378b225cefa8c375ec685ac4c02c59598e8965",
      "tree": "a4559ce750e7f75db4f68d14a4b55f08ad67b7db",
      "parents": [
        "89f3669f51317d221c46a06baec7427ada3b09ce"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 18:59:03 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 18 18:59:03 2024 +0200"
      },
      "message": "Exception -\u003e ValueError\n\nThis makes the exception narrower (makes pylint happy too) and conforms to the seemingly standard exception thrown for duplicates."
    },
    {
      "commit": "91da3c9a1fd9316efe23ca11613313954d5ae00b",
      "tree": "c3bb323c5c44c60457bbf09d24c8b83506726796",
      "parents": [
        "565846a54cc4b5fc42f194a7a0c5498510a14f50"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 11:52:08 2024 -0500"
      },
      "committer": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 11:52:08 2024 -0500"
      },
      "message": "not using e, discard for now\n"
    },
    {
      "commit": "565846a54cc4b5fc42f194a7a0c5498510a14f50",
      "tree": "38e96b5fea209911b4d2f184a4d5d3c52a31d10b",
      "parents": [
        "fd4a508a4d7e2dbfade35a9987ea4e05f6e70fb3"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 11:51:54 2024 -0500"
      },
      "committer": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 11:51:54 2024 -0500"
      },
      "message": "linting with black -l 120\n"
    },
    {
      "commit": "fd4a508a4d7e2dbfade35a9987ea4e05f6e70fb3",
      "tree": "4b726b3106abdc08dd1af0ee16759fce1298a6ea",
      "parents": [
        "f7d78144b622eca4e30657743f8ce3ca3f527720"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 11:50:31 2024 -0500"
      },
      "committer": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 11:50:31 2024 -0500"
      },
      "message": "add crypto+cffi to imports for pytest\n"
    },
    {
      "commit": "f7d78144b622eca4e30657743f8ce3ca3f527720",
      "tree": "16625c5c5bc57812f554e662e8bdf498f4642f9e",
      "parents": [
        "89f3669f51317d221c46a06baec7427ada3b09ce"
      ],
      "author": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 11:48:42 2024 -0500"
      },
      "committer": {
        "name": "Daniel Gruno",
        "email": "humbedooh@apache.org",
        "time": "Wed Sep 18 11:48:42 2024 -0500"
      },
      "message": "Crypto helper lib for authenticity purposes\n\nSample script:\n\nimport asfpy.crypto\n\n# Generate a keypair and a token of authenticity\nkeypair \u003d asfpy.crypto.ED25519()\ntest_token \u003d keypair.generate_auth_token()\n\n# Save privkey and pubkey in PEM format\nopen(\"foo_pub.pem\", \"w\").write(keypair.pubkey)\nopen(\"foo_priv.pem\", \"w\").write(keypair.privkey)\n\n# Load pubkey from PEM file\npubkey_data \u003d open(\"foo_pub.pem\", \"r\").read()\npubkey \u003d asfpy.crypto.ED25519(pubkey\u003dpubkey_data)\n\n# Verify token is authentic\ntoken_is_genuine \u003d pubkey.verify(test_token)\nassert token_is_genuine is True, \"Oh no!\"\n"
    },
    {
      "commit": "d9472a702c83b6579095d259a2f70486db8fc47d",
      "tree": "9005279fbf97aff2fd3c66c490def377c362b4e8",
      "parents": [
        "89f3669f51317d221c46a06baec7427ada3b09ce"
      ],
      "author": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Sat Sep 14 01:35:09 2024 -0400"
      },
      "committer": {
        "name": "Chris Wells",
        "email": "iroh@apache.org",
        "time": "Sat Sep 14 01:35:09 2024 -0400"
      },
      "message": "switch twatcher dependency from asyncinotify to watchfiles\n\nThis allows for development/deployment on platforms other than Linux.\n"
    },
    {
      "commit": "89f3669f51317d221c46a06baec7427ada3b09ce",
      "tree": "9b955c96a6ea472235949711d5b38980f0f231fa",
      "parents": [
        "190a579a0ca86615f44d3f4bfe8cb4331bf6370b"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Jun 20 21:51:56 2024 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Thu Jun 20 21:51:56 2024 -0500"
      },
      "message": "Round out the draft DB module.\n\n* db.py: add docstrings/comments. Add default __main__ code: display error.\n* requirements.txt: add easydict\n"
    },
    {
      "commit": "190a579a0ca86615f44d3f4bfe8cb4331bf6370b",
      "tree": "a29857ec1c4b1bc48a948885d540b57b8eed8ca3",
      "parents": [
        "214b7611afd9b07b10c15c0ffd15a67477309bf5"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Jun 19 00:43:14 2024 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Jun 19 00:43:14 2024 -0500"
      },
      "message": "Use args as params, rather than require a tuple\n"
    },
    {
      "commit": "214b7611afd9b07b10c15c0ffd15a67477309bf5",
      "tree": "ed6a4ef3810689d6ecbbd64e66fbeec8171293a4",
      "parents": [
        "8ff42a3457942af7b111c1c8e8fa8a5cc0a6436a"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Jun 19 00:35:33 2024 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Jun 19 00:35:33 2024 -0500"
      },
      "message": "File or section may be absent.\n"
    },
    {
      "commit": "8ff42a3457942af7b111c1c8e8fa8a5cc0a6436a",
      "tree": "11428d08f4cf6adfbb7ec9eefe181a83541423a1",
      "parents": [
        "2d95705c37d4ac1ef2b2ad840e7adc65c6bcc4d6"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Jun 19 00:15:56 2024 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Jun 19 00:15:56 2024 -0500"
      },
      "message": "Use conn.cursor() to propagate .row_factory\n"
    },
    {
      "commit": "2d95705c37d4ac1ef2b2ad840e7adc65c6bcc4d6",
      "tree": "e4e2c490c6cac79bace7a369325d267f4f08c145",
      "parents": [
        "a44af4310338b10478005036652a5e978dadcaf6"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Jun 19 00:05:21 2024 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Wed Jun 19 00:05:21 2024 -0500"
      },
      "message": "Initial draft/explore of v2 sqlite interface, for discussion\n"
    },
    {
      "commit": "a44af4310338b10478005036652a5e978dadcaf6",
      "tree": "a0068e549d0ba588501074df22f7dc774adf70f0",
      "parents": [
        "f99768227d8d171d75822a1ca9bab896754fb934"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sat May 11 13:25:31 2024 +0100"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sat May 11 13:25:31 2024 +0100"
      },
      "message": "OF: standardise indentation\n"
    },
    {
      "commit": "f99768227d8d171d75822a1ca9bab896754fb934",
      "tree": "4df41a78b3b86f9de559ee9acaef8e36e6346143",
      "parents": [
        "8f49f46f5c1f016b53cf2b3f5369260c3deb0e10"
      ],
      "author": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Apr 28 21:39:53 2024 -0500"
      },
      "committer": {
        "name": "Greg Stein",
        "email": "gstein@gmail.com",
        "time": "Sun Apr 28 21:39:53 2024 -0500"
      },
      "message": "Log each template we watch. Use str() in case we are passed a Path instance.\n"
    },
    {
      "commit": "8f49f46f5c1f016b53cf2b3f5369260c3deb0e10",
      "tree": "966a1b3543c614621283e6d50641c653eecc0863",
      "parents": [
        "aa49948ab31385e656ffb114e66ac28c0c92192b"
      ],
      "author": {
        "name": "Chris Thistlethwaite",
        "email": "christ@apache.org",
        "time": "Tue Feb 27 15:20:58 2024 -0500"
      },
      "committer": {
        "name": "Chris Thistlethwaite",
        "email": "christ@apache.org",
        "time": "Tue Feb 27 15:20:58 2024 -0500"
      },
      "message": "released .52, bumping to .53\n"
    },
    {
      "commit": "aa49948ab31385e656ffb114e66ac28c0c92192b",
      "tree": "ab7d1c6845ccaf78e928d0029d452867ab52ffe0",
      "parents": [
        "74f5eab7999fe6ad9439a7a7e6d367ababeaa4d5",
        "6b112f50b74cbc65a8c8c61764c3af10d8e33007"
      ],
      "author": {
        "name": "Chris Thistlethwaite",
        "email": "christ@apache.org",
        "time": "Thu Feb 15 13:36:54 2024 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 15 13:36:54 2024 -0500"
      },
      "message": "Merge pull request #18 from apache/pre-0.52\n\nBump release"
    },
    {
      "commit": "74f5eab7999fe6ad9439a7a7e6d367ababeaa4d5",
      "tree": "7429f533d713b2002055d3ebd3442dbdf584f2c4",
      "parents": [
        "16dc0d803f8dbd3908fc12dd5dda847eaff9eff0",
        "d2332c9777f59e6359cb3c1b2284b437226f5db6"
      ],
      "author": {
        "name": "Chris Thistlethwaite",
        "email": "christ@apache.org",
        "time": "Thu Feb 15 13:34:08 2024 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 15 13:34:08 2024 -0500"
      },
      "message": "Merge pull request #17 from apache/tagrel\n\nReleases need tags"
    },
    {
      "commit": "6b112f50b74cbc65a8c8c61764c3af10d8e33007",
      "tree": "99304f2a344e2de9ae1f4a9f8a30b2ae1d845381",
      "parents": [
        "16dc0d803f8dbd3908fc12dd5dda847eaff9eff0"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sat Feb 10 23:36:26 2024 +0000"
      },
      "committer": {
        "name": "Sebb",
        "email": "sebb@apache.org",
        "time": "Sat Feb 10 23:36:26 2024 +0000"
      },
      "message": "Bump release\n"
    }
  ],
  "next": "d2332c9777f59e6359cb3c1b2284b437226f5db6"
}
