)]}'
{"CONTRIBUTING.rst":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"cb985504b1b95056fced49947eab408739af918f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    http://docs.openstack.org/sdks/python/openstacksdk/"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Bug tracker"},{"line_number":36,"context_line":"    http://storyboard.openstack.org"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Mailing list (prefix subjects with ``[sdk]`` for faster responses)"},{"line_number":39,"context_line":"    http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f485f77_76615e05","line":36,"range":{"start_line":36,"start_character":4,"end_line":36,"end_character":35},"updated":"2017-11-15 13:45:22.000000000","message":"Is this being used? I couldn\u0027t figure out where to submit a bug from there. Is there a deeper link we could use?\n\nDoes this also remove Launchpad usage?","commit_id":"9bbbcfbed752d11525f3f8a9b6b9e6acee3491ee"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"795708ce1df48ddae23fcb5f02dbca7e1cc99d8c","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    http://docs.openstack.org/sdks/python/openstacksdk/"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Bug tracker"},{"line_number":36,"context_line":"    http://storyboard.openstack.org"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Mailing list (prefix subjects with ``[sdk]`` for faster responses)"},{"line_number":39,"context_line":"    http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f485f77_e7535a16","line":36,"range":{"start_line":36,"start_character":4,"end_line":36,"end_character":35},"in_reply_to":"1f485f77_76615e05","updated":"2017-11-15 15:03:16.000000000","message":"Yes - there is a deeper link, or there will be once we actually migrate. But we should, you know, maybe actually migrate first. Will fix.","commit_id":"9bbbcfbed752d11525f3f8a9b6b9e6acee3491ee"}],"doc/source/conf.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"cb985504b1b95056fced49947eab408739af918f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"html_last_updated_fmt \u003d \u0027%Y-%m-%d %H:%M\u0027"},{"line_number":38,"context_line":"html_theme \u003d \u0027openstackdocs\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"# TODO(shade) Set this to true when the PTI is updated"},{"line_number":41,"context_line":"# When True, this will raise an exception that kills sphinx-build."},{"line_number":42,"context_line":"enforcer_warnings_as_errors \u003d False"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_16290a9a","line":40,"range":{"start_line":40,"start_character":40,"end_line":40,"end_character":43},"updated":"2017-11-15 13:45:22.000000000","message":"What\u0027s PTI here and is there an estimate of when PTI will be updated?\n\nFWIW, this is pretty important, otherwise people can just not document stuff.","commit_id":"9bbbcfbed752d11525f3f8a9b6b9e6acee3491ee"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"795708ce1df48ddae23fcb5f02dbca7e1cc99d8c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"html_last_updated_fmt \u003d \u0027%Y-%m-%d %H:%M\u0027"},{"line_number":38,"context_line":"html_theme \u003d \u0027openstackdocs\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"# TODO(shade) Set this to true when the PTI is updated"},{"line_number":41,"context_line":"# When True, this will raise an exception that kills sphinx-build."},{"line_number":42,"context_line":"enforcer_warnings_as_errors \u003d False"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_6711aa52","line":40,"range":{"start_line":40,"start_character":40,"end_line":40,"end_character":43},"in_reply_to":"1f485f77_16290a9a","updated":"2017-11-15 15:03:16.000000000","message":"The PTI is the Project Testing Interface:\n\nhttps://governance.openstack.org/tc/reference/project-testing-interface.html#documentation\n\nIt has now been updated - but the docs job hasn\u0027t caught up yet. The issue is that, for reasons surpassing understanding, enforcer doesn\u0027t work with warnings\u003d\u003derrors when run via python setup.py - but it DOES work via sphinx-build directly (what?)\n\nIn any case, I\u0027ll hopefully get the build-openstack-sphinx-docs updated this week and we can flip this back on.","commit_id":"9bbbcfbed752d11525f3f8a9b6b9e6acee3491ee"}],"doc/source/enforcer.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"cb985504b1b95056fced49947eab408739af918f","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    app.info(\"ENFORCER: Found %d missing proxy methods \""},{"line_number":124,"context_line":"             \"in the output\" % missing_count)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    if DEBUG:"},{"line_number":127,"context_line":"        for name in sorted(missing):"},{"line_number":128,"context_line":"            app.info(\"ENFORCER: %s was not included in the output\" % name)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_19301be8","line":126,"range":{"start_line":126,"start_character":4,"end_line":126,"end_character":13},"updated":"2017-11-15 13:45:22.000000000","message":"This has been helpful in allowing people to figure out what they actually left out of a change when the gate tells them. Only having it on debug—unless the gate enables such a setting—will make this potentially harder to figure out if you just know that there was a count of missing things and not what the things are.\n\n(yes, they should run and see this locally, but it happens)","commit_id":"9bbbcfbed752d11525f3f8a9b6b9e6acee3491ee"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"795708ce1df48ddae23fcb5f02dbca7e1cc99d8c","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    app.info(\"ENFORCER: Found %d missing proxy methods \""},{"line_number":124,"context_line":"             \"in the output\" % missing_count)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    if DEBUG:"},{"line_number":127,"context_line":"        for name in sorted(missing):"},{"line_number":128,"context_line":"            app.info(\"ENFORCER: %s was not included in the output\" % name)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_27b3b24f","line":126,"range":{"start_line":126,"start_character":4,"end_line":126,"end_character":13},"in_reply_to":"1f485f77_19301be8","updated":"2017-11-15 15:03:16.000000000","message":"Yah - this is related to the other TODO - the setup.py vs. sphinx-build weirdness. It\u0027s currently super spammy because it claims nothing has been included. I\u0027ll add a similar TODO comment so we remember to undo this.","commit_id":"9bbbcfbed752d11525f3f8a9b6b9e6acee3491ee"}],"openstack/__init__.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"cb985504b1b95056fced49947eab408739af918f","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"__version__ \u003d pbr.version.VersionInfo(\u0027openstacksdk\u0027).version_string()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"if requestsexceptions.SubjectAltNameWarning:"},{"line_number":30,"context_line":"    warnings.filterwarnings("},{"line_number":31,"context_line":"        \u0027ignore\u0027, category\u003drequestsexceptions.SubjectAltNameWarning)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_195edb11","line":29,"range":{"start_line":29,"start_character":3,"end_line":29,"end_character":43},"updated":"2017-11-15 13:45:22.000000000","message":"Let me guess, this is here because of Rackspace?","commit_id":"9bbbcfbed752d11525f3f8a9b6b9e6acee3491ee"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"795708ce1df48ddae23fcb5f02dbca7e1cc99d8c","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"__version__ \u003d pbr.version.VersionInfo(\u0027openstacksdk\u0027).version_string()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"if requestsexceptions.SubjectAltNameWarning:"},{"line_number":30,"context_line":"    warnings.filterwarnings("},{"line_number":31,"context_line":"        \u0027ignore\u0027, category\u003drequestsexceptions.SubjectAltNameWarning)"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_47bd8e00","line":29,"range":{"start_line":29,"start_character":3,"end_line":29,"end_character":43},"in_reply_to":"1f485f77_195edb11","updated":"2017-11-15 15:03:16.000000000","message":"Yup! And as warnings go, wow is it useless/non-actionable to the end-user. :)","commit_id":"9bbbcfbed752d11525f3f8a9b6b9e6acee3491ee"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"cb985504b1b95056fced49947eab408739af918f","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    log \u003d _log.setup_logging(\u0027keystoneauth.identity.generic.base\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def openstack_clouds("},{"line_number":72,"context_line":"        config\u003dNone, debug\u003dFalse, cloud\u003dNone, strict\u003dFalse,"},{"line_number":73,"context_line":"        app_name\u003dNone, app_version\u003dNone):"},{"line_number":74,"context_line":"    if not config:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_b90c67ec","line":71,"range":{"start_line":71,"start_character":4,"end_line":71,"end_character":20},"updated":"2017-11-15 13:45:22.000000000","message":"How is this generally used? I looked around and only found examples of the singular `openstack_cloud` function.","commit_id":"9bbbcfbed752d11525f3f8a9b6b9e6acee3491ee"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"795708ce1df48ddae23fcb5f02dbca7e1cc99d8c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    log \u003d _log.setup_logging(\u0027keystoneauth.identity.generic.base\u0027)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def openstack_clouds("},{"line_number":72,"context_line":"        config\u003dNone, debug\u003dFalse, cloud\u003dNone, strict\u003dFalse,"},{"line_number":73,"context_line":"        app_name\u003dNone, app_version\u003dNone):"},{"line_number":74,"context_line":"    if not config:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f485f77_e7347a95","line":71,"range":{"start_line":71,"start_character":4,"end_line":71,"end_character":20},"in_reply_to":"1f485f77_b90c67ec","updated":"2017-11-15 15:03:16.000000000","message":"I use it in utility scripts all the time - could definitely stand to be documented. For instance:\n\n  import sahde\n  for cloud in shade.openstack_clouds():\n      try:\n          print cloud._network_client.get_endpoint()\n      except:\n          print cloud.name\n\nor http://paste.openstack.org/show/626393/","commit_id":"9bbbcfbed752d11525f3f8a9b6b9e6acee3491ee"}]}
