{"action":"closed","number":446,"pull_request":{"url":"https://api.github.com/repos/pywr/pywr/pulls/446","id":111068528,"html_url":"https://github.com/pywr/pywr/pull/446","diff_url":"https://github.com/pywr/pywr/pull/446.diff","patch_url":"https://github.com/pywr/pywr/pull/446.patch","issue_url":"https://api.github.com/repos/pywr/pywr/issues/446","number":446,"state":"closed","locked":false,"title":"Added Model.find_orphaned_components method. Closes #444.","user":{"login":"snorfalorpagus","id":3883947,"avatar_url":"https://avatars3.githubusercontent.com/u/3883947?v=3","gravatar_id":"","url":"https://api.github.com/users/snorfalorpagus","html_url":"https://github.com/snorfalorpagus","followers_url":"https://api.github.com/users/snorfalorpagus/followers","following_url":"https://api.github.com/users/snorfalorpagus/following{/other_user}","gists_url":"https://api.github.com/users/snorfalorpagus/gists{/gist_id}","starred_url":"https://api.github.com/users/snorfalorpagus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snorfalorpagus/subscriptions","organizations_url":"https://api.github.com/users/snorfalorpagus/orgs","repos_url":"https://api.github.com/users/snorfalorpagus/repos","events_url":"https://api.github.com/users/snorfalorpagus/events{/privacy}","received_events_url":"https://api.github.com/users/snorfalorpagus/received_events","type":"User","site_admin":false},"body":"This commit adds a method helpful in searching for parameters in\r\nthe model that aren't used. AbstractNode now provides a components\r\nproperty which yields all of the components it uses. This is done\r\nusing a class attribute, component_attrs, which lists all of the\r\nproperties on a class which may hold a component (e.g. max_flow).\r\nThis will allow nodes to define new properties in the future,\r\nalthough most will be caught anyway as all nodes in the model\r\nare queried, including the children of complex nodes.\r\n\r\nAlso something (I used git stash?) seemed to remove a bunch of blank lines. Hopefully that's not going to create merge issues... I'll sort if it does.","created_at":"2017-03-16T13:34:17Z","updated_at":"2017-04-03T20:19:18Z","closed_at":"2017-04-03T20:19:18Z","merged_at":"2017-04-03T20:19:18Z","merge_commit_sha":"70e0514a2ba37db29c4edf6e45ad463d42bf6251","assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/pywr/pywr/milestones/4","html_url":"https://github.com/pywr/pywr/milestone/4","labels_url":"https://api.github.com/repos/pywr/pywr/milestones/4/labels","id":2385520,"number":4,"title":"0.4","description":"Performance improvements and a few new features.","creator":{"login":"snorfalorpagus","id":3883947,"avatar_url":"https://avatars3.githubusercontent.com/u/3883947?v=3","gravatar_id":"","url":"https://api.github.com/users/snorfalorpagus","html_url":"https://github.com/snorfalorpagus","followers_url":"https://api.github.com/users/snorfalorpagus/followers","following_url":"https://api.github.com/users/snorfalorpagus/following{/other_user}","gists_url":"https://api.github.com/users/snorfalorpagus/gists{/gist_id}","starred_url":"https://api.github.com/users/snorfalorpagus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snorfalorpagus/subscriptions","organizations_url":"https://api.github.com/users/snorfalorpagus/orgs","repos_url":"https://api.github.com/users/snorfalorpagus/repos","events_url":"https://api.github.com/users/snorfalorpagus/events{/privacy}","received_events_url":"https://api.github.com/users/snorfalorpagus/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":5,"state":"open","created_at":"2017-03-14T16:25:44Z","updated_at":"2017-04-03T20:19:19Z","due_on":"2017-03-20T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/pywr/pywr/pulls/446/commits","review_comments_url":"https://api.github.com/repos/pywr/pywr/pulls/446/comments","review_comment_url":"https://api.github.com/repos/pywr/pywr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pywr/pywr/issues/446/comments","statuses_url":"https://api.github.com/repos/pywr/pywr/statuses/9c145d3ad852a42a4e3937c9465a7d298f9835ae","head":{"label":"pywr:orphans","ref":"orphans","sha":"9c145d3ad852a42a4e3937c9465a7d298f9835ae","user":{"login":"pywr","id":15239563,"avatar_url":"https://avatars3.githubusercontent.com/u/15239563?v=3","gravatar_id":"","url":"https://api.github.com/users/pywr","html_url":"https://github.com/pywr","followers_url":"https://api.github.com/users/pywr/followers","following_url":"https://api.github.com/users/pywr/following{/other_user}","gists_url":"https://api.github.com/users/pywr/gists{/gist_id}","starred_url":"https://api.github.com/users/pywr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pywr/subscriptions","organizations_url":"https://api.github.com/users/pywr/orgs","repos_url":"https://api.github.com/users/pywr/repos","events_url":"https://api.github.com/users/pywr/events{/privacy}","received_events_url":"https://api.github.com/users/pywr/received_events","type":"Organization","site_admin":false},"repo":{"id":29560246,"name":"pywr","full_name":"pywr/pywr","owner":{"login":"pywr","id":15239563,"avatar_url":"https://avatars3.githubusercontent.com/u/15239563?v=3","gravatar_id":"","url":"https://api.github.com/users/pywr","html_url":"https://github.com/pywr","followers_url":"https://api.github.com/users/pywr/followers","following_url":"https://api.github.com/users/pywr/following{/other_user}","gists_url":"https://api.github.com/users/pywr/gists{/gist_id}","starred_url":"https://api.github.com/users/pywr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pywr/subscriptions","organizations_url":"https://api.github.com/users/pywr/orgs","repos_url":"https://api.github.com/users/pywr/repos","events_url":"https://api.github.com/users/pywr/events{/privacy}","received_events_url":"https://api.github.com/users/pywr/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pywr/pywr","description":"Pywr is a generalised network resource allocation model written in Python.","fork":false,"url":"https://api.github.com/repos/pywr/pywr","forks_url":"https://api.github.com/repos/pywr/pywr/forks","keys_url":"https://api.github.com/repos/pywr/pywr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pywr/pywr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pywr/pywr/teams","hooks_url":"https://api.github.com/repos/pywr/pywr/hooks","issue_events_url":"https://api.github.com/repos/pywr/pywr/issues/events{/number}","events_url":"https://api.github.com/repos/pywr/pywr/events","assignees_url":"https://api.github.com/repos/pywr/pywr/assignees{/user}","branches_url":"https://api.github.com/repos/pywr/pywr/branches{/branch}","tags_url":"https://api.github.com/repos/pywr/pywr/tags","blobs_url":"https://api.github.com/repos/pywr/pywr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pywr/pywr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pywr/pywr/git/refs{/sha}","trees_url":"https://api.github.com/repos/pywr/pywr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pywr/pywr/statuses/{sha}","languages_url":"https://api.github.com/repos/pywr/pywr/languages","stargazers_url":"https://api.github.com/repos/pywr/pywr/stargazers","contributors_url":"https://api.github.com/repos/pywr/pywr/contributors","subscribers_url":"https://api.github.com/repos/pywr/pywr/subscribers","subscription_url":"https://api.github.com/repos/pywr/pywr/subscription","commits_url":"https://api.github.com/repos/pywr/pywr/commits{/sha}","git_commits_url":"https://api.github.com/repos/pywr/pywr/git/commits{/sha}","comments_url":"https://api.github.com/repos/pywr/pywr/comments{/number}","issue_comment_url":"https://api.github.com/repos/pywr/pywr/issues/comments{/number}","contents_url":"https://api.github.com/repos/pywr/pywr/contents/{+path}","compare_url":"https://api.github.com/repos/pywr/pywr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pywr/pywr/merges","archive_url":"https://api.github.com/repos/pywr/pywr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pywr/pywr/downloads","issues_url":"https://api.github.com/repos/pywr/pywr/issues{/number}","pulls_url":"https://api.github.com/repos/pywr/pywr/pulls{/number}","milestones_url":"https://api.github.com/repos/pywr/pywr/milestones{/number}","notifications_url":"https://api.github.com/repos/pywr/pywr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pywr/pywr/labels{/name}","releases_url":"https://api.github.com/repos/pywr/pywr/releases{/id}","deployments_url":"https://api.github.com/repos/pywr/pywr/deployments","created_at":"2015-01-20T23:13:55Z","updated_at":"2017-02-27T04:35:35Z","pushed_at":"2017-04-03T20:19:18Z","git_url":"git://github.com/pywr/pywr.git","ssh_url":"git@github.com:pywr/pywr.git","clone_url":"https://github.com/pywr/pywr.git","svn_url":"https://github.com/pywr/pywr","homepage":"","size":2921,"stargazers_count":5,"watchers_count":5,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":71,"forks":5,"open_issues":71,"watchers":5,"default_branch":"master"}},"base":{"label":"pywr:master","ref":"master","sha":"b3721e242448f2edef4be67de4115337e3798763","user":{"login":"pywr","id":15239563,"avatar_url":"https://avatars3.githubusercontent.com/u/15239563?v=3","gravatar_id":"","url":"https://api.github.com/users/pywr","html_url":"https://github.com/pywr","followers_url":"https://api.github.com/users/pywr/followers","following_url":"https://api.github.com/users/pywr/following{/other_user}","gists_url":"https://api.github.com/users/pywr/gists{/gist_id}","starred_url":"https://api.github.com/users/pywr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pywr/subscriptions","organizations_url":"https://api.github.com/users/pywr/orgs","repos_url":"https://api.github.com/users/pywr/repos","events_url":"https://api.github.com/users/pywr/events{/privacy}","received_events_url":"https://api.github.com/users/pywr/received_events","type":"Organization","site_admin":false},"repo":{"id":29560246,"name":"pywr","full_name":"pywr/pywr","owner":{"login":"pywr","id":15239563,"avatar_url":"https://avatars3.githubusercontent.com/u/15239563?v=3","gravatar_id":"","url":"https://api.github.com/users/pywr","html_url":"https://github.com/pywr","followers_url":"https://api.github.com/users/pywr/followers","following_url":"https://api.github.com/users/pywr/following{/other_user}","gists_url":"https://api.github.com/users/pywr/gists{/gist_id}","starred_url":"https://api.github.com/users/pywr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pywr/subscriptions","organizations_url":"https://api.github.com/users/pywr/orgs","repos_url":"https://api.github.com/users/pywr/repos","events_url":"https://api.github.com/users/pywr/events{/privacy}","received_events_url":"https://api.github.com/users/pywr/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pywr/pywr","description":"Pywr is a generalised network resource allocation model written in Python.","fork":false,"url":"https://api.github.com/repos/pywr/pywr","forks_url":"https://api.github.com/repos/pywr/pywr/forks","keys_url":"https://api.github.com/repos/pywr/pywr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pywr/pywr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pywr/pywr/teams","hooks_url":"https://api.github.com/repos/pywr/pywr/hooks","issue_events_url":"https://api.github.com/repos/pywr/pywr/issues/events{/number}","events_url":"https://api.github.com/repos/pywr/pywr/events","assignees_url":"https://api.github.com/repos/pywr/pywr/assignees{/user}","branches_url":"https://api.github.com/repos/pywr/pywr/branches{/branch}","tags_url":"https://api.github.com/repos/pywr/pywr/tags","blobs_url":"https://api.github.com/repos/pywr/pywr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pywr/pywr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pywr/pywr/git/refs{/sha}","trees_url":"https://api.github.com/repos/pywr/pywr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pywr/pywr/statuses/{sha}","languages_url":"https://api.github.com/repos/pywr/pywr/languages","stargazers_url":"https://api.github.com/repos/pywr/pywr/stargazers","contributors_url":"https://api.github.com/repos/pywr/pywr/contributors","subscribers_url":"https://api.github.com/repos/pywr/pywr/subscribers","subscription_url":"https://api.github.com/repos/pywr/pywr/subscription","commits_url":"https://api.github.com/repos/pywr/pywr/commits{/sha}","git_commits_url":"https://api.github.com/repos/pywr/pywr/git/commits{/sha}","comments_url":"https://api.github.com/repos/pywr/pywr/comments{/number}","issue_comment_url":"https://api.github.com/repos/pywr/pywr/issues/comments{/number}","contents_url":"https://api.github.com/repos/pywr/pywr/contents/{+path}","compare_url":"https://api.github.com/repos/pywr/pywr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pywr/pywr/merges","archive_url":"https://api.github.com/repos/pywr/pywr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pywr/pywr/downloads","issues_url":"https://api.github.com/repos/pywr/pywr/issues{/number}","pulls_url":"https://api.github.com/repos/pywr/pywr/pulls{/number}","milestones_url":"https://api.github.com/repos/pywr/pywr/milestones{/number}","notifications_url":"https://api.github.com/repos/pywr/pywr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pywr/pywr/labels{/name}","releases_url":"https://api.github.com/repos/pywr/pywr/releases{/id}","deployments_url":"https://api.github.com/repos/pywr/pywr/deployments","created_at":"2015-01-20T23:13:55Z","updated_at":"2017-02-27T04:35:35Z","pushed_at":"2017-04-03T20:19:18Z","git_url":"git://github.com/pywr/pywr.git","ssh_url":"git@github.com:pywr/pywr.git","clone_url":"https://github.com/pywr/pywr.git","svn_url":"https://github.com/pywr/pywr","homepage":"","size":2921,"stargazers_count":5,"watchers_count":5,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":71,"forks":5,"open_issues":71,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pywr/pywr/pulls/446"},"html":{"href":"https://github.com/pywr/pywr/pull/446"},"issue":{"href":"https://api.github.com/repos/pywr/pywr/issues/446"},"comments":{"href":"https://api.github.com/repos/pywr/pywr/issues/446/comments"},"review_comments":{"href":"https://api.github.com/repos/pywr/pywr/pulls/446/comments"},"review_comment":{"href":"https://api.github.com/repos/pywr/pywr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pywr/pywr/pulls/446/commits"},"statuses":{"href":"https://api.github.com/repos/pywr/pywr/statuses/9c145d3ad852a42a4e3937c9465a7d298f9835ae"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"jetuk","id":4604654,"avatar_url":"https://avatars2.githubusercontent.com/u/4604654?v=3","gravatar_id":"","url":"https://api.github.com/users/jetuk","html_url":"https://github.com/jetuk","followers_url":"https://api.github.com/users/jetuk/followers","following_url":"https://api.github.com/users/jetuk/following{/other_user}","gists_url":"https://api.github.com/users/jetuk/gists{/gist_id}","starred_url":"https://api.github.com/users/jetuk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jetuk/subscriptions","organizations_url":"https://api.github.com/users/jetuk/orgs","repos_url":"https://api.github.com/users/jetuk/repos","events_url":"https://api.github.com/users/jetuk/events{/privacy}","received_events_url":"https://api.github.com/users/jetuk/received_events","type":"User","site_admin":false},"comments":2,"review_comments":1,"maintainer_can_modify":false,"commits":6,"additions":74,"deletions":0,"changed_files":3}}
{"actor":{"display_login":"jetuk"}}