)]}'
{"doc/source/index.rst":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"adf385282cab43c91627ebc5987d168b58ada3d8","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The ``version.VersionInfo`` class can be used to query versions of a package"},{"line_number":43,"context_line":"and present it in various forms - ``debian_version()``, ``release_string()``,"},{"line_number":44,"context_line":"``rpm_string()``, ``version_string()``, or ``version_tuple()``."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"AUTHORS and ChangeLog"},{"line_number":47,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"baada198_92413e64","line":44,"updated":"2014-08-12 13:59:04.000000000","message":"Those are all methods of the new class, not VersionInfo, right?","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"563b24114181c34cadd79c93de443b077e62776e","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The ``version.VersionInfo`` class can be used to query versions of a package"},{"line_number":43,"context_line":"and present it in various forms - ``debian_version()``, ``release_string()``,"},{"line_number":44,"context_line":"``rpm_string()``, ``version_string()``, or ``version_tuple()``."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"AUTHORS and ChangeLog"},{"line_number":47,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"baada198_532b139b","line":44,"in_reply_to":"baada198_92413e64","updated":"2014-08-12 22:08:56.000000000","message":"Ah, skew. I will fix this shortly, but yes they are on SemanticVersion and that section should refer to SemanticVersion not VersionInfo","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"}],"pbr/version.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"43877eddcc49b0d8cb3e13f0fe15cdb2dbbcdd6d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                \"invalid version: cannot have prerelease and dev strings %s %s\""},{"line_number":69,"context_line":"                % (prerelease_type, dev_count))"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def __cmp__(self, other):"},{"line_number":72,"context_line":"        \"\"\"Compare self and other, another Semantic Version.\"\"\""},{"line_number":73,"context_line":"        ### NB(lifeless) this could perhaps be rewritten as"},{"line_number":74,"context_line":"        # cmp (tuple_of_one, tuple_of_other) with a single check for"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_33ea71d8","line":71,"updated":"2014-07-21 05:18:42.000000000","message":"Fyi there is no cmp in python 3+\n\nhttp://python3porting.com/differences.html#comparisons","commit_id":"a2352e03b0e53e1472e21c5b2d3d47284deca83b"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"e2ef7c4a9d9b3465ff48f4e5af27f075429e593e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                \"invalid version: cannot have prerelease and dev strings %s %s\""},{"line_number":69,"context_line":"                % (prerelease_type, dev_count))"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def __cmp__(self, other):"},{"line_number":72,"context_line":"        \"\"\"Compare self and other, another Semantic Version.\"\"\""},{"line_number":73,"context_line":"        ### NB(lifeless) this could perhaps be rewritten as"},{"line_number":74,"context_line":"        # cmp (tuple_of_one, tuple_of_other) with a single check for"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_73bf89d0","line":71,"in_reply_to":"baada198_33ea71d8","updated":"2014-07-21 05:19:33.000000000","message":"$ python3.4\nPython 3.4.0 (default, Apr 11 2014, 13:05:11) \n[GCC 4.8.2] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e cmp\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nNameError: name \u0027cmp\u0027 is not defined\n\u003e\u003e\u003e","commit_id":"a2352e03b0e53e1472e21c5b2d3d47284deca83b"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"287240eb04ab2af44f9a51899422638206b6a8c1","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                \"invalid version: cannot have prerelease and dev strings %s %s\""},{"line_number":69,"context_line":"                % (prerelease_type, dev_count))"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def __cmp__(self, other):"},{"line_number":72,"context_line":"        \"\"\"Compare self and other, another Semantic Version.\"\"\""},{"line_number":73,"context_line":"        ### NB(lifeless) this could perhaps be rewritten as"},{"line_number":74,"context_line":"        # cmp (tuple_of_one, tuple_of_other) with a single check for"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_13c48d5e","line":71,"in_reply_to":"baada198_73bf89d0","updated":"2014-07-21 05:21:04.000000000","message":"Also see:\n\nhttp://python3porting.com/problems.html#unorderable-types-cmp-and-cmp","commit_id":"a2352e03b0e53e1472e21c5b2d3d47284deca83b"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"9abde3a1c6ada7839d3f28bd421c235723b59484","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # the typeerror corner cases - that would likely be faster"},{"line_number":81,"context_line":"        # if this ever becomes performance sensitive."},{"line_number":82,"context_line":"        if not isinstance(other, SemanticVersion):"},{"line_number":83,"context_line":"            raise TypeError(\"ordering to non-SemanticVersion is undefined\")"},{"line_number":84,"context_line":"        this_tuple \u003d (self._major, self._minor, self._patch)"},{"line_number":85,"context_line":"        other_tuple \u003d (other._major, other._minor, other._patch)"},{"line_number":86,"context_line":"        if this_tuple \u003c other_tuple:"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_7f3ca3bf","line":83,"updated":"2014-07-26 04:12:35.000000000","message":"Think u can just do the following.\n\nif not isinstance(other, SemanticVersion):\n   return NotImplemented\n\nhttps://docs.python.org/2/library/constants.html#NotImplemented","commit_id":"afc9bbfc9fd5d6165c8e716188ca1568445596f3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"adf385282cab43c91627ebc5987d168b58ada3d8","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        :param major: Major component of the version."},{"line_number":46,"context_line":"        :param minor: Minor component of the version. Defaults to 0."},{"line_number":47,"context_line":"        :param patch: Patch level component. Defaults to 0."},{"line_number":48,"context_line":"        :param prerelease: What sort of prerelease version this is -"},{"line_number":49,"context_line":"            one of a(alpha), b(beta) or rc(release candidate)."},{"line_number":50,"context_line":"        :param prerelease: For prerelease versions, what number prerelease."},{"line_number":51,"context_line":"            Defaults to 0."}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_3224f2b0","line":48,"updated":"2014-08-12 13:59:04.000000000","message":"This should be prerelease_type","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"153608b1206d859688137ef0bb9b898bd6228690","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def __eq__(self, other):"},{"line_number":75,"context_line":"        if not isinstance(other, SemanticVersion):"},{"line_number":76,"context_line":"            return False"},{"line_number":77,"context_line":"        return self.__dict__ \u003d\u003d other.__dict__"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def __lt__(self, other):"},{"line_number":80,"context_line":"        \"\"\"Compare self and other, another Semantic Version.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_05826efe","line":77,"updated":"2014-07-28 00:10:58.000000000","message":"Doesn\u0027t this break equality for subclasses (if they ever exist)?\n\nAdding a new subclass property would cause there __dict__ to be unequal (even they though are actually equal).","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"9924fb953a6b946a4a7d04b06981835681166292","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def __eq__(self, other):"},{"line_number":75,"context_line":"        if not isinstance(other, SemanticVersion):"},{"line_number":76,"context_line":"            return False"},{"line_number":77,"context_line":"        return self.__dict__ \u003d\u003d other.__dict__"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def __lt__(self, other):"},{"line_number":80,"context_line":"        \"\"\"Compare self and other, another Semantic Version.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_52831455","line":77,"updated":"2014-07-29 06:59:59.000000000","message":"If a subclass has another property, then its not equal anymore :). Two instances of the subclass can equal each other, and two instances of the base class can equal each other. That said, we can always change this in future to permit equal-with-different-values, if there is a use case for it.","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"9924fb953a6b946a4a7d04b06981835681166292","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # lt (tuple_of_one, tuple_of_other) with a single check for"},{"line_number":83,"context_line":"        # the typeerror corner cases - that would likely be faster"},{"line_number":84,"context_line":"        # if this ever becomes performance sensitive."},{"line_number":85,"context_line":"        if not isinstance(other, SemanticVersion):"},{"line_number":86,"context_line":"            raise TypeError(\"ordering to non-SemanticVersion is undefined\")"},{"line_number":87,"context_line":"        this_tuple \u003d (self._major, self._minor, self._patch)"},{"line_number":88,"context_line":"        other_tuple \u003d (other._major, other._minor, other._patch)"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_7278187f","line":85,"updated":"2014-07-29 06:59:59.000000000","message":"I thought I addressed this in my reply to the earlier revision :) I\u0027m going to be lazy and not repeat it here (reviewing from gertty ;P)","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"153608b1206d859688137ef0bb9b898bd6228690","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # lt (tuple_of_one, tuple_of_other) with a single check for"},{"line_number":83,"context_line":"        # the typeerror corner cases - that would likely be faster"},{"line_number":84,"context_line":"        # if this ever becomes performance sensitive."},{"line_number":85,"context_line":"        if not isinstance(other, SemanticVersion):"},{"line_number":86,"context_line":"            raise TypeError(\"ordering to non-SemanticVersion is undefined\")"},{"line_number":87,"context_line":"        this_tuple \u003d (self._major, self._minor, self._patch)"},{"line_number":88,"context_line":"        other_tuple \u003d (other._major, other._minor, other._patch)"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_856d9e69","line":85,"updated":"2014-07-28 00:10:58.000000000","message":"return NotImplementedError?","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"94edcd97c8114202798b578382be956cb5e01f8b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # lt (tuple_of_one, tuple_of_other) with a single check for"},{"line_number":83,"context_line":"        # the typeerror corner cases - that would likely be faster"},{"line_number":84,"context_line":"        # if this ever becomes performance sensitive."},{"line_number":85,"context_line":"        if not isinstance(other, SemanticVersion):"},{"line_number":86,"context_line":"            raise TypeError(\"ordering to non-SemanticVersion is undefined\")"},{"line_number":87,"context_line":"        this_tuple \u003d (self._major, self._minor, self._patch)"},{"line_number":88,"context_line":"        other_tuple \u003d (other._major, other._minor, other._patch)"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_b568ac89","line":85,"in_reply_to":"baada198_7278187f","updated":"2014-07-30 05:59:44.000000000","message":"Ok, looking up that other one. Thanks.","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"9924fb953a6b946a4a7d04b06981835681166292","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        \"\"\""},{"line_number":360,"context_line":"        segments \u003d [self._major, self._minor, self._patch]"},{"line_number":361,"context_line":"        if self._prerelease_type:"},{"line_number":362,"context_line":"            type_map \u003d {\u0027a\u0027: \u0027alpha\u0027,"},{"line_number":363,"context_line":"                        \u0027b\u0027: \u0027beta\u0027,"},{"line_number":364,"context_line":"                        \u0027rc\u0027: \u0027candidate\u0027,"},{"line_number":365,"context_line":"                        }"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_927dac70","line":362,"updated":"2014-07-29 06:59:59.000000000","message":"I can pull it out if you like; there is only one reference to it at the moment, so I\u0027d prefer to defer that (so we have locality of reference when reading the code).","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"153608b1206d859688137ef0bb9b898bd6228690","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        \"\"\""},{"line_number":360,"context_line":"        segments \u003d [self._major, self._minor, self._patch]"},{"line_number":361,"context_line":"        if self._prerelease_type:"},{"line_number":362,"context_line":"            type_map \u003d {\u0027a\u0027: \u0027alpha\u0027,"},{"line_number":363,"context_line":"                        \u0027b\u0027: \u0027beta\u0027,"},{"line_number":364,"context_line":"                        \u0027rc\u0027: \u0027candidate\u0027,"},{"line_number":365,"context_line":"                        }"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_25a3f29e","line":362,"updated":"2014-07-28 00:10:58.000000000","message":"This seems like a good candidate for a class/module level constant.","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"a065c4e941ba472574e5edf3d28590c079f49938","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        \"\"\""},{"line_number":360,"context_line":"        segments \u003d [self._major, self._minor, self._patch]"},{"line_number":361,"context_line":"        if self._prerelease_type:"},{"line_number":362,"context_line":"            type_map \u003d {\u0027a\u0027: \u0027alpha\u0027,"},{"line_number":363,"context_line":"                        \u0027b\u0027: \u0027beta\u0027,"},{"line_number":364,"context_line":"                        \u0027rc\u0027: \u0027candidate\u0027,"},{"line_number":365,"context_line":"                        }"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_f5cf8489","line":362,"in_reply_to":"baada198_927dac70","updated":"2014-07-30 06:01:41.000000000","message":"Sounds fine, deferring I think is ok (just looked like a static piece of data that never changes and those always seem less useful in functions).","commit_id":"ccd8eed2bc6699249543c366dbaf26820187bace"}]}
