{"action":"created","comment":{"url":"https://api.github.com/repos/ansible/ansible/pulls/comments/208696667","pull_request_review_id":144560580,"id":208696667,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwODY5NjY2Nw==","diff_hunk":"@@ -1374,7 +1374,7 @@ def validate(self):\n \n             # See if current version => deprecated.removed_in, ie, should be docs only\n             if docs and 'deprecated' in docs and docs['deprecated'] is not None:\n-                removed_in = docs.get('deprecated')['removed_in']\n+                removed_in = StrictVersion(str(docs.get('deprecated')['removed_in']))","path":"test/sanity/validate-modules/main.py","position":5,"original_position":5,"commit_id":"2732ac6863a65aae666b667188d381eae001fa2f","original_commit_id":"2732ac6863a65aae666b667188d381eae001fa2f","user":{"login":"sivel","id":39340,"node_id":"MDQ6VXNlcjM5MzQw","avatar_url":"https://avatars3.githubusercontent.com/u/39340?v=4","gravatar_id":"","url":"https://api.github.com/users/sivel","html_url":"https://github.com/sivel","followers_url":"https://api.github.com/users/sivel/followers","following_url":"https://api.github.com/users/sivel/following{/other_user}","gists_url":"https://api.github.com/users/sivel/gists{/gist_id}","starred_url":"https://api.github.com/users/sivel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sivel/subscriptions","organizations_url":"https://api.github.com/users/sivel/orgs","repos_url":"https://api.github.com/users/sivel/repos","events_url":"https://api.github.com/users/sivel/events{/privacy}","received_events_url":"https://api.github.com/users/sivel/received_events","type":"User","site_admin":false},"body":"The problem is that this check happens before schema validations.  So if the value is invalid, the comparison can traceback.  We would need to catch it, and do something useful with that before hand.\r\n\r\nI just don't know what is useful.  Do we just make `end_of_deprecation_should_be_docs_only = False` in that scenario, and let the schema validation fail?  That seems like the right thing to do here.","created_at":"2018-08-08T18:56:01Z","updated_at":"2018-08-08T18:56:01Z","html_url":"https://github.com/ansible/ansible/pull/43835#discussion_r208696667","pull_request_url":"https://api.github.com/repos/ansible/ansible/pulls/43835","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/ansible/ansible/pulls/comments/208696667"},"html":{"href":"https://github.com/ansible/ansible/pull/43835#discussion_r208696667"},"pull_request":{"href":"https://api.github.com/repos/ansible/ansible/pulls/43835"}},"in_reply_to_id":208666548},"pull_request":{"url":"https://api.github.com/repos/ansible/ansible/pulls/43835","id":207077419,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA3MDc3NDE5","html_url":"https://github.com/ansible/ansible/pull/43835","diff_url":"https://github.com/ansible/ansible/pull/43835.diff","patch_url":"https://github.com/ansible/ansible/pull/43835.patch","issue_url":"https://api.github.com/repos/ansible/ansible/issues/43835","number":43835,"state":"open","locked":false,"title":"Ensure removed_in is StrictVersion before comparing","user":{"login":"sivel","id":39340,"node_id":"MDQ6VXNlcjM5MzQw","avatar_url":"https://avatars3.githubusercontent.com/u/39340?v=4","gravatar_id":"","url":"https://api.github.com/users/sivel","html_url":"https://github.com/sivel","followers_url":"https://api.github.com/users/sivel/followers","following_url":"https://api.github.com/users/sivel/following{/other_user}","gists_url":"https://api.github.com/users/sivel/gists{/gist_id}","starred_url":"https://api.github.com/users/sivel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sivel/subscriptions","organizations_url":"https://api.github.com/users/sivel/orgs","repos_url":"https://api.github.com/users/sivel/repos","events_url":"https://api.github.com/users/sivel/events{/privacy}","received_events_url":"https://api.github.com/users/sivel/received_events","type":"User","site_admin":false},"body":"##### SUMMARY\r\nEnsure removed_in is StrictVersion before comparing\r\n\r\n##### ISSUE TYPE\r\n - Bugfix Pull Request\r\n\r\n##### COMPONENT NAME\r\ntest/sanity/validate-modules\r\n\r\n##### ANSIBLE VERSION\r\n<!--- Paste verbatim output from \"ansible --version\" between quotes below -->\r\n```\r\n2.7\r\n```\r\n\r\n\r\n##### ADDITIONAL INFORMATION\r\nPrevents:\r\n\r\n```\r\n2018-08-07 15:16:22 Traceback (most recent call last):\r\n2018-08-07 15:16:22   File \"test/sanity/validate-modules/validate-modules\", line 1593, in <module>\r\n2018-08-07 15:16:22     main()\r\n2018-08-07 15:16:22   File \"test/sanity/validate-modules/validate-modules\", line 1492, in main\r\n2018-08-07 15:16:22     mv.validate()\r\n2018-08-07 15:16:22   File \"test/sanity/validate-modules/validate-modules\", line 1379, in validate\r\n2018-08-07 15:16:22     end_of_deprecation_should_be_docs_only = strict_ansible_version >= removed_in\r\n2018-08-07 15:16:22   File \"/usr/lib/python3.6/distutils/version.py\", line 70, in __ge__\r\n2018-08-07 15:16:22     c = self._cmp(other)\r\n2018-08-07 15:16:22   File \"/usr/lib/python3.6/distutils/version.py\", line 170, in _cmp\r\n2018-08-07 15:16:22     if self.version != other.version:\r\n2018-08-07 15:16:22 AttributeError: 'float' object has no attribute 'version'\r\n```","created_at":"2018-08-08T17:11:27Z","updated_at":"2018-08-08T18:56:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"50ca7df9282eeaa34a9b179907089d6e3268517a","assignee":null,"assignees":[],"requested_reviewers":[{"login":"gundalow","id":940557,"node_id":"MDQ6VXNlcjk0MDU1Nw==","avatar_url":"https://avatars1.githubusercontent.com/u/940557?v=4","gravatar_id":"","url":"https://api.github.com/users/gundalow","html_url":"https://github.com/gundalow","followers_url":"https://api.github.com/users/gundalow/followers","following_url":"https://api.github.com/users/gundalow/following{/other_user}","gists_url":"https://api.github.com/users/gundalow/gists{/gist_id}","starred_url":"https://api.github.com/users/gundalow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gundalow/subscriptions","organizations_url":"https://api.github.com/users/gundalow/orgs","repos_url":"https://api.github.com/users/gundalow/repos","events_url":"https://api.github.com/users/gundalow/events{/privacy}","received_events_url":"https://api.github.com/users/gundalow/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":947190508,"node_id":"MDU6TGFiZWw5NDcxOTA1MDg=","url":"https://api.github.com/repos/ansible/ansible/labels/affects_2.7","name":"affects_2.7","color":"ededed","default":false},{"id":785271699,"node_id":"MDU6TGFiZWw3ODUyNzE2OTk=","url":"https://api.github.com/repos/ansible/ansible/labels/bug","name":"bug","color":"fbca04","default":true},{"id":61436281,"node_id":"MDU6TGFiZWw2MTQzNjI4MQ==","url":"https://api.github.com/repos/ansible/ansible/labels/needs_revision","name":"needs_revision","color":"eb6450","default":false},{"id":383076471,"node_id":"MDU6TGFiZWwzODMwNzY0NzE=","url":"https://api.github.com/repos/ansible/ansible/labels/python3","name":"python3","color":"fbca04","default":false},{"id":636352796,"node_id":"MDU6TGFiZWw2MzYzNTI3OTY=","url":"https://api.github.com/repos/ansible/ansible/labels/support:core","name":"support:core","color":"ededed","default":false},{"id":468273802,"node_id":"MDU6TGFiZWw0NjgyNzM4MDI=","url":"https://api.github.com/repos/ansible/ansible/labels/test","name":"test","color":"0e8a16","default":false},{"id":942378949,"node_id":"MDU6TGFiZWw5NDIzNzg5NDk=","url":"https://api.github.com/repos/ansible/ansible/labels/traceback","name":"traceback","color":"ededed","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ansible/ansible/pulls/43835/commits","review_comments_url":"https://api.github.com/repos/ansible/ansible/pulls/43835/comments","review_comment_url":"https://api.github.com/repos/ansible/ansible/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ansible/ansible/issues/43835/comments","statuses_url":"https://api.github.com/repos/ansible/ansible/statuses/2732ac6863a65aae666b667188d381eae001fa2f","head":{"label":"sivel:removed-in-strictversion","ref":"removed-in-strictversion","sha":"2732ac6863a65aae666b667188d381eae001fa2f","user":{"login":"sivel","id":39340,"node_id":"MDQ6VXNlcjM5MzQw","avatar_url":"https://avatars3.githubusercontent.com/u/39340?v=4","gravatar_id":"","url":"https://api.github.com/users/sivel","html_url":"https://github.com/sivel","followers_url":"https://api.github.com/users/sivel/followers","following_url":"https://api.github.com/users/sivel/following{/other_user}","gists_url":"https://api.github.com/users/sivel/gists{/gist_id}","starred_url":"https://api.github.com/users/sivel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sivel/subscriptions","organizations_url":"https://api.github.com/users/sivel/orgs","repos_url":"https://api.github.com/users/sivel/repos","events_url":"https://api.github.com/users/sivel/events{/privacy}","received_events_url":"https://api.github.com/users/sivel/received_events","type":"User","site_admin":false},"repo":{"id":13160653,"node_id":"MDEwOlJlcG9zaXRvcnkxMzE2MDY1Mw==","name":"ansible","full_name":"sivel/ansible","owner":{"login":"sivel","id":39340,"node_id":"MDQ6VXNlcjM5MzQw","avatar_url":"https://avatars3.githubusercontent.com/u/39340?v=4","gravatar_id":"","url":"https://api.github.com/users/sivel","html_url":"https://github.com/sivel","followers_url":"https://api.github.com/users/sivel/followers","following_url":"https://api.github.com/users/sivel/following{/other_user}","gists_url":"https://api.github.com/users/sivel/gists{/gist_id}","starred_url":"https://api.github.com/users/sivel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sivel/subscriptions","organizations_url":"https://api.github.com/users/sivel/orgs","repos_url":"https://api.github.com/users/sivel/repos","events_url":"https://api.github.com/users/sivel/events{/privacy}","received_events_url":"https://api.github.com/users/sivel/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sivel/ansible","description":"Ansible is a radically simple IT orchestration engine that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications— automate in a language that approaches plain English, using SSH, with no agents to install on remote systems.","fork":true,"url":"https://api.github.com/repos/sivel/ansible","forks_url":"https://api.github.com/repos/sivel/ansible/forks","keys_url":"https://api.github.com/repos/sivel/ansible/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sivel/ansible/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sivel/ansible/teams","hooks_url":"https://api.github.com/repos/sivel/ansible/hooks","issue_events_url":"https://api.github.com/repos/sivel/ansible/issues/events{/number}","events_url":"https://api.github.com/repos/sivel/ansible/events","assignees_url":"https://api.github.com/repos/sivel/ansible/assignees{/user}","branches_url":"https://api.github.com/repos/sivel/ansible/branches{/branch}","tags_url":"https://api.github.com/repos/sivel/ansible/tags","blobs_url":"https://api.github.com/repos/sivel/ansible/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sivel/ansible/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sivel/ansible/git/refs{/sha}","trees_url":"https://api.github.com/repos/sivel/ansible/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sivel/ansible/statuses/{sha}","languages_url":"https://api.github.com/repos/sivel/ansible/languages","stargazers_url":"https://api.github.com/repos/sivel/ansible/stargazers","contributors_url":"https://api.github.com/repos/sivel/ansible/contributors","subscribers_url":"https://api.github.com/repos/sivel/ansible/subscribers","subscription_url":"https://api.github.com/repos/sivel/ansible/subscription","commits_url":"https://api.github.com/repos/sivel/ansible/commits{/sha}","git_commits_url":"https://api.github.com/repos/sivel/ansible/git/commits{/sha}","comments_url":"https://api.github.com/repos/sivel/ansible/comments{/number}","issue_comment_url":"https://api.github.com/repos/sivel/ansible/issues/comments{/number}","contents_url":"https://api.github.com/repos/sivel/ansible/contents/{+path}","compare_url":"https://api.github.com/repos/sivel/ansible/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sivel/ansible/merges","archive_url":"https://api.github.com/repos/sivel/ansible/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sivel/ansible/downloads","issues_url":"https://api.github.com/repos/sivel/ansible/issues{/number}","pulls_url":"https://api.github.com/repos/sivel/ansible/pulls{/number}","milestones_url":"https://api.github.com/repos/sivel/ansible/milestones{/number}","notifications_url":"https://api.github.com/repos/sivel/ansible/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sivel/ansible/labels{/name}","releases_url":"https://api.github.com/repos/sivel/ansible/releases{/id}","deployments_url":"https://api.github.com/repos/sivel/ansible/deployments","created_at":"2013-09-27T20:37:11Z","updated_at":"2018-08-03T17:28:16Z","pushed_at":"2018-08-08T17:41:29Z","git_url":"git://github.com/sivel/ansible.git","ssh_url":"git@github.com:sivel/ansible.git","clone_url":"https://github.com/sivel/ansible.git","svn_url":"https://github.com/sivel/ansible","homepage":"http://ansibleworks.com/","size":124289,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"devel"}},"base":{"label":"ansible:devel","ref":"devel","sha":"bd0428983cd2119bb9c7f7bbe953ccb34831b701","user":{"login":"ansible","id":1507452,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1MDc0NTI=","avatar_url":"https://avatars2.githubusercontent.com/u/1507452?v=4","gravatar_id":"","url":"https://api.github.com/users/ansible","html_url":"https://github.com/ansible","followers_url":"https://api.github.com/users/ansible/followers","following_url":"https://api.github.com/users/ansible/following{/other_user}","gists_url":"https://api.github.com/users/ansible/gists{/gist_id}","starred_url":"https://api.github.com/users/ansible/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ansible/subscriptions","organizations_url":"https://api.github.com/users/ansible/orgs","repos_url":"https://api.github.com/users/ansible/repos","events_url":"https://api.github.com/users/ansible/events{/privacy}","received_events_url":"https://api.github.com/users/ansible/received_events","type":"Organization","site_admin":false},"repo":{"id":3638964,"node_id":"MDEwOlJlcG9zaXRvcnkzNjM4OTY0","name":"ansible","full_name":"ansible/ansible","owner":{"login":"ansible","id":1507452,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE1MDc0NTI=","avatar_url":"https://avatars2.githubusercontent.com/u/1507452?v=4","gravatar_id":"","url":"https://api.github.com/users/ansible","html_url":"https://github.com/ansible","followers_url":"https://api.github.com/users/ansible/followers","following_url":"https://api.github.com/users/ansible/following{/other_user}","gists_url":"https://api.github.com/users/ansible/gists{/gist_id}","starred_url":"https://api.github.com/users/ansible/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ansible/subscriptions","organizations_url":"https://api.github.com/users/ansible/orgs","repos_url":"https://api.github.com/users/ansible/repos","events_url":"https://api.github.com/users/ansible/events{/privacy}","received_events_url":"https://api.github.com/users/ansible/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ansible/ansible","description":"Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications — automate in a language that approaches plain English, using SSH, with no agents to install on remote systems. https://docs.ansible.com/ansible/","fork":false,"url":"https://api.github.com/repos/ansible/ansible","forks_url":"https://api.github.com/repos/ansible/ansible/forks","keys_url":"https://api.github.com/repos/ansible/ansible/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ansible/ansible/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ansible/ansible/teams","hooks_url":"https://api.github.com/repos/ansible/ansible/hooks","issue_events_url":"https://api.github.com/repos/ansible/ansible/issues/events{/number}","events_url":"https://api.github.com/repos/ansible/ansible/events","assignees_url":"https://api.github.com/repos/ansible/ansible/assignees{/user}","branches_url":"https://api.github.com/repos/ansible/ansible/branches{/branch}","tags_url":"https://api.github.com/repos/ansible/ansible/tags","blobs_url":"https://api.github.com/repos/ansible/ansible/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ansible/ansible/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ansible/ansible/git/refs{/sha}","trees_url":"https://api.github.com/repos/ansible/ansible/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ansible/ansible/statuses/{sha}","languages_url":"https://api.github.com/repos/ansible/ansible/languages","stargazers_url":"https://api.github.com/repos/ansible/ansible/stargazers","contributors_url":"https://api.github.com/repos/ansible/ansible/contributors","subscribers_url":"https://api.github.com/repos/ansible/ansible/subscribers","subscription_url":"https://api.github.com/repos/ansible/ansible/subscription","commits_url":"https://api.github.com/repos/ansible/ansible/commits{/sha}","git_commits_url":"https://api.github.com/repos/ansible/ansible/git/commits{/sha}","comments_url":"https://api.github.com/repos/ansible/ansible/comments{/number}","issue_comment_url":"https://api.github.com/repos/ansible/ansible/issues/comments{/number}","contents_url":"https://api.github.com/repos/ansible/ansible/contents/{+path}","compare_url":"https://api.github.com/repos/ansible/ansible/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ansible/ansible/merges","archive_url":"https://api.github.com/repos/ansible/ansible/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ansible/ansible/downloads","issues_url":"https://api.github.com/repos/ansible/ansible/issues{/number}","pulls_url":"https://api.github.com/repos/ansible/ansible/pulls{/number}","milestones_url":"https://api.github.com/repos/ansible/ansible/milestones{/number}","notifications_url":"https://api.github.com/repos/ansible/ansible/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ansible/ansible/labels{/name}","releases_url":"https://api.github.com/repos/ansible/ansible/releases{/id}","deployments_url":"https://api.github.com/repos/ansible/ansible/deployments","created_at":"2012-03-06T14:58:02Z","updated_at":"2018-08-08T18:37:49Z","pushed_at":"2018-08-08T18:55:49Z","git_url":"git://github.com/ansible/ansible.git","ssh_url":"git@github.com:ansible/ansible.git","clone_url":"https://github.com/ansible/ansible.git","svn_url":"https://github.com/ansible/ansible","homepage":"https://www.ansible.com/","size":135601,"stargazers_count":31836,"watchers_count":31836,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":12310,"mirror_url":null,"archived":false,"open_issues_count":5444,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":12310,"open_issues":5444,"watchers":31836,"default_branch":"devel"}},"_links":{"self":{"href":"https://api.github.com/repos/ansible/ansible/pulls/43835"},"html":{"href":"https://github.com/ansible/ansible/pull/43835"},"issue":{"href":"https://api.github.com/repos/ansible/ansible/issues/43835"},"comments":{"href":"https://api.github.com/repos/ansible/ansible/issues/43835/comments"},"review_comments":{"href":"https://api.github.com/repos/ansible/ansible/pulls/43835/comments"},"review_comment":{"href":"https://api.github.com/repos/ansible/ansible/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ansible/ansible/pulls/43835/commits"},"statuses":{"href":"https://api.github.com/repos/ansible/ansible/statuses/2732ac6863a65aae666b667188d381eae001fa2f"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"sivel"}}