)]}'
{
  "log": [
    {
      "commit": "ba09bac2973cf6b1bb0141548811f68a39670af9",
      "tree": "f2678484ba30953b8c7d9da289d831f3b89b93d5",
      "parents": [
        "b166486aeb995b60aff53272a724ee254ee646d1"
      ],
      "author": {
        "name": "Ran Benita",
        "email": "ran@unusedvar.com",
        "time": "Fri Jul 07 23:26:46 2023 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 07 13:26:46 2023 -0700"
      },
      "message": "Add .pre-commit-config.yaml file (#42)\n\nThis should make pre-commit.ci work."
    },
    {
      "commit": "b166486aeb995b60aff53272a724ee254ee646d1",
      "tree": "bb099f8ccbd5a042a564606f3e0c3a6a79222939",
      "parents": [
        "4693a5a77e8f75b41aa83d0670b8535f314f460b"
      ],
      "author": {
        "name": "Ran Benita",
        "email": "ran@unusedvar.com",
        "time": "Fri Jul 07 23:00:23 2023 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 07 13:00:23 2023 -0700"
      },
      "message": "Switch CI from Travis to GitHub Actions (#41)\n\nFix #39."
    },
    {
      "commit": "4693a5a77e8f75b41aa83d0670b8535f314f460b",
      "tree": "2001ecb5cf47d419f0c9f375fa0e6fc1e50743ec",
      "parents": [
        "c2ff5b89882cc0fb433f375bc3c0fd909e2e62e9"
      ],
      "author": {
        "name": "Ran Benita",
        "email": "ran@unusedvar.com",
        "time": "Fri Jul 07 23:00:07 2023 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 07 13:00:07 2023 -0700"
      },
      "message": "Drop support for Python 3.5, 3.6 (#40)\n\n"
    },
    {
      "commit": "c2ff5b89882cc0fb433f375bc3c0fd909e2e62e9",
      "tree": "6611e39acc6240f4452c6204d2ebb60775f58e6e",
      "parents": [
        "d48060d0f9f0c5e25e6c25d41ffd604f74c6e0cd"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Sat Feb 04 11:24:27 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 04 11:24:27 2023 +0000"
      },
      "message": "Require Python 3.5+ in setup.py and setup.cfg (#34)\n\nFollowed these instructions:\r\nhttps://packaging.python.org/en/latest/guides/dropping-older-python-versions/\r\n\r\nI\u0027m not going to make a release with python_requires\u003e\u003d\u00272.7\u0027 first as suggested\r\nby the docs, since dropping universal wheels should be enough to not have this\r\nversion installed on Python 2, and since 3.4 and earlier are basically non-existent\r\nat this point."
    },
    {
      "commit": "d48060d0f9f0c5e25e6c25d41ffd604f74c6e0cd",
      "tree": "65f806084e04f94c54dcb84e3229297dbc5293da",
      "parents": [
        "53c87773a5b3cfde47d3c904101847ae20143622"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Sat Feb 04 11:00:29 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 04 11:00:29 2023 +0000"
      },
      "message": "Don\u0027t describe mypy_extensions as experimental in the description (#32)\n\nAlso a few other minor updates to the description."
    },
    {
      "commit": "53c87773a5b3cfde47d3c904101847ae20143622",
      "tree": "300040061f7cf1bb499a248edd59529e8213f243",
      "parents": [
        "0a0adaeaa9cc7739d508d6fde5c08b4b970f673c"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Mon Jan 30 09:33:06 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 30 09:33:06 2023 +0000"
      },
      "message": "Add mypyc native int types i64, i32, i16 and u8 (#31)\n\nIn code compiled with mypyc, these can be used in annotations to use\r\nfaster native int operations that don\u0027t check for overflow, as an\r\nalternative to the default arbitrary-precision int type.\r\n\r\nSee mypyc/mypyc/issues/837 for more context. Note that only i64 and\r\ni32 are currently supported by mypyc, but I\u0027m adding the planned i16\r\nand u8 types as well since their implementation is essentially the\r\nsame.\r\n\r\nThese are not real classes. In particular, there can be no instances\r\nof these types. In code that is not compiled with mypyc, there are\r\njust regular \u0027int\u0027 objects, in order to allow code using these types\r\nto be run without compilation. In code compiled with mypyc, these are\r\nrepresented as native integers that don\u0027t have a 1:1 Python\r\nreplacement. The native integers are impliciticly converted to/from\r\n\u0027int\u0027 objects when boxed/unboxed.\r\n\r\nI originally was planning to make these aliases of `int`, but there\r\nare runtime type checking and introspection use cases where it\u0027s\r\nimportant to make these distinct objects.\r\n\r\nThe types only support a few runtime operations:\r\n\r\n* Conversions from numbers and strings\r\n* `isinstance` checks\r\n\r\nWe could also add at least the `from_bytes` class method, but it\r\ndoesn\u0027t seem urgent as long as mypyc doesn\u0027t support it as a primitive\r\noperation."
    },
    {
      "commit": "0a0adaeaa9cc7739d508d6fde5c08b4b970f673c",
      "tree": "d54ac8750779547cbafe73d920fbbe20d113f829",
      "parents": [
        "28749242b7df970e2ce0d815b11f494055f70bb4"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Sun Jan 29 14:14:28 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 29 14:14:28 2023 +0000"
      },
      "message": "Document development status as stable and prepare for 1.0 release (#30)\n\nMypy 1.0 is release is going out soon, so let\u0027s make mypy_extensions 1.0\r\nas well."
    },
    {
      "commit": "28749242b7df970e2ce0d815b11f494055f70bb4",
      "tree": "72da040b9b7f68898931aeddbd9c00542b71df2b",
      "parents": [
        "1c3f2ed002272f5a85b30675fe553e6b96fa763e"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Sun Jan 29 14:01:33 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 29 14:01:33 2023 +0000"
      },
      "message": "Drop Python 2 support (#29)\n\nMypy has dropped Python 2 support some time ago, and maintaining\r\nPython 2 support is getting too complicated for little benefit."
    },
    {
      "commit": "1c3f2ed002272f5a85b30675fe553e6b96fa763e",
      "tree": "c352933ee2a114f97d79aa21a5019c6c1417955d",
      "parents": [
        "7c4d002aa18488f5c9b669777c5a62f1030ce8ed"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Sun Jan 29 12:13:14 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 29 12:13:14 2023 +0000"
      },
      "message": "Fix test_typeddict_errors test case on Python 3.11 (#28)\n\nIntegers are now accepted as types in many runtime contexts:\r\nhttps://github.com/python/cpython/issues/90802\r\n\r\nFixes #24."
    },
    {
      "commit": "7c4d002aa18488f5c9b669777c5a62f1030ce8ed",
      "tree": "46a4c628c333a4fa84309b51308506f1b839a9bf",
      "parents": [
        "6565d3b67ba50dd62a73d1f5e15cf1d51b5edf13"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Sun Jan 29 11:26:23 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 29 11:26:23 2023 +0000"
      },
      "message": "Add Python 3.8 to 3.11 to tox envs (#27)\n\nNow `tox run` runs tests on all supported Python versions. One 3.11 test\r\nis still failing -- I\u0027ll look at it later."
    },
    {
      "commit": "6565d3b67ba50dd62a73d1f5e15cf1d51b5edf13",
      "tree": "9ac75f3ef8fcdd179196b5314a0dd25500eda31e",
      "parents": [
        "c02c54fc74c87e04fe363b6485528b414fd0c004"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Sun Jan 29 11:24:00 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 29 11:24:00 2023 +0000"
      },
      "message": "Add 3.10 and 3.11 to classifiers (#26)\n\nI\u0027m not updating .travis.yml since Travis CI is no longer\r\nfunctioning."
    },
    {
      "commit": "c02c54fc74c87e04fe363b6485528b414fd0c004",
      "tree": "258194db9891a3739f59686ef10a0598564dac5e",
      "parents": [
        "dffd016aeb20851c6059b0077be033611f174500"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Sun Jan 29 11:14:04 2023 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 29 11:14:04 2023 +0000"
      },
      "message": "Drop Python 3.4 support (#25)\n\nPyPI stats indicates that 0.00% of downloads are for Python 3.4:\r\nhttps://www.pypistats.org/packages/mypy-extensions\r\n\r\nOther supported Python versions have non-trivial downloads, so let\u0027s\r\ncontinue to support them for now."
    },
    {
      "commit": "dffd016aeb20851c6059b0077be033611f174500",
      "tree": "504b96e12f000bad78640dc737b3a167820de9b2",
      "parents": [
        "f6724aa6ef31a0d372af3943dee9b540c2379da1"
      ],
      "author": {
        "name": "Shantanu",
        "email": "12621235+hauntsaninja@users.noreply.github.com",
        "time": "Mon Jan 04 10:34:46 2021 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 04 18:34:46 2021 +0000"
      },
      "message": "Add 3.9 to the list of classifiers (#20)\n\nCo-authored-by: hauntsaninja \u003c\u003e"
    },
    {
      "commit": "f6724aa6ef31a0d372af3943dee9b540c2379da1",
      "tree": "cf9cbe469e1f0b61554997ee7444641cb9b07d6f",
      "parents": [
        "9e797d4a855413bfc37422768ab16b4bb3f53d74"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Thu Oct 17 15:12:40 2019 -0700"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Thu Oct 17 15:12:46 2019 -0700"
      },
      "message": "Add 3.8 to the list of classifiers\n"
    },
    {
      "commit": "9e797d4a855413bfc37422768ab16b4bb3f53d74",
      "tree": "8f98aebe41fbbbf00aaf6d0c7429dec8c7b6a79c",
      "parents": [
        "1cd4b86d1f45a1bcaf4d3a9fe0d650433e878c85",
        "5085d7ec21af3702cbb9df5767ea106833f2b308"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Thu Oct 10 12:54:50 2019 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 10 12:54:50 2019 +0100"
      },
      "message": "Merge pull request #13 from The-Compiler/patch-1\n\nUpdate URL in setup.py.\r\n"
    },
    {
      "commit": "5085d7ec21af3702cbb9df5767ea106833f2b308",
      "tree": "8f98aebe41fbbbf00aaf6d0c7429dec8c7b6a79c",
      "parents": [
        "1cd4b86d1f45a1bcaf4d3a9fe0d650433e878c85"
      ],
      "author": {
        "name": "Florian Bruhin",
        "email": "me@the-compiler.org",
        "time": "Thu Oct 10 13:09:30 2019 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 10 13:09:30 2019 +0200"
      },
      "message": "Update URL in setup.py\n\nIt\u0027s quite hard to find this repository if you don\u0027t know about it being split from mypy - so I think it\u0027d be better to link to this repository rather than the mypy website."
    },
    {
      "commit": "1cd4b86d1f45a1bcaf4d3a9fe0d650433e878c85",
      "tree": "4abc18d9307613121100699d09376caadfb9d67f",
      "parents": [
        "6252ecba95059c034b04b7f093507a64bb1043cf"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Sat Sep 21 09:54:16 2019 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 21 09:54:16 2019 -0700"
      },
      "message": "Add an undocumented mypyc_attr decorator (#12)\n\nThis is an (for-now) undocumented annotation to allow specifying\r\nvarious hints to mypyc. `trait` could have used this instead of\r\nbeing its own thing."
    },
    {
      "commit": "6252ecba95059c034b04b7f093507a64bb1043cf",
      "tree": "18ff5409ddcfb6e62735761647a6891cb7766e2c",
      "parents": [
        "508d25ef34a69e698adeaf195fd03b2f4cdaecca"
      ],
      "author": {
        "name": "cclauss",
        "email": "cclauss@me.com",
        "time": "Tue Apr 30 17:56:28 2019 +0200"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Apr 30 08:56:28 2019 -0700"
      },
      "message": ".travis.yml: The \u0027sudo\u0027 tag is now deprecated in Travis CI (#8)\n\nFixes #6"
    },
    {
      "commit": "508d25ef34a69e698adeaf195fd03b2f4cdaecca",
      "tree": "811e95227cd9a8d1699768f633ca507a1d755050",
      "parents": [
        "a4681cd9819429a8a470fe516fce8e65f4528e48"
      ],
      "author": {
        "name": "Anirudh Padmarao",
        "email": "apadmarao@users.noreply.github.com",
        "time": "Thu Jan 24 03:52:18 2019 -0800"
      },
      "committer": {
        "name": "Ivan Levkivskyi",
        "email": "levkivskyi@gmail.com",
        "time": "Thu Jan 24 11:52:18 2019 +0000"
      },
      "message": "Set TypedDict module correctly when using class definition syntax (#2) (#4)\n\nI shuffled the code so that we only override `__module__` when TypedDict is instantiated (and not when it\u0027s subclassed). \r\n\r\nAnd I tested that `__module__` is correct with both syntaxes.\r\n"
    },
    {
      "commit": "a4681cd9819429a8a470fe516fce8e65f4528e48",
      "tree": "925d54eb167765e713c401ef746f3d8e2d4e5168",
      "parents": [
        "0ad2da4bfa6e1058fd4dd611c1280b46f82112a9"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 19:18:39 2019 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 23 19:18:39 2019 -0500"
      },
      "message": "Add 3.7 to the list of classifiers (#5)\n\n"
    },
    {
      "commit": "0ad2da4bfa6e1058fd4dd611c1280b46f82112a9",
      "tree": "3b9604a9398d8ac92418e139241601b8530cc8fb",
      "parents": [
        "821ae5efb7e8bafd163a5b7ff8b285f723036c8f",
        "d7cbae41078c944853ed4ba544dec9e6606092a1"
      ],
      "author": {
        "name": "Ivan Levkivskyi",
        "email": "levkivskyi@gmail.com",
        "time": "Wed Jan 23 23:38:53 2019 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 23 23:38:53 2019 +0000"
      },
      "message": "Merge pull request #3 from msullivan/tests\n\nAdd tests and enable travis"
    },
    {
      "commit": "d7cbae41078c944853ed4ba544dec9e6606092a1",
      "tree": "3b9604a9398d8ac92418e139241601b8530cc8fb",
      "parents": [
        "88e388e7a64edb748b137f2166319343a643ca9d"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 15:30:35 2019 -0800"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 15:30:35 2019 -0800"
      },
      "message": "trigger a build?\n"
    },
    {
      "commit": "88e388e7a64edb748b137f2166319343a643ca9d",
      "tree": "3b9604a9398d8ac92418e139241601b8530cc8fb",
      "parents": [
        "18ef7ae973edf4799d1a35fad2b51fb58d90691f"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 15:26:17 2019 -0800"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 15:26:17 2019 -0800"
      },
      "message": "asdf\n"
    },
    {
      "commit": "18ef7ae973edf4799d1a35fad2b51fb58d90691f",
      "tree": "412e0049f1b092bbc5c5e76882238ae20a70b698",
      "parents": [
        "d06b240b125bca06d6696b014e887aadcad880b3"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 15:22:23 2019 -0800"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 15:22:23 2019 -0800"
      },
      "message": "tweak dist\n"
    },
    {
      "commit": "d06b240b125bca06d6696b014e887aadcad880b3",
      "tree": "5a0dfaaccbb5217a19a40deec04e6bd8681993da",
      "parents": [
        "a598c33cd837074bba62fad8f7c33ad706036727"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 15:15:40 2019 -0800"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 15:15:40 2019 -0800"
      },
      "message": "trigger a build?\n"
    },
    {
      "commit": "a598c33cd837074bba62fad8f7c33ad706036727",
      "tree": "5a0dfaaccbb5217a19a40deec04e6bd8681993da",
      "parents": [
        "5ea79a70d4315602ad7ce332fa1ce326f7fdad86"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 15:13:03 2019 -0800"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Jan 23 15:13:03 2019 -0800"
      },
      "message": "Run on a bunch more versions\n"
    },
    {
      "commit": "5ea79a70d4315602ad7ce332fa1ce326f7fdad86",
      "tree": "e1e9f520eac0fc8a747a58bee3bafeea35bf81cb",
      "parents": [
        "a2d5773ec4a13507523490842398b116efab3f54"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 22:13:55 2019 -0800"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 22:13:55 2019 -0800"
      },
      "message": "trigger a build?\n"
    },
    {
      "commit": "a2d5773ec4a13507523490842398b116efab3f54",
      "tree": "e1e9f520eac0fc8a747a58bee3bafeea35bf81cb",
      "parents": [
        "41c0deb507eb6f594e226cc80f2ae06b11c2f9c2"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 21:13:13 2019 -0500"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 21:13:13 2019 -0500"
      },
      "message": "No real reason to not CI branches before PRs are created\n"
    },
    {
      "commit": "41c0deb507eb6f594e226cc80f2ae06b11c2f9c2",
      "tree": "a6e31e8691011193d5fcee007a59fea2da91c928",
      "parents": [
        "eeb1ca54c9cecfe2b058d1e31f4756083dea5455"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 21:00:31 2019 -0500"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 21:00:31 2019 -0500"
      },
      "message": "Enable travis\n"
    },
    {
      "commit": "eeb1ca54c9cecfe2b058d1e31f4756083dea5455",
      "tree": "cbb729014cfe006559a0a2989e892428d4270293",
      "parents": [
        "353fdc69efcaef74cfb3ffd9ef8d8769ab66af2c"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 21:00:05 2019 -0500"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 21:00:05 2019 -0500"
      },
      "message": "Add a tox.ini to drive tests\n"
    },
    {
      "commit": "353fdc69efcaef74cfb3ffd9ef8d8769ab66af2c",
      "tree": "a99a037a2d6ff074aec89df1f6a357647a7bd005",
      "parents": [
        "904764e49bf3b3d32e18f189c09c4a78f8491e3e"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 20:07:10 2019 -0500"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 20:50:07 2019 -0500"
      },
      "message": "Make the tests run under python 2\n"
    },
    {
      "commit": "904764e49bf3b3d32e18f189c09c4a78f8491e3e",
      "tree": "8d28fa790e380911b3a52b07a5224a0067af4d76",
      "parents": [
        "821ae5efb7e8bafd163a5b7ff8b285f723036c8f"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 20:06:15 2019 -0500"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jan 22 20:50:07 2019 -0500"
      },
      "message": "Copy testextensions in and fix it to be standalone\n"
    },
    {
      "commit": "821ae5efb7e8bafd163a5b7ff8b285f723036c8f",
      "tree": "ab9262b50b99a845499d17087f140af38d4b26b0",
      "parents": [
        "4842df77fb6209e19b7bae7884e204601215b61c"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Mon Jan 14 17:05:20 2019 -0800"
      },
      "committer": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Mon Jan 14 17:05:20 2019 -0800"
      },
      "message": "Add a .gitignore.\n"
    },
    {
      "commit": "4842df77fb6209e19b7bae7884e204601215b61c",
      "tree": "bba138b59e5ff3ca5ec1ce772289f4a3fd6d1590",
      "parents": [
        "56e10cc1c371f2b4b8a70b8e92601b9b78a63118"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Wed Aug 15 11:17:53 2018 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 15 11:17:53 2018 -0700"
      },
      "message": "Bump the mypy_extensions version number to 0.5.0-dev (#5450)\n\n"
    },
    {
      "commit": "56e10cc1c371f2b4b8a70b8e92601b9b78a63118",
      "tree": "6b643840aa229607024007a996e6f33ca245eaab",
      "parents": [
        "0d35e0717cafc78fdd2f56dc57558901e2aeccb6"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Thu Aug 09 12:42:31 2018 -0700"
      },
      "committer": {
        "name": "Ivan Levkivskyi",
        "email": "levkivskyi@gmail.com",
        "time": "Thu Aug 09 20:42:31 2018 +0100"
      },
      "message": "Remove the `Id` class from mypy_extensions (#5441)\n\nArgh, I forgot to remove this when doing cleanup."
    },
    {
      "commit": "0d35e0717cafc78fdd2f56dc57558901e2aeccb6",
      "tree": "ec88b445dc83a34de492b34d47bae31fc1065dc5",
      "parents": [
        "94dc83ff399266cbb86bfc1a7a525eb087b98715"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Thu Aug 09 11:41:53 2018 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 09 11:41:53 2018 -0700"
      },
      "message": "Add a `FlexibleAlias` to `mypy_extensions` (#5436)\n\nCurrently there is no way to define generic type aliases that do not\r\ndepend on their type arguments or that are just directly a type\r\nvariable.\r\n\r\n`FlexibleAlias[T, typ]` creates a type that depends on `T` but that is\r\nexpanded to `typ` during type alias expansion.\r\n\r\nOne target use case for this is in creating conditionally defined type\r\naliases that depend on their argument under certain configurations but\r\nnot under others, for example:\r\n```\r\nif BOGUS:\r\n    Bogus \u003d FlexibleAlias[T, Any]\r\nelse:\r\n    Bogus \u003d FlexibleAlias[T, T]\r\n```\r\n"
    },
    {
      "commit": "94dc83ff399266cbb86bfc1a7a525eb087b98715",
      "tree": "42c980235bc8998c34a0e493e9f4081d60c62bb6",
      "parents": [
        "5e0af157c6576652102380ee2bf12108a5f45067"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Jun 26 08:06:52 2018 -0700"
      },
      "committer": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Tue Jun 26 16:06:52 2018 +0100"
      },
      "message": "Add an undocumented \"trait\" class decorator to mypy_extensions (#5278)\n\nThis is an undocumented and extremely experimental annotation to\r\nsupport a restricted for of multiple inheritance for `mypyc`.\r\n"
    },
    {
      "commit": "5e0af157c6576652102380ee2bf12108a5f45067",
      "tree": "e709cd10c3f4b551ec857a860c67d2bbb502c1a7",
      "parents": [
        "4e49fdbf20759afa3edda1b77d33fec0e9d1821e"
      ],
      "author": {
        "name": "Sebastian Rittau",
        "email": "srittau@rittau.org",
        "time": "Wed Jun 20 18:43:47 2018 +0200"
      },
      "committer": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Wed Jun 20 09:43:47 2018 -0700"
      },
      "message": "Drop support for Python 3.3 (#5248)\n\nSee also python/typeshed#2258 and python/typeshed#2260."
    },
    {
      "commit": "4e49fdbf20759afa3edda1b77d33fec0e9d1821e",
      "tree": "989770fee9f547da1de6b58cea38aa6ee0b59256",
      "parents": [
        "55af7436652dfa00f62e259f7e8093ec63fdecb0"
      ],
      "author": {
        "name": "Emil Hessman",
        "email": "emil@hessman.se",
        "time": "Sat Jun 09 13:44:01 2018 +0200"
      },
      "committer": {
        "name": "Ivan Levkivskyi",
        "email": "levkivskyi@gmail.com",
        "time": "Sat Jun 09 12:44:01 2018 +0100"
      },
      "message": "Fix minor typos in comments (#5183)\n\n"
    },
    {
      "commit": "55af7436652dfa00f62e259f7e8093ec63fdecb0",
      "tree": "3cf7891a8d4642f7bb4ecfaff0a9dc6f82cc37b7",
      "parents": [
        "94a5d0fffeb6865ad62c71eb89b24fe0e7a539ef"
      ],
      "author": {
        "name": "Thomas Grainger",
        "email": "tagrain@gmail.com",
        "time": "Mon Feb 26 13:42:02 2018 +0000"
      },
      "committer": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Mon Feb 26 13:42:02 2018 +0000"
      },
      "message": "mypy and mypy_extensions aren\u0027t posix only (#3765)\n\n"
    },
    {
      "commit": "94a5d0fffeb6865ad62c71eb89b24fe0e7a539ef",
      "tree": "f0d89ec25bbf00aeedb1043af690cabc8bef74a7",
      "parents": [
        "295ab6212624c8957ec192e2cbfee3ff74c6043b"
      ],
      "author": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Wed Jan 03 06:00:50 2018 -0800"
      },
      "committer": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Wed Jan 03 14:00:50 2018 +0000"
      },
      "message": "Bump mypy_extensions version to 0.4.0-dev (i.e. post-release-0.3.0) (#4418)\n\n"
    },
    {
      "commit": "295ab6212624c8957ec192e2cbfee3ff74c6043b",
      "tree": "bbeef6407537a6b8b73edc729ee6449c9f6bb4a0",
      "parents": [
        "798a7031b35b9a56662471f0fe447504dbb1e25e"
      ],
      "author": {
        "name": "Nehal J Wani",
        "email": "nehaljw.kkd1@gmail.com",
        "time": "Mon Nov 20 06:07:56 2017 +0000"
      },
      "committer": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Sun Nov 19 22:07:56 2017 -0800"
      },
      "message": "extensions: Specify dependency on typing for py\u003c35 (#4268)\n\nFixes #4264"
    },
    {
      "commit": "798a7031b35b9a56662471f0fe447504dbb1e25e",
      "tree": "b393997092028faa39057ae3043cc3d96988a294",
      "parents": [
        "3c6a711fcf78003ecd03afa8a9570719f04ab095"
      ],
      "author": {
        "name": "Ethan Smith",
        "email": "ethan@ethanhs.me",
        "time": "Wed Nov 15 08:43:53 2017 -0800"
      },
      "committer": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Wed Nov 15 08:43:53 2017 -0800"
      },
      "message": "Add LICENSE files to sdists (#4248)\n\nFixes #4247"
    },
    {
      "commit": "3c6a711fcf78003ecd03afa8a9570719f04ab095",
      "tree": "bc6edcda74fbeddac2efcd6c87788979fc876e4e",
      "parents": [
        "b8e02bd9b8669794759accdced54abd559d540a1"
      ],
      "author": {
        "name": "Thomas Grainger",
        "email": "tagrain@gmail.com",
        "time": "Tue Sep 19 23:30:27 2017 +0100"
      },
      "committer": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Tue Sep 19 15:30:27 2017 -0700"
      },
      "message": "mypy_extensions are universal (#3764)\n\n"
    },
    {
      "commit": "b8e02bd9b8669794759accdced54abd559d540a1",
      "tree": "963f34fbd8634e364563f9a9ececc9f95941f3a9",
      "parents": [
        "de3244cadb7a9c7f73a5ff5a45cb3b8abc244ca1"
      ],
      "author": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Fri Jul 07 12:00:27 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 07 12:00:27 2017 -0700"
      },
      "message": "Move mypy_extensions version to 0.3.0 (about to release) (#3676)\n\n"
    },
    {
      "commit": "de3244cadb7a9c7f73a5ff5a45cb3b8abc244ca1",
      "tree": "8bc0815ccd870615f75661c9d6a942c02b0147ea",
      "parents": [
        "22a13c6a87a7206ee9c006e640e16fc85d3cb4cb"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Fri Jun 23 07:41:44 2017 +0100"
      },
      "committer": {
        "name": "Ivan Levkivskyi",
        "email": "levkivskyi@gmail.com",
        "time": "Fri Jun 23 08:41:44 2017 +0200"
      },
      "message": "Support TypedDicts with missing keys (total\u003dFalse) (#3558)\n\n* Basic support for TypedDicts with missing keys (total\u003dFalse)\r\n\r\nOnly the functional syntax is supported.\r\n\r\n* Support get(key, {}) and fix construction of partial typed dict\r\n\r\n* Fix subtyping of non-total typed dicts\r\n\r\n* Fix join with non-total typed dict\r\n\r\n* Fix meet with non-total typed dicts\r\n\r\n* Add serialization test case\r\n\r\n* Support TypedDict total keyword argument with class syntax\r\n\r\n* Attempt to fix Python 3.3\r\n\r\n* Add minimal runtime `total` support to mypy_extensions\r\n\r\nThere is no support for introspection of `total` yet.\r\n\r\n* Fix tests on pre-3.6 Python and improve introspection\r\n\r\nMake TypedDict `total` introspectable.\r\n\r\n* Fix lint\r\n\r\n* Fix problems caused by merge\r\n\r\n* Allow td[\u0027key\u0027] even if td is not total\r\n\r\n* Fix lint\r\n\r\n* Add test case\r\n\r\n* Address review feedback\r\n\r\n* Update comment\r\n"
    },
    {
      "commit": "22a13c6a87a7206ee9c006e640e16fc85d3cb4cb",
      "tree": "ce1fbdd374976496e6f7b0dc1097a442cb134d14",
      "parents": [
        "e804f3ac68595ad8f19b5cf49e3980081fc4bc96"
      ],
      "author": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Sun May 28 20:17:26 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 28 20:17:26 2017 -0700"
      },
      "message": "Move version of extensions to post-release (#3348)\n\n"
    },
    {
      "commit": "e804f3ac68595ad8f19b5cf49e3980081fc4bc96",
      "tree": "affad7d173c6d1b869c41e5aee2d2043d8f0d3c7",
      "parents": [
        "ba070d9fa43e2017cdfd17273af4d5373506751c"
      ],
      "author": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Fri May 05 10:25:01 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 05 10:25:01 2017 -0700"
      },
      "message": "Bump mypy_extensions version and update author, author_email, classifiers. (#3330)\n\nAlso update author, author_email, classifiers.\r\n\r\nFixes #3311."
    },
    {
      "commit": "ba070d9fa43e2017cdfd17273af4d5373506751c",
      "tree": "890c17674d0d2eac4b5be7a2df35e44bd4e98e92",
      "parents": [
        "64da8a8bc2cee407443fb7cadc72fee3dc330ef3"
      ],
      "author": {
        "name": "Naomi Seyfer",
        "email": "violet@antepenultimate.org",
        "time": "Tue May 02 09:05:10 2017 -0700"
      },
      "committer": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Tue May 02 17:05:10 2017 +0100"
      },
      "message": "Better callable: `Callable[[Arg(\u0027x\u0027, int), VarArg(str)], int]` now a thing you can do (#2607)\n\nImplements an experimental feature to allow Callable to have any kind of signature an actual function definition does.\r\n\r\nThis should enable better typing of callbacks \u0026c.\r\n\r\nInitial discussion: python/typing#239\r\nProposal, v. similar to this impl: python/typing#264\r\nRelevant typeshed PR: python/typeshed#793"
    },
    {
      "commit": "64da8a8bc2cee407443fb7cadc72fee3dc330ef3",
      "tree": "0545faa8d02986d60f1a4bad1ff3e24f9662d30d",
      "parents": [
        "71ef29b17173dda79420a38cb7a64a25812a44c3"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Fri Jan 13 17:37:20 2017 +0000"
      },
      "committer": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Fri Jan 13 17:37:20 2017 +0000"
      },
      "message": "Bump mypy_extensions version to 0.2.0-dev\n"
    },
    {
      "commit": "71ef29b17173dda79420a38cb7a64a25812a44c3",
      "tree": "46fec34261150ea674dfd9308fade9218cffff2a",
      "parents": [
        "f2c5525e2b34a3849cd3c4adc229ddb3335c8df0"
      ],
      "author": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Fri Jan 13 17:30:28 2017 +0000"
      },
      "committer": {
        "name": "Jukka Lehtosalo",
        "email": "jukka.lehtosalo@iki.fi",
        "time": "Fri Jan 13 17:30:28 2017 +0000"
      },
      "message": "Bump mypy_extensions version to 0.1.0\n"
    },
    {
      "commit": "f2c5525e2b34a3849cd3c4adc229ddb3335c8df0",
      "tree": "759cd48c68a1a31e08a8af385630a99c08ad62a0",
      "parents": [
        "c36db0dc8a915e1bfd79278cdd91e5ce4fae3fcc"
      ],
      "author": {
        "name": "David Fisher",
        "email": "ddf1991@gmail.com",
        "time": "Mon Jan 09 09:10:02 2017 -0800"
      },
      "committer": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Mon Jan 09 09:10:02 2017 -0800"
      },
      "message": "Add NoReturn to mypy_extensions (#2637)\n\n"
    },
    {
      "commit": "c36db0dc8a915e1bfd79278cdd91e5ce4fae3fcc",
      "tree": "b0aedfe576a75ce0addd3f12f99b67799f205487",
      "parents": [
        "78e0ea142d00ba54517e4f1ba760d77fe79a6054"
      ],
      "author": {
        "name": "Łukasz Langa",
        "email": "lukasz@langa.pl",
        "time": "Fri Jan 06 15:46:45 2017 -0800"
      },
      "committer": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Fri Jan 06 15:46:45 2017 -0800"
      },
      "message": "Externalize flake8 linting, introduce additional checks (#2638)\n\nThis change is a step towards removing `runtests.py` (see #1673).\r\n\r\nThe exclusion list in the flake8 configuration in `setup.cfg` has been updated\r\nto enable running the linter from the root of the project by simply invoking\r\n`flake8`.  This enables it to leverage its own file discovery and its own\r\nmultiprocessing queue without excessive subprocessing for linting every file.\r\nThis gives a minor speed up in local test runs. Before:\r\n\r\n  total time in lint: 130.914682\r\n\r\nAfter:\r\n\r\n  total time in lint: 20.379915\r\n\r\nThere\u0027s an additional speedup on Travis because linting is now only performed\r\non Python 3.6.\r\n\r\nMore importantly, this means flake8 is now running over all files unless\r\nexplicitly excluded in `setup.cfg`. This will help avoiding unintentional\r\nomissions in the future (see comments on #2637).\r\n\r\nNote: running `flake8` as a single lazy subprocess in `runtests.py` doesn\u0027t\r\nsacrifice any parallelism because the linter has its own process pool.\r\n\r\nMinimal whitespace changes were required to `mypy_extensions.py` but in return\r\nflake8 will check it now exactly like it checks the rest of the `mypy/*`\r\ncodebase.  Those are also done on #2637 but that hasn\u0027t landed yet.\r\n\r\nFinally, flake8-bugbear and flake8-pyi were added to test requirements to make\r\nthe linter configuration consistent with typeshed.  I hope the additional\r\nchecks will speed up future pull requests by automating bigger parts of the\r\ncode review.  The pyi plugin enables forward reference support when linting\r\n.pyi files.  That means it\u0027s now possible to run `flake8` inside the typeshed\r\nsubmodule or on arbitrary .pyi files during development (which your editor\r\ncould do for you), for example on fixtures.  See discussion on #2629 on checks\r\nthat are disabled and why."
    },
    {
      "commit": "78e0ea142d00ba54517e4f1ba760d77fe79a6054",
      "tree": "3d1d662a135f99396ba1410650478db47f5f05d6",
      "parents": [
        "fc811d4fabeb6d417fb596ad146d4124c43ffb41"
      ],
      "author": {
        "name": "Roy Williams",
        "email": "roy.williams.iii@gmail.com",
        "time": "Tue Jan 03 16:54:29 2017 -0500"
      },
      "committer": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Tue Jan 03 13:54:29 2017 -0800"
      },
      "message": "Allow isinstance checks of TypedDict from the typing module (#2615)\n\nFixes #2614\r\n"
    },
    {
      "commit": "fc811d4fabeb6d417fb596ad146d4124c43ffb41",
      "tree": "8d75e3fed873e6c5a36e4dca89555d083eb04bc5",
      "parents": [
        "9bb31f4bf008722409daccd0e39fda4c12854b40"
      ],
      "author": {
        "name": "Ivan Levkivskyi",
        "email": "levkivskyi@gmail.com",
        "time": "Wed Dec 14 17:38:28 2016 +0100"
      },
      "committer": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Wed Dec 14 08:38:28 2016 -0800"
      },
      "message": "Runtime implementation of TypedDict extension (#2552)\n\nThis was initially proposed in python/typing#322. It works on Python 2 and 3."
    },
    {
      "commit": "9bb31f4bf008722409daccd0e39fda4c12854b40",
      "tree": "9ed38588ce231d4983d718eb5b197fb40b60b23a",
      "parents": [
        "dc725bad96f65ba515deac016a20d0f05a5538a0"
      ],
      "author": {
        "name": "David Foster",
        "email": "david@dafoster.net",
        "time": "Wed Oct 19 07:52:42 2016 -0700"
      },
      "committer": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Wed Oct 19 07:52:41 2016 -0700"
      },
      "message": "TypedDict: Recognize declaration of TypedDict(\u0027Point\u0027, {\u0027x\u0027: int, \u0027y\u0027: int}). (#2206)\n\nThis is really just the first phase, doing the syntactic analysis; type checking will follow as a separate PR, as will improvements like keyword args."
    },
    {
      "commit": "dc725bad96f65ba515deac016a20d0f05a5538a0",
      "tree": "ad2536814044348954a616691c6ab8196badef51",
      "parents": [],
      "author": {
        "name": "David Foster",
        "email": "david@dafoster.net",
        "time": "Fri Oct 14 18:46:45 2016 -0700"
      },
      "committer": {
        "name": "Guido van Rossum",
        "email": "guido@python.org",
        "time": "Fri Oct 14 18:46:45 2016 -0700"
      },
      "message": "Create mypy_extensions package. (#2228)\n\nCloses #2210. See also #2206."
    }
  ]
}
