)]}'
{
  "log": [
    {
      "commit": "292143c8f4465fdcb2c35ed40cdd7e4dd8d031e1",
      "tree": "c98944e34fe73857cd07fc09d77c51b1fc4f9cd9",
      "parents": [
        "8b5dd8e35e02e36932ed5436eded3454e2b67d3c"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 24 05:26:25 2025"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 24 05:33:43 2025"
      },
      "message": "README: Update for release 3.3.1 .\n"
    },
    {
      "commit": "8b5dd8e35e02e36932ed5436eded3454e2b67d3c",
      "tree": "2d41b91e0d47441ba533aad24716bf3b49476660",
      "parents": [
        "f4cab9a5155d36169aa9aa5fef3676d1b7ae912a"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 24 05:33:20 2025"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 24 05:33:43 2025"
      },
      "message": "setup.py: Update bundled libusb1 dll to 1.0.28 .\n"
    },
    {
      "commit": "f4cab9a5155d36169aa9aa5fef3676d1b7ae912a",
      "tree": "044eb8e856c0fdb62a81ee0460e73ad747ab7b77",
      "parents": [
        "e8883543b6614012c8624c36ea44052725781ee7"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 24 05:24:02 2025"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 24 05:26:35 2025"
      },
      "message": "usb1._libusb1: Add a few missing constants.\n\nMore work is needed to superspeed USB support, this is just the low-\nhanging fruit.\n"
    },
    {
      "commit": "e8883543b6614012c8624c36ea44052725781ee7",
      "tree": "8aa5f81f10804c36c51b5e52a37275db43d68042",
      "parents": [
        "2dd834dad913a89c68309ac1afa0efc0e55b606f"
      ],
      "author": {
        "name": "Martin",
        "email": "spleefer90@gmail.com",
        "time": "Fri Mar 21 12:37:43 2025"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 24 05:10:09 2025"
      },
      "message": "Fix incorrect getFinalizer() reference in setPollFDNotifiers()"
    },
    {
      "commit": "2dd834dad913a89c68309ac1afa0efc0e55b606f",
      "tree": "17099520df18f3724b8e44509d6372bb960d9693",
      "parents": [
        "2ab79818e51201f53ec5c8071e816c9aa62d934e"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 04 04:49:54 2025"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 04 04:49:54 2025"
      },
      "message": "README: Update for release 3.3.0 .\n"
    },
    {
      "commit": "2ab79818e51201f53ec5c8071e816c9aa62d934e",
      "tree": "63659ba64a840a66233e8ed38a602bb3d6b046b1",
      "parents": [
        "11e700bcbebceff3752a34849a39a360d0af4322"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Jan 11 10:26:04 2025"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Jan 11 10:30:45 2025"
      },
      "message": "usb1: Document the (internal) _LibUSB1Finalizer class\n"
    },
    {
      "commit": "11e700bcbebceff3752a34849a39a360d0af4322",
      "tree": "265acab685e15b59c1f7c1fc99d1ac5d23f128d6",
      "parents": [
        "bc572fe63c3e0d0933a04dd0a9e374b1a83b0985"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Jan 11 10:24:20 2025"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Jan 11 10:30:40 2025"
      },
      "message": "usb1: Make finalizer registration thread-safe\n\nitertools.count.__next__ is not thread-safe.\nWrapping it in a lock call seems the simplest approach.\nMake counter an instance attribute rather than a class attribute, to reduce\nthe risk of lock contention at the expense of a slight increase in memory use.\n"
    },
    {
      "commit": "bc572fe63c3e0d0933a04dd0a9e374b1a83b0985",
      "tree": "ffeed79c9251f1abb4c1e0a4b8963a05b66604fc",
      "parents": [
        "6e6a6e301b19cd683b02297e41c572acde05cec2"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Jan 08 17:11:35 2025"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Jan 08 17:11:35 2025"
      },
      "message": "setup.py: Fix DLL version check\n\nThis was introduced to check the error message and slipped through the\ncracks.\n"
    },
    {
      "commit": "6e6a6e301b19cd683b02297e41c572acde05cec2",
      "tree": "2a5ae47f8025a0a0dbec58577cc4dbea1f36a44b",
      "parents": [
        "3c750d64a6755e067bdc76732395249a2fafdf05"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Jan 08 07:08:30 2025"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Jan 08 07:08:30 2025"
      },
      "message": "setup.py: Check DLL version when packaging\n\nThis has two benefits:\n- this should help detect issues like how python-libusb1 bundled libusb\n  1.0.25 instead of the intended 1.0.26 as documented (traces are now gone,\n  but I suspect a libusb release mixup as the SHA256 does not match the\n  now-available 1.0.26 release 7z)\n- it makes it easier to check what version was packaged, instead of having\n  to check which 7z matches the bundled sha256\n"
    },
    {
      "commit": "3c750d64a6755e067bdc76732395249a2fafdf05",
      "tree": "e78125b700839f136ccba0204958d919aea54709",
      "parents": [
        "b5a322d3aad8ca4dbdbe0ad31bb42b7d90ce4bf7"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 16:59:09 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 16:59:09 2024"
      },
      "message": "usb1.testUSB1: avoid using warnings.catch_warnings\n\nI wanted to use features which are not available in the current pypy\nrelease, so revert to alternating calls to warnings.filterwarnings and\nwarnings.resetwarnings . Not as good, but avoid breaking tests on pypy.\n"
    },
    {
      "commit": "b5a322d3aad8ca4dbdbe0ad31bb42b7d90ce4bf7",
      "tree": "50d3c280b2c40354dae8fadcf4d7ad5b6938d4bb",
      "parents": [
        "dab4906eac9ad61613e21b90ce7279204efa33ab"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 16:45:48 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 16:47:16 2024"
      },
      "message": "setup.sh: Stop suggesting handing asc files to twine\n\npypi now silently discard these files. This is sad.\n"
    },
    {
      "commit": "dab4906eac9ad61613e21b90ce7279204efa33ab",
      "tree": "a0e1cee284ab6b49edefda1bec118a377227cc89",
      "parents": [
        "576e85628585db40c645329d032b284eec7b5d62"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 15:30:02 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 16:38:34 2024"
      },
      "message": "usb1: Rework finalizer registration\n\nSimplify the code.\nStop using object ids as identifiers, instead generate sequential numbers.\nAutomate removal of the finalizer.\nFactorise code.\n"
    },
    {
      "commit": "576e85628585db40c645329d032b284eec7b5d62",
      "tree": "88baab5d68e93d35c34fca33dc6d29e35bd006d6",
      "parents": [
        "fde81a35d74d2f46f7d2d08d4f0bda246e8bc79a"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 15:16:53 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 15:30:25 2024"
      },
      "message": "usb1.testUSB1: Silence a deprecation warning triggered as part of the test\n"
    },
    {
      "commit": "fde81a35d74d2f46f7d2d08d4f0bda246e8bc79a",
      "tree": "d4ef8dcd82713e5dcea735c69380fcb0e995aab7",
      "parents": [
        "b2fcdd1a017716e162f2e73bf9c555ab15d4597c"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 15:01:25 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 15:01:25 2024"
      },
      "message": "usb1.testUSB1: Make pylint happy\n"
    },
    {
      "commit": "b2fcdd1a017716e162f2e73bf9c555ab15d4597c",
      "tree": "61e0c33745e5878684582daae3711e8d27f54137",
      "parents": [
        "4fb608b9e9b53f06dce5c5245a47ca9532d42cd3"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 15:00:31 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Dec 29 15:00:31 2024"
      },
      "message": "usb1.__pyinstaller: Make pylint happy\n\nAdd trailing newlines, as any well-formed text file should have.\nTell pylint to ignore other currently-reported errors.\n"
    },
    {
      "commit": "4fb608b9e9b53f06dce5c5245a47ca9532d42cd3",
      "tree": "728ab6138e9d72cc82522bf9a8099bbc5e4fc68a",
      "parents": [
        "f154bc2bac74635dfda45cf814e37745b3f326fd"
      ],
      "author": {
        "name": "Catherine",
        "email": "whitequark@whitequark.org",
        "time": "Mon Jun 17 02:33:39 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Dec 28 13:17:27 2024"
      },
      "message": "Add `stacklevel\u003d` to `USBContext` deprecation message."
    },
    {
      "commit": "f154bc2bac74635dfda45cf814e37745b3f326fd",
      "tree": "95a5b907e58feaa89c4932d9146f176e754804d4",
      "parents": [
        "b9e1d7debdfe59d8cc7f83be9cb5105c1d65997b"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Dec 28 12:45:27 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Dec 28 13:13:20 2024"
      },
      "message": "README: Update and assign a version to the new release\n"
    },
    {
      "commit": "b9e1d7debdfe59d8cc7f83be9cb5105c1d65997b",
      "tree": "7bde86b029ed5a9cde05241e3c02057b921c364f",
      "parents": [
        "a9034c1d10adaa13bf20a7d69a5561bab5698cc8"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Dec 28 13:13:00 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Dec 28 13:13:20 2024"
      },
      "message": "usb1: Expose and give control of transfer flags\n"
    },
    {
      "commit": "a9034c1d10adaa13bf20a7d69a5561bab5698cc8",
      "tree": "a875dcb6353698d3abc1c54d4072c7ade947856f",
      "parents": [
        "50e913b928244b4a7597b4931dbbf6d61e1a9c4c"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Dec 28 12:38:31 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Dec 28 12:38:31 2024"
      },
      "message": "setup.py: Silence warning about discontinued test_suite argument\n"
    },
    {
      "commit": "50e913b928244b4a7597b4931dbbf6d61e1a9c4c",
      "tree": "94c9a9290361300bf43874c45d10daa974a10d57",
      "parents": [
        "b0ae31fefe1bedd1ac0fcfc8c87e247d4183293f"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Dec 28 12:13:44 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Dec 28 12:16:33 2024"
      },
      "message": "*.__registerFinalizer: Polish duplicate-handle exception a bit\n\nJust enough for these errors to not look like experimental leftovers.\n"
    },
    {
      "commit": "b0ae31fefe1bedd1ac0fcfc8c87e247d4183293f",
      "tree": "d4ff1bd05fc1a5f4821c8793fafcdb95ae55353a",
      "parents": [
        "c18c9fa7cdcaa8e29088af527e5fbe481a53423f"
      ],
      "author": {
        "name": "Antoine Damhet",
        "email": "xdbob@xdbob.net",
        "time": "Tue Aug 13 15:22:01 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Dec 28 11:27:07 2024"
      },
      "message": "testUSB1: fix python 3.13 support\n\nPEP 667[1] makes all calls to `locals()` return a snapshot of the local\ncontext. Fix the tests by removing the `local_dict` variable and keep\nlooking at the latest `locals()` state.\n\n[1]: https://peps.python.org/pep-0667/\n\nSigned-off-by: Antoine Damhet \u003cxdbob@xdbob.net\u003e\n"
    },
    {
      "commit": "c18c9fa7cdcaa8e29088af527e5fbe481a53423f",
      "tree": "17ae52982d962641e5e5355da00339fb2784b64e",
      "parents": [
        "9e5fb206116785e29bee08cbe0131921bccd00f8"
      ],
      "author": {
        "name": "Soren Stoutner",
        "email": "soren@debian.org",
        "time": "Mon Oct 07 23:42:52 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Oct 13 12:54:39 2024"
      },
      "message": "Fix CRLF problem.\n"
    },
    {
      "commit": "9e5fb206116785e29bee08cbe0131921bccd00f8",
      "tree": "c6e8efa2c5dea9b2db6adcfc679864af7d33898d",
      "parents": [
        "7eac6151e35fcdd141079c4ebf19aab60c4a86cd"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Oct 13 12:49:35 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Oct 13 12:49:35 2024"
      },
      "message": "README: Update with changes since 3.1.0\n"
    },
    {
      "commit": "7eac6151e35fcdd141079c4ebf19aab60c4a86cd",
      "tree": "f97db043f150988202531e2ee0394398f246cc74",
      "parents": [
        "81296ea05e4949f293e56bb076dbeba6cbf8e4f9"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Feb 28 14:23:44 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Oct 13 12:42:58 2024"
      },
      "message": "usb1: Add support for more modern libusb1 features\n\n- libusb_init_context\n- libusb_set_log_cb\n- libusb_setlocale + libusb_strerror\n- libusb_wrap_sys_device\n"
    },
    {
      "commit": "81296ea05e4949f293e56bb076dbeba6cbf8e4f9",
      "tree": "fa16ce6612cbe40f5309974f0aa6b4b54411c6ce",
      "parents": [
        "e3e48229290eb332e5b5c35f239faafb39b6b015"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Oct 11 07:07:17 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Oct 13 12:42:46 2024"
      },
      "message": "all: Make pylint happier.\n"
    },
    {
      "commit": "e3e48229290eb332e5b5c35f239faafb39b6b015",
      "tree": "194d7e28df269b940008c6a4a01b415e028b08d0",
      "parents": [
        "6850711a158382ce16a7e5abd9f102973c4b72ed"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Oct 11 06:44:13 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Oct 11 06:44:13 2024"
      },
      "message": "setup.py: Fix libusb 1.0.27 dll extraction path\n"
    },
    {
      "commit": "6850711a158382ce16a7e5abd9f102973c4b72ed",
      "tree": "c37b9a53480f45e26dc0102ceb81158766c9aac5",
      "parents": [
        "98eea31a76e63661a99044f2efb2ef8ad55c99fb"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Oct 11 05:56:40 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Oct 11 05:57:07 2024"
      },
      "message": "usb1._libusb1: Include major version in soname\n\nFixes at least library lookup on Debian.\n"
    },
    {
      "commit": "98eea31a76e63661a99044f2efb2ef8ad55c99fb",
      "tree": "b52345c678aebc2083334b8d9926977f72145146",
      "parents": [
        "a03f4c3171d55a8325accc6b79246c235f0a6ce5"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Oct 11 05:54:06 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Oct 11 05:57:07 2024"
      },
      "message": "usb1._libusb1: Rework __getLibrary\n\nFirst prepare the list of filenames/filepaths to try loading, including\na possible fallback to find_library, and then try loading them.\nThis allows improving the error being raised so it can be better\nrepresentative of the attempted loads.\nIt also makes the code easier to read.\nOnly minor functional changes are intended: the exact exception type being\nraised when find_library isn\u0027t used, and the content of the exception\nraised otherwise.\n"
    },
    {
      "commit": "a03f4c3171d55a8325accc6b79246c235f0a6ce5",
      "tree": "eba570e3b7d0692c2bdcc7eb05789b6049e5f190",
      "parents": [
        "f7927af39961476b9f51a554c154f30f12f1af44"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 05 23:20:36 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 05 23:20:45 2024"
      },
      "message": "usb1._libusb1: Mark libusb_control_setup as packed\n\nFollowing a libusb commit: which states that libusb relies on this struct\nnot having any padding but until now it was left to the compiler to decide.\nApparently no compiler (nor ctypes) insert padding as otherwise it would\nhave broken all asynchronous control transfers, but better be explicit.\n"
    },
    {
      "commit": "f7927af39961476b9f51a554c154f30f12f1af44",
      "tree": "1743c29023dfddf220bf1c60d1730059872012d8",
      "parents": [
        "27bc642fa0d34d920fbbf430f379112fce1f0267"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 05 13:52:24 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 05 14:03:54 2024"
      },
      "message": "setup.sh: Automate \"twine check\" of generated distributions\n"
    },
    {
      "commit": "27bc642fa0d34d920fbbf430f379112fce1f0267",
      "tree": "ca4d767f3dee6ccdc83539a7868781c292e52d1b",
      "parents": [
        "e35e763fb1e9c93ca779d9cf6f4f6bf9d0578739"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 05 13:46:50 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 05 14:03:54 2024"
      },
      "message": "setup.cfg: Add long-description content type\n"
    },
    {
      "commit": "e35e763fb1e9c93ca779d9cf6f4f6bf9d0578739",
      "tree": "b7e96727d2dfedce53348e43becd4eaac67c615e",
      "parents": [
        "77ab2fffeca5929e83c1bc49b41fd9ef41d7d86e"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Feb 28 13:40:23 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 05 13:16:33 2024"
      },
      "message": "usb1._libusb1: Fix callback calling convention\n\nThis fixes transfer completion callback when running in a x86 32-bits Windows\nversion of the python interpreter.\n\nThis change should only affect x86 Windows:\n- because of the \"Windows\" platform match\n- because on x86-64 Windows all calling conventions are the same\n\nThis change affects all callback types, but hotplug-related callbacks were\nnever used on Windows, so these should not have caused any issue.\n"
    },
    {
      "commit": "77ab2fffeca5929e83c1bc49b41fd9ef41d7d86e",
      "tree": "00ff63d9c4867c9c6bc2477a9b0ce5a3bcaad1ef",
      "parents": [
        "0365779dbffe2830658d37ee1ad00b34f0d2bd92"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 05 13:16:04 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Mar 05 13:16:26 2024"
      },
      "message": "all: Make latest pylint happier\n"
    },
    {
      "commit": "0365779dbffe2830658d37ee1ad00b34f0d2bd92",
      "tree": "1967d27a0fca5be657d78fee67e035a26e90d70f",
      "parents": [
        "32adb647e4acff801efe89aa2169e00d13d5b27e"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 04 22:33:36 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 04 23:47:33 2024"
      },
      "message": "examples/scan_device_tree.py: Convert tabs to spaces\n"
    },
    {
      "commit": "32adb647e4acff801efe89aa2169e00d13d5b27e",
      "tree": "9b8d0887298a3852190391d9f5ed039502b1d888",
      "parents": [
        "93885184447209c03d0d56d666b79aa79827b699"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Feb 28 13:44:38 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 04 10:47:53 2024"
      },
      "message": "setup.{py,sh}: Bundle with and test against libusb 1.0.27\n\nThe corresponding new features are not wrapped yet (as are several older\nfeatures...).\n"
    },
    {
      "commit": "93885184447209c03d0d56d666b79aa79827b699",
      "tree": "fd04e8a71d9bf080eeba10225bbb5aab435539c1",
      "parents": [
        "dd7fbda1c80c9a936d6e8a88dce4b1c5f8b81609"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Feb 28 13:43:48 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 04 10:46:54 2024"
      },
      "message": "setup.sh: Add note about creating a release on github\n\nFor redundancy with pypi.\n"
    },
    {
      "commit": "dd7fbda1c80c9a936d6e8a88dce4b1c5f8b81609",
      "tree": "4806a1cadf7b976d6c7c77031ce8f3950b4a458a",
      "parents": [
        "f01f89a84927113d8ffd7458631516a6ec754306"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Feb 28 14:24:47 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 04 10:46:54 2024"
      },
      "message": "usb1._libusb1: Minor changes\n"
    },
    {
      "commit": "f01f89a84927113d8ffd7458631516a6ec754306",
      "tree": "cc99c2635cab670721baa1c2dbbe5df51b7221d5",
      "parents": [
        "753398e89889c3960d8280f795341a6fd5f232e8"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Feb 28 13:41:03 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 04 10:46:54 2024"
      },
      "message": "usb1._libusb1: Minor cleanups\n"
    },
    {
      "commit": "753398e89889c3960d8280f795341a6fd5f232e8",
      "tree": "c76562cb6227e323c13d6617b0c2ffa3ba0e64b8",
      "parents": [
        "2b49e2c79fa2bbbaf0d27f91c8592a8d6014c157"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 04 10:43:30 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Mar 04 10:45:20 2024"
      },
      "message": "usb1: Drop unusued local variable\n"
    },
    {
      "commit": "2b49e2c79fa2bbbaf0d27f91c8592a8d6014c157",
      "tree": "2d77ef1569765f728a32e4cd6d4d4fc1c254c159",
      "parents": [
        "686540f58de0fb737005e0fe34686b7af303b391"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 14 02:45:31 2023"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Feb 28 00:22:58 2024"
      },
      "message": "setup·{py,cfg}: Move pyinstaller40 entrypoints to setup.cfg\n\nTo reduce the content of setup.py .\n"
    },
    {
      "commit": "686540f58de0fb737005e0fe34686b7af303b391",
      "tree": "7850f5023e418143bfdc8f33410f4cb75095e7d3",
      "parents": [
        "26aa2036c1bac2702a4c689a173514ad6f556a4c"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 14 02:44:45 2023"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Feb 28 00:22:58 2024"
      },
      "message": "Update versioneer to 0.29 .\n\nIn preparation for (maybe) moving to pyproject.toml .\n"
    },
    {
      "commit": "26aa2036c1bac2702a4c689a173514ad6f556a4c",
      "tree": "c6e779dc0e55821b8eebf5c08b176867bd767da2",
      "parents": [
        "7943628ffcba68c20e75c1902e5a849b05f10445"
      ],
      "author": {
        "name": "Jamie Smith",
        "email": "smit109@usc.edu",
        "time": "Sun Jan 28 02:56:31 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Feb 10 12:24:13 2024"
      },
      "message": "Use enumerate\n"
    },
    {
      "commit": "7943628ffcba68c20e75c1902e5a849b05f10445",
      "tree": "24c6a71f81193260ceae483b95e86fafc094ebb6",
      "parents": [
        "37d77ea3ae83816b203a9ccb3147ef0f8896cbe0"
      ],
      "author": {
        "name": "Jamie Smith",
        "email": "smit109@usc.edu",
        "time": "Sun Jan 28 02:00:05 2024"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Feb 10 12:24:13 2024"
      },
      "message": "Add scan device tree example\n"
    },
    {
      "commit": "37d77ea3ae83816b203a9ccb3147ef0f8896cbe0",
      "tree": "3e732cfec44eb0609362eef18e9331346479492b",
      "parents": [
        "3d49a5a31d1430103065a79cd4a86f5c040798ee"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Oct 29 06:07:01 2023"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Oct 29 06:07:11 2023"
      },
      "message": "README: Latest chunk is now released\n\n...one commit ago\n"
    },
    {
      "commit": "3d49a5a31d1430103065a79cd4a86f5c040798ee",
      "tree": "492e4036af38f6bf82f06d070feb828951bd47b5",
      "parents": [
        "fa7479c9d61b80145ab3d9a0a45350b7e84851ec"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Oct 29 03:01:38 2023"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Oct 29 03:02:19 2023"
      },
      "message": "README: Update with changes since 3.0.0\n"
    },
    {
      "commit": "fa7479c9d61b80145ab3d9a0a45350b7e84851ec",
      "tree": "992daec5654ad1e110653077b267ae08d8291480",
      "parents": [
        "12b6639d48b7cc2f2fdb216a8ba7644aa5e1cd96"
      ],
      "author": {
        "name": "Catherine",
        "email": "whitequark@whitequark.org",
        "time": "Sat Oct 28 23:52:52 2023"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Oct 29 02:51:47 2023"
      },
      "message": "usb1: bind USBContext.interruptEventHandler.\n\nFixes #90.\n"
    },
    {
      "commit": "12b6639d48b7cc2f2fdb216a8ba7644aa5e1cd96",
      "tree": "610f9d52fd1a445ed2c05cbd629ff724e7f9974e",
      "parents": [
        "1f7c1a586ab473558e6cc206c6c64f4b04773c40"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 14 01:37:06 2023"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 14 01:41:08 2023"
      },
      "message": "setup.{sh,py}: Test with and bundle libusb 1.0.26 dlls\n"
    },
    {
      "commit": "1f7c1a586ab473558e6cc206c6c64f4b04773c40",
      "tree": "e23c7470f38b6adb8dab848d48ed680c7e4b4817",
      "parents": [
        "191c878188c0ca182f021be8135d6c06577d94e3"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 14 01:32:26 2023"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 14 01:32:26 2023"
      },
      "message": "usb1: Replace lambda in finalizer argument with partial\n\nWhile it seems the lambda instance does not keep a reference to\nsetPollFDNotifiers\u0027s stack cell (which would cause the finalizer to keep a\nreference to the object it is monitoring, preventing proper finalization)\nin cPython 3.11, I am not confident this would be also the case in other\nimplementations and versions. I do not expect functools.partial instances\nto keep any reference to their call stack, so they seem safer in such\nreference-sensitive context.\n"
    },
    {
      "commit": "191c878188c0ca182f021be8135d6c06577d94e3",
      "tree": "deff4ff49622e60cbc4bb3711f33d37224a999d7",
      "parents": [
        "8c0f8a19b2915e5bf88a9c3071b1f9fd3d3edda7"
      ],
      "author": {
        "name": "Max Truxa",
        "email": "dev@maxtruxa.com",
        "time": "Tue Jun 13 16:44:10 2023"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 14 01:22:59 2023"
      },
      "message": "usb1: Clean up poll fd finalizer\n"
    },
    {
      "commit": "8c0f8a19b2915e5bf88a9c3071b1f9fd3d3edda7",
      "tree": "899cbce3e40224efda4f7fb75921280aceca9d8c",
      "parents": [
        "2a1ae043350b49b01c5945dbb4da31bb34f7f382"
      ],
      "author": {
        "name": "Jefferson-Lopes",
        "email": "jeff.777.lopes@gmail.com",
        "time": "Thu Apr 07 17:02:42 2022"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Apr 08 14:54:02 2022"
      },
      "message": "fix typo\n"
    },
    {
      "commit": "2a1ae043350b49b01c5945dbb4da31bb34f7f382",
      "tree": "7678af82df63659dbe22f6ccd0ba66ba3d1a640f",
      "parents": [
        "77fb4160c9cbdece218acdd7dcf53dae3d0880a1"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Feb 01 00:08:49 2022"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Feb 06 04:51:03 2022"
      },
      "message": "setup.py, README: Release 3.0.0 .\n\nNow bundling libusb1 1.0.25 dlls.\nAlso, run tests with 1.0.25.\n"
    },
    {
      "commit": "77fb4160c9cbdece218acdd7dcf53dae3d0880a1",
      "tree": "178c2bc81d1b9268603be5c9ba9de9c30bb131d7",
      "parents": [
        "6887f197d216537982ee49a45acd771a6786d75e"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Feb 06 04:50:52 2022"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Feb 06 04:51:03 2022"
      },
      "message": "usb1.testUSB1: Drop forgotten debug prints.\n"
    },
    {
      "commit": "6887f197d216537982ee49a45acd771a6786d75e",
      "tree": "541e84dbc972bfa03c352ced1d6844821844f1d5",
      "parents": [
        "d9fb777ee583161c93856e56bbe74379cf4388bc"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Feb 03 16:14:10 2022"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Feb 04 13:19:25 2022"
      },
      "message": "usb1.testUSB1: Do not allocate libusb transfers in tests.\n\nFrom 1.0.25, calling libusb_free_transfer without having assigned it to\na device segfaults. This is not a supported call sequence, so hook into\n{,de}allocation functions during affected test methods, and use this to\ncheck their consistency.\n"
    },
    {
      "commit": "d9fb777ee583161c93856e56bbe74379cf4388bc",
      "tree": "72ab3c4ece9a60d3921496d9422bc1b418d36a51",
      "parents": [
        "99e8d4d142658b2634c32313ef6ffc4b1cd1c7d6"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Feb 03 13:35:37 2022"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Feb 04 13:11:01 2022"
      },
      "message": "setup.{py,cfg}: Convert more from setup.py into setup.cfg .\n\nAlso, get rid of detailed python version classifiers, I guess they do not\nmean much.\n"
    },
    {
      "commit": "99e8d4d142658b2634c32313ef6ffc4b1cd1c7d6",
      "tree": "e98ce3ae8e3e738857137505cd25828b3f41a1d1",
      "parents": [
        "eae1dbff740ccb7dd62794222c6d371818603962"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Feb 03 16:12:46 2022"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Feb 04 13:09:42 2022"
      },
      "message": "setup.sh: Exit on first test failure.\n\nThis was the intent of \"false\" with \"set -eu\", but did not work.\n"
    },
    {
      "commit": "eae1dbff740ccb7dd62794222c6d371818603962",
      "tree": "5dbfbe3b93218c9ec8eeeb5c5a073357463952ad",
      "parents": [
        "df944bd782f54eeee4187541ea8f635b1725b609"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Feb 01 01:33:40 2022"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Feb 01 01:52:37 2022"
      },
      "message": "usb1.testUSB1: Use a NULL-pointer instead as dummy device handle.\n\nCleaner than providing a valid-looking pointer libusb did not provide.\n"
    },
    {
      "commit": "df944bd782f54eeee4187541ea8f635b1725b609",
      "tree": "0367dae255075c0571469eca49b90b950dd3727f",
      "parents": [
        "c31c1d8babb8aa7d77bb6eb5e17181ccee39af2c"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Feb 01 00:19:14 2022"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Feb 01 01:52:37 2022"
      },
      "message": "setup.sh: Tell which python version failed the tests.\n"
    },
    {
      "commit": "c31c1d8babb8aa7d77bb6eb5e17181ccee39af2c",
      "tree": "28beccd48dd6168765e1f9876580379d706cb9cc",
      "parents": [
        "86ad8ab73f7442874de71c1f9f824724d21da92b"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Feb 01 00:06:04 2022"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Feb 01 01:52:37 2022"
      },
      "message": "setup.py: Drop py2 codepath.\n\nUse py3-only subprocess.DEVNULL instead of opening /dev/null .\n"
    },
    {
      "commit": "86ad8ab73f7442874de71c1f9f824724d21da92b",
      "tree": "3942cd856b07a487d2f548318bad4f29ba11cf01",
      "parents": [
        "eab9e858c7ae30a3ef457d6dbc0dd4748c8ac1d9"
      ],
      "author": {
        "name": "Jordan Bonecutter",
        "email": "jordanbonecutter@gmail.com",
        "time": "Tue Dec 28 22:21:14 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Dec 29 00:44:12 2021"
      },
      "message": "Fix typo\n\ncontewt \u003d\u003e context"
    },
    {
      "commit": "eab9e858c7ae30a3ef457d6dbc0dd4748c8ac1d9",
      "tree": "599f80d02618f50d1b1c13bbcdc136b0c5776eb1",
      "parents": [
        "032073e2bdd4634d6d55fb94a6f41bb5e5b15252"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Dec 01 12:20:06 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Dec 01 12:20:06 2021"
      },
      "message": "MANIFEST.in: Add trailing newline.\n\nLike any well-formed text file is supposed to always have.\n"
    },
    {
      "commit": "032073e2bdd4634d6d55fb94a6f41bb5e5b15252",
      "tree": "3f5696171f419bc3d62c457089aa2709e4635ed4",
      "parents": [
        "094ae7d8e45cded9aa0aadb1fde7f37bf6240656"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Dec 01 12:19:35 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Dec 01 12:19:35 2021"
      },
      "message": "Update versioneer to 0.21 .\n\nHopefully fixes support for python 3.11 .\n"
    },
    {
      "commit": "094ae7d8e45cded9aa0aadb1fde7f37bf6240656",
      "tree": "6f899b37f465fa6795d57b254ce10108362b4b75",
      "parents": [
        "fd3b088a367a3016cbc0871f0e8d1880311cb32e"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Sep 24 22:30:22 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Sep 24 22:30:22 2021"
      },
      "message": "README: Update for release.\n"
    },
    {
      "commit": "fd3b088a367a3016cbc0871f0e8d1880311cb32e",
      "tree": "cd0171c7abf4f2aed658c1aa8a4d271cea2dbf07",
      "parents": [
        "203c47f7c91e5e73507955d60212864e11928efa"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Sep 24 00:37:36 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Sep 24 00:41:52 2021"
      },
      "message": "runTestLibusb.sh: Use examples as extra test-cases.\n"
    },
    {
      "commit": "203c47f7c91e5e73507955d60212864e11928efa",
      "tree": "8ae53ade6c6650b78e1a74f5aa624f367df0c399",
      "parents": [
        "190adeba08e66f1d675286d853069e306eaa4f32"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Sep 24 00:33:13 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Sep 24 00:33:13 2021"
      },
      "message": "setup.sh: Test against libusb-1.0 v1.0.24\n\nAlso, change directory to repository root (which contains this script).\nAlso, drop a now-irrelevant comment about pypy (2.7).\n"
    },
    {
      "commit": "190adeba08e66f1d675286d853069e306eaa4f32",
      "tree": "0c5748679ac7a92e8c4155ec25f0d3635284c5b9",
      "parents": [
        "754c0bc527afd1b0c5028b0fc8f4da44afc53e9d"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Sep 23 03:50:06 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Sep 23 04:02:36 2021"
      },
      "message": "usb1: Make libusb_device_p a c_void_p.\n\nFixes a pypy3 segfault in USBDevice\u0027s finalizer with examples/hotplug.py .\n\nThe pointers in the device_p array obtained from libusb_get_device_list are\nvisibly not copied to the ctypes objects created while iterating the list.\nOnce the list is freed by libusb_free_device_list, those ctypes pointers\nobjects are reading the memory address from a freed memory location. With\nc_void_p, the iteration produces regular python integers, which forces the\ninterpreter to get its own copy, which then survives list free.\nUnfortunately, this removes a ctypes typecheck on every function taking\na libusb_device_p parameter.\n"
    },
    {
      "commit": "754c0bc527afd1b0c5028b0fc8f4da44afc53e9d",
      "tree": "de37e490ee3aa20d21acae60ae3a24386fd9fa52",
      "parents": [
        "c9ce92b771eef344bc4712bedf975103a6fa6746"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 23:36:34 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 23:36:34 2021"
      },
      "message": "examples/*: Convert to python 3.\n\nAlso bump copyright year.\n"
    },
    {
      "commit": "c9ce92b771eef344bc4712bedf975103a6fa6746",
      "tree": "14bd5b4cfb46c71237d15f3caa11ac3681e1c9fb",
      "parents": [
        "4e7b69418880223dbe49c0c890eb9fa0eded988a"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 23:35:53 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 23:35:53 2021"
      },
      "message": "usb1: Fix context pointer comparison in hotplugRegisterCallback\n\nThis was likely broken by the pointer type change in\n    usb1: Enforce object finalization order.\nas void and non-void pointers do not have the same attributes in ctypes.\n"
    },
    {
      "commit": "4e7b69418880223dbe49c0c890eb9fa0eded988a",
      "tree": "028a71153fc82eac0fb6582a96bcde95385c112c",
      "parents": [
        "71f16511aa64d3ce6b6aaa1d70c65e828ce2b6d4"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 23:28:29 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 23:28:29 2021"
      },
      "message": "usb1: Fix exception raised during handleEvents.\n\nFixes errors like:\n    File \"usb1/__init__.py\", line 2375, in handleEvents\n      self.__mayRaiseUSBError(\n    File \"usb1/__init__.py\", line 127, in mayRaiseUSBError\n      if value \u003c 0:\n  TypeError: \u0027\u003c\u0027 not supported between instances of \u0027USBContext\u0027 and \u0027int\u0027\n"
    },
    {
      "commit": "71f16511aa64d3ce6b6aaa1d70c65e828ce2b6d4",
      "tree": "b03188eb56ab41024e6de408256f8a79f411342f",
      "parents": [
        "a218c951f94a91ddb8746cf8116725a270a966ab"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 22:52:41 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 22:52:41 2021"
      },
      "message": "README: Fix typo.\n"
    },
    {
      "commit": "a218c951f94a91ddb8746cf8116725a270a966ab",
      "tree": "f71d855926eb35df064161534b7f8983dfad388c",
      "parents": [
        "35db7f84e5333bd03f9d1170e1c6c4ba242cf72f"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 22:05:34 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 22:05:34 2021"
      },
      "message": "README: Record yanking of 1.10.1 and its re-release as 2.0.0 .\n"
    },
    {
      "commit": "35db7f84e5333bd03f9d1170e1c6c4ba242cf72f",
      "tree": "d20b9845d3b32d88514bcd04248cef6dbdaa88e4",
      "parents": [
        "8951c70e5e721756f30b0ea68df9c76b97c9ff2b"
      ],
      "author": {
        "name": "Kolen Cheung",
        "email": "ickc@users.noreply.github.com",
        "time": "Wed Sep 22 03:49:55 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 22 03:49:55 2021"
      },
      "message": "update README.rst to reflect dropping Python 2.7"
    },
    {
      "commit": "8951c70e5e721756f30b0ea68df9c76b97c9ff2b",
      "tree": "6089b54399b21b3076f57ff1d3c9d7d13274b595",
      "parents": [
        "d4642715a24e9ec0005e1cc2b144cbec03c4de48"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 00:43:02 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 00:43:02 2021"
      },
      "message": "setup.sh: Print more selective commands.\n\nIn case super-minor gets to 2 digits someday.\n"
    },
    {
      "commit": "d4642715a24e9ec0005e1cc2b144cbec03c4de48",
      "tree": "c3e49a4ee9fbd07b259dc3579491f1df6e7afdc6",
      "parents": [
        "0024c36f0357504c41e5fc14ff9590e0459a8d5e"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 00:30:06 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 00:30:06 2021"
      },
      "message": "README: Fix syntax.\n"
    },
    {
      "commit": "0024c36f0357504c41e5fc14ff9590e0459a8d5e",
      "tree": "88cb7576ac0d63ea579794329b5fba4079daee2f",
      "parents": [
        "e40a3f0854d2070d821eefa07f21e84808fb9793"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 00:06:14 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 00:13:22 2021"
      },
      "message": "Release 1.10.0 .\n"
    },
    {
      "commit": "e40a3f0854d2070d821eefa07f21e84808fb9793",
      "tree": "e24e0fb672553b0561f2d5e2880c178c07dbdbd6",
      "parents": [
        "2f6a7194c52e2805c925f0ee407687054c9495fd"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 00:11:09 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 22 00:13:22 2021"
      },
      "message": "setup.sh: Drop python2 .\n"
    },
    {
      "commit": "2f6a7194c52e2805c925f0ee407687054c9495fd",
      "tree": "e1200d38406c3d339dc81ec18e92be0e0e2000ec",
      "parents": [
        "69fd5a3ed2f674d412131dfaf24bbc2534f3cf13"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Sep 19 08:38:46 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Sep 19 08:40:04 2021"
      },
      "message": "all: Make pylint happier.\n\nNow that 2.7 support is out of the way I can focus on what is reported by\nthe latest pylint version.\n"
    },
    {
      "commit": "69fd5a3ed2f674d412131dfaf24bbc2534f3cf13",
      "tree": "a45610fab0425940c2c22340d5b5b6e26a64ecfa",
      "parents": [
        "9efadf959b4868071b5b082e34110b0af03336c8"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Sep 19 08:22:30 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Sep 19 08:40:04 2021"
      },
      "message": "Drop support for python \u003c3.4 .\n\nThe trigger event for this is setuptool dropping support for 2to3.\nPinning an older setuptools version is bound to annoy applications which\ninclude python-libusb1 and may have conflicting setuptools requirements.\nRelying on 2to3 alternatives feel overkill when 2.7 has been EoL for over\na year and a half now.\n"
    },
    {
      "commit": "9efadf959b4868071b5b082e34110b0af03336c8",
      "tree": "e2726b92eb4e0ad569a75833ef552835d83a75cf",
      "parents": [
        "8e23cb82fc2d51f4e30bf8be0aa6edc670b21f8e"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Sep 10 00:15:57 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Sep 19 08:40:04 2021"
      },
      "message": "usb1._libusb1: Do not load C library on import.\n\nAvoids unusual exceptions being raised during import.\nAllows the application to customise C library lookup.\n"
    },
    {
      "commit": "8e23cb82fc2d51f4e30bf8be0aa6edc670b21f8e",
      "tree": "6d3cabdfa41486a5fad4ae6779c985ae6e00c8c8",
      "parents": [
        "3951c2432272d61b254e1d1af331e2bec7ae4655"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Sep 09 23:48:28 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Sep 09 23:48:28 2021"
      },
      "message": "usb1.libusb1: Rename into usb1._libusb1.\n\nAdd backward-compatibility import.\n"
    },
    {
      "commit": "3951c2432272d61b254e1d1af331e2bec7ae4655",
      "tree": "67df0b0aaec2bcf74beb06651909e5fefdac3d47",
      "parents": [
        "fe05cfb6aef710a1e03783139526a55dd6cdcfb6"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Sep 09 13:59:36 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Sep 09 23:14:00 2021"
      },
      "message": "usb1.libusb1: Reorder imports.\n"
    },
    {
      "commit": "fe05cfb6aef710a1e03783139526a55dd6cdcfb6",
      "tree": "f53fb88ee82d0b2dba53aa2de9487a1bfa197b93",
      "parents": [
        "c5a191acfdd4de8dec65180e78d3f5dc438cdd04"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 08 23:38:03 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Wed Sep 08 23:38:03 2021"
      },
      "message": "usb1.testUSB1: Reorder imports.\n\nAlso, enable absolute imports.\n"
    },
    {
      "commit": "c5a191acfdd4de8dec65180e78d3f5dc438cdd04",
      "tree": "c89d19835a3df4bc1a3f8bcefb48c3eda701b24e",
      "parents": [
        "9b546b38e964f45e7d1172e4241203e8c61363c3"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 23:37:44 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 23:40:35 2021"
      },
      "message": "README: Remove some unnecessary newlines.\n"
    },
    {
      "commit": "9b546b38e964f45e7d1172e4241203e8c61363c3",
      "tree": "fb1d09fb63b92be23218450872038a1ab8149496",
      "parents": [
        "8cc99d613b5bfd805b887803cc65eb9f16702389"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 23:36:00 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 23:40:35 2021"
      },
      "message": "README: Add instructions on how to verify release file signature.\n"
    },
    {
      "commit": "8cc99d613b5bfd805b887803cc65eb9f16702389",
      "tree": "4c241d4df1dd81a0c4861a5f5232ed62619a9399",
      "parents": [
        "8375c5857044a53baf5d144c0040d616dc2e91e2"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 23:35:16 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 23:35:16 2021"
      },
      "message": "README: Add Windows-specific installation notes.\n"
    },
    {
      "commit": "8375c5857044a53baf5d144c0040d616dc2e91e2",
      "tree": "c81d7abd23f2d84e250bf987576153f2961e6b0f",
      "parents": [
        "000b7617e485ce06500707009faa842a13a439a7"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 23:34:42 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 23:34:42 2021"
      },
      "message": "README: Make the changelist look nicer.\n"
    },
    {
      "commit": "000b7617e485ce06500707009faa842a13a439a7",
      "tree": "bd5361f6f62d7b8f430b703bc0cc6097010b006a",
      "parents": [
        "f4704e5df037b365a5648c4c621ba77f2e4b584c"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 23:34:03 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 23:34:03 2021"
      },
      "message": "README: Drop outdated installation instructions.\n"
    },
    {
      "commit": "f4704e5df037b365a5648c4c621ba77f2e4b584c",
      "tree": "40352dd3b5531d9e00fc0d7f43825d2c0bcd9ac1",
      "parents": [
        "976866d6be0ba50e12b26aab02f536fdca1d8b12"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 12:22:14 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 12:23:30 2021"
      },
      "message": "usb1: Create USBDevice finalizer earlier in __init__.\n\nSo that device refcount gets properly decremented when __init__ raises.\n"
    },
    {
      "commit": "976866d6be0ba50e12b26aab02f536fdca1d8b12",
      "tree": "1d5d2632b796165ec41d5fbf9fdccd6784add863",
      "parents": [
        "a2082ac6a35289d99540cf8c6c42edcea31c6534"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 10:43:06 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 10:43:06 2021"
      },
      "message": "usb1: Only clear pollfd notifiers if setPollFDNotifiers has been called.\n\nOn windows, libusb1 does not support poll fd notifiers, and emits a warning\nif this is called. So only call it if the application decided to.\n"
    },
    {
      "commit": "a2082ac6a35289d99540cf8c6c42edcea31c6534",
      "tree": "91853fedc1788c6677d71591ce1a1942b21d8417",
      "parents": [
        "2524321efef751c09dc56323e026d6dced727369"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 10:41:09 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Tue Sep 07 10:41:09 2021"
      },
      "message": "usb1: Detach finalizer on duplicate registration in *.__registerFinalizer\n\nAlso, make the detection mendatory. It should only trigger on an internal\nbug, so an assertion was kind of appropriate... But not detecting this\n(when running on a python with assertions disabled) could lead to\ndouble-frees.\n"
    },
    {
      "commit": "2524321efef751c09dc56323e026d6dced727369",
      "tree": "8214b41513521482643660cc6f256759c06ca3d5",
      "parents": [
        "efcf37080182b674caee1d31afa9bd8c9ec06cd9"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Sep 02 00:21:30 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Sep 06 12:51:20 2021"
      },
      "message": "README: Update.\n"
    },
    {
      "commit": "efcf37080182b674caee1d31afa9bd8c9ec06cd9",
      "tree": "f3cbec07e0dc2ddc7d62151958d1b7817bc1fd5a",
      "parents": [
        "8c0daf7f8d6e0b3c35819cb50ea18cf800ed46ae"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Sep 02 00:18:28 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Mon Sep 06 12:51:02 2021"
      },
      "message": "usb1: Enforce object finalization order.\n\nWeak references are broken before the referent is destroyed. This opens\nthe possibility for the weak reference holder to get closed after the\nreferent cannot be reached from its WeakSet but before the it got destroyed,\nwhich causes failures like this (on Windows):\n\n  Exception ignored in: \u003cfunction USBDevice.__del__ at 0x000001BD8F7A8820\u003e\n  Traceback (most recent call last):\n  File \"...\\usb1\\__init__.py\", line 1778, in __del__\n      self.close()\n  File \"...\\usb1\\__init__.py\", line 1790, in close\n      self.__libusb_unref_device(self.device_p)\n  OSError: exception: access violation writing 0x0000000000000024\n\nReplace all weak references by python \u003e\u003d3.4 finalizers.\nThis approach has two good effects:\n- it allows getting rid of __del__ methods, which should make the garbage-\n  collector\u0027s life easier (on older python versions at least)\n- it moves (most of) the global bindings from class level to the finalizer\u0027s\n  creation, which is a bit better for code readability (definition is closer\n  to usage scope).\nAlso, backport finalizer class for versions which do not have it.\n"
    },
    {
      "commit": "8c0daf7f8d6e0b3c35819cb50ea18cf800ed46ae",
      "tree": "03f70389717986619470794d0fbd283bd1e572b1",
      "parents": [
        "f211d48cc0edca18fe8869207f8cedf6981f545c"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Sep 05 03:34:10 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun Sep 05 09:23:49 2021"
      },
      "message": "usb1: Assorted cleanups.\n\nMake pylint happy and prepare for __init__ extensions on several classes.\n"
    },
    {
      "commit": "f211d48cc0edca18fe8869207f8cedf6981f545c",
      "tree": "f56c0f89b6bf865e5994d3763777eae9450a4a03",
      "parents": [
        "ae29a0708430da6173827b99831c1a5f80f863fa"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Sep 02 00:09:32 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Sep 02 00:20:46 2021"
      },
      "message": "usb1: Strengthen device iterator.\n\nDo not rely on globals once USBContext.getDeviceIterator has entered its\nloop: it could stay stuck there until interpreter shutdown, at which point\nglobals are not safe to access.\nAlso, explicitly close underlying iterator in _validContext so it cannot\nescape context validity protection.\nAlso, opportunistically close the generator in getByVendorIDAndProductID,\nalthough no functional change is expected here - at most device list memory\ndeallocation will happen a bit earlier than normal.\n"
    },
    {
      "commit": "ae29a0708430da6173827b99831c1a5f80f863fa",
      "tree": "d5a59f8ba4492083fffe53a98a04e0ac5f99c977",
      "parents": [
        "6129228abb7216b6aa8d074371c34c6824dcaed4"
      ],
      "author": {
        "name": "LSChyi",
        "email": "alan81920@gmail.com",
        "time": "Wed Aug 25 09:42:04 2021"
      },
      "committer": {
        "name": "LSChyi",
        "email": "alan81920@gmail.com",
        "time": "Wed Aug 25 09:42:04 2021"
      },
      "message": "add support for LIBUSB_SPEED_SUPER_PLUS for libusb 1.0.24+\n"
    },
    {
      "commit": "6129228abb7216b6aa8d074371c34c6824dcaed4",
      "tree": "b7232fc1e231bfe507ace958e1ccb52ef883b168",
      "parents": [
        "69ce8ce2abc96d571ca31f0f13982d67fa873daa"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 02 00:19:32 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 02 13:17:30 2021"
      },
      "message": "README: Update.\n"
    },
    {
      "commit": "69ce8ce2abc96d571ca31f0f13982d67fa873daa",
      "tree": "313897c5fc0020cd2ec447414e6395cca3e58b2a",
      "parents": [
        "48c03a445e88db9c4f9f6652d8590e469d23ea4f"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 02 12:57:49 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 02 13:17:30 2021"
      },
      "message": "runTestLibusb.sh: Allow specifying the python interpreter to test with.\n\ntravis-ci.org is now dead and I do not feel comfortable with the\npermissions requested by travis-ci.com, so I guess I will be running the\ntests locally. So I might as well make it easier to pick python versions.\nSo use virtualenv to get a fresh python environment to run tests in, and\nrun the tests (with only the versions I have available which do work)\nbefore every release. Sadly, pypy does not make the cut for some boring\nwheel installation reason.\n"
    },
    {
      "commit": "48c03a445e88db9c4f9f6652d8590e469d23ea4f",
      "tree": "a9dcbd75e60af5272292d8806baf392b9d599fab",
      "parents": [
        "96cac2f42587aa565ad64962921ca35d40f60062"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sat Mar 13 07:09:48 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 02 00:11:43 2021"
      },
      "message": "Bump copyright year.\n"
    },
    {
      "commit": "96cac2f42587aa565ad64962921ca35d40f60062",
      "tree": "241d915f8d89f6cd2944c37efa701718670f8cdd",
      "parents": [
        "694d3927b1d116a493a85d3b8ddfcc2401adc7c2"
      ],
      "author": {
        "name": "KenH",
        "email": "50453850+kenichihiguchi@users.noreply.github.com",
        "time": "Sat Jun 26 05:11:21 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Fri Jul 02 00:10:55 2021"
      },
      "message": "Add path to dylib for Apple M1\n"
    },
    {
      "commit": "694d3927b1d116a493a85d3b8ddfcc2401adc7c2",
      "tree": "55cea6ff9b8b4733fc9e9d30da4515299ff590f5",
      "parents": [
        "bac0f1bae558e1dd8ca2c55aafee6029914b224f"
      ],
      "author": {
        "name": "Karthikeyan Singaravelan",
        "email": "tir.karthi@gmail.com",
        "time": "Sat May 08 07:23:27 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Sun May 09 00:59:31 2021"
      },
      "message": "Use notify_all instead of notifyAll method that was deprecated in Python 3.10.\n"
    },
    {
      "commit": "bac0f1bae558e1dd8ca2c55aafee6029914b224f",
      "tree": "2963804a3046d195c7f3d60f66c3da0d60b11365",
      "parents": [
        "9b729a4d7240585fb17a21a8b2ccf84a53bc567c"
      ],
      "author": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Apr 15 10:56:48 2021"
      },
      "committer": {
        "name": "Vincent Pelletier",
        "email": "plr.vincent@gmail.com",
        "time": "Thu Apr 15 10:56:48 2021"
      },
      "message": "setup.py: Make upload-preventer actually work as intended.\n\nSuperclass requires some more overriding.\n"
    }
  ],
  "next": "9b729a4d7240585fb17a21a8b2ccf84a53bc567c"
}
