{"action":"created","comment":{"url":"https://api.github.com/repos/cylc/cylc/pulls/comments/184970056","pull_request_review_id":116266415,"id":184970056,"diff_hunk":"@@ -100,6 +102,14 @@ class GraphParser(object):\n     _RE_OFFSET = r'\\[[\\w\\-\\+\\^:]+\\]'\n     _RE_TRIG = r':[\\w\\-]+'\n \n+    REC_GRAPH_BAD_SPACES_LINE = re.compile(r'''\n+        {task}\n+        (?<![\\-+](?=\\s*[0-9])) # allow spaces after -+ if numbers follow\n+        (?!\\s*[\\-+]\\s*[0-9])   # allow spaces before/after -+ if numbers follow\n+        \\s+                    # do not allow 'task<space>task'\n+        {task_suf}\n+        '''.format(task=TaskID.NAME_RE, task_suf=TaskID.NAME_SUFFIX_RE), re.X)","path":"lib/cylc/graph_parser.py","position":19,"original_position":19,"commit_id":"eff6b3c0ce3eda007760a8983fa8c71310447d98","original_commit_id":"eff6b3c0ce3eda007760a8983fa8c71310447d98","user":{"login":"matthewrmshin","id":908613,"avatar_url":"https://avatars3.githubusercontent.com/u/908613?v=4","gravatar_id":"","url":"https://api.github.com/users/matthewrmshin","html_url":"https://github.com/matthewrmshin","followers_url":"https://api.github.com/users/matthewrmshin/followers","following_url":"https://api.github.com/users/matthewrmshin/following{/other_user}","gists_url":"https://api.github.com/users/matthewrmshin/gists{/gist_id}","starred_url":"https://api.github.com/users/matthewrmshin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matthewrmshin/subscriptions","organizations_url":"https://api.github.com/users/matthewrmshin/orgs","repos_url":"https://api.github.com/users/matthewrmshin/repos","events_url":"https://api.github.com/users/matthewrmshin/events{/privacy}","received_events_url":"https://api.github.com/users/matthewrmshin/received_events","type":"User","site_admin":false},"body":"Not sure whether it is worth using `.format` here, which may complicate things.","created_at":"2018-04-30T12:14:35Z","updated_at":"2018-04-30T12:15:09Z","html_url":"https://github.com/cylc/cylc/pull/2644#discussion_r184970056","pull_request_url":"https://api.github.com/repos/cylc/cylc/pulls/2644","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/cylc/cylc/pulls/comments/184970056"},"html":{"href":"https://github.com/cylc/cylc/pull/2644#discussion_r184970056"},"pull_request":{"href":"https://api.github.com/repos/cylc/cylc/pulls/2644"}}},"pull_request":{"url":"https://api.github.com/repos/cylc/cylc/pulls/2644","id":184870397,"html_url":"https://github.com/cylc/cylc/pull/2644","diff_url":"https://github.com/cylc/cylc/pull/2644.diff","patch_url":"https://github.com/cylc/cylc/pull/2644.patch","issue_url":"https://api.github.com/repos/cylc/cylc/issues/2644","number":2644,"state":"open","locked":false,"title":"Fix space in graph line string simpler approach","user":{"login":"ColemanTom","id":15375218,"avatar_url":"https://avatars2.githubusercontent.com/u/15375218?v=4","gravatar_id":"","url":"https://api.github.com/users/ColemanTom","html_url":"https://github.com/ColemanTom","followers_url":"https://api.github.com/users/ColemanTom/followers","following_url":"https://api.github.com/users/ColemanTom/following{/other_user}","gists_url":"https://api.github.com/users/ColemanTom/gists{/gist_id}","starred_url":"https://api.github.com/users/ColemanTom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ColemanTom/subscriptions","organizations_url":"https://api.github.com/users/ColemanTom/orgs","repos_url":"https://api.github.com/users/ColemanTom/repos","events_url":"https://api.github.com/users/ColemanTom/events{/privacy}","received_events_url":"https://api.github.com/users/ColemanTom/received_events","type":"User","site_admin":false},"body":"This fixes #2534. It is a much simpler and less strict approach than was used in #2628 (which can be closed in favour of this one if preferred). The simplest approach of looking for `TaskID.NAME_RE` does not work because you can have hyphens with numbers after them quite reasonably, at least in a parameter. I couldn't think of a clean way to only have this checkout outside of parameter expansion, or to ignore triggers like `succeed-all`, so it hits them all. Thus, why I had to put in extra regex to ignore `-[0-9]` with spaces around the minus sign, those are obviously fine to have happen.\r\n\r\nI will note though, that because of the approach described above, if something like `task -23` or `task + 23` is done, it won't catch it, and it will just pass. But, given a task name must start with a `\\w`, it is probably not too bad, and less of a problem than currently exists. I don't have this failure mode covered in the tests.\r\n\r\nI'll also admit here, I don't actually have myself setup to run the full test battery, so I've only run these unit tests and will be relying on Travis to point out any problems.","created_at":"2018-04-30T02:36:25Z","updated_at":"2018-04-30T12:15:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cfc068b815afbe2d695fd6bcefb41c0103fd6124","assignee":{"login":"ColemanTom","id":15375218,"avatar_url":"https://avatars2.githubusercontent.com/u/15375218?v=4","gravatar_id":"","url":"https://api.github.com/users/ColemanTom","html_url":"https://github.com/ColemanTom","followers_url":"https://api.github.com/users/ColemanTom/followers","following_url":"https://api.github.com/users/ColemanTom/following{/other_user}","gists_url":"https://api.github.com/users/ColemanTom/gists{/gist_id}","starred_url":"https://api.github.com/users/ColemanTom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ColemanTom/subscriptions","organizations_url":"https://api.github.com/users/ColemanTom/orgs","repos_url":"https://api.github.com/users/ColemanTom/repos","events_url":"https://api.github.com/users/ColemanTom/events{/privacy}","received_events_url":"https://api.github.com/users/ColemanTom/received_events","type":"User","site_admin":false},"assignees":[{"login":"ColemanTom","id":15375218,"avatar_url":"https://avatars2.githubusercontent.com/u/15375218?v=4","gravatar_id":"","url":"https://api.github.com/users/ColemanTom","html_url":"https://github.com/ColemanTom","followers_url":"https://api.github.com/users/ColemanTom/followers","following_url":"https://api.github.com/users/ColemanTom/following{/other_user}","gists_url":"https://api.github.com/users/ColemanTom/gists{/gist_id}","starred_url":"https://api.github.com/users/ColemanTom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ColemanTom/subscriptions","organizations_url":"https://api.github.com/users/ColemanTom/orgs","repos_url":"https://api.github.com/users/ColemanTom/repos","events_url":"https://api.github.com/users/ColemanTom/events{/privacy}","received_events_url":"https://api.github.com/users/ColemanTom/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"hjoliver","id":2362137,"avatar_url":"https://avatars0.githubusercontent.com/u/2362137?v=4","gravatar_id":"","url":"https://api.github.com/users/hjoliver","html_url":"https://github.com/hjoliver","followers_url":"https://api.github.com/users/hjoliver/followers","following_url":"https://api.github.com/users/hjoliver/following{/other_user}","gists_url":"https://api.github.com/users/hjoliver/gists{/gist_id}","starred_url":"https://api.github.com/users/hjoliver/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hjoliver/subscriptions","organizations_url":"https://api.github.com/users/hjoliver/orgs","repos_url":"https://api.github.com/users/hjoliver/repos","events_url":"https://api.github.com/users/hjoliver/events{/privacy}","received_events_url":"https://api.github.com/users/hjoliver/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":120950,"url":"https://api.github.com/repos/cylc/cylc/labels/bug","name":"bug","color":"e10c02","default":true}],"milestone":{"url":"https://api.github.com/repos/cylc/cylc/milestones/68","html_url":"https://github.com/cylc/cylc/milestone/68","labels_url":"https://api.github.com/repos/cylc/cylc/milestones/68/labels","id":3096004,"number":68,"title":"next release","description":"cylc-7.7.0\r\n","creator":{"login":"hjoliver","id":2362137,"avatar_url":"https://avatars0.githubusercontent.com/u/2362137?v=4","gravatar_id":"","url":"https://api.github.com/users/hjoliver","html_url":"https://github.com/hjoliver","followers_url":"https://api.github.com/users/hjoliver/followers","following_url":"https://api.github.com/users/hjoliver/following{/other_user}","gists_url":"https://api.github.com/users/hjoliver/gists{/gist_id}","starred_url":"https://api.github.com/users/hjoliver/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hjoliver/subscriptions","organizations_url":"https://api.github.com/users/hjoliver/orgs","repos_url":"https://api.github.com/users/hjoliver/repos","events_url":"https://api.github.com/users/hjoliver/events{/privacy}","received_events_url":"https://api.github.com/users/hjoliver/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":55,"state":"open","created_at":"2018-02-07T08:37:49Z","updated_at":"2018-04-30T09:15:23Z","due_on":"2018-04-30T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/cylc/cylc/pulls/2644/commits","review_comments_url":"https://api.github.com/repos/cylc/cylc/pulls/2644/comments","review_comment_url":"https://api.github.com/repos/cylc/cylc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/cylc/cylc/issues/2644/comments","statuses_url":"https://api.github.com/repos/cylc/cylc/statuses/eff6b3c0ce3eda007760a8983fa8c71310447d98","head":{"label":"ColemanTom:fix_space_in_graph_line_string_simpler_approach","ref":"fix_space_in_graph_line_string_simpler_approach","sha":"eff6b3c0ce3eda007760a8983fa8c71310447d98","user":{"login":"ColemanTom","id":15375218,"avatar_url":"https://avatars2.githubusercontent.com/u/15375218?v=4","gravatar_id":"","url":"https://api.github.com/users/ColemanTom","html_url":"https://github.com/ColemanTom","followers_url":"https://api.github.com/users/ColemanTom/followers","following_url":"https://api.github.com/users/ColemanTom/following{/other_user}","gists_url":"https://api.github.com/users/ColemanTom/gists{/gist_id}","starred_url":"https://api.github.com/users/ColemanTom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ColemanTom/subscriptions","organizations_url":"https://api.github.com/users/ColemanTom/orgs","repos_url":"https://api.github.com/users/ColemanTom/repos","events_url":"https://api.github.com/users/ColemanTom/events{/privacy}","received_events_url":"https://api.github.com/users/ColemanTom/received_events","type":"User","site_admin":false},"repo":{"id":121318106,"name":"cylc","full_name":"ColemanTom/cylc","owner":{"login":"ColemanTom","id":15375218,"avatar_url":"https://avatars2.githubusercontent.com/u/15375218?v=4","gravatar_id":"","url":"https://api.github.com/users/ColemanTom","html_url":"https://github.com/ColemanTom","followers_url":"https://api.github.com/users/ColemanTom/followers","following_url":"https://api.github.com/users/ColemanTom/following{/other_user}","gists_url":"https://api.github.com/users/ColemanTom/gists{/gist_id}","starred_url":"https://api.github.com/users/ColemanTom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ColemanTom/subscriptions","organizations_url":"https://api.github.com/users/ColemanTom/orgs","repos_url":"https://api.github.com/users/ColemanTom/repos","events_url":"https://api.github.com/users/ColemanTom/events{/privacy}","received_events_url":"https://api.github.com/users/ColemanTom/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ColemanTom/cylc","description":"Cylc, a workflow engine for cyclical systems.","fork":true,"url":"https://api.github.com/repos/ColemanTom/cylc","forks_url":"https://api.github.com/repos/ColemanTom/cylc/forks","keys_url":"https://api.github.com/repos/ColemanTom/cylc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ColemanTom/cylc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ColemanTom/cylc/teams","hooks_url":"https://api.github.com/repos/ColemanTom/cylc/hooks","issue_events_url":"https://api.github.com/repos/ColemanTom/cylc/issues/events{/number}","events_url":"https://api.github.com/repos/ColemanTom/cylc/events","assignees_url":"https://api.github.com/repos/ColemanTom/cylc/assignees{/user}","branches_url":"https://api.github.com/repos/ColemanTom/cylc/branches{/branch}","tags_url":"https://api.github.com/repos/ColemanTom/cylc/tags","blobs_url":"https://api.github.com/repos/ColemanTom/cylc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ColemanTom/cylc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ColemanTom/cylc/git/refs{/sha}","trees_url":"https://api.github.com/repos/ColemanTom/cylc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ColemanTom/cylc/statuses/{sha}","languages_url":"https://api.github.com/repos/ColemanTom/cylc/languages","stargazers_url":"https://api.github.com/repos/ColemanTom/cylc/stargazers","contributors_url":"https://api.github.com/repos/ColemanTom/cylc/contributors","subscribers_url":"https://api.github.com/repos/ColemanTom/cylc/subscribers","subscription_url":"https://api.github.com/repos/ColemanTom/cylc/subscription","commits_url":"https://api.github.com/repos/ColemanTom/cylc/commits{/sha}","git_commits_url":"https://api.github.com/repos/ColemanTom/cylc/git/commits{/sha}","comments_url":"https://api.github.com/repos/ColemanTom/cylc/comments{/number}","issue_comment_url":"https://api.github.com/repos/ColemanTom/cylc/issues/comments{/number}","contents_url":"https://api.github.com/repos/ColemanTom/cylc/contents/{+path}","compare_url":"https://api.github.com/repos/ColemanTom/cylc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ColemanTom/cylc/merges","archive_url":"https://api.github.com/repos/ColemanTom/cylc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ColemanTom/cylc/downloads","issues_url":"https://api.github.com/repos/ColemanTom/cylc/issues{/number}","pulls_url":"https://api.github.com/repos/ColemanTom/cylc/pulls{/number}","milestones_url":"https://api.github.com/repos/ColemanTom/cylc/milestones{/number}","notifications_url":"https://api.github.com/repos/ColemanTom/cylc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ColemanTom/cylc/labels{/name}","releases_url":"https://api.github.com/repos/ColemanTom/cylc/releases{/id}","deployments_url":"https://api.github.com/repos/ColemanTom/cylc/deployments","created_at":"2018-02-13T00:04:19Z","updated_at":"2018-04-28T11:19:08Z","pushed_at":"2018-04-30T04:39:33Z","git_url":"git://github.com/ColemanTom/cylc.git","ssh_url":"git@github.com:ColemanTom/cylc.git","clone_url":"https://github.com/ColemanTom/cylc.git","svn_url":"https://github.com/ColemanTom/cylc","homepage":"https://cylc.github.io/cylc","size":126110,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"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"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"cylc:master","ref":"master","sha":"ece0f97a0e8729acfbbe81682eaff5eb41d5dc9e","user":{"login":"cylc","id":824878,"avatar_url":"https://avatars1.githubusercontent.com/u/824878?v=4","gravatar_id":"","url":"https://api.github.com/users/cylc","html_url":"https://github.com/cylc","followers_url":"https://api.github.com/users/cylc/followers","following_url":"https://api.github.com/users/cylc/following{/other_user}","gists_url":"https://api.github.com/users/cylc/gists{/gist_id}","starred_url":"https://api.github.com/users/cylc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cylc/subscriptions","organizations_url":"https://api.github.com/users/cylc/orgs","repos_url":"https://api.github.com/users/cylc/repos","events_url":"https://api.github.com/users/cylc/events{/privacy}","received_events_url":"https://api.github.com/users/cylc/received_events","type":"Organization","site_admin":false},"repo":{"id":1836229,"name":"cylc","full_name":"cylc/cylc","owner":{"login":"cylc","id":824878,"avatar_url":"https://avatars1.githubusercontent.com/u/824878?v=4","gravatar_id":"","url":"https://api.github.com/users/cylc","html_url":"https://github.com/cylc","followers_url":"https://api.github.com/users/cylc/followers","following_url":"https://api.github.com/users/cylc/following{/other_user}","gists_url":"https://api.github.com/users/cylc/gists{/gist_id}","starred_url":"https://api.github.com/users/cylc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cylc/subscriptions","organizations_url":"https://api.github.com/users/cylc/orgs","repos_url":"https://api.github.com/users/cylc/repos","events_url":"https://api.github.com/users/cylc/events{/privacy}","received_events_url":"https://api.github.com/users/cylc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cylc/cylc","description":"Cylc, a workflow engine for cyclical systems.","fork":false,"url":"https://api.github.com/repos/cylc/cylc","forks_url":"https://api.github.com/repos/cylc/cylc/forks","keys_url":"https://api.github.com/repos/cylc/cylc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cylc/cylc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cylc/cylc/teams","hooks_url":"https://api.github.com/repos/cylc/cylc/hooks","issue_events_url":"https://api.github.com/repos/cylc/cylc/issues/events{/number}","events_url":"https://api.github.com/repos/cylc/cylc/events","assignees_url":"https://api.github.com/repos/cylc/cylc/assignees{/user}","branches_url":"https://api.github.com/repos/cylc/cylc/branches{/branch}","tags_url":"https://api.github.com/repos/cylc/cylc/tags","blobs_url":"https://api.github.com/repos/cylc/cylc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cylc/cylc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cylc/cylc/git/refs{/sha}","trees_url":"https://api.github.com/repos/cylc/cylc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cylc/cylc/statuses/{sha}","languages_url":"https://api.github.com/repos/cylc/cylc/languages","stargazers_url":"https://api.github.com/repos/cylc/cylc/stargazers","contributors_url":"https://api.github.com/repos/cylc/cylc/contributors","subscribers_url":"https://api.github.com/repos/cylc/cylc/subscribers","subscription_url":"https://api.github.com/repos/cylc/cylc/subscription","commits_url":"https://api.github.com/repos/cylc/cylc/commits{/sha}","git_commits_url":"https://api.github.com/repos/cylc/cylc/git/commits{/sha}","comments_url":"https://api.github.com/repos/cylc/cylc/comments{/number}","issue_comment_url":"https://api.github.com/repos/cylc/cylc/issues/comments{/number}","contents_url":"https://api.github.com/repos/cylc/cylc/contents/{+path}","compare_url":"https://api.github.com/repos/cylc/cylc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cylc/cylc/merges","archive_url":"https://api.github.com/repos/cylc/cylc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cylc/cylc/downloads","issues_url":"https://api.github.com/repos/cylc/cylc/issues{/number}","pulls_url":"https://api.github.com/repos/cylc/cylc/pulls{/number}","milestones_url":"https://api.github.com/repos/cylc/cylc/milestones{/number}","notifications_url":"https://api.github.com/repos/cylc/cylc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cylc/cylc/labels{/name}","releases_url":"https://api.github.com/repos/cylc/cylc/releases{/id}","deployments_url":"https://api.github.com/repos/cylc/cylc/deployments","created_at":"2011-06-02T08:31:49Z","updated_at":"2018-04-27T19:23:58Z","pushed_at":"2018-04-30T12:07:22Z","git_url":"git://github.com/cylc/cylc.git","ssh_url":"git@github.com:cylc/cylc.git","clone_url":"https://github.com/cylc/cylc.git","svn_url":"https://github.com/cylc/cylc","homepage":"https://cylc.github.io/cylc","size":127086,"stargazers_count":64,"watchers_count":64,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":50,"mirror_url":null,"archived":false,"open_issues_count":145,"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"},"forks":50,"open_issues":145,"watchers":64,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/cylc/cylc/pulls/2644"},"html":{"href":"https://github.com/cylc/cylc/pull/2644"},"issue":{"href":"https://api.github.com/repos/cylc/cylc/issues/2644"},"comments":{"href":"https://api.github.com/repos/cylc/cylc/issues/2644/comments"},"review_comments":{"href":"https://api.github.com/repos/cylc/cylc/pulls/2644/comments"},"review_comment":{"href":"https://api.github.com/repos/cylc/cylc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/cylc/cylc/pulls/2644/commits"},"statuses":{"href":"https://api.github.com/repos/cylc/cylc/statuses/eff6b3c0ce3eda007760a8983fa8c71310447d98"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"matthewrmshin"}}