)]}'
{
  "log": [
    {
      "commit": "70536b801693ab6e3bf248093eac3c7f6080bb0e",
      "tree": "c1c972c5ad564e6e8a9e009ac0c890aea200d429",
      "parents": [
        "8a4edeb08731c1f440459dc7f2a6ec01ebab02f3",
        "978bd319321584c48b119726e24003acef5f745e"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Dec 20 13:39:41 2024 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Dec 20 13:39:41 2024 -0800"
      },
      "message": "Empty merge ab/12770256 into aosp-main-future\n\nMerged-In: I374bb4140874fbb928a6e1979025dad94a943eb8\nChange-Id: Icc7c397103a2556f218f1b083fc156f1a02f30f7\n"
    },
    {
      "commit": "8a4edeb08731c1f440459dc7f2a6ec01ebab02f3",
      "tree": "c1c972c5ad564e6e8a9e009ac0c890aea200d429",
      "parents": [
        "ed47cefcb712d1756443d10a8af4334eb342dbbd",
        "b2f47979d7ab183d67ee446bca133f8cf3ef21c5"
      ],
      "author": {
        "name": "Sadaf Ebrahimi",
        "email": "sadafebrahimi@google.com",
        "time": "Thu Dec 19 08:07:23 2024 -0800"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Dec 19 08:07:23 2024 -0800"
      },
      "message": "Add janitors to the OWNERS file am: b2f47979d7\n\nOriginal change: https://android-review.googlesource.com/c/platform/external/python/watchdog/+/3423988\n\nChange-Id: I3a4659fbdee46ca68c95ffc72c2adf914a87b2da\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "b2f47979d7ab183d67ee446bca133f8cf3ef21c5",
      "tree": "c1c972c5ad564e6e8a9e009ac0c890aea200d429",
      "parents": [
        "ed47cefcb712d1756443d10a8af4334eb342dbbd"
      ],
      "author": {
        "name": "Sadaf Ebrahimi",
        "email": "sadafebrahimi@google.com",
        "time": "Wed Dec 18 20:36:21 2024 +0000"
      },
      "committer": {
        "name": "Sadaf Ebrahimi",
        "email": "sadafebrahimi@google.com",
        "time": "Wed Dec 18 20:36:21 2024 +0000"
      },
      "message": "Add janitors to the OWNERS file\n\nTest: TreeHugger\nChange-Id: Iebdf004149ebc9965159c462998db958f817a16b\n"
    },
    {
      "commit": "978bd319321584c48b119726e24003acef5f745e",
      "tree": "10b2821886f9b47db3732b6c48428b19758659b6",
      "parents": [
        "8c7cc64f520638adcfca62d197a2bad73fa47b1a",
        "ed47cefcb712d1756443d10a8af4334eb342dbbd"
      ],
      "author": {
        "name": "Frank Piva",
        "email": "pivaf@google.com",
        "time": "Wed Oct 16 20:55:49 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Oct 16 20:55:49 2024 +0000"
      },
      "message": "Merge remote-tracking branch \u0027origin/upstream\u0027 am: 7c26d4b5a8 am: ed47cefcb7\n\nOriginal change: undetermined\n\nChange-Id: Id39c3cfa84121f26ca3a79287a32a180fb6ea3c3\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "ed47cefcb712d1756443d10a8af4334eb342dbbd",
      "tree": "10b2821886f9b47db3732b6c48428b19758659b6",
      "parents": [
        "8c7cc64f520638adcfca62d197a2bad73fa47b1a",
        "7c26d4b5a8859c2b00f82938ee0b542f943023a1"
      ],
      "author": {
        "name": "Frank Piva",
        "email": "pivaf@google.com",
        "time": "Wed Oct 16 20:40:51 2024 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Oct 16 20:40:51 2024 +0000"
      },
      "message": "Merge remote-tracking branch \u0027origin/upstream\u0027 am: 7c26d4b5a8\n\nOriginal change: undetermined\n\nChange-Id: I3d2639ed5a91512b365600fdec0b5f1fa47eaaf5\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "7c26d4b5a8859c2b00f82938ee0b542f943023a1",
      "tree": "10b2821886f9b47db3732b6c48428b19758659b6",
      "parents": [
        "8c7cc64f520638adcfca62d197a2bad73fa47b1a",
        "197282eb1de759478cbfb68921569103d9aa9fe0"
      ],
      "author": {
        "name": "Frank Piva",
        "email": "pivaf@google.com",
        "time": "Tue Oct 08 23:45:59 2024 +0000"
      },
      "committer": {
        "name": "Frank Piva",
        "email": "pivaf@google.com",
        "time": "Tue Oct 08 23:45:59 2024 +0000"
      },
      "message": "Merge remote-tracking branch \u0027origin/upstream\u0027\n"
    },
    {
      "commit": "197282eb1de759478cbfb68921569103d9aa9fe0",
      "tree": "10b2821886f9b47db3732b6c48428b19758659b6",
      "parents": [
        "2b628306d5983f96cfec1ab46f4205b2f6208d92"
      ],
      "author": {
        "name": "Zhuoyao Zhang",
        "email": "zhuoyao@google.com",
        "time": "Tue Oct 01 22:37:37 2024 +0000"
      },
      "committer": {
        "name": "Zhuoyao Zhang",
        "email": "zhuoyao@google.com",
        "time": "Tue Oct 01 23:12:20 2024 +0000"
      },
      "message": "Import watchdog\n\nThird-Party Import of: https://github.com/gorakhargosh/watchdog\nRequest Document: go/android3p\nFor CL Reviewers: go/android3p#reviewing-a-cl\nFor Build Team: go/ab-third-party-imports\nBug: http://b/364941711\nOriginal import of the code can be found at: https://googleplex-android.googlesource.com/platform/external/python/watchdog/+/refs/heads/third-party-review.\nSecurity Questionnaire: http://b/364941711#comment1\n\nTest: build locally\nChange-Id: I920555ac50ca131be35c4d31e75dddef74c8ed2e\n"
    },
    {
      "commit": "8c7cc64f520638adcfca62d197a2bad73fa47b1a",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [],
      "author": {
        "name": "Inna Palant (xWF)",
        "email": "ipalant@google.com",
        "time": "Tue Oct 01 00:46:05 2024 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 01 00:46:05 2024 +0000"
      },
      "message": "Initial empty repository\n"
    },
    {
      "commit": "2b628306d5983f96cfec1ab46f4205b2f6208d92",
      "tree": "099381816bb3c695a53842fd05a64bb37f9cec6a",
      "parents": [
        "2f5377acb378be034c24e3b21742f0c3e3283649"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Sep 03 22:51:16 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Sep 03 22:51:16 2024 +0200"
      },
      "message": "Version 5.0.2\n"
    },
    {
      "commit": "2f5377acb378be034c24e3b21742f0c3e3283649",
      "tree": "e1329e142c1cb6ae369776fc7a19242779b28fba",
      "parents": [
        "4427aa442f1964ac44e27924e2e18f152b5326b2"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Sep 03 22:49:14 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 03 22:49:14 2024 +0200"
      },
      "message": "Enable OS specific Mypy checks (#1064)\n\n* Enable OS specific Mypy checks\r\n\r\nIt would have helped to catch #1062 before the release.\r\n\r\n* ci: split \u0026 improve"
    },
    {
      "commit": "4427aa442f1964ac44e27924e2e18f152b5326b2",
      "tree": "26e93b99c0a765147034e58cb5500cf580a1eba8",
      "parents": [
        "236a57ccce81ec1b2110fca0e8c81a86e34e4412"
      ],
      "author": {
        "name": "Gnought",
        "email": "1684105+gnought@users.noreply.github.com",
        "time": "Wed Sep 04 04:39:16 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 03 22:39:16 2024 +0200"
      },
      "message": "[watchmedo] Fix `tricks` argument type of `schedule_tricks()` (#1063)\n\n* fix: correct `tricks` typing be a list of dictionary\r\n\r\n* Update changelog.rst\r\n\r\n---------\r\n\r\nCo-authored-by: Mickaël Schoentgen \u003ccontact@tiger-222.fr\u003e"
    },
    {
      "commit": "236a57ccce81ec1b2110fca0e8c81a86e34e4412",
      "tree": "d31f9383e315b43fe9c97aa33a811ca84edb35ae",
      "parents": [
        "8658cfc3f152104d108959c066c95cb9be3fc076"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Sep 02 19:48:01 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Sep 02 19:48:01 2024 +0200"
      },
      "message": "Bump the version\n"
    },
    {
      "commit": "8658cfc3f152104d108959c066c95cb9be3fc076",
      "tree": "aa34f6e7557cd269b29f0e2d4f22421b5bac7336",
      "parents": [
        "cede9b6e6db5319687de45db280d684945464f25"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Sep 02 19:37:43 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Sep 02 19:46:21 2024 +0200"
      },
      "message": "Version 5.0.1\n"
    },
    {
      "commit": "cede9b6e6db5319687de45db280d684945464f25",
      "tree": "fa14e2dae4b6f374ca90405b7092c4e7e817984a",
      "parents": [
        "72be3e43fdd6f8057a3a6f97d9fa1b00167eac6b"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Sep 02 19:42:39 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Sep 02 19:42:57 2024 +0200"
      },
      "message": "chore: run ruff\n"
    },
    {
      "commit": "72be3e43fdd6f8057a3a6f97d9fa1b00167eac6b",
      "tree": "59519f485d39702c4dc50f42ecf5747ae0910bf4",
      "parents": [
        "5daadf57e8c58212212a6e8d2b8854a722c60408"
      ],
      "author": {
        "name": "apoirier",
        "email": "alain.poirier1@gmail.com",
        "time": "Mon Sep 02 19:35:42 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 02 19:35:42 2024 +0200"
      },
      "message": "[kqueue] fix `TypeError: kqueue.control() only accepts positional parameters` (#1062)\n\n* `kqueue.control()` only accepts positional parameters\r\n\r\n* docs: changelog\r\n\r\n[skip ci]\r\n\r\n---------\r\n\r\nCo-authored-by: Mickaël Schoentgen \u003ccontact@tiger-222.fr\u003e"
    },
    {
      "commit": "5daadf57e8c58212212a6e8d2b8854a722c60408",
      "tree": "9c9dc8bd49377c4b639f606684241abfd120ab15",
      "parents": [
        "ca453f52a92c4b2c2e94a557239e76254b3d3bdc"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Aug 27 10:03:06 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 27 10:03:06 2024 +0200"
      },
      "message": "docs: tweak"
    },
    {
      "commit": "ca453f52a92c4b2c2e94a557239e76254b3d3bdc",
      "tree": "46e4d132d5adc2d1133fb3668e4e3f9d91f33744",
      "parents": [
        "7c6ca3b626ae6689c876eff4fc129c7d30452982"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 23:51:46 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 23:51:46 2024 +0200"
      },
      "message": "Bump the version\n"
    },
    {
      "commit": "7c6ca3b626ae6689c876eff4fc129c7d30452982",
      "tree": "dac4e1143770cc266b5441f96c62c7ce92252038",
      "parents": [
        "76f3ba89771b8c7ae772ec8d80d79337b30d9bf9"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 23:50:40 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 23:50:40 2024 +0200"
      },
      "message": "docs: tweak\n"
    },
    {
      "commit": "76f3ba89771b8c7ae772ec8d80d79337b30d9bf9",
      "tree": "279c989640130a3581f796c533027fcd5dd0aeb0",
      "parents": [
        "516d4ac96ac7c6644d21b8f988d5dd434218da30"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 23:42:36 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 23:43:43 2024 +0200"
      },
      "message": "Version 5.0.0\n"
    },
    {
      "commit": "516d4ac96ac7c6644d21b8f988d5dd434218da30",
      "tree": "cc34ec1757cd303479c4df1eb4fc31db47213411",
      "parents": [
        "6847b0e682f5127cec2693ee5f82080465fee19f"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 23:40:56 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 26 23:40:56 2024 +0200"
      },
      "message": "core: more types (#1061)\n\n"
    },
    {
      "commit": "6847b0e682f5127cec2693ee5f82080465fee19f",
      "tree": "e76a2d924d70b7cb000f9e53395e1e7a97658b42",
      "parents": [
        "b13464629ea0b77cb1b0d4c77bc518efba315151"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 23:06:07 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 23:06:07 2024 +0200"
      },
      "message": "chore: remove doctest `needs`\n"
    },
    {
      "commit": "b13464629ea0b77cb1b0d4c77bc518efba315151",
      "tree": "014cefc9c9b80b39c6cd4272e5dc3eb3beee5278",
      "parents": [
        "9af32e07968166d073a39d8581b2ac8e422c9116"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 22:58:01 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 26 22:58:01 2024 +0200"
      },
      "message": "chore: remove unused file\n"
    },
    {
      "commit": "9af32e07968166d073a39d8581b2ac8e422c9116",
      "tree": "85bf7b3b3faf78dca3a2a0b9ca5f5a27e1d85648",
      "parents": [
        "31b0c34af312efc12a4f5844c9fab946772b26f2"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu Aug 22 09:32:50 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu Aug 22 09:32:50 2024 +0200"
      },
      "message": "fix: types\n"
    },
    {
      "commit": "31b0c34af312efc12a4f5844c9fab946772b26f2",
      "tree": "ee6e91fd67ac0ff42dd08b846231ddbf803541ba",
      "parents": [
        "cc0569100fab825e367dd7ca26beaeefb56e1f68"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu Aug 22 08:51:35 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu Aug 22 08:59:17 2024 +0200"
      },
      "message": "feat!: more kwarg-only\n"
    },
    {
      "commit": "cc0569100fab825e367dd7ca26beaeefb56e1f68",
      "tree": "fe412f40a35dfdbb9f1ea6ad1afbff7b3063255c",
      "parents": [
        "4e6f036d6df469d5610d07805c1d09b16d20692c"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu Aug 22 08:51:22 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu Aug 22 08:52:44 2024 +0200"
      },
      "message": "docs: typing in examples\n"
    },
    {
      "commit": "4e6f036d6df469d5610d07805c1d09b16d20692c",
      "tree": "75c91ef25d8df7a205a04ad482cd027cbba77f78",
      "parents": [
        "80576b4124dc0892a393365754ffe4e1521e3427"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu Aug 22 08:37:06 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu Aug 22 08:37:06 2024 +0200"
      },
      "message": "dos: tweak\n"
    },
    {
      "commit": "80576b4124dc0892a393365754ffe4e1521e3427",
      "tree": "4fffea1053ae076fc6a0e3d3db83d2c237850b22",
      "parents": [
        "324e0440f0ae007eeb6ee9c02624d1b9b32ca8c7"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Wed Aug 14 15:53:18 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Wed Aug 14 15:53:18 2024 +0200"
      },
      "message": "docs: clean-up headers to ease maintenance + add funding\n"
    },
    {
      "commit": "324e0440f0ae007eeb6ee9c02624d1b9b32ca8c7",
      "tree": "3417dafda0c79c59059ac91d71aef82a069ed24d",
      "parents": [
        "837ee4010615abb0788d4d5f30adf00635155f4c"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Wed Aug 14 15:24:53 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 14 15:24:53 2024 +0200"
      },
      "message": "feat!: Enable Mypy `disallow_untyped_defs` rule + fixes (#1060)\n\n"
    },
    {
      "commit": "837ee4010615abb0788d4d5f30adf00635155f4c",
      "tree": "235217fce00be1c78bad83a59a12e6d745186a7c",
      "parents": [
        "84d5adb8e937a4bce55f73890e3c53d26ecd231a"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 12 10:13:21 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 12 10:13:21 2024 +0200"
      },
      "message": "[inotify] Add support for `IN_CLOSE_NOWRITE` events (#1059)\n\n* [inotify] Add support for `IN_CLOSE_NOWRITE` events\r\n\r\nA `FileClosedNoWriteEvent` event will be fired,\r\nand its `on_closed_no_write()` dispatcher has been introduced.\r\n\r\nCloses #1046.\r\n\r\n* [inotify] Remove the `InotifyConstants.IN_CLOSE` constant"
    },
    {
      "commit": "84d5adb8e937a4bce55f73890e3c53d26ecd231a",
      "tree": "215bd897e236ce2893a8401c5b501b39f61bca9f",
      "parents": [
        "b87e645c010afa1658ea66a13f8bcc5662a543d0"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Aug 12 08:43:16 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 12 08:43:16 2024 +0200"
      },
      "message": "feat: Improve typing references for events (#1058)\n\nCloses #1040."
    },
    {
      "commit": "b87e645c010afa1658ea66a13f8bcc5662a543d0",
      "tree": "1da44c5444bced2022aee1f6df775d42f6bd875c",
      "parents": [
        "3b00a4274c8da0c8031e1a645e96d0b4aa25b380"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Aug 11 20:43:16 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 11 20:43:16 2024 +0200"
      },
      "message": "feat!: more typing clean-up + enforce keyword-arguments (#1057)\n\n"
    },
    {
      "commit": "3b00a4274c8da0c8031e1a645e96d0b4aa25b380",
      "tree": "edb79682483c958bdd60b89fddaa0bfbf90a3207",
      "parents": [
        "2872c7e4983b826a38d76c7dfc162653fcd5cd23"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Aug 11 18:50:30 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 11 18:50:30 2024 +0200"
      },
      "message": "chore: No more `typing.Optional` nor `typing.Union` (#1056)\n\n* chore: No more `typing.Optional` nor `typing.Union`\r\n\r\n* chore: delete missed ruff rule [skip ci]"
    },
    {
      "commit": "2872c7e4983b826a38d76c7dfc162653fcd5cd23",
      "tree": "79e45a05f8982ec8fe30942a479cdf3124723424",
      "parents": [
        "a318f3919c1a1b66c0cc01f28e331d5ca612130b"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Aug 11 10:14:00 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 11 10:14:00 2024 +0200"
      },
      "message": "feat!: Enable `disallow_untyped_calls` Mypy rule + drop Python 3.8 support (#1055)\n\n"
    },
    {
      "commit": "a318f3919c1a1b66c0cc01f28e331d5ca612130b",
      "tree": "f42e2ecf12e6a74974dc273df2650343aaa20d49",
      "parents": [
        "9c5a43241f774930e958447b61a83b8bbd94fb21"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Aug 11 09:33:00 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Aug 11 09:33:00 2024 +0200"
      },
      "message": "Bump the version\n"
    },
    {
      "commit": "9c5a43241f774930e958447b61a83b8bbd94fb21",
      "tree": "50626e5fae42928b90fd7fe72662e2564c569623",
      "parents": [
        "aac4328e593e8764c6a3face67961f955d64bb74"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Aug 11 09:29:46 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Aug 11 09:29:46 2024 +0200"
      },
      "message": "Version 4.0.2\n"
    },
    {
      "commit": "aac4328e593e8764c6a3face67961f955d64bb74",
      "tree": "fa0d2e62266f8a29d2df6062650e6c9135b4a4eb",
      "parents": [
        "6a33516b8cb87a04a2e208c7a794e58f40f6f9b9"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 22:21:25 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 22:21:25 2024 +0200"
      },
      "message": "chore: add git attributes file\n"
    },
    {
      "commit": "6a33516b8cb87a04a2e208c7a794e58f40f6f9b9",
      "tree": "6d3a62511ebaf923e845a2b287bb446407c165a9",
      "parents": [
        "cff604e90bc562dee16a32efbe6b4471d3e64105"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 22:19:06 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 22:19:06 2024 +0200"
      },
      "message": "docs: tweak\n"
    },
    {
      "commit": "cff604e90bc562dee16a32efbe6b4471d3e64105",
      "tree": "641fa6c41b90997faf663b717389f73b54f53a01",
      "parents": [
        "7503d34c1f49a96c7ab31b177f6f3a3ffc8ab049"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 22:05:47 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 28 22:05:47 2024 +0200"
      },
      "message": "feat: Python 3.13 support (#1052)\n\n"
    },
    {
      "commit": "7503d34c1f49a96c7ab31b177f6f3a3ffc8ab049",
      "tree": "005a76bdf981c2a58b6305bc56d025d8879a184f",
      "parents": [
        "7d4a369e82eea79ef281febb03d9267805f746bb"
      ],
      "author": {
        "name": "Ivan Gotovchits",
        "email": "ivg@ieee.org",
        "time": "Sun Jul 28 09:45:11 2024 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 28 15:45:11 2024 +0200"
      },
      "message": "fix: possible race condition in `AutoRestartTrick` (#1002)\n\n* fixes a possible race condition in AutoRestartTrick\r\n\r\nJust a long shot for a failure observed on #998. My hypothesis is that\r\nwhen we stop ProcessWatcher before we restart the process manually, we\r\ndon\u0027t yield to it and immediately kill the process. Next, when the\r\nProcessWatcher thread is woken up, we have to conditions ready - the\r\npopen_obj and stopped_event, see the corresponding code, ``` while\r\nTrue: if self.popen_obj.poll() is not None: break if\r\nself.stopped_event.wait(timeout\u003d0.1): return ```\r\n\r\nAnd desipte that `stopped_event` is set, we first check for\r\n`popen_obj` and trigger the process restart.\r\n\r\nWe can also make the ProcessWatcher logic more robust, by checking if\r\nwe are stopped before calling the termination callback, e.g.,\r\n\r\n```\r\n        try:\r\n            if not self.stopped_event.is_set():\r\n                self.process_termination_callback()\r\n        except Exception:\r\n            logger.exception(\"Error calling process termination callback\")\r\n```\r\n\r\nI am not 100% sure about that, as I don\u0027t really know what semantics\r\nis expected from ProcessWatcher by other users. But at least the\r\nAutoRestarter expects this semantics - i.e., a watcher shall not call\r\nany events after it was stopped.\r\n\r\n* tries an alternative solution\r\n\r\ni.e., don\u0027t send events if stopped"
    },
    {
      "commit": "7d4a369e82eea79ef281febb03d9267805f746bb",
      "tree": "bbe3bd228189ac685b17be7578d034696bea1013",
      "parents": [
        "7cd723ac433781002062fdf6f6400043f0d9d55d"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 15:16:04 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 28 15:16:04 2024 +0200"
      },
      "message": "[core] Run ruff, apply several fixes (#1033)\n\n- code simplifications here and there\r\n- introduce a proxy to guess the best `observer` class to import"
    },
    {
      "commit": "7cd723ac433781002062fdf6f6400043f0d9d55d",
      "tree": "ed4b8eea71419fdb98971752168d20938015f1c8",
      "parents": [
        "654707e7e640d5b1d15e3714ba4ce54a3597bce9"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 14:24:37 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 14:34:39 2024 +0200"
      },
      "message": "chore: partly move settings from `setup.cfg` to `pyproject.toml`\n"
    },
    {
      "commit": "654707e7e640d5b1d15e3714ba4ce54a3597bce9",
      "tree": "4fa32c56a800b0b4f679d60de60194b4b0e7c922",
      "parents": [
        "4043ef098214732662950c06c2b39407804b3153"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 14:15:22 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 14:34:39 2024 +0200"
      },
      "message": "fix: remove execution rights from `events.py`, and `watchmedo.py`, files\n"
    },
    {
      "commit": "4043ef098214732662950c06c2b39407804b3153",
      "tree": "e52c33ca50a5c275fc800b437f3031d99531d177",
      "parents": [
        "206843c8bc22210c6bd95537fc28d87c552d03d0"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 14:05:09 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 14:05:09 2024 +0200"
      },
      "message": "tests: improve flakyness + clean-up\n"
    },
    {
      "commit": "206843c8bc22210c6bd95537fc28d87c552d03d0",
      "tree": "6ef7728f326edc0504f0c543e4e0c0c7bbbc83f1",
      "parents": [
        "914923cf519eeebf7b94911a30ad517b94221efe"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 13:59:08 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 13:59:08 2024 +0200"
      },
      "message": "chore: remove useless kwarg on `BaseObserver` subclasses\n"
    },
    {
      "commit": "914923cf519eeebf7b94911a30ad517b94221efe",
      "tree": "cced6861964198e24847f2ab295d9f6c250a46a7",
      "parents": [
        "ab5117a9ddbd04e23bf9b703a3e1b7ef09490222"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sun Jul 28 08:45:21 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 28 08:45:21 2024 +0200"
      },
      "message": "feat: centralize platform checks (#1051)\n\n* feat: centralize platform checks\r\n\r\n* fixes\r\n\r\n* skip macOS pypy"
    },
    {
      "commit": "ab5117a9ddbd04e23bf9b703a3e1b7ef09490222",
      "tree": "5e78d603feafdfa1e771e6e7070345bec84487e5",
      "parents": [
        "6294dafb5941c238427f5e4c2b1545540f16186d"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu Jul 25 21:58:21 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 25 21:58:21 2024 +0200"
      },
      "message": "[fsevents] Add missing `event_filter` keyword-argument to `FSEventsObserver.schedule()` (#1050)\n\n"
    },
    {
      "commit": "6294dafb5941c238427f5e4c2b1545540f16186d",
      "tree": "9797326a51e93235de8558730d6dfe2605a931c3",
      "parents": [
        "402ad01bd69e43dd8ca162b83070cba541daa9ac"
      ],
      "author": {
        "name": "nbelakovski",
        "email": "nbelakovski@users.noreply.github.com",
        "time": "Sun Jul 21 09:19:00 2024 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 21 15:19:00 2024 +0200"
      },
      "message": "docs: Update PatternMatchingEventHandler documentation (#1048)\n\n* Update PatternMatchingEventHandler documentation\r\n\r\nFrom the existing docs it\u0027s not clear what the difference is between\r\nPatternMatching and RegexMatching. Hopefully this makes it clearer.\r\n\r\nAlso made a note that RegexMatching uses the re module, since there are\r\nvarious flavors of regex syntax and it\u0027s important to know which one is\r\nused.\r\n\r\n* Apply suggestions from code review\r\n\r\n---------\r\n\r\nCo-authored-by: Mickaël Schoentgen \u003ccontact@tiger-222.fr\u003e"
    },
    {
      "commit": "402ad01bd69e43dd8ca162b83070cba541daa9ac",
      "tree": "499f621eee6b77d249d41273a54fe99cd7e415b1",
      "parents": [
        "9f23b599f369cdd873c0cf3dd9e69567234d78fb"
      ],
      "author": {
        "name": "nbelakovski",
        "email": "nbelakovski@users.noreply.github.com",
        "time": "Sun Jul 21 09:17:19 2024 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 21 15:17:19 2024 +0200"
      },
      "message": "docs: Simplify the quickstart example (#1047)\n\nPersonally, I found the quickstart example to be jumbled and a little\r\nconfusing. It was hard for me to tell where I would put my own code to\r\nreact to file system events (indeed the quickstart never showed how to\r\ndo this).\r\n\r\nI also think the selection of the path using sys.argv and place\r\neverything under \"if name \u003d\u003d main\" is unnecessary for the simple\r\nexample."
    },
    {
      "commit": "9f23b599f369cdd873c0cf3dd9e69567234d78fb",
      "tree": "aad121509f37e801fca722649b143ad1dde26931",
      "parents": [
        "1a1f40024d097ee687b3e5c182f8a5f3c028b820"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu May 23 18:04:24 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu May 23 18:04:24 2024 +0200"
      },
      "message": "Bump the version\n"
    },
    {
      "commit": "1a1f40024d097ee687b3e5c182f8a5f3c028b820",
      "tree": "dc52f256199589b26a62166c11d52c60e22b4b73",
      "parents": [
        "b92b6fa46819452ef8d9b06b2df9f0747c986187"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu May 23 17:58:28 2024 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Thu May 23 17:58:28 2024 +0200"
      },
      "message": "Version 4.0.1\n"
    },
    {
      "commit": "b92b6fa46819452ef8d9b06b2df9f0747c986187",
      "tree": "936ea24318f0a02500c53a1cdedc7a52866aef3b",
      "parents": [
        "29ab1594a48544899f4124cf719e53f5f2c06da5"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Feb 12 12:04:51 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Feb 12 12:04:51 2024 +0100"
      },
      "message": "doc: tweak\n\n[skip ci]\n"
    },
    {
      "commit": "29ab1594a48544899f4124cf719e53f5f2c06da5",
      "tree": "974d7d3bbff6b8bbee39912745c300bcff3374e3",
      "parents": [
        "2fe1609dd7e545b3bc02e4d026e42ef8629270b8"
      ],
      "author": {
        "name": "Martin Raspaud",
        "email": "martin.raspaud@smhi.se",
        "time": "Mon Feb 12 12:02:16 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 12 12:02:16 2024 +0100"
      },
      "message": "[inotify] Fix missing `event_filter` for the full emitter (#1032)\n\n"
    },
    {
      "commit": "2fe1609dd7e545b3bc02e4d026e42ef8629270b8",
      "tree": "0efc29dc208ba4594910d67a90a6cd5ceed637f8",
      "parents": [
        "9a4f3e2f0c0b76a6aaf62f7c0e3b6b8e309a4944"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 23:10:20 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Wed Feb 07 00:53:30 2024 +0100"
      },
      "message": "Bump the version\n"
    },
    {
      "commit": "9a4f3e2f0c0b76a6aaf62f7c0e3b6b8e309a4944",
      "tree": "a09dea48bed7bafe71cfa663b6057c2cbc1ecb5b",
      "parents": [
        "d134073f44701fb28126e73bd952c666d3adc68e"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Wed Feb 07 00:44:58 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Wed Feb 07 00:44:58 2024 +0100"
      },
      "message": "ci: final fix\n"
    },
    {
      "commit": "d134073f44701fb28126e73bd952c666d3adc68e",
      "tree": "6e1f46b8889e768bbb6e0217b8d37b0484110b62",
      "parents": [
        "5c8f620d82575058f31e7c6a523617c48e5a927f"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Wed Feb 07 00:34:53 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Wed Feb 07 00:34:53 2024 +0100"
      },
      "message": "ci: fix missing wheels\n"
    },
    {
      "commit": "5c8f620d82575058f31e7c6a523617c48e5a927f",
      "tree": "293c1421894294d5e3938b2e134f1a34eb8536dc",
      "parents": [
        "df07c90ffee61e05448733aa1e205b46c116341a"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Wed Feb 07 00:30:44 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Wed Feb 07 00:30:44 2024 +0100"
      },
      "message": "Revert \"Bump the version\"\n\nThis reverts commit df07c90ffee61e05448733aa1e205b46c116341a.\n"
    },
    {
      "commit": "df07c90ffee61e05448733aa1e205b46c116341a",
      "tree": "e420d0be74a1d8a117a8740674c1fa4a5e08fafb",
      "parents": [
        "c7a784295f548fe2b6d35dee8dc6bff7bb40a8d8"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 23:10:20 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 23:10:20 2024 +0100"
      },
      "message": "Bump the version\n"
    },
    {
      "commit": "c7a784295f548fe2b6d35dee8dc6bff7bb40a8d8",
      "tree": "293c1421894294d5e3938b2e134f1a34eb8536dc",
      "parents": [
        "d1439f9162af370d8295c640ed4ae13e933170d4"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 22:55:54 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 22:55:54 2024 +0100"
      },
      "message": "ci: fix publish workflow\n"
    },
    {
      "commit": "d1439f9162af370d8295c640ed4ae13e933170d4",
      "tree": "7bcf676442c6c6135668bc00818e1ebd91115104",
      "parents": [
        "4f451f71ff5427113fc6fd176f849425837a6751"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 22:45:39 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 22:45:39 2024 +0100"
      },
      "message": "ci: fix blob storage\n"
    },
    {
      "commit": "4f451f71ff5427113fc6fd176f849425837a6751",
      "tree": "172e0e1d17d6fa40b0a5dfeb75036d4841bf1898",
      "parents": [
        "e614fde656819f3d6ac50247432ec9f648312f5c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Feb 06 22:32:15 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 06 22:32:15 2024 +0100"
      },
      "message": "Bump actions/setup-python from 4 to 5 (#1028)\n\nBumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.\r\n- [Release notes](https://github.com/actions/setup-python/releases)\r\n- [Commits](https://github.com/actions/setup-python/compare/v4...v5)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: actions/setup-python\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-major\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e614fde656819f3d6ac50247432ec9f648312f5c",
      "tree": "5b093a2189dd7d20c1ed5878e9a5d8df3155096b",
      "parents": [
        "1ce88d5813b1a334962ebc7742916584d80fe999"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Feb 06 22:32:00 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 06 22:32:00 2024 +0100"
      },
      "message": "Bump actions/checkout from 3 to 4 (#1027)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.\r\n- [Release notes](https://github.com/actions/checkout/releases)\r\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\r\n- [Commits](https://github.com/actions/checkout/compare/v3...v4)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: actions/checkout\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-major\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1ce88d5813b1a334962ebc7742916584d80fe999",
      "tree": "84a492c5918fc5d82939f1163c4d68b932cab1ad",
      "parents": [
        "26457de211254330d05f398fd26815403f76efc7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Feb 06 22:31:44 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 06 22:31:44 2024 +0100"
      },
      "message": "Bump actions/upload-artifact from 3 to 4 (#1029)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.\r\n- [Release notes](https://github.com/actions/upload-artifact/releases)\r\n- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: actions/upload-artifact\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-major\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "26457de211254330d05f398fd26815403f76efc7",
      "tree": "51dafca860cabac2678f346fa0b58c7dce069dcb",
      "parents": [
        "192c4aea79c6932f6ebeb86c18f636eb8d2b7066"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Feb 06 22:31:24 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 06 22:31:24 2024 +0100"
      },
      "message": "Bump actions/download-artifact from 2 to 4 (#1026)\n\nBumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2 to 4.\r\n- [Release notes](https://github.com/actions/download-artifact/releases)\r\n- [Commits](https://github.com/actions/download-artifact/compare/v2...v4)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: actions/download-artifact\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-major\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "192c4aea79c6932f6ebeb86c18f636eb8d2b7066",
      "tree": "9e53095599baf9919243b9aa1b9cc53c755825a4",
      "parents": [
        "b07dec3931e0f1a840209f7d62e80ec2913e0ae8"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 22:30:26 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 22:30:26 2024 +0100"
      },
      "message": "ci: add Dependabot for GitHub Actions\n"
    },
    {
      "commit": "b07dec3931e0f1a840209f7d62e80ec2913e0ae8",
      "tree": "4253101263f9b4b06ddf3a4b3e9a845a87c43306",
      "parents": [
        "7d651ac556fbce7003e97912a2125a421f38e2af"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 22:30:08 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 22:30:08 2024 +0100"
      },
      "message": "ci: fix pypa/gh-action-pypi-publish\n"
    },
    {
      "commit": "7d651ac556fbce7003e97912a2125a421f38e2af",
      "tree": "1762fb1d81d5dbfad4d4065ddc1222402a094306",
      "parents": [
        "6cdf07efa04d2651a632e963fb464c2265c91b9c"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 22:16:08 2024 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Feb 06 22:16:08 2024 +0100"
      },
      "message": "Version 4.0.0\n"
    },
    {
      "commit": "6cdf07efa04d2651a632e963fb464c2265c91b9c",
      "tree": "4d6ab6f3c4ee037d726c54b6e1b948f35467df07",
      "parents": [
        "6cfe9cc3e84b29264ae8c5fa1f1b3ce9c09acfbf"
      ],
      "author": {
        "name": "Marc Abramowitz",
        "email": "abramowi@adobe.com",
        "time": "Tue Oct 10 11:33:40 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 10 20:33:40 2023 +0200"
      },
      "message": "chore: Update supported Python versions (drop 3.7, add 3.12) (#1017)\n\n* tox.ini: Update supported versions\r\n\r\nas described at https://devguide.python.org/versions/\r\n\r\nFixes: GH-971\r\n\r\n* Update more stuff to say 3.8+ instead of 3.7+\r\n\r\n* tox.ini: Remove py312\r\n\r\nIt seems tox doesn\u0027t support it yet.\r\n\r\n* .github/workflows/tests.yml: Remove \"3.7\"\r\n\r\n* Revert \"tox.ini: Remove py312\"\r\n\r\nThis reverts commit 75c3edf0dc7639b5d41ed7d70702aa35fddea2cd.\r\n\r\n* .github/workflows/tests.yml: Add \"3.12\"\r\n\r\n* Update changelog.rst\r\n\r\n---------\r\n\r\nCo-authored-by: Mickaël Schoentgen \u003ccontact@tiger-222.fr\u003e"
    },
    {
      "commit": "6cfe9cc3e84b29264ae8c5fa1f1b3ce9c09acfbf",
      "tree": "ce6eacd65c4793d460cfeb32d3ec7b4446f6fc4c",
      "parents": [
        "e4e2f8e0ef9e4bd71359b781058d01322b7decf9"
      ],
      "author": {
        "name": "Marc Abramowitz",
        "email": "abramowi@adobe.com",
        "time": "Tue Oct 10 11:05:07 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 10 20:05:07 2023 +0200"
      },
      "message": "fix: mypy \"type: ignore\" comment errors (#1016)\n\nBefore:\r\n-------\r\n\r\n```\r\n(.venv)\r\nabramowi at Marcs-MacBook-Pro-3 in ~/Code/OpenSource/watchdog (master)\r\n$ python -m tox -e mypy\r\n.pkg: _optional_hooks\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n.pkg: get_requires_for_build_editable\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n.pkg: build_editable\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\nmypy: install_package\u003e python -I -m pip install --force-reinstall --no-deps /Users/abramowi/Code/OpenSource/watchdog/.tox/.tmp/package/27/watchdog-3.0.1-0.editable-cp310-cp310-macosx_12_0_arm64.whl\r\nmypy: commands[0]\u003e mypy\r\nsrc/watchdog/observers/fsevents2.py:32: error: Unused \"type: ignore\" comment, use narrower [import-not-found] instead of [import] code  [unused-ignore]\r\nsrc/watchdog/observers/fsevents2.py:33: error: Unused \"type: ignore\" comment, use narrower [import-not-found] instead of [import] code  [unused-ignore]\r\nsrc/watchdog/observers/fsevents.py:32: error: Unused \"type: ignore\" comment, use narrower [import-not-found] instead of [import] code  [unused-ignore]\r\ntests/test_fsevents.py:19: error: Unused \"type: ignore\" comment, use narrower [import-not-found] instead of [import] code  [unused-ignore]\r\ntests/test_skip_repeats_queue.py:109: error: Unused \"type: ignore\" comment, use narrower [import-untyped] instead of [import] code  [unused-ignore]\r\nFound 5 errors in 4 files (checked 48 source files)\r\nmypy: exit 1 (0.63 seconds) /Users/abramowi/Code/OpenSource/watchdog\u003e mypy pid\u003d24917\r\n.pkg: _exit\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n  mypy: FAIL code 1 (1.67\u003dsetup[1.04]+cmd[0.63] seconds)\r\n  evaluation failed :( (2.49 seconds)\r\n```\r\n\r\nAfter:\r\n------\r\n\r\n```\r\n(.venv)\r\nabramowi at Marcs-MacBook-Pro-3 in ~/Code/OpenSource/watchdog (fix-mypy-type-ignore-import-errors)\r\n$ python -m tox -e mypy\r\n.pkg: _optional_hooks\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n.pkg: get_requires_for_build_editable\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n.pkg: build_editable\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\nmypy: install_package\u003e python -I -m pip install --force-reinstall --no-deps /Users/abramowi/Code/OpenSource/watchdog/.tox/.tmp/package/28/watchdog-3.0.1-0.editable-cp310-cp310-macosx_12_0_arm64.whl\r\nmypy: commands[0]\u003e mypy\r\nSuccess: no issues found in 48 source files\r\n.pkg: _exit\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n  mypy: OK (1.67\u003dsetup[1.05]+cmd[0.62] seconds)\r\n  congratulations :) (2.44 seconds)\r\n```"
    },
    {
      "commit": "e4e2f8e0ef9e4bd71359b781058d01322b7decf9",
      "tree": "4215991c16088ee29c753793f0c0e6331685ae66",
      "parents": [
        "52d869239b97a114c65b8d5c54d25b01607c7a7f"
      ],
      "author": {
        "name": "Marc Abramowitz",
        "email": "abramowi@adobe.com",
        "time": "Tue Oct 10 10:45:02 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 10 19:45:02 2023 +0200"
      },
      "message": "style: run black \u0026 isort on inotify (#1015)\n\n* Run black on inotify\r\n\r\nRun `black` on `src/watchdog/observers/inotify.py`. Fixes failing\r\n`flake8` tests:\r\n\r\nBefore:\r\n-------\r\n\r\n```\r\n(.venv)\r\nabramowi at Marcs-MacBook-Pro-3 in ~/Code/OpenSource/watchdog (master●)\r\n$ python -m tox -e flake8\r\nflake8: install_deps\u003e python -I -m pip install -r requirements-tests.txt\r\n.pkg: _optional_hooks\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n.pkg: get_requires_for_build_editable\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n.pkg: build_editable\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\nflake8: install_package_deps\u003e python -I -m pip install \u0027PyYAML\u003e\u003d3.10\u0027\r\nflake8: install_package\u003e python -I -m pip install --force-reinstall --no-deps /Users/abramowi/Code/OpenSource/watchdog/.tox/.tmp/package/12/watchdog-3.0.1-0.editable-cp310-cp310-macosx_12_0_arm64.whl\r\nflake8: commands[0]\u003e python -m flake8 docs tools src tests setup.py\r\nsrc/watchdog/observers/inotify.py:224:86: W504 line break after binary operator\r\nsrc/watchdog/observers/inotify.py:225:88: W504 line break after binary operator\r\nflake8: exit 1 (0.40 seconds) /Users/abramowi/Code/OpenSource/watchdog\u003e python -m flake8 docs tools src tests setup.py pid\u003d76654\r\n.pkg: _exit\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n  flake8: FAIL code 1 (9.23\u003dsetup[8.83]+cmd[0.40] seconds)\r\n  evaluation failed :( (10.10 seconds)\r\n```\r\n\r\nAfter:\r\n------\r\n\r\n```\r\n(.venv)\r\nabramowi at Marcs-MacBook-Pro-3 in ~/Code/OpenSource/watchdog (master●)\r\n$ python -m tox -e flake8\r\n.pkg: _optional_hooks\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n.pkg: get_requires_for_build_editable\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n.pkg: build_editable\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\nflake8: install_package\u003e python -I -m pip install --force-reinstall --no-deps /Users/abramowi/Code/OpenSource/watchdog/.tox/.tmp/package/13/watchdog-3.0.1-0.editable-cp310-cp310-macosx_12_0_arm64.whl\r\nflake8: commands[0]\u003e python -m flake8 docs tools src tests setup.py\r\n.pkg: _exit\u003e python /Users/abramowi/Code/OpenSource/watchdog/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__\r\n  flake8: OK (1.59\u003dsetup[1.11]+cmd[0.48] seconds)\r\n  congratulations :) (2.45 seconds)\r\n```\r\n\r\n* Create pyproject.toml\r\n\r\n* Run black again\r\n\r\n* Run isort\r\n\r\n---------\r\n\r\nCo-authored-by: Mickaël Schoentgen \u003ccontact@tiger-222.fr\u003e"
    },
    {
      "commit": "52d869239b97a114c65b8d5c54d25b01607c7a7f",
      "tree": "f8d627c66698a249d473c639d6bc7fb81dc834c6",
      "parents": [
        "23388375b7495e70a5163986a401e526c5543b7f"
      ],
      "author": {
        "name": "Marc Abramowitz",
        "email": "abramowi@adobe.com",
        "time": "Mon Oct 09 14:29:45 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 09 23:29:45 2023 +0200"
      },
      "message": "feat: Add `DirectorySnapshotDiff.ContextManager` (#1011)\n\n* Add DirectorySnapshotDiff.ContextManager\r\n\r\nA context manager that creates two directory snapshots and a diff object\r\nthat represents the difference between the two snapshots.\r\n\r\n```python\r\ndir_snapshot_diff_context_manager \u003d DirectorySnapshotDiff.ContextManager(\"some_path\")\r\nwith dir_snapshot_diff_context_manager:\r\n    # Do some things that change files...\r\n    ...\r\n\r\nprint(dir_snapshot_diff_context_manager.diff.files_created)\r\nprint(dir_snapshot_diff_context_manager.diff.files_deleted)\r\n```\r\n\r\n* Add entry to changelog.rst\r\n\r\n* Add typing to ContextManager.__init__"
    },
    {
      "commit": "23388375b7495e70a5163986a401e526c5543b7f",
      "tree": "16e9dcfdd4582eb4895b3cb238699c533b809756",
      "parents": [
        "5f9d93cbdd7b2bcd35cc24fa4c3a573f36fb0335"
      ],
      "author": {
        "name": "Marc Abramowitz",
        "email": "abramowi@adobe.com",
        "time": "Mon Oct 09 14:29:10 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 09 23:29:10 2023 +0200"
      },
      "message": "fix: mypy errors introduced by #1012 (#1014)\n\n"
    },
    {
      "commit": "5f9d93cbdd7b2bcd35cc24fa4c3a573f36fb0335",
      "tree": "bdbf8537770dbcc7f6cdf3ea0ec03cc8a9e3b2f4",
      "parents": [
        "75a3289dd3215124149d82eb27b8a75899b06a8f"
      ],
      "author": {
        "name": "Marc Abramowitz",
        "email": "abramowi@adobe.com",
        "time": "Sat Oct 07 15:20:13 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 08 00:20:13 2023 +0200"
      },
      "message": "feat: Add typing to `dirsnapshot` (#1012)\n\nBefore:\r\n\r\n```\r\n(.venv)\r\nabramowi at Marcs-MacBook-Pro-3 in ~/Code/OpenSource/watchdog (master●)\r\n$ mypy --disallow-untyped-defs src/watchdog/utils/dirsnapshot.py\r\nsrc/watchdog/utils/dirsnapshot.py:82: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:88: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:93: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:141: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:144: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:162: error: Function is missing a return type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:167: error: Function is missing a return type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:172: error: Function is missing a return type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:177: error: Function is missing a return type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:187: error: Function is missing a return type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:194: error: Function is missing a return type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:204: error: Function is missing a return type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:211: error: Function is missing a return type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:241: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:258: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:290: error: Function is missing a return type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:296: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:302: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:307: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:310: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:313: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:316: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:331: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:340: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:343: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:354: error: Function is missing a type annotation  [no-untyped-def]\r\nsrc/watchdog/utils/dirsnapshot.py:364: error: Function is missing a return type annotation  [no-untyped-def]\r\nFound 27 errors in 1 file (checked 1 source file)\r\n```\r\n\r\nAfter:\r\n\r\n```\r\n(.venv)\r\nabramowi at Marcs-MacBook-Pro-3 in ~/Code/OpenSource/watchdog (master●●)\r\n$ mypy --disallow-untyped-defs src/watchdog/utils/dirsnapshot.py\r\nSuccess: no issues found in 1 source file\r\n```"
    },
    {
      "commit": "75a3289dd3215124149d82eb27b8a75899b06a8f",
      "tree": "e025eae8cebf0c48b020bf0498f12ba7685984d3",
      "parents": [
        "48c49a1fe0538be455d52aa9a0eb57519a6ce2eb"
      ],
      "author": {
        "name": "abcdenis",
        "email": "abcdenis@users.noreply.github.com",
        "time": "Fri Jul 28 11:24:09 2023 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 28 10:24:09 2023 +0200"
      },
      "message": "doc: log the watched folder in the README (#995)\n\nRelated to #994."
    },
    {
      "commit": "48c49a1fe0538be455d52aa9a0eb57519a6ce2eb",
      "tree": "50faaf66257a2d9089c1896c00ce25f9951fbe3b",
      "parents": [
        "363fe6208d9662309a50d4f7012449afa1e9cdc2"
      ],
      "author": {
        "name": "Mario Garcia-Armas",
        "email": "marioga.development@gmail.com",
        "time": "Sun May 14 14:27:17 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 14 23:27:17 2023 +0200"
      },
      "message": "Added event filter for the emitter (#989)\n\n"
    },
    {
      "commit": "363fe6208d9662309a50d4f7012449afa1e9cdc2",
      "tree": "369aca4b970c01f4d9df31e4cdc3f386b0e135a5",
      "parents": [
        "41fca1eb601139922817a17b6335a8c2d2c8db51"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sat Apr 22 15:29:39 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 22 15:29:39 2023 +0200"
      },
      "message": "[windows] Remove the `WATCHDOG_TRAVERSE_MOVED_DIR_DELAY` hack (#986)\n\nThe `observers.read_directory_changes.WATCHDOG_TRAVERSE_MOVED_DIR_DELAY` hack was removed.\r\nThe constant will be kept to prevent breaking other softwares."
    },
    {
      "commit": "41fca1eb601139922817a17b6335a8c2d2c8db51",
      "tree": "6f42ed8a23af2d7a2db832100acb9b263538d894",
      "parents": [
        "f991928c10e15fec25622b8959f5e76ee8ff69c5"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sat Apr 22 14:53:01 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 22 14:53:01 2023 +0200"
      },
      "message": "[events] Use `dataclass` (#987)\n\n* [events] Use `dataclass`\r\n\r\n- [events] `FileSystemEvent`, and subclasses, are now `dataclass`es, and their `repr()` has changed\r\n- [windows] `WinAPINativeEvent` is now a `dataclass`, and its `repr()` has changed\r\n\r\n* chore: run black with line-lentgh\u003d120"
    },
    {
      "commit": "f991928c10e15fec25622b8959f5e76ee8ff69c5",
      "tree": "dc1545da802c595ce0178c4d21eb44014bd4788d",
      "parents": [
        "30a149a22169382aad3091abb8052adfc508934d"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Apr 04 16:46:59 2023 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Apr 04 16:46:59 2023 +0200"
      },
      "message": "[watchmedo] Add missing import\n"
    },
    {
      "commit": "30a149a22169382aad3091abb8052adfc508934d",
      "tree": "21fd5a74ffe5fdf102c420b5145e64c9eee5c933",
      "parents": [
        "916af32311edd664f2cac98492749c22d5653a54"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Apr 04 16:42:43 2023 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Apr 04 16:43:23 2023 +0200"
      },
      "message": "[tests] Skip ``test_unmount_watched_directory_filesystem()`` outside the CI\n"
    },
    {
      "commit": "916af32311edd664f2cac98492749c22d5653a54",
      "tree": "9a3187cdc90e871a4b0f8fc7e809ec29f0d226f3",
      "parents": [
        "d825a9426e68593990a5bd1069b23b05abdedee7"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Apr 04 16:12:01 2023 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Apr 04 16:43:23 2023 +0200"
      },
      "message": "[tests] Improve `FileSystemEvent` coverage\n"
    },
    {
      "commit": "d825a9426e68593990a5bd1069b23b05abdedee7",
      "tree": "e078cd9e91794af350b44d42c25b80d49e65873f",
      "parents": [
        "f3dfc4be0c6ec36c2db6b4afa075004e71adf87e"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Apr 04 16:10:36 2023 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Apr 04 16:43:23 2023 +0200"
      },
      "message": "[watchmedo] Log all events in `LoggerTrick`\n"
    },
    {
      "commit": "f3dfc4be0c6ec36c2db6b4afa075004e71adf87e",
      "tree": "38858a6ac6ed5a9d7a270d9afb820eed7b0b5235",
      "parents": [
        "2cdb2e9b29e1d6c917420bf400c89a52a17f8026"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Apr 04 16:05:54 2023 +0200"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Tue Apr 04 16:43:22 2023 +0200"
      },
      "message": "[events] Log `FileOpenedEvent`, and `FileClosedEvent`, events in `LoggingEventHandler`\n\nAlso enhanced events type annotations.\n"
    },
    {
      "commit": "2cdb2e9b29e1d6c917420bf400c89a52a17f8026",
      "tree": "dc7a29063ae57d85f5d90b277e747ff0553dc910",
      "parents": [
        "a4f28a1bdebae67c67d70082de38256e80a0f253"
      ],
      "author": {
        "name": "Marc-Etienne Vargenau",
        "email": "marc-etienne.vargenau@nokia.com",
        "time": "Wed Mar 29 13:23:02 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 29 13:23:02 2023 +0200"
      },
      "message": "Use SPDX license identifier (#984)\n\nUse SPDX license identifier: Apache-2.0\r\nThis will help tools to produce valid SPDX.\r\n\r\nSigned-off-by: Marc-Etienne Vargenau \u003cmarc-etienne.vargenau@nokia.com\u003e"
    },
    {
      "commit": "a4f28a1bdebae67c67d70082de38256e80a0f253",
      "tree": "211eaf168754a359be3ff0f2dbe20ba26d28a78e",
      "parents": [
        "da09c060a007fe7fddde27592e4f63ae1e8697bc"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Mar 20 10:22:05 2023 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Mar 20 10:22:05 2023 +0100"
      },
      "message": "Bump the version\n"
    },
    {
      "commit": "da09c060a007fe7fddde27592e4f63ae1e8697bc",
      "tree": "9fbcb03455ec4574e5c1328e132058e07f1b06f9",
      "parents": [
        "9fc1ce2eb04cbe9ca9321949c3962015c2699a06"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Mar 20 10:06:33 2023 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Mon Mar 20 10:06:33 2023 +0100"
      },
      "message": "Release 3.0.0\n"
    },
    {
      "commit": "9fc1ce2eb04cbe9ca9321949c3962015c2699a06",
      "tree": "4cc5457670687f840c3b598b14c511590f996596",
      "parents": [
        "1838e0b19df98c1ec82acd1d681b7092403e8848"
      ],
      "author": {
        "name": "Adam Groszer",
        "email": "agroszer@gmail.com",
        "time": "Mon Mar 20 09:56:54 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 20 09:56:54 2023 +0100"
      },
      "message": "fix: missing `\u003e` in `FileSystemEvent.__repr__()`  (#980)\n\n"
    },
    {
      "commit": "1838e0b19df98c1ec82acd1d681b7092403e8848",
      "tree": "7020fea163d93857bd7b2fe2e76c91e1e831721d",
      "parents": [
        "ce6218cebbb17c39adfe35e69124dc3390368196"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sat Mar 18 14:35:01 2023 +0100"
      },
      "committer": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sat Mar 18 14:35:01 2023 +0100"
      },
      "message": "doc: clean-up\n"
    },
    {
      "commit": "ce6218cebbb17c39adfe35e69124dc3390368196",
      "tree": "936a3d856b5b1fc4dbfebd4c1caef5cc69010b63",
      "parents": [
        "989fddcb3963781e702e7c688e3871b416e2b53e"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sat Mar 18 14:23:40 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 18 14:23:40 2023 +0100"
      },
      "message": "Update global.rst.inc"
    },
    {
      "commit": "989fddcb3963781e702e7c688e3871b416e2b53e",
      "tree": "9190e4b008ed844bb1438963e509904df6410efd",
      "parents": [
        "71f2df38b4092ba6674f59be10a91c51585d4aa7"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sat Mar 18 14:21:54 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 18 14:21:54 2023 +0100"
      },
      "message": "Update installation.rst"
    },
    {
      "commit": "71f2df38b4092ba6674f59be10a91c51585d4aa7",
      "tree": "8f1aadd55ba58873b9bc6f484b2ebd7b980c5220",
      "parents": [
        "9c28c61d001a6c05d47e4c0bd852bbb1dac78e2e"
      ],
      "author": {
        "name": "Mickaël Schoentgen",
        "email": "contact@tiger-222.fr",
        "time": "Sat Mar 18 14:20:16 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 18 14:20:16 2023 +0100"
      },
      "message": "Update README.rst"
    },
    {
      "commit": "9c28c61d001a6c05d47e4c0bd852bbb1dac78e2e",
      "tree": "83ac7545f208048239c27abdece5671cd5f79039",
      "parents": [
        "764a23494b82e163b92617377d0347cf72e304d2"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Wed Mar 15 16:00:19 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 15 21:00:19 2023 +0100"
      },
      "message": "mypy check_untyped_defs (#966)\n\n* mypy check_untyped_defs\r\n\r\n* maybe fix macos\r\n\r\n* flake8\r\n\r\n* isort\r\n\r\n* flake8\r\n\r\n* mypy\r\n\r\n* just another approach\r\n\r\n* isort\r\n\r\n* remove unneeded mypy exception\r\n\r\n* cleanup"
    },
    {
      "commit": "764a23494b82e163b92617377d0347cf72e304d2",
      "tree": "d16688d36a37cd850da2e8854c8c9a742a4db16c",
      "parents": [
        "ddb9bd1ba10c1ecfc79e67730ea55bcc5c870809"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Wed Mar 15 11:32:46 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 15 16:32:46 2023 +0100"
      },
      "message": "tests: refactor test setups towards fixtures and hinting (#968)\n\n* refactor test setups towards fixtures and hinting\r\n\r\n* cleanup\r\n\r\n* emitter: EventEmitter\r\n\r\n* fixup protocol\r\n\r\n* if TYPE_CHECKING: for the TestEventQueue type alias\r\n\r\n* give in\r\n\r\n* isort\r\n\r\n* apply to other tests\r\n\r\n* fixup\r\n\r\n* rename tests.util to tests.utils\r\n\r\n* isort\r\n\r\n* flake8\r\n\r\n* stop using a (nonexistant) emitter fixture\r\n\r\n* formatting"
    },
    {
      "commit": "ddb9bd1ba10c1ecfc79e67730ea55bcc5c870809",
      "tree": "12fc4806a1c7479d92c9b020c27a482cfbb7f0bc",
      "parents": [
        "344f342123e46aaac06a398b8b7b8592a1c5251d"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Wed Mar 15 02:18:01 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 15 07:18:01 2023 +0100"
      },
      "message": "tests: xfail tests until we work on them (#975)\n\n* xfail tests until we work on them\r\n\r\n* more xfail for pypy\r\n\r\n* Apply suggestions from code review\r\n\r\n---------\r\n\r\nCo-authored-by: Mickaël Schoentgen \u003ccontact@tiger-222.fr\u003e"
    },
    {
      "commit": "344f342123e46aaac06a398b8b7b8592a1c5251d",
      "tree": "190e9c3095be8f22d4868d47f3c3490a5bb3ab63",
      "parents": [
        "b0255ba0deb758962e0f363313e75ea7c69d4d0c"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Wed Mar 15 02:12:16 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 15 07:12:16 2023 +0100"
      },
      "message": "tests: skip pypy on windows (#976)\n\n* skip pypy on windows\r\n\r\n* matrix, not macos..."
    },
    {
      "commit": "b0255ba0deb758962e0f363313e75ea7c69d4d0c",
      "tree": "36fe60a7538bbcf4168b69bf06933aa2a94d4cc4",
      "parents": [
        "bf0f6b381ae5acfe5644be70212efa63bdf0045b"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Tue Mar 14 15:58:39 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 14 20:58:39 2023 +0100"
      },
      "message": "[tests] use pytest tmpdir, remove watchdog tmpdir (#970)\n\n"
    },
    {
      "commit": "bf0f6b381ae5acfe5644be70212efa63bdf0045b",
      "tree": "16e3670c9cd5a2a16ec3d9969c7f470dc4f5abd7",
      "parents": [
        "e71612224ef438219f4124a4e903d0943bc162a4"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Tue Mar 14 12:31:54 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 14 17:31:54 2023 +0100"
      },
      "message": "add isort (#969)\n\n* add isort (not applied)\r\n\r\n* fixup\r\n\r\n* apply isort\r\n\r\n* fixup"
    },
    {
      "commit": "e71612224ef438219f4124a4e903d0943bc162a4",
      "tree": "3b5e5ab7e4b8ed3770495be20f1d4a0a4c65b97b",
      "parents": [
        "5400b1fe33db76d2902d401abc597ae1adb3c7b0"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Tue Mar 14 03:05:49 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 14 08:05:49 2023 +0100"
      },
      "message": "return from InotifyEmitter.queue_events() if not launched when thread is inactive (#963)\n\n* return from InotifyEmitter.queue_events() if not launched when thread is inactive\r\n\r\n* add logging\r\n\r\n* Update inotify.py"
    },
    {
      "commit": "5400b1fe33db76d2902d401abc597ae1adb3c7b0",
      "tree": "6225261d41476cab9ce4c0feb69941871b83ab06",
      "parents": [
        "0d27bff2d7ad7176c400383ff4b8417400b06a70"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Tue Mar 14 03:04:40 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 14 08:04:40 2023 +0100"
      },
      "message": "fix tricks yaml generation (#965)\n\nThis should have failed no matter what since it was attempting to write a string to a file opened as binary."
    },
    {
      "commit": "0d27bff2d7ad7176c400383ff4b8417400b06a70",
      "tree": "630b347bb56c29fe07de9062f32ea01401c0eab6",
      "parents": [
        "61158c6606b9f28b64f1c96ec55e4a2ca76560ee"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Mon Mar 13 15:04:00 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 13 20:04:00 2023 +0100"
      },
      "message": "Remove handling of threading.Event.isSet spelling (#962)\n\nLooks like this is a remnant of support for Python versions less than 2.6.\r\n\r\nhttps://docs.python.org/2.7/library/threading.html#threading.Event.is_set\r\n\u003e Changed in version 2.6: Added `is_set()` spelling."
    },
    {
      "commit": "61158c6606b9f28b64f1c96ec55e4a2ca76560ee",
      "tree": "6256d4876fcaf6047d46901662d9313d74f99388",
      "parents": [
        "76a03bdb80f115a19120a71c324b6dba259f4190"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Mon Mar 13 14:50:36 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 13 19:50:36 2023 +0100"
      },
      "message": "[ci] apply misc simple mypy settings (#961)\n\n"
    },
    {
      "commit": "76a03bdb80f115a19120a71c324b6dba259f4190",
      "tree": "43e56d84f88500df00f895413265de72e2336064",
      "parents": [
        "234514776f79691903d7fec8ef68b6d1eb42b5ed"
      ],
      "author": {
        "name": "Kyle Altendorf",
        "email": "sda@fstab.net",
        "time": "Mon Mar 13 09:05:31 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 13 14:05:31 2023 +0100"
      },
      "message": "Enable mypy warn_unused_ignores and make windows files \u0027optional\u0027 (#959)\n\n* enable mypy warn_unused_ignores and make windows files \u0027optional\u0027\r\n\r\n* mypy handles platform asserts now\r\n\r\n* fixup for platform specific test files\r\n\r\n* ignore flake8 E402 where the platform asserts are needed\r\n\r\n* regular imports -\u003e assert -\u003e platform imports\r\n\r\n* remove unneeded noqa"
    }
  ],
  "next": "234514776f79691903d7fec8ef68b6d1eb42b5ed"
}
