)]}'
{"specs/rocky/approved/integrate-mypy-type-checking.rst":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b4c34b5227bba775b4555adc63ec9de32fac8434","unresolved":false,"context_lines":[{"line_number":133,"context_line":"type declarations are added. This will unfortunately result in some merge"},{"line_number":134,"context_line":"conflicts."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Once type checks have been added to a file, developers will be expected to add"},{"line_number":137,"context_line":"type declarations to any new code and update type declarations for modified"},{"line_number":138,"context_line":"code."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Upgrade impact"},{"line_number":141,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f93b717_13d6cd50","line":138,"range":{"start_line":136,"start_character":0,"end_line":138,"end_character":5},"updated":"2018-01-29 19:03:29.000000000","message":"Can/should a hacking rule be added for that? I guess as a non-voting job at first, and then eventually make it voting when everything has type annotations?","commit_id":"dee8bc838b1d8f7448ee7646f1a1d0507226f9f8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cc48ce19da68b7a1260ae44ae5439506060cf56d","unresolved":false,"context_lines":[{"line_number":133,"context_line":"type declarations are added. This will unfortunately result in some merge"},{"line_number":134,"context_line":"conflicts."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Once type checks have been added to a file, developers will be expected to add"},{"line_number":137,"context_line":"type declarations to any new code and update type declarations for modified"},{"line_number":138,"context_line":"code."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Upgrade impact"},{"line_number":141,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f93b717_19c57ef1","line":138,"range":{"start_line":136,"start_character":0,"end_line":138,"end_character":5},"in_reply_to":"5f93b717_13d6cd50","updated":"2018-01-30 09:38:26.000000000","message":"We can add this as a voting job from the get-go. We\u0027ll be maintaining a list of files that have been converted and if code in one of those files is modified in such a way that the types are no longer correct, the job will fail. I can add this here","commit_id":"dee8bc838b1d8f7448ee7646f1a1d0507226f9f8"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b4c34b5227bba775b4555adc63ec9de32fac8434","unresolved":false,"context_lines":[{"line_number":163,"context_line":"   to validate."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"3. Repeat step 2 until we have the worst offenders covered, everything covered,"},{"line_number":166,"context_line":"   or we get bored."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f93b717_93c17d83","line":166,"range":{"start_line":166,"start_character":6,"end_line":166,"end_character":18},"updated":"2018-01-29 19:03:29.000000000","message":"I get the sarcasm, but I feel like we shouldn\u0027t embark on this if we\u0027re not going to see it to the end.","commit_id":"dee8bc838b1d8f7448ee7646f1a1d0507226f9f8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cc48ce19da68b7a1260ae44ae5439506060cf56d","unresolved":false,"context_lines":[{"line_number":163,"context_line":"   to validate."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"3. Repeat step 2 until we have the worst offenders covered, everything covered,"},{"line_number":166,"context_line":"   or we get bored."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f93b717_59a6a655","line":166,"range":{"start_line":166,"start_character":6,"end_line":166,"end_character":18},"in_reply_to":"5f93b717_93c17d83","updated":"2018-01-30 09:38:26.000000000","message":"Heh, yeah. To be honest, the first point is probably the most likely. These type checks are optional, and if nobody cares enough about some code to add the annotations, we shouldn\u0027t force it upon anyone. At least, that\u0027s my thinking.","commit_id":"dee8bc838b1d8f7448ee7646f1a1d0507226f9f8"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b8d47fcf25b34b1a3b26a993c1645a152b57764d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"is Python\u0027s use of dynamic, or *\"duck\"*, typing. While there are advantages to"},{"line_number":24,"context_line":"dynamic typing, mostly in the areas of flexibility and terseness, these"},{"line_number":25,"context_line":"advantages tend to morph into disadvantages as applications grow larger. By"},{"line_number":26,"context_line":"comparison, the advantages of static typing - programs that easier to"},{"line_number":27,"context_line":"understand, maintain, and test - become more important as applications grow."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"`mypy`_ is an experimental, optional static type checker that has been in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f93b717_8acdaa67","line":26,"range":{"start_line":26,"start_character":55,"end_line":26,"end_character":59},"updated":"2018-01-30 11:43:37.000000000","message":"nit: \u0027that are\u0027?","commit_id":"7702deaccc53df677e96b97a22db883a32340b68"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6fd24fd4bd5973dfeb53b425e270b761f63f8e98","unresolved":false,"context_lines":[{"line_number":23,"context_line":"is Python\u0027s use of dynamic, or *\"duck\"*, typing. While there are advantages to"},{"line_number":24,"context_line":"dynamic typing, mostly in the areas of flexibility and terseness, these"},{"line_number":25,"context_line":"advantages tend to morph into disadvantages as applications grow larger. By"},{"line_number":26,"context_line":"comparison, the advantages of static typing - programs that easier to"},{"line_number":27,"context_line":"understand, maintain, and test - become more important as applications grow."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"`mypy`_ is an experimental, optional static type checker that has been in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f93b717_8a96014c","line":26,"range":{"start_line":26,"start_character":55,"end_line":26,"end_character":59},"in_reply_to":"5f93b717_8acdaa67","updated":"2018-01-30 17:13:48.000000000","message":"Done","commit_id":"7702deaccc53df677e96b97a22db883a32340b68"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b8d47fcf25b34b1a3b26a993c1645a152b57764d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"comparison, the advantages of static typing - programs that easier to"},{"line_number":27,"context_line":"understand, maintain, and test - become more important as applications grow."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"`mypy`_ is an experimental, optional static type checker that has been in"},{"line_number":30,"context_line":"development for over six years [1]_. It provides a way to retrofit existing"},{"line_number":31,"context_line":"Python code with type annotations which can then be machine-checked. Not only"},{"line_number":32,"context_line":"does this mitigate a whole class of errors, but it massively improves that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f93b717_2a0d76a0","line":29,"range":{"start_line":29,"start_character":14,"end_line":29,"end_character":26},"updated":"2018-01-30 11:43:37.000000000","message":"From their readthedocs:\n\n\"Mypy is still experimental. There will be changes that break backward compatibility.\"\n\nThat\u0027s unnerving. If they decide to break something we\u0027re using in a thousand different places...","commit_id":"7702deaccc53df677e96b97a22db883a32340b68"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6fd24fd4bd5973dfeb53b425e270b761f63f8e98","unresolved":false,"context_lines":[{"line_number":26,"context_line":"comparison, the advantages of static typing - programs that easier to"},{"line_number":27,"context_line":"understand, maintain, and test - become more important as applications grow."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"`mypy`_ is an experimental, optional static type checker that has been in"},{"line_number":30,"context_line":"development for over six years [1]_. It provides a way to retrofit existing"},{"line_number":31,"context_line":"Python code with type annotations which can then be machine-checked. Not only"},{"line_number":32,"context_line":"does this mitigate a whole class of errors, but it massively improves that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f93b717_eadf8537","line":29,"range":{"start_line":29,"start_character":14,"end_line":29,"end_character":26},"in_reply_to":"5f93b717_2a0d76a0","updated":"2018-01-30 17:13:48.000000000","message":"Right, it\u0027s not 1.0 and that seems like boilerplate to allow them to make changes. However, it has been in development for quite some time now, is used by projects like Sphinx, and is in production use at the likes of Dropbox [1] and Instagram [2] (and likely Google, assuming they aren\u0027t just rewriting everything in Go these days). I think we\u0027re safe.\n\n[1] https://github.com/dropbox/pyannotate\n[2] https://github.com/Instagram/MonkeyType","commit_id":"7702deaccc53df677e96b97a22db883a32340b68"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b8d47fcf25b34b1a3b26a993c1645a152b57764d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"`mypy`_ is an experimental, optional static type checker that has been in"},{"line_number":30,"context_line":"development for over six years [1]_. It provides a way to retrofit existing"},{"line_number":31,"context_line":"Python code with type annotations which can then be machine-checked. Not only"},{"line_number":32,"context_line":"does this mitigate a whole class of errors, but it massively improves that"},{"line_number":33,"context_line":"ability of developers to understand and improve the code base. The *mypy* FAQs"},{"line_number":34,"context_line":"[2]_ suggest the following types of project would benefit from static typing"},{"line_number":35,"context_line":"and, by extension, *mypy*:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f93b717_4a6b2284","line":32,"range":{"start_line":32,"start_character":70,"end_line":32,"end_character":74},"updated":"2018-01-30 11:43:37.000000000","message":"nit: \u0027the\u0027","commit_id":"7702deaccc53df677e96b97a22db883a32340b68"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6fd24fd4bd5973dfeb53b425e270b761f63f8e98","unresolved":false,"context_lines":[{"line_number":29,"context_line":"`mypy`_ is an experimental, optional static type checker that has been in"},{"line_number":30,"context_line":"development for over six years [1]_. It provides a way to retrofit existing"},{"line_number":31,"context_line":"Python code with type annotations which can then be machine-checked. Not only"},{"line_number":32,"context_line":"does this mitigate a whole class of errors, but it massively improves that"},{"line_number":33,"context_line":"ability of developers to understand and improve the code base. The *mypy* FAQs"},{"line_number":34,"context_line":"[2]_ suggest the following types of project would benefit from static typing"},{"line_number":35,"context_line":"and, by extension, *mypy*:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f93b717_2aa80d8b","line":32,"range":{"start_line":32,"start_character":70,"end_line":32,"end_character":74},"in_reply_to":"5f93b717_4a6b2284","updated":"2018-01-30 17:13:48.000000000","message":"Done","commit_id":"7702deaccc53df677e96b97a22db883a32340b68"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b8d47fcf25b34b1a3b26a993c1645a152b57764d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Integration of *mypy* can be done in a piecemeal fashion, file by file."},{"line_number":79,"context_line":"*mypy*\\\u0027s Python 2.7 compatible type annotations [3]_ will be used to maintain"},{"line_number":80,"context_line":"Python 2.7 compatibility. Where possible, the `pyannotate`_ tool can and should"},{"line_number":81,"context_line":"be used to generate type annotations in an automated manner."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f93b717_ea10eeaa","line":79,"range":{"start_line":79,"start_character":10,"end_line":79,"end_character":48},"updated":"2018-01-30 11:43:37.000000000","message":"Am I reading that wrong or is it impossible for 2- and 3-style annotations to exist in the same code? 2\u0027s are comments, so that\u0027s fine, but 3\u0027s are in the code itself, so wouldn\u0027t running that code with Python 2 fail?","commit_id":"7702deaccc53df677e96b97a22db883a32340b68"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6fd24fd4bd5973dfeb53b425e270b761f63f8e98","unresolved":false,"context_lines":[{"line_number":76,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Integration of *mypy* can be done in a piecemeal fashion, file by file."},{"line_number":79,"context_line":"*mypy*\\\u0027s Python 2.7 compatible type annotations [3]_ will be used to maintain"},{"line_number":80,"context_line":"Python 2.7 compatibility. Where possible, the `pyannotate`_ tool can and should"},{"line_number":81,"context_line":"be used to generate type annotations in an automated manner."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f93b717_ea2a252a","line":79,"range":{"start_line":79,"start_character":10,"end_line":79,"end_character":48},"in_reply_to":"5f93b717_ea10eeaa","updated":"2018-01-30 17:13:48.000000000","message":"Aye, which is why we\u0027re opting for the Python 2.7 compatible annotations (comments). Once we drop support for Python \u003c 3.4, we _could_ switch styles but it\u0027s not required. mypy, the tool, is run under Python 3 in any case.","commit_id":"7702deaccc53df677e96b97a22db883a32340b68"}]}
