)]}'
{"keystoneauth1/discover.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3064e2db21adcff803afeeaff7aaf267e1bb62f2","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    def data_for(self, version, url\u003dNone, **kwargs):"},{"line_number":270,"context_line":"        \"\"\"Return endpoint data for a version."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        :param tuple version: The version is always a minimum version in the"},{"line_number":273,"context_line":"            same major release as there should be no compatibility issues with"},{"line_number":274,"context_line":"            using a version newer than the one asked for."},{"line_number":275,"context_line":"        :param string url: If url is given, the data will be returned for the"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_2ee26430","side":"PARENT","line":272,"range":{"start_line":272,"start_character":15,"end_line":272,"end_character":20},"updated":"2017-06-23 21:21:22.000000000","message":"why remove this documentation?","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"17be0923bbfe5ff0da8a20e2201ccbf1e062fabd","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    def data_for(self, version, url\u003dNone, **kwargs):"},{"line_number":270,"context_line":"        \"\"\"Return endpoint data for a version."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        :param tuple version: The version is always a minimum version in the"},{"line_number":273,"context_line":"            same major release as there should be no compatibility issues with"},{"line_number":274,"context_line":"            using a version newer than the one asked for."},{"line_number":275,"context_line":"        :param string url: If url is given, the data will be returned for the"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_59cfa355","side":"PARENT","line":272,"range":{"start_line":272,"start_character":15,"end_line":272,"end_character":20},"in_reply_to":"5f201791_2ee26430","updated":"2017-06-24 17:19:26.000000000","message":"It doesn\u0027t only accept a tuple - the documentation is a lie. It accepts a string or a tuple, since it goes through normalize_version_number.","commit_id":"4f1d078d93f393a5db9f21fcba033b19a05461c0"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3064e2db21adcff803afeeaff7aaf267e1bb62f2","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        versions.sort(key\u003dlambda v: v[\u0027version\u0027], reverse\u003dreverse)"},{"line_number":285,"context_line":"        return versions"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def data_for(self, version\u003dNone,"},{"line_number":288,"context_line":"                 min_version\u003dNone, max_version\u003dNone,"},{"line_number":289,"context_line":"                 url\u003dNone, **kwargs):"},{"line_number":290,"context_line":"        \"\"\"Return endpoint data for a version."}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_4e9240a0","line":287,"range":{"start_line":287,"start_character":23,"end_line":287,"end_character":35},"updated":"2017-06-23 21:21:22.000000000","message":"Should this be changed here? Would be better to change it in https://review.openstack.org/#/c/469088 I think, if it\u0027s acceptable to change it at all (cc morgan)","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"17be0923bbfe5ff0da8a20e2201ccbf1e062fabd","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        versions.sort(key\u003dlambda v: v[\u0027version\u0027], reverse\u003dreverse)"},{"line_number":285,"context_line":"        return versions"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def data_for(self, version\u003dNone,"},{"line_number":288,"context_line":"                 min_version\u003dNone, max_version\u003dNone,"},{"line_number":289,"context_line":"                 url\u003dNone, **kwargs):"},{"line_number":290,"context_line":"        \"\"\"Return endpoint data for a version."}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_39d8671c","line":287,"range":{"start_line":287,"start_character":23,"end_line":287,"end_character":35},"in_reply_to":"5f201791_4e9240a0","updated":"2017-06-24 17:19:26.000000000","message":"Done","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3064e2db21adcff803afeeaff7aaf267e1bb62f2","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        :param version: The version is always a minimum version in the"},{"line_number":338,"context_line":"            same major release as there should be no compatibility issues with"},{"line_number":339,"context_line":"            using a version newer than the one asked for."},{"line_number":340,"context_line":"        :param string url: If url is given, the data will be returned for the"},{"line_number":341,"context_line":"            endpoint data that that has a self link matching the url."},{"line_number":342,"context_line":"        :param min_version: The minimum version that is acceptable. Mutually"},{"line_number":343,"context_line":"            exclusive with version. If min_version is given with no max_version"},{"line_number":344,"context_line":"            it is as if max version is \u0027latest\u0027."}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_ee634cb0","line":341,"range":{"start_line":340,"start_character":8,"end_line":341,"end_character":69},"updated":"2017-06-23 21:21:22.000000000","message":"nit, these param docs should be in the same order as they are in the method signature and in the same order as they are in data_for","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0c183b9eb0fbf5339a60966510ae0ce8d436e3ca","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                raise exceptions.DiscoveryFailure("},{"line_number":535,"context_line":"                    \"Minimum version {min_version} was not found\".format("},{"line_number":536,"context_line":"                        min_version\u003dversion_to_string(min_version)))"},{"line_number":537,"context_line":"            elif min_version and not max_version:"},{"line_number":538,"context_line":"                raise exceptions.DiscoveryFailure("},{"line_number":539,"context_line":"                    \"Maximum version {max_version} was not found\".format("},{"line_number":540,"context_line":"                        max_version\u003dversion_to_string(max_version)))"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_3875d7cb","line":537,"updated":"2017-06-15 19:12:34.000000000","message":"this is same as L533, should be:\n\n    elif max_version and not min_version","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"17be0923bbfe5ff0da8a20e2201ccbf1e062fabd","unresolved":false,"context_lines":[{"line_number":534,"context_line":"                raise exceptions.DiscoveryFailure("},{"line_number":535,"context_line":"                    \"Minimum version {min_version} was not found\".format("},{"line_number":536,"context_line":"                        min_version\u003dversion_to_string(min_version)))"},{"line_number":537,"context_line":"            elif min_version and not max_version:"},{"line_number":538,"context_line":"                raise exceptions.DiscoveryFailure("},{"line_number":539,"context_line":"                    \"Maximum version {max_version} was not found\".format("},{"line_number":540,"context_line":"                        max_version\u003dversion_to_string(max_version)))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_b9b59780","line":537,"in_reply_to":"7f231b9d_3875d7cb","updated":"2017-06-24 17:19:26.000000000","message":"Done","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3064e2db21adcff803afeeaff7aaf267e1bb62f2","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        self.service_url \u003d url"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _get_url_choices("},{"line_number":561,"context_line":"            self, version, min_version\u003dNone, max_version\u003dNone,"},{"line_number":562,"context_line":"            project_id\u003dNone, allow_version_hack\u003dTrue):"},{"line_number":563,"context_line":"        if allow_version_hack:"},{"line_number":564,"context_line":"            url \u003d urllib.parse.urlparse(self.url)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_d1a5d505","line":561,"range":{"start_line":561,"start_character":18,"end_line":561,"end_character":25},"updated":"2017-06-23 21:21:22.000000000","message":"You\u0027re using a positional variable here but passing it as a kw on L470, would be nice to be consistent","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"17be0923bbfe5ff0da8a20e2201ccbf1e062fabd","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        self.service_url \u003d url"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def _get_url_choices("},{"line_number":561,"context_line":"            self, version, min_version\u003dNone, max_version\u003dNone,"},{"line_number":562,"context_line":"            project_id\u003dNone, allow_version_hack\u003dTrue):"},{"line_number":563,"context_line":"        if allow_version_hack:"},{"line_number":564,"context_line":"            url \u003d urllib.parse.urlparse(self.url)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_19dfebd6","line":561,"range":{"start_line":561,"start_character":18,"end_line":561,"end_character":25},"in_reply_to":"5f201791_d1a5d505","updated":"2017-06-24 17:19:26.000000000","message":"Done","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3064e2db21adcff803afeeaff7aaf267e1bb62f2","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                self._saved_project_id \u003d url_parts.pop()"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"            # Next, check to see if the url indicates a version and if that"},{"line_number":573,"context_line":"            # version matches our request. If so, we can start by trying"},{"line_number":574,"context_line":"            # the given url as it has a high potential for success"},{"line_number":575,"context_line":"            url_version \u003d None"},{"line_number":576,"context_line":"            if url_parts[-1].startswith(\u0027v\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_71f4c1cf","line":573,"updated":"2017-06-23 21:21:22.000000000","message":"This could be updated to indicate the request can be a range","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"17be0923bbfe5ff0da8a20e2201ccbf1e062fabd","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                self._saved_project_id \u003d url_parts.pop()"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"            # Next, check to see if the url indicates a version and if that"},{"line_number":573,"context_line":"            # version matches our request. If so, we can start by trying"},{"line_number":574,"context_line":"            # the given url as it has a high potential for success"},{"line_number":575,"context_line":"            url_version \u003d None"},{"line_number":576,"context_line":"            if url_parts[-1].startswith(\u0027v\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_39e2a7a1","line":573,"in_reply_to":"5f201791_71f4c1cf","updated":"2017-06-24 17:19:26.000000000","message":"Done","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3064e2db21adcff803afeeaff7aaf267e1bb62f2","unresolved":false,"context_lines":[{"line_number":582,"context_line":"            if url_version:"},{"line_number":583,"context_line":"                is_between \u003d version_between("},{"line_number":584,"context_line":"                    min_version, max_version, url_version)"},{"line_number":585,"context_line":"                exact_match \u003d (version and version !\u003d \u0027latest\u0027"},{"line_number":586,"context_line":"                               and version_match("},{"line_number":587,"context_line":"                                   normalize_version_number(version),"},{"line_number":588,"context_line":"                                   url_version))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_2e038411","line":585,"range":{"start_line":585,"start_character":43,"end_line":585,"end_character":61},"updated":"2017-06-23 21:21:22.000000000","message":"could this also be (\u0027latest\u0027,)? Asking since you changed normalize_version_number to handle that possibility.","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"17be0923bbfe5ff0da8a20e2201ccbf1e062fabd","unresolved":false,"context_lines":[{"line_number":582,"context_line":"            if url_version:"},{"line_number":583,"context_line":"                is_between \u003d version_between("},{"line_number":584,"context_line":"                    min_version, max_version, url_version)"},{"line_number":585,"context_line":"                exact_match \u003d (version and version !\u003d \u0027latest\u0027"},{"line_number":586,"context_line":"                               and version_match("},{"line_number":587,"context_line":"                                   normalize_version_number(version),"},{"line_number":588,"context_line":"                                   url_version))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_d9f61364","line":585,"range":{"start_line":585,"start_character":43,"end_line":585,"end_character":61},"in_reply_to":"5f201791_2e038411","updated":"2017-06-24 17:19:26.000000000","message":"Fixed that in the latest update (not going to normalize latest strings anymore)","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3064e2db21adcff803afeeaff7aaf267e1bb62f2","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                                   normalize_version_number(version),"},{"line_number":588,"context_line":"                                   url_version))"},{"line_number":589,"context_line":"                high_match \u003d is_between and max_version and version_match("},{"line_number":590,"context_line":"                    normalize_version_number(max_version), url_version)"},{"line_number":591,"context_line":"                if exact_match or is_between:"},{"line_number":592,"context_line":"                    self._catalog_matches_version \u003d True"},{"line_number":593,"context_line":"                    # This endpoint matches the version request"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_51f1c5cc","line":590,"updated":"2017-06-23 21:21:22.000000000","message":"It\u0027s not clear to me what makes high_match a special case - I would see either is_between or exact_match as cause to return the catalog_discovery url","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"17be0923bbfe5ff0da8a20e2201ccbf1e062fabd","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                                   normalize_version_number(version),"},{"line_number":588,"context_line":"                                   url_version))"},{"line_number":589,"context_line":"                high_match \u003d is_between and max_version and version_match("},{"line_number":590,"context_line":"                    normalize_version_number(max_version), url_version)"},{"line_number":591,"context_line":"                if exact_match or is_between:"},{"line_number":592,"context_line":"                    self._catalog_matches_version \u003d True"},{"line_number":593,"context_line":"                    # This endpoint matches the version request"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_198dabd2","line":590,"in_reply_to":"5f201791_51f1c5cc","updated":"2017-06-24 17:19:26.000000000","message":"I tried adding a comment in the next patch - but the basic gist is that if it\u0027s _only_ a match that\u0027s between the requested range, there may be a higher match so we should look for unversioned endpoint first so that we can satisfy your request for something larger. However, if we have an actual match on the max_version, then we know that there cannot be a higher match and thus we can go ahead and hit the versioned endpoint.\n\nThe logic is there because the unversioned endpoint\u0027s existence is a guess, whereas the versioned endpoint from the catalog is a thing that was registered.","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3064e2db21adcff803afeeaff7aaf267e1bb62f2","unresolved":false,"context_lines":[{"line_number":614,"context_line":"                url.fragment).geturl()"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"            if catalog_discovery:"},{"line_number":617,"context_line":"                yield catalog_discovery"},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"            # NOTE(mordred): For backwards compatibility people might have"},{"line_number":620,"context_line":"            # added version hacks using the version hack system. The logic"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_91987dc0","line":617,"updated":"2017-06-23 21:21:22.000000000","message":"Comment here would be nice - this is making catalog_discovery the third choice if no high_match/exact_match was found and after trying to do discovery with the unversioned url?","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"17be0923bbfe5ff0da8a20e2201ccbf1e062fabd","unresolved":false,"context_lines":[{"line_number":614,"context_line":"                url.fragment).geturl()"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"            if catalog_discovery:"},{"line_number":617,"context_line":"                yield catalog_discovery"},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"            # NOTE(mordred): For backwards compatibility people might have"},{"line_number":620,"context_line":"            # added version hacks using the version hack system. The logic"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f201791_d9c4d3f7","line":617,"in_reply_to":"5f201791_91987dc0","updated":"2017-06-24 17:19:26.000000000","message":"Yah - it\u0027s a fallback position if the unversioned url (or our idea of where one should be) didn\u0027t work.","commit_id":"669ad366d741fab36a545fde43e136f5bcc1f64f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9165009e977ca00185a0cb27084aedd5e274de62","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    if version and version !\u003d \u0027latest\u0027:"},{"line_number":123,"context_line":"        version \u003d normalize_version_number(version)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    if min_version:"},{"line_number":126,"context_line":"        min_version \u003d normalize_version_number(min_version)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    if max_version and max_version !\u003d \u0027latest\u0027:"},{"line_number":129,"context_line":"        max_version \u003d normalize_version_number(max_version)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f201791_be6186d5","line":126,"range":{"start_line":125,"start_character":4,"end_line":126,"end_character":59},"updated":"2017-06-28 17:54:32.000000000","message":"Out of curiosity.. what happens if someone specifies min_version\u003d\u0027latest\u0027?","commit_id":"d58a9111bb7f9a9c02ef34c9dea2a7fccda5ad6f"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"38b2af7343048965008bb6cfe17928b62bdca043","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    if version and version !\u003d \u0027latest\u0027:"},{"line_number":123,"context_line":"        version \u003d normalize_version_number(version)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    if min_version:"},{"line_number":126,"context_line":"        min_version \u003d normalize_version_number(min_version)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    if max_version and max_version !\u003d \u0027latest\u0027:"},{"line_number":129,"context_line":"        max_version \u003d normalize_version_number(max_version)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f201791_d7cc258a","line":126,"range":{"start_line":125,"start_character":4,"end_line":126,"end_character":59},"in_reply_to":"5f201791_be6186d5","updated":"2017-06-28 20:36:39.000000000","message":"TypeError is raised.\n\nSo what is expected behavior then? I think I would expect min_version\u003d\u0027latest\u0027 max_version\u003dNone to have the same behavior as version\u003d\u0027latest\u0027","commit_id":"d58a9111bb7f9a9c02ef34c9dea2a7fccda5ad6f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e84fa9e58c808ee15408616f7bb21a9d5b4119f5","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    if version and version !\u003d \u0027latest\u0027:"},{"line_number":123,"context_line":"        version \u003d normalize_version_number(version)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    if min_version:"},{"line_number":126,"context_line":"        min_version \u003d normalize_version_number(min_version)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    if max_version and max_version !\u003d \u0027latest\u0027:"},{"line_number":129,"context_line":"        max_version \u003d normalize_version_number(max_version)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f201791_befbbd45","line":126,"range":{"start_line":125,"start_character":4,"end_line":126,"end_character":59},"in_reply_to":"5f201791_d7cc258a","updated":"2017-06-29 01:45:43.000000000","message":"That is what I\u0027d like to have well defined before we accept.","commit_id":"d58a9111bb7f9a9c02ef34c9dea2a7fccda5ad6f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"15820668aa9ac16320a8ccb552118f75ede3c012","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def _normalize_version_args(version, min_version, max_version):"},{"line_number":117,"context_line":"    if version and (min_version or max_version):"},{"line_number":118,"context_line":"        raise TypeError("},{"line_number":119,"context_line":"            \"version is mutually exclusive with min_version and\""},{"line_number":120,"context_line":"            \" max_version\")"},{"line_number":121,"context_line":"    if min_version \u003d\u003d \u0027latest\u0027 and max_version not in ("}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_20e3f807","line":118,"range":{"start_line":118,"start_character":14,"end_line":118,"end_character":23},"updated":"2017-06-29 16:26:25.000000000","message":"This should be ValueError","commit_id":"d658f84a0f271021d6c95447fa1b3e454ea756a6"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"71065333a4552355d25266a1e31c9c6cc35d2530","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def _normalize_version_args(version, min_version, max_version):"},{"line_number":117,"context_line":"    if version and (min_version or max_version):"},{"line_number":118,"context_line":"        raise TypeError("},{"line_number":119,"context_line":"            \"version is mutually exclusive with min_version and\""},{"line_number":120,"context_line":"            \" max_version\")"},{"line_number":121,"context_line":"    if min_version \u003d\u003d \u0027latest\u0027 and max_version not in ("}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_0a46c124","line":118,"range":{"start_line":118,"start_character":14,"end_line":118,"end_character":23},"in_reply_to":"3f1d235d_20e3f807","updated":"2017-06-30 09:48:37.000000000","message":"Fixed in final patch.","commit_id":"d658f84a0f271021d6c95447fa1b3e454ea756a6"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"15820668aa9ac16320a8ccb552118f75ede3c012","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            \" max_version\")"},{"line_number":121,"context_line":"    if min_version \u003d\u003d \u0027latest\u0027 and max_version not in ("},{"line_number":122,"context_line":"            None, \u0027latest\u0027):"},{"line_number":123,"context_line":"        raise TypeError("},{"line_number":124,"context_line":"            \"min_version is \u0027latest\u0027 and max_version is {max_version}\""},{"line_number":125,"context_line":"            \" but is only allowed to be \u0027latest\u0027 or None\".format("},{"line_number":126,"context_line":"                max_version\u003dmax_version))"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_80dc0c47","line":123,"range":{"start_line":123,"start_character":14,"end_line":123,"end_character":23},"updated":"2017-06-29 16:26:25.000000000","message":"This should be ValueError","commit_id":"d658f84a0f271021d6c95447fa1b3e454ea756a6"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"71065333a4552355d25266a1e31c9c6cc35d2530","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            \" max_version\")"},{"line_number":121,"context_line":"    if min_version \u003d\u003d \u0027latest\u0027 and max_version not in ("},{"line_number":122,"context_line":"            None, \u0027latest\u0027):"},{"line_number":123,"context_line":"        raise TypeError("},{"line_number":124,"context_line":"            \"min_version is \u0027latest\u0027 and max_version is {max_version}\""},{"line_number":125,"context_line":"            \" but is only allowed to be \u0027latest\u0027 or None\".format("},{"line_number":126,"context_line":"                max_version\u003dmax_version))"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_8a51b1db","line":123,"range":{"start_line":123,"start_character":14,"end_line":123,"end_character":23},"in_reply_to":"3f1d235d_80dc0c47","updated":"2017-06-30 09:48:37.000000000","message":"Fixed in final patch.","commit_id":"d658f84a0f271021d6c95447fa1b3e454ea756a6"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"4ad26d3f94fbcfa3544ee819c52043a6c7d31f51","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"def version_between(min_version, max_version, candidate):"},{"line_number":150,"context_line":"    # A version can\u0027t be between a range that doesn\u0027t exist"},{"line_number":151,"context_line":"    if not min_version and not max_version:"},{"line_number":152,"context_line":"        return False"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    # If the candidate is less than the min_version, it\u0027s"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_1f46ef22","line":151,"range":{"start_line":151,"start_character":23,"end_line":151,"end_character":26},"updated":"2017-06-30 19:16:52.000000000","message":"but from the code above (_normalize_version_args), min_version will be set to None and max_version to \u0027latest\u0027 when min_version is requested as \u0027latest\u0027","commit_id":"d658f84a0f271021d6c95447fa1b3e454ea756a6"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"02eaaddf7e911984fd48c7c377dc8e71a0476aa2","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"def version_between(min_version, max_version, candidate):"},{"line_number":150,"context_line":"    # A version can\u0027t be between a range that doesn\u0027t exist"},{"line_number":151,"context_line":"    if not min_version and not max_version:"},{"line_number":152,"context_line":"        return False"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    # If the candidate is less than the min_version, it\u0027s"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_6e66492c","line":151,"range":{"start_line":151,"start_character":23,"end_line":151,"end_character":26},"in_reply_to":"3f1d235d_1f46ef22","updated":"2017-07-02 14:22:24.000000000","message":"then this case is covered on line 162","commit_id":"d658f84a0f271021d6c95447fa1b3e454ea756a6"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"4ad26d3f94fbcfa3544ee819c52043a6c7d31f51","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        if candidate \u003c min_version:"},{"line_number":159,"context_line":"            return False"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    # Lack of max_version implies latest."},{"line_number":162,"context_line":"    if max_version \u003d\u003d \u0027latest\u0027 or not max_version:"},{"line_number":163,"context_line":"        return True"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_ff6d7398","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":41},"updated":"2017-06-30 19:16:52.000000000","message":"and what guarantees the candidate matches latest?","commit_id":"d658f84a0f271021d6c95447fa1b3e454ea756a6"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"02eaaddf7e911984fd48c7c377dc8e71a0476aa2","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        if candidate \u003c min_version:"},{"line_number":159,"context_line":"            return False"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    # Lack of max_version implies latest."},{"line_number":162,"context_line":"    if max_version \u003d\u003d \u0027latest\u0027 or not max_version:"},{"line_number":163,"context_line":"        return True"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_4e6dcd02","line":161,"range":{"start_line":161,"start_character":4,"end_line":161,"end_character":41},"in_reply_to":"3f1d235d_ff6d7398","updated":"2017-07-02 14:22:24.000000000","message":"any available candidate is implicitly less than or equal to latest","commit_id":"d658f84a0f271021d6c95447fa1b3e454ea756a6"}]}
