{"action":"created","comment":{"url":"https://api.github.com/repos/paritytech/parity/pulls/comments/194716574","pull_request_review_id":127938246,"id":194716574,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NDcxNjU3NA==","diff_hunk":"@@ -195,38 +241,70 @@ macro_rules! trace_main {\n }\n \n fn main() {\n-\tpanic_hook::set();\n-\n-\t// assuming the user is not running with `--force-direct`, then:\n-\t// if argv[0] == \"parity\" and this executable != ~/.parity-updates/parity, run that instead.\n+\t// the user has specified to run its originally installed binary (not via `parity-updater`)\n \tlet force_direct = std::env::args().any(|arg| arg == \"--force-direct\");\n-\tlet exe = std::env::current_exe().ok();\n-\tlet development = exe.as_ref().and_then(|p| p.parent().and_then(|p| p.parent()).and_then(|p| p.file_name()).map(|n| n == \"target\")).unwrap_or(false);\n-\tlet same_name = exe.as_ref().map(|p| p.file_stem().map_or(false, |s| s == \"parity\") && p.extension().map_or(true, |x| x == \"exe\")).unwrap_or(false);\n-\ttrace_main!(\"Starting up {} (force-direct: {}, development: {}, same-name: {})\", std::env::current_exe().map(|x| format!(\"{}\", x.display())).unwrap_or(\"<unknown>\".to_owned()), force_direct, development, same_name);\n+\t\n+\t// absolute path to the current `binary`\n+\tlet exe_path = std::env::current_exe().ok();","path":"parity/main.rs","position":187,"original_position":187,"commit_id":"b42f9b654357ce785b679908c1919c1c129eca39","original_commit_id":"b42f9b654357ce785b679908c1919c1c129eca39","user":{"login":"niklasad1","id":14157425,"node_id":"MDQ6VXNlcjE0MTU3NDI1","avatar_url":"https://avatars1.githubusercontent.com/u/14157425?v=4","gravatar_id":"","url":"https://api.github.com/users/niklasad1","html_url":"https://github.com/niklasad1","followers_url":"https://api.github.com/users/niklasad1/followers","following_url":"https://api.github.com/users/niklasad1/following{/other_user}","gists_url":"https://api.github.com/users/niklasad1/gists{/gist_id}","starred_url":"https://api.github.com/users/niklasad1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/niklasad1/subscriptions","organizations_url":"https://api.github.com/users/niklasad1/orgs","repos_url":"https://api.github.com/users/niklasad1/repos","events_url":"https://api.github.com/users/niklasad1/events{/privacy}","received_events_url":"https://api.github.com/users/niklasad1/received_events","type":"User","site_admin":false},"body":"This `\"shouldn't\"` fail it's a wrapper on top of the underlying OS.\r\nDo you want unwrap/expect here? \r\n\r\nHowever, it's safe because if this fails we `fall` back to the locally installed version (or in other words don't spawn a child process)","created_at":"2018-06-12T12:23:30Z","updated_at":"2018-06-12T12:23:30Z","html_url":"https://github.com/paritytech/parity/pull/8787#discussion_r194716574","pull_request_url":"https://api.github.com/repos/paritytech/parity/pulls/8787","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/paritytech/parity/pulls/comments/194716574"},"html":{"href":"https://github.com/paritytech/parity/pull/8787#discussion_r194716574"},"pull_request":{"href":"https://api.github.com/repos/paritytech/parity/pulls/8787"}},"in_reply_to_id":194401065},"pull_request":{"url":"https://api.github.com/repos/paritytech/parity/pulls/8787","id":192501153,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkyNTAxMTUz","html_url":"https://github.com/paritytech/parity/pull/8787","diff_url":"https://github.com/paritytech/parity/pull/8787.diff","patch_url":"https://github.com/paritytech/parity/pull/8787.patch","issue_url":"https://api.github.com/repos/paritytech/parity/issues/8787","number":8787,"state":"open","locked":false,"title":"Updater verification","user":{"login":"niklasad1","id":14157425,"node_id":"MDQ6VXNlcjE0MTU3NDI1","avatar_url":"https://avatars1.githubusercontent.com/u/14157425?v=4","gravatar_id":"","url":"https://api.github.com/users/niklasad1","html_url":"https://github.com/niklasad1","followers_url":"https://api.github.com/users/niklasad1/followers","following_url":"https://api.github.com/users/niklasad1/following{/other_user}","gists_url":"https://api.github.com/users/niklasad1/gists{/gist_id}","starred_url":"https://api.github.com/users/niklasad1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/niklasad1/subscriptions","organizations_url":"https://api.github.com/users/niklasad1/orgs","repos_url":"https://api.github.com/users/niklasad1/repos","events_url":"https://api.github.com/users/niklasad1/events{/privacy}","received_events_url":"https://api.github.com/users/niklasad1/received_events","type":"User","site_admin":false},"body":"Attempt to close #8178 \r\n\r\n## Abstract\r\n\r\nIn the entry point in `parity/main` we first try run the latest installed version of parity if not `--force-restart` is explicitly specified. If we try to run the latest version of parity(`run_parity`) it will return Some(ErrorCode) unless the downloaded binary is not found. Thus, if unsupported CLI args are entered for example it will terminate (return the exit code) instead of falling back to local version.\r\nIn other words, only if the binary is not found we fall back to the local version!\r\n\r\nSo, high-level this PR changes so `run_parity()` return `Result<(), ErrorCode>` and if an error received while running parity we fall back to the local version! That's it still, I think it's okay still store the newer version try it if, for example, other CLI args may be valid. Otherwise, it is easy to add a flag for that or change the timestamp of binary to disable it the entering the `updater loop`. But, the downloaded binary should be probably not be removed otherwise the updater will fetch the same binary over and over again!\r\n\r\n## Things that are not nice!!\r\n\r\nBecause it's very hard to test the main loop in parity I have hard-coded in an old version and disabled some checks in order to force an update!\r\n\r\n## Manual tests\r\n\r\n### Incompatible CLI args\r\n```bash\r\n➜  updater ./parity --auto-update=all --auto-update-delay=0 -l updater=trace\r\n2018-06-04 21:03:24  main INFO parity::run  Starting Parity/v1.12.0-unstable-e2a90ce15-20180604/x86_64-linux-gnu/rustc1.26.1\r\n2018-06-04 21:03:24  main INFO parity::run  Keys path /home/niklasad1/.local/share/io.parity.ethereum/keys/Foundation\r\n2018-06-04 21:03:24  main INFO parity::run  DB path /home/niklasad1/.local/share/io.parity.ethereum/chains/ethereum/db/906a34e69aec8c0d\r\n2018-06-04 21:03:24  main INFO parity::run  Path to dapps /home/niklasad1/.local/share/io.parity.ethereum/dapps\r\n2018-06-04 21:03:24  main INFO parity::run  State DB configuration: fast\r\n2018-06-04 21:03:24  main INFO parity::run  Operating mode: active\r\n2018-06-04 21:03:24  main INFO ethcore_service::service  Configured for Foundation using Ethash engine\r\n2018-06-04 21:03:25  main INFO parity_updater::updater  this is hardcoded to an old version this must be fixed before merging updater/src/updater.rs:393\r\n2018-06-04 21:03:25  main TRACE updater  Current release is 1.3.7-stable-0x0000…0000 (0x0000000000000000000000000000000000000000)\r\n2018-06-04 21:03:25  main INFO parity_updater::updater  The `security_level` check is DISABLED!!!!! It is just diabled to test the updater-verification and should be removed later, updater/src/updater.rs:614\r\n2018-06-04 21:03:25  main INFO parity_updater::updater  The `updater_policy frequency` check is DISABLED!!!!!. This check is just diabled to test the updater and should be removed later, updater/src/updater.rs:621\r\n2018-06-04 21:03:25  main TRACE updater  Looking up this_fork for our release: parity/0x0000000000000000000000000000000000000000\r\n2018-06-04 21:03:25  main TRACE updater  Latest release in our track is v1.9.5-stable-0xff82…8db2 it is non-critical (x86_64-unknown-linux-gnu binary is 0xf447…3769)\r\n2018-06-04 21:03:25  main TRACE updater  Fork: this/current/latest/latest-known: unreleased/#5732312/#4370000/#2675000\r\n2018-06-04 21:03:25  main INFO updater  Update for binary 0xf447…3769 triggered\r\n2018-06-04 21:03:25  main INFO updater  Attempting to get parity binary 0xf447…3769\r\n2018-06-04 21:03:25  IO Worker #2 INFO network  Public node URL: enode://682b250793ef93e61a9f19918dd63e56695e24ef329a66d017a006b9145fc8b015a4d4a77954e1ef59febde23e17c26b12e087ae59cf03a8367de565208a8fdc@192.168.178.66:30303\r\n2018-06-04 21:03:25  fetch WARN rustls::session  Sending warning alert CloseNotify\r\n2018-06-04 21:03:25   INFO miner  Updated conversion rate to Ξ1 = US$589.22 (8081709 wei/gas)\r\n2018-06-04 21:03:26  IO Worker #0 WARN discovery  Received ping from self\r\n2018-06-04 21:03:26  IO Worker #0 WARN discovery  Received ping from self\r\n2018-06-04 21:03:32   INFO updater  Fetched latest version (1.9.5-stable-0xff82…8db2) OK to /tmp/ECzpH9bP3JyQ\r\n2018-06-04 21:03:33   INFO updater  Copied updated binary to /home/niklasad1/.local/share/io.parity.ethereum-updates/parity-1.9.5-ff821daf1da42865f229aee35f2e74e7b2dd8db2\r\n2018-06-04 21:03:33   INFO updater  Completed upgrade to 1.9.5-stable-0xff82…8db2\r\n2018-06-04 21:03:33  main INFO parity::run  Finishing work, please wait...\r\n2018-06-04 21:03:36  main TRACE updater  Re-running updater loop\r\n2018-06-04 21:03:36  main TRACE updater  latest binary path: File { fd: 3, path: \"/home/niklasad1/.local/share/io.parity.ethereum-updates/latest\", read: true, write: false }\r\n2018-06-04 21:03:36  main TRACE updater  latest binary path: File { fd: 3, path: \"/home/niklasad1/.local/share/io.parity.ethereum-updates/latest\", read: true, write: false }\r\nerror: Found argument '--auto-update-delay' which wasn't expected, or isn't valid in this context\r\n        Did you mean --auto-update?\r\n\r\nUSAGE:\r\n    parity-1.9.5-ff821daf1da42865f229aee35f2e74e7b2dd8db2 [SUBCOMMAND]\r\n\r\nFor more information try --help\r\n2018-06-04 21:03:36  main ERROR updater  Updated binary could not be executed error: StatusCode(1). Falling back to local version\r\n2018-06-04 21:03:36  main INFO parity::run  Starting Parity/v1.12.0-unstable-e2a90ce15-20180604/x86_64-linux-gnu/rustc1.26.1\r\n2018-06-04 21:03:36  main INFO parity::run  Keys path /home/niklasad1/.local/share/io.parity.ethereum/keys/Foundation\r\n2018-06-04 21:03:36  main INFO parity::run  DB path /home/niklasad1/.local/share/io.parity.ethereum/chains/ethereum/db/906a34e69aec8c0d\r\n2018-06-04 21:03:36  main INFO parity::run  Path to dapps /home/niklasad1/.local/share/io.parity.ethereum/dapps\r\n2018-06-04 21:03:36  main INFO parity::run  State DB configuration: fast\r\n2018-06-04 21:03:36  main INFO parity::run  Operating mode: active\r\n2018-06-04 21:03:36  main INFO ethcore_service::service  Configured for Foundation using Ethash engine\r\n2018-06-04 21:03:37  main INFO parity_updater::updater  this is hardcoded to an old version this must be fixed before merging updater/src/updater.rs:393\r\n2018-06-04 21:03:37  main TRACE updater  Current release is 1.3.7-stable-0x0000…0000 (0x0000000000000000000000000000000000000000)\r\n2018-06-04 21:03:37  main INFO parity_updater::updater  The `security_level` check is DISABLED!!!!! It is just diabled to test the updater-verification and should be removed later, updater/src/updater.rs:614\r\n2018-06-04 21:03:37  main INFO parity_updater::updater  The `updater_policy frequency` check is DISABLED!!!!!. This check is just diabled to test the updater and should be removed later, updater/src/updater.rs:621\r\n2018-06-04 21:03:37  main TRACE updater  Looking up this_fork for our release: parity/0x0000000000000000000000000000000000000000\r\n2018-06-04 21:03:37  main TRACE updater  Latest release in our track is v1.9.5-stable-0xff82…8db2 it is non-critical (x86_64-unknown-linux-gnu binary is 0xf447…3769)\r\n2018-06-04 21:03:37  main TRACE updater  Fork: this/current/latest/latest-known: unreleased/#5732321/#4370000/#2675000\r\n2018-06-04 21:03:37  main INFO updater  Already fetched binary.\r\n2018-06-04 21:03:37  main INFO updater  Completed upgrade to 1.9.5-stable-0xff82…8db2\r\n2018-06-04 21:03:37  main INFO updater  Update installed, ready for restart.\r\n2018-06-04 21:03:37  IO Worker #1 INFO network  Public node URL: enode://682b250793ef93e61a9f19918dd63e56695e24ef329a66d017a006b9145fc8b015a4d4a77954e1ef59febde23e17c26b12e087ae59cf03a8367de565208a8fdc@192.168.178.66:30303\r\n2018-06-04 21:03:38  fetch WARN rustls::session  Sending warning alert CloseNotify\r\n2018-06-04 21:03:38   INFO miner  Updated conversion rate to Ξ1 = US$589.22 (8081709 wei/gas)\r\n^C2018-06-04 21:03:47  IO Worker #3 INFO import  Syncing #5732331 0x5a89…8961   1.00 blk/s  101.9 tx/s    8 Mgas/s      0+    7 Qed  #5732337    3/25 peers   549 KiB chain 98 MiB db 758 KiB queue 23 KiB sync  RPC:  0 conn,    0 req/s,    0 µs\r\n2018-06-04 21:03:50  IO Worker #2 TRACE updater  Current release is 1.3.7-stable-0x0000…0000 (0x0000000000000000000000000000000000000000)\r\n2018-06-04 21:03:50  IO Worker #2 INFO parity_updater::updater  The `security_level` check is DISABLED!!!!! It is just diabled to test the updater-verification and should be removed later, updater/src/updater.rs:614\r\n2018-06-04 21:03:50  IO Worker #2 INFO parity_updater::updater  The `updater_policy frequency` check is DISABLED!!!!!. This check is just diabled to test the updater and should be removed later, updater/src/updater.rs:621\r\n2018-06-04 21:03:50  IO Worker #2 TRACE updater  Looking up this_fork for our release: parity/0x0000000000000000000000000000000000000000\r\n2018-06-04 21:03:50  IO Worker #2 INFO import  Imported #5732341 0xc6eb…fc62 (178 txs, 7.96 Mgas, 756 ms, 28.13 KiB) + another 2 block(s) containing 263 tx(s)\r\n```\r\n\r\n### Compatible CLI args\r\n```bash\r\n➜  updater ./parity --auto-update=all -l updater=trace\r\n2018-06-04 21:06:02  main INFO parity::run  Starting Parity/v1.9.5-stable-ff821da-20180321/x86_64-linux-gnu/rustc1.24.1\r\n2018-06-04 21:06:02  main INFO parity::run  Keys path /home/niklasad1/.local/share/io.parity.ethereum/keys/Foundation\r\n2018-06-04 21:06:02  main INFO parity::run  DB path /home/niklasad1/.local/share/io.parity.ethereum/chains/ethereum/db/906a34e69aec8c0d\r\n2018-06-04 21:06:02  main INFO parity::run  Path to dapps /home/niklasad1/.local/share/io.parity.ethereum/dapps\r\n2018-06-04 21:06:02  main INFO parity::run  State DB configuration: fast\r\n2018-06-04 21:06:02  main INFO parity::run  Operating mode: active\r\n2018-06-04 21:06:02  main INFO ethcore::service  Configured for Foundation using Ethash engine\r\n2018-06-04 21:06:03  main WARN ethcore_network::node_table  Error reading node table file: ErrorImpl { code: Message(\"missing field `attempts`\"), line: 8, column: 5 }\r\n2018-06-04 21:06:03  main TRACE updater  Current release is 1.9.5-stable-ff82…8db2 (ff821daf1da42865f229aee35f2e74e7b2dd8db2)\r\n2018-06-04 21:06:03   WARN jsonrpc_ipc_server::server  Removed existing file '/home/niklasad1/.local/share/io.parity.ethereum/jsonrpc.ipc'.\r\n2018-06-04 21:06:03  IO Worker #3 INFO network  Public node URL: enode://682b250793ef93e61a9f19918dd63e56695e24ef329a66d017a006b9145fc8b015a4d4a77954e1ef59febde23e17c26b12e087ae59cf03a8367de565208a8fdc@192.168.178.66:30303\r\n2018-06-04 21:06:03   INFO miner  Updated conversion rate to Ξ1 = US$589.22 (202042740 wei/gas)\r\n2018-06-04 21:06:14  IO Worker #2 TRACE updater  Current release is 1.9.5-stable-ff82…8db2 (ff821daf1da42865f229aee35f2e74e7b2dd8db2)\r\n2018-06-04 21:06:14  IO Worker #2 INFO import  Imported #5732348 c4ba…e5dd (130 txs, 7.99 Mgas, 456.96 ms, 27.09 KiB) + another 1 block(s) containing 91 tx(s)\r\n2018-06-04 21:06:28  Verifier #7 TRACE updater  Current release is 1.9.5-stable-ff82…8db2 (ff821daf1da42865f229aee35f2e74e7b2dd8db2)\r\n```\r\n\r\n/cc @tomusdrw @andresilva ","created_at":"2018-06-04T19:12:43Z","updated_at":"2018-06-12T12:23:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"669c8ec2934725586149bc45b4eddd925bead28b","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":309708100,"node_id":"MDU6TGFiZWwzMDk3MDgxMDA=","url":"https://api.github.com/repos/paritytech/parity/labels/A0-pleasereview","name":"A0-pleasereview","color":"666666","default":false},{"id":441816407,"node_id":"MDU6TGFiZWw0NDE4MTY0MDc=","url":"https://api.github.com/repos/paritytech/parity/labels/M4-core","name":"M4-core","color":"F5FCE6","default":false}],"milestone":{"url":"https://api.github.com/repos/paritytech/parity/milestones/21","html_url":"https://github.com/paritytech/parity/milestone/21","labels_url":"https://api.github.com/repos/paritytech/parity/milestones/21/labels","id":3057411,"node_id":"MDk6TWlsZXN0b25lMzA1NzQxMQ==","number":21,"title":"1.12","description":"","creator":{"login":"5chdn","id":15729797,"node_id":"MDQ6VXNlcjE1NzI5Nzk3","avatar_url":"https://avatars3.githubusercontent.com/u/15729797?v=4","gravatar_id":"","url":"https://api.github.com/users/5chdn","html_url":"https://github.com/5chdn","followers_url":"https://api.github.com/users/5chdn/followers","following_url":"https://api.github.com/users/5chdn/following{/other_user}","gists_url":"https://api.github.com/users/5chdn/gists{/gist_id}","starred_url":"https://api.github.com/users/5chdn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/5chdn/subscriptions","organizations_url":"https://api.github.com/users/5chdn/orgs","repos_url":"https://api.github.com/users/5chdn/repos","events_url":"https://api.github.com/users/5chdn/events{/privacy}","received_events_url":"https://api.github.com/users/5chdn/received_events","type":"User","site_admin":false},"open_issues":133,"closed_issues":362,"state":"open","created_at":"2018-01-23T13:30:50Z","updated_at":"2018-06-12T11:18:24Z","due_on":"2018-06-25T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/paritytech/parity/pulls/8787/commits","review_comments_url":"https://api.github.com/repos/paritytech/parity/pulls/8787/comments","review_comment_url":"https://api.github.com/repos/paritytech/parity/pulls/comments{/number}","comments_url":"https://api.github.com/repos/paritytech/parity/issues/8787/comments","statuses_url":"https://api.github.com/repos/paritytech/parity/statuses/b42f9b654357ce785b679908c1919c1c129eca39","head":{"label":"paritytech:na-updater-verification","ref":"na-updater-verification","sha":"b42f9b654357ce785b679908c1919c1c129eca39","user":{"login":"paritytech","id":14176906,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MTc2OTA2","avatar_url":"https://avatars2.githubusercontent.com/u/14176906?v=4","gravatar_id":"","url":"https://api.github.com/users/paritytech","html_url":"https://github.com/paritytech","followers_url":"https://api.github.com/users/paritytech/followers","following_url":"https://api.github.com/users/paritytech/following{/other_user}","gists_url":"https://api.github.com/users/paritytech/gists{/gist_id}","starred_url":"https://api.github.com/users/paritytech/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paritytech/subscriptions","organizations_url":"https://api.github.com/users/paritytech/orgs","repos_url":"https://api.github.com/users/paritytech/repos","events_url":"https://api.github.com/users/paritytech/events{/privacy}","received_events_url":"https://api.github.com/users/paritytech/received_events","type":"Organization","site_admin":false},"repo":{"id":46714939,"node_id":"MDEwOlJlcG9zaXRvcnk0NjcxNDkzOQ==","name":"parity","full_name":"paritytech/parity","owner":{"login":"paritytech","id":14176906,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MTc2OTA2","avatar_url":"https://avatars2.githubusercontent.com/u/14176906?v=4","gravatar_id":"","url":"https://api.github.com/users/paritytech","html_url":"https://github.com/paritytech","followers_url":"https://api.github.com/users/paritytech/followers","following_url":"https://api.github.com/users/paritytech/following{/other_user}","gists_url":"https://api.github.com/users/paritytech/gists{/gist_id}","starred_url":"https://api.github.com/users/paritytech/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paritytech/subscriptions","organizations_url":"https://api.github.com/users/paritytech/orgs","repos_url":"https://api.github.com/users/paritytech/repos","events_url":"https://api.github.com/users/paritytech/events{/privacy}","received_events_url":"https://api.github.com/users/paritytech/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/paritytech/parity","description":"Fast, light, robust Ethereum implementation.","fork":false,"url":"https://api.github.com/repos/paritytech/parity","forks_url":"https://api.github.com/repos/paritytech/parity/forks","keys_url":"https://api.github.com/repos/paritytech/parity/keys{/key_id}","collaborators_url":"https://api.github.com/repos/paritytech/parity/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/paritytech/parity/teams","hooks_url":"https://api.github.com/repos/paritytech/parity/hooks","issue_events_url":"https://api.github.com/repos/paritytech/parity/issues/events{/number}","events_url":"https://api.github.com/repos/paritytech/parity/events","assignees_url":"https://api.github.com/repos/paritytech/parity/assignees{/user}","branches_url":"https://api.github.com/repos/paritytech/parity/branches{/branch}","tags_url":"https://api.github.com/repos/paritytech/parity/tags","blobs_url":"https://api.github.com/repos/paritytech/parity/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/paritytech/parity/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/paritytech/parity/git/refs{/sha}","trees_url":"https://api.github.com/repos/paritytech/parity/git/trees{/sha}","statuses_url":"https://api.github.com/repos/paritytech/parity/statuses/{sha}","languages_url":"https://api.github.com/repos/paritytech/parity/languages","stargazers_url":"https://api.github.com/repos/paritytech/parity/stargazers","contributors_url":"https://api.github.com/repos/paritytech/parity/contributors","subscribers_url":"https://api.github.com/repos/paritytech/parity/subscribers","subscription_url":"https://api.github.com/repos/paritytech/parity/subscription","commits_url":"https://api.github.com/repos/paritytech/parity/commits{/sha}","git_commits_url":"https://api.github.com/repos/paritytech/parity/git/commits{/sha}","comments_url":"https://api.github.com/repos/paritytech/parity/comments{/number}","issue_comment_url":"https://api.github.com/repos/paritytech/parity/issues/comments{/number}","contents_url":"https://api.github.com/repos/paritytech/parity/contents/{+path}","compare_url":"https://api.github.com/repos/paritytech/parity/compare/{base}...{head}","merges_url":"https://api.github.com/repos/paritytech/parity/merges","archive_url":"https://api.github.com/repos/paritytech/parity/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/paritytech/parity/downloads","issues_url":"https://api.github.com/repos/paritytech/parity/issues{/number}","pulls_url":"https://api.github.com/repos/paritytech/parity/pulls{/number}","milestones_url":"https://api.github.com/repos/paritytech/parity/milestones{/number}","notifications_url":"https://api.github.com/repos/paritytech/parity/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/paritytech/parity/labels{/name}","releases_url":"https://api.github.com/repos/paritytech/parity/releases{/id}","deployments_url":"https://api.github.com/repos/paritytech/parity/deployments","created_at":"2015-11-23T11:07:32Z","updated_at":"2018-06-12T08:39:25Z","pushed_at":"2018-06-12T12:00:22Z","git_url":"git://github.com/paritytech/parity.git","ssh_url":"git@github.com:paritytech/parity.git","clone_url":"https://github.com/paritytech/parity.git","svn_url":"https://github.com/paritytech/parity","homepage":"https://parity.io","size":53197,"stargazers_count":4385,"watchers_count":4385,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":882,"mirror_url":null,"archived":false,"open_issues_count":211,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":882,"open_issues":211,"watchers":4385,"default_branch":"master"}},"base":{"label":"paritytech:master","ref":"master","sha":"e2a90ce159c751fdc548610749388a3c3a3cd9ad","user":{"login":"paritytech","id":14176906,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MTc2OTA2","avatar_url":"https://avatars2.githubusercontent.com/u/14176906?v=4","gravatar_id":"","url":"https://api.github.com/users/paritytech","html_url":"https://github.com/paritytech","followers_url":"https://api.github.com/users/paritytech/followers","following_url":"https://api.github.com/users/paritytech/following{/other_user}","gists_url":"https://api.github.com/users/paritytech/gists{/gist_id}","starred_url":"https://api.github.com/users/paritytech/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paritytech/subscriptions","organizations_url":"https://api.github.com/users/paritytech/orgs","repos_url":"https://api.github.com/users/paritytech/repos","events_url":"https://api.github.com/users/paritytech/events{/privacy}","received_events_url":"https://api.github.com/users/paritytech/received_events","type":"Organization","site_admin":false},"repo":{"id":46714939,"node_id":"MDEwOlJlcG9zaXRvcnk0NjcxNDkzOQ==","name":"parity","full_name":"paritytech/parity","owner":{"login":"paritytech","id":14176906,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MTc2OTA2","avatar_url":"https://avatars2.githubusercontent.com/u/14176906?v=4","gravatar_id":"","url":"https://api.github.com/users/paritytech","html_url":"https://github.com/paritytech","followers_url":"https://api.github.com/users/paritytech/followers","following_url":"https://api.github.com/users/paritytech/following{/other_user}","gists_url":"https://api.github.com/users/paritytech/gists{/gist_id}","starred_url":"https://api.github.com/users/paritytech/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paritytech/subscriptions","organizations_url":"https://api.github.com/users/paritytech/orgs","repos_url":"https://api.github.com/users/paritytech/repos","events_url":"https://api.github.com/users/paritytech/events{/privacy}","received_events_url":"https://api.github.com/users/paritytech/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/paritytech/parity","description":"Fast, light, robust Ethereum implementation.","fork":false,"url":"https://api.github.com/repos/paritytech/parity","forks_url":"https://api.github.com/repos/paritytech/parity/forks","keys_url":"https://api.github.com/repos/paritytech/parity/keys{/key_id}","collaborators_url":"https://api.github.com/repos/paritytech/parity/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/paritytech/parity/teams","hooks_url":"https://api.github.com/repos/paritytech/parity/hooks","issue_events_url":"https://api.github.com/repos/paritytech/parity/issues/events{/number}","events_url":"https://api.github.com/repos/paritytech/parity/events","assignees_url":"https://api.github.com/repos/paritytech/parity/assignees{/user}","branches_url":"https://api.github.com/repos/paritytech/parity/branches{/branch}","tags_url":"https://api.github.com/repos/paritytech/parity/tags","blobs_url":"https://api.github.com/repos/paritytech/parity/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/paritytech/parity/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/paritytech/parity/git/refs{/sha}","trees_url":"https://api.github.com/repos/paritytech/parity/git/trees{/sha}","statuses_url":"https://api.github.com/repos/paritytech/parity/statuses/{sha}","languages_url":"https://api.github.com/repos/paritytech/parity/languages","stargazers_url":"https://api.github.com/repos/paritytech/parity/stargazers","contributors_url":"https://api.github.com/repos/paritytech/parity/contributors","subscribers_url":"https://api.github.com/repos/paritytech/parity/subscribers","subscription_url":"https://api.github.com/repos/paritytech/parity/subscription","commits_url":"https://api.github.com/repos/paritytech/parity/commits{/sha}","git_commits_url":"https://api.github.com/repos/paritytech/parity/git/commits{/sha}","comments_url":"https://api.github.com/repos/paritytech/parity/comments{/number}","issue_comment_url":"https://api.github.com/repos/paritytech/parity/issues/comments{/number}","contents_url":"https://api.github.com/repos/paritytech/parity/contents/{+path}","compare_url":"https://api.github.com/repos/paritytech/parity/compare/{base}...{head}","merges_url":"https://api.github.com/repos/paritytech/parity/merges","archive_url":"https://api.github.com/repos/paritytech/parity/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/paritytech/parity/downloads","issues_url":"https://api.github.com/repos/paritytech/parity/issues{/number}","pulls_url":"https://api.github.com/repos/paritytech/parity/pulls{/number}","milestones_url":"https://api.github.com/repos/paritytech/parity/milestones{/number}","notifications_url":"https://api.github.com/repos/paritytech/parity/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/paritytech/parity/labels{/name}","releases_url":"https://api.github.com/repos/paritytech/parity/releases{/id}","deployments_url":"https://api.github.com/repos/paritytech/parity/deployments","created_at":"2015-11-23T11:07:32Z","updated_at":"2018-06-12T08:39:25Z","pushed_at":"2018-06-12T12:00:22Z","git_url":"git://github.com/paritytech/parity.git","ssh_url":"git@github.com:paritytech/parity.git","clone_url":"https://github.com/paritytech/parity.git","svn_url":"https://github.com/paritytech/parity","homepage":"https://parity.io","size":53197,"stargazers_count":4385,"watchers_count":4385,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":882,"mirror_url":null,"archived":false,"open_issues_count":211,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":882,"open_issues":211,"watchers":4385,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/paritytech/parity/pulls/8787"},"html":{"href":"https://github.com/paritytech/parity/pull/8787"},"issue":{"href":"https://api.github.com/repos/paritytech/parity/issues/8787"},"comments":{"href":"https://api.github.com/repos/paritytech/parity/issues/8787/comments"},"review_comments":{"href":"https://api.github.com/repos/paritytech/parity/pulls/8787/comments"},"review_comment":{"href":"https://api.github.com/repos/paritytech/parity/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/paritytech/parity/pulls/8787/commits"},"statuses":{"href":"https://api.github.com/repos/paritytech/parity/statuses/b42f9b654357ce785b679908c1919c1c129eca39"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"niklasad1"}}