{"action":"created","comment":{"url":"https://api.github.com/repos/QuantConnect/Lean/pulls/comments/171631286","pull_request_review_id":100518255,"id":171631286,"diff_hunk":"@@ -0,0 +1,60 @@\n+﻿/*\n+ * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.\n+ * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+*/\n+\n+using System;\n+using QuantConnect.Exceptions;\n+\n+namespace QuantConnect.Tests.Common.Exceptions\n+{\n+    /// <summary>\n+    /// Provids a fake implementation that can be utilized in tests\n+    /// </summary>\n+    public class FakeExceptionInterpreter : IExceptionInterpreter\n+    {\n+        private readonly Func<Exception, bool> _canProject;","path":"Tests/Common/Exceptions/FakeExceptionInterpreter.cs","position":26,"original_position":26,"commit_id":"72b14321e9582a202b852f33ea6404b176a13d37","original_commit_id":"72b14321e9582a202b852f33ea6404b176a13d37","user":{"login":"jaredbroad","id":2243225,"avatar_url":"https://avatars2.githubusercontent.com/u/2243225?v=4","gravatar_id":"","url":"https://api.github.com/users/jaredbroad","html_url":"https://github.com/jaredbroad","followers_url":"https://api.github.com/users/jaredbroad/followers","following_url":"https://api.github.com/users/jaredbroad/following{/other_user}","gists_url":"https://api.github.com/users/jaredbroad/gists{/gist_id}","starred_url":"https://api.github.com/users/jaredbroad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jaredbroad/subscriptions","organizations_url":"https://api.github.com/users/jaredbroad/orgs","repos_url":"https://api.github.com/users/jaredbroad/repos","events_url":"https://api.github.com/users/jaredbroad/events{/privacy}","received_events_url":"https://api.github.com/users/jaredbroad/received_events","type":"User","site_admin":false},"body":"_canInterpret\r\n_interpret","created_at":"2018-03-01T17:25:05Z","updated_at":"2018-03-01T17:26:29Z","html_url":"https://github.com/QuantConnect/Lean/pull/1631#discussion_r171631286","pull_request_url":"https://api.github.com/repos/QuantConnect/Lean/pulls/1631","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/comments/171631286"},"html":{"href":"https://github.com/QuantConnect/Lean/pull/1631#discussion_r171631286"},"pull_request":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/1631"}}},"pull_request":{"url":"https://api.github.com/repos/QuantConnect/Lean/pulls/1631","id":171910784,"html_url":"https://github.com/QuantConnect/Lean/pull/1631","diff_url":"https://github.com/QuantConnect/Lean/pull/1631.diff","patch_url":"https://github.com/QuantConnect/Lean/pull/1631.patch","issue_url":"https://api.github.com/repos/QuantConnect/Lean/issues/1631","number":1631,"state":"open","locked":false,"title":"Add Exception Interpreter","user":{"login":"mchandschuh","id":531416,"avatar_url":"https://avatars2.githubusercontent.com/u/531416?v=4","gravatar_id":"","url":"https://api.github.com/users/mchandschuh","html_url":"https://github.com/mchandschuh","followers_url":"https://api.github.com/users/mchandschuh/followers","following_url":"https://api.github.com/users/mchandschuh/following{/other_user}","gists_url":"https://api.github.com/users/mchandschuh/gists{/gist_id}","starred_url":"https://api.github.com/users/mchandschuh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mchandschuh/subscriptions","organizations_url":"https://api.github.com/users/mchandschuh/orgs","repos_url":"https://api.github.com/users/mchandschuh/repos","events_url":"https://api.github.com/users/mchandschuh/events{/privacy}","received_events_url":"https://api.github.com/users/mchandschuh/received_events","type":"User","site_admin":false},"body":"<!--- Provide a general summary of your changes in the Title above -->\r\n\r\n#### Description\r\n<!--- Describe your changes in detail -->\r\nAdds `IExceptionInterpreter` interface to be used to define transformations of exceptions thrown within lean (csharp or python) to something more easily digestible by the users. The interpreted exceptions can then be collated into a single error message.\r\n\r\n#### Related Issue\r\n<!--- This project only accepts pull requests related to open issues -->\r\n<!--- If suggesting a new feature or change, please discuss it in an issue first -->\r\n<!--- If fixing a bug, there should be an issue describing it with steps to reproduce -->\r\n<!--- Please link to the issue here: -->\r\n#1630\r\nThis PR is built on top of #1629 \r\n\r\n#### Motivation and Context\r\n<!--- Why is this change required? What problem does it solve? -->\r\nHoping to be able to easily provide better error messages against a wide range of exception while keeping the logic behind detecting cases to be transformed and/or the actual transformation testable.\r\n\r\n#### Requires Documentation Change\r\n<!--- Please indicate if these changes will require updates to documentation, and if so, specify what changes are required -->\r\nNo.\r\n\r\n#### How Has This Been Tested?\r\n<!--- Please describe in detail how you tested your changes. -->\r\n<!--- Include details of your testing environment, and the tests you ran to -->\r\n<!--- see how your change affects other areas of the code, etc. -->\r\nUnit tests have been added for the new components and a manual test was performed to ensure the gears turn.\r\n\r\n#### Types of changes\r\n<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->\r\n- [ ] Bug fix (non-breaking change which fixes an issue)\r\n- [x] New feature (non-breaking change which adds functionality)\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to change)\r\n- [ ] Non-functional change (xml comments/documentation/ect)\r\n\r\n#### Checklist:\r\n<!--- The following is a checklist of items that MUST be completed before a PR is accepted -->\r\n<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->\r\n- [x] My code follows the code style of this project.\r\n- [x] I have read the **CONTRIBUTING** [document](https://github.com/QuantConnect/Lean/blob/master/CONTRIBUTING.md).\r\n- [x] I have added tests to cover my changes. <!--- If not applicable, please explain why -->\r\n- [x] All new and existing tests passed.\r\n- [x] My branch follows the naming convention `bug-<issue#>-<description` or `feature-<issue#>-<description>`\r\n\r\n<!--- Template inspired by https://www.talater.com/open-source-templates/#/page/99 -->","created_at":"2018-02-28T10:22:25Z","updated_at":"2018-03-01T17:26:29Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d1995b1ad6638494bbcf9fad8dd3964a15a854ff","assignee":null,"assignees":[],"requested_reviewers":[{"login":"AlexCatarino","id":6889033,"avatar_url":"https://avatars1.githubusercontent.com/u/6889033?v=4","gravatar_id":"","url":"https://api.github.com/users/AlexCatarino","html_url":"https://github.com/AlexCatarino","followers_url":"https://api.github.com/users/AlexCatarino/followers","following_url":"https://api.github.com/users/AlexCatarino/following{/other_user}","gists_url":"https://api.github.com/users/AlexCatarino/gists{/gist_id}","starred_url":"https://api.github.com/users/AlexCatarino/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlexCatarino/subscriptions","organizations_url":"https://api.github.com/users/AlexCatarino/orgs","repos_url":"https://api.github.com/users/AlexCatarino/repos","events_url":"https://api.github.com/users/AlexCatarino/events{/privacy}","received_events_url":"https://api.github.com/users/AlexCatarino/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/QuantConnect/Lean/pulls/1631/commits","review_comments_url":"https://api.github.com/repos/QuantConnect/Lean/pulls/1631/comments","review_comment_url":"https://api.github.com/repos/QuantConnect/Lean/pulls/comments{/number}","comments_url":"https://api.github.com/repos/QuantConnect/Lean/issues/1631/comments","statuses_url":"https://api.github.com/repos/QuantConnect/Lean/statuses/72b14321e9582a202b852f33ea6404b176a13d37","head":{"label":"QuantConnect:feature-1630-exception-projection","ref":"feature-1630-exception-projection","sha":"72b14321e9582a202b852f33ea6404b176a13d37","user":{"login":"QuantConnect","id":3912814,"avatar_url":"https://avatars0.githubusercontent.com/u/3912814?v=4","gravatar_id":"","url":"https://api.github.com/users/QuantConnect","html_url":"https://github.com/QuantConnect","followers_url":"https://api.github.com/users/QuantConnect/followers","following_url":"https://api.github.com/users/QuantConnect/following{/other_user}","gists_url":"https://api.github.com/users/QuantConnect/gists{/gist_id}","starred_url":"https://api.github.com/users/QuantConnect/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/QuantConnect/subscriptions","organizations_url":"https://api.github.com/users/QuantConnect/orgs","repos_url":"https://api.github.com/users/QuantConnect/repos","events_url":"https://api.github.com/users/QuantConnect/events{/privacy}","received_events_url":"https://api.github.com/users/QuantConnect/received_events","type":"Organization","site_admin":false},"repo":{"id":27251463,"name":"Lean","full_name":"QuantConnect/Lean","owner":{"login":"QuantConnect","id":3912814,"avatar_url":"https://avatars0.githubusercontent.com/u/3912814?v=4","gravatar_id":"","url":"https://api.github.com/users/QuantConnect","html_url":"https://github.com/QuantConnect","followers_url":"https://api.github.com/users/QuantConnect/followers","following_url":"https://api.github.com/users/QuantConnect/following{/other_user}","gists_url":"https://api.github.com/users/QuantConnect/gists{/gist_id}","starred_url":"https://api.github.com/users/QuantConnect/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/QuantConnect/subscriptions","organizations_url":"https://api.github.com/users/QuantConnect/orgs","repos_url":"https://api.github.com/users/QuantConnect/repos","events_url":"https://api.github.com/users/QuantConnect/events{/privacy}","received_events_url":"https://api.github.com/users/QuantConnect/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/QuantConnect/Lean","description":"Lean Algorithmic Trading Engine by QuantConnect (C#, Python, F#)","fork":false,"url":"https://api.github.com/repos/QuantConnect/Lean","forks_url":"https://api.github.com/repos/QuantConnect/Lean/forks","keys_url":"https://api.github.com/repos/QuantConnect/Lean/keys{/key_id}","collaborators_url":"https://api.github.com/repos/QuantConnect/Lean/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/QuantConnect/Lean/teams","hooks_url":"https://api.github.com/repos/QuantConnect/Lean/hooks","issue_events_url":"https://api.github.com/repos/QuantConnect/Lean/issues/events{/number}","events_url":"https://api.github.com/repos/QuantConnect/Lean/events","assignees_url":"https://api.github.com/repos/QuantConnect/Lean/assignees{/user}","branches_url":"https://api.github.com/repos/QuantConnect/Lean/branches{/branch}","tags_url":"https://api.github.com/repos/QuantConnect/Lean/tags","blobs_url":"https://api.github.com/repos/QuantConnect/Lean/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/QuantConnect/Lean/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/QuantConnect/Lean/git/refs{/sha}","trees_url":"https://api.github.com/repos/QuantConnect/Lean/git/trees{/sha}","statuses_url":"https://api.github.com/repos/QuantConnect/Lean/statuses/{sha}","languages_url":"https://api.github.com/repos/QuantConnect/Lean/languages","stargazers_url":"https://api.github.com/repos/QuantConnect/Lean/stargazers","contributors_url":"https://api.github.com/repos/QuantConnect/Lean/contributors","subscribers_url":"https://api.github.com/repos/QuantConnect/Lean/subscribers","subscription_url":"https://api.github.com/repos/QuantConnect/Lean/subscription","commits_url":"https://api.github.com/repos/QuantConnect/Lean/commits{/sha}","git_commits_url":"https://api.github.com/repos/QuantConnect/Lean/git/commits{/sha}","comments_url":"https://api.github.com/repos/QuantConnect/Lean/comments{/number}","issue_comment_url":"https://api.github.com/repos/QuantConnect/Lean/issues/comments{/number}","contents_url":"https://api.github.com/repos/QuantConnect/Lean/contents/{+path}","compare_url":"https://api.github.com/repos/QuantConnect/Lean/compare/{base}...{head}","merges_url":"https://api.github.com/repos/QuantConnect/Lean/merges","archive_url":"https://api.github.com/repos/QuantConnect/Lean/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/QuantConnect/Lean/downloads","issues_url":"https://api.github.com/repos/QuantConnect/Lean/issues{/number}","pulls_url":"https://api.github.com/repos/QuantConnect/Lean/pulls{/number}","milestones_url":"https://api.github.com/repos/QuantConnect/Lean/milestones{/number}","notifications_url":"https://api.github.com/repos/QuantConnect/Lean/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/QuantConnect/Lean/labels{/name}","releases_url":"https://api.github.com/repos/QuantConnect/Lean/releases{/id}","deployments_url":"https://api.github.com/repos/QuantConnect/Lean/deployments","created_at":"2014-11-28T04:20:19Z","updated_at":"2018-03-01T16:17:33Z","pushed_at":"2018-03-01T17:26:23Z","git_url":"git://github.com/QuantConnect/Lean.git","ssh_url":"git@github.com:QuantConnect/Lean.git","clone_url":"https://github.com/QuantConnect/Lean.git","svn_url":"https://github.com/QuantConnect/Lean","homepage":"http://lean.io","size":196245,"stargazers_count":1470,"watchers_count":1470,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":851,"mirror_url":null,"archived":false,"open_issues_count":96,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":851,"open_issues":96,"watchers":1470,"default_branch":"master"}},"base":{"label":"QuantConnect:master","ref":"master","sha":"57b5607c32adfed53f5837112c5356806afa67a0","user":{"login":"QuantConnect","id":3912814,"avatar_url":"https://avatars0.githubusercontent.com/u/3912814?v=4","gravatar_id":"","url":"https://api.github.com/users/QuantConnect","html_url":"https://github.com/QuantConnect","followers_url":"https://api.github.com/users/QuantConnect/followers","following_url":"https://api.github.com/users/QuantConnect/following{/other_user}","gists_url":"https://api.github.com/users/QuantConnect/gists{/gist_id}","starred_url":"https://api.github.com/users/QuantConnect/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/QuantConnect/subscriptions","organizations_url":"https://api.github.com/users/QuantConnect/orgs","repos_url":"https://api.github.com/users/QuantConnect/repos","events_url":"https://api.github.com/users/QuantConnect/events{/privacy}","received_events_url":"https://api.github.com/users/QuantConnect/received_events","type":"Organization","site_admin":false},"repo":{"id":27251463,"name":"Lean","full_name":"QuantConnect/Lean","owner":{"login":"QuantConnect","id":3912814,"avatar_url":"https://avatars0.githubusercontent.com/u/3912814?v=4","gravatar_id":"","url":"https://api.github.com/users/QuantConnect","html_url":"https://github.com/QuantConnect","followers_url":"https://api.github.com/users/QuantConnect/followers","following_url":"https://api.github.com/users/QuantConnect/following{/other_user}","gists_url":"https://api.github.com/users/QuantConnect/gists{/gist_id}","starred_url":"https://api.github.com/users/QuantConnect/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/QuantConnect/subscriptions","organizations_url":"https://api.github.com/users/QuantConnect/orgs","repos_url":"https://api.github.com/users/QuantConnect/repos","events_url":"https://api.github.com/users/QuantConnect/events{/privacy}","received_events_url":"https://api.github.com/users/QuantConnect/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/QuantConnect/Lean","description":"Lean Algorithmic Trading Engine by QuantConnect (C#, Python, F#)","fork":false,"url":"https://api.github.com/repos/QuantConnect/Lean","forks_url":"https://api.github.com/repos/QuantConnect/Lean/forks","keys_url":"https://api.github.com/repos/QuantConnect/Lean/keys{/key_id}","collaborators_url":"https://api.github.com/repos/QuantConnect/Lean/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/QuantConnect/Lean/teams","hooks_url":"https://api.github.com/repos/QuantConnect/Lean/hooks","issue_events_url":"https://api.github.com/repos/QuantConnect/Lean/issues/events{/number}","events_url":"https://api.github.com/repos/QuantConnect/Lean/events","assignees_url":"https://api.github.com/repos/QuantConnect/Lean/assignees{/user}","branches_url":"https://api.github.com/repos/QuantConnect/Lean/branches{/branch}","tags_url":"https://api.github.com/repos/QuantConnect/Lean/tags","blobs_url":"https://api.github.com/repos/QuantConnect/Lean/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/QuantConnect/Lean/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/QuantConnect/Lean/git/refs{/sha}","trees_url":"https://api.github.com/repos/QuantConnect/Lean/git/trees{/sha}","statuses_url":"https://api.github.com/repos/QuantConnect/Lean/statuses/{sha}","languages_url":"https://api.github.com/repos/QuantConnect/Lean/languages","stargazers_url":"https://api.github.com/repos/QuantConnect/Lean/stargazers","contributors_url":"https://api.github.com/repos/QuantConnect/Lean/contributors","subscribers_url":"https://api.github.com/repos/QuantConnect/Lean/subscribers","subscription_url":"https://api.github.com/repos/QuantConnect/Lean/subscription","commits_url":"https://api.github.com/repos/QuantConnect/Lean/commits{/sha}","git_commits_url":"https://api.github.com/repos/QuantConnect/Lean/git/commits{/sha}","comments_url":"https://api.github.com/repos/QuantConnect/Lean/comments{/number}","issue_comment_url":"https://api.github.com/repos/QuantConnect/Lean/issues/comments{/number}","contents_url":"https://api.github.com/repos/QuantConnect/Lean/contents/{+path}","compare_url":"https://api.github.com/repos/QuantConnect/Lean/compare/{base}...{head}","merges_url":"https://api.github.com/repos/QuantConnect/Lean/merges","archive_url":"https://api.github.com/repos/QuantConnect/Lean/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/QuantConnect/Lean/downloads","issues_url":"https://api.github.com/repos/QuantConnect/Lean/issues{/number}","pulls_url":"https://api.github.com/repos/QuantConnect/Lean/pulls{/number}","milestones_url":"https://api.github.com/repos/QuantConnect/Lean/milestones{/number}","notifications_url":"https://api.github.com/repos/QuantConnect/Lean/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/QuantConnect/Lean/labels{/name}","releases_url":"https://api.github.com/repos/QuantConnect/Lean/releases{/id}","deployments_url":"https://api.github.com/repos/QuantConnect/Lean/deployments","created_at":"2014-11-28T04:20:19Z","updated_at":"2018-03-01T16:17:33Z","pushed_at":"2018-03-01T17:26:23Z","git_url":"git://github.com/QuantConnect/Lean.git","ssh_url":"git@github.com:QuantConnect/Lean.git","clone_url":"https://github.com/QuantConnect/Lean.git","svn_url":"https://github.com/QuantConnect/Lean","homepage":"http://lean.io","size":196245,"stargazers_count":1470,"watchers_count":1470,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":851,"mirror_url":null,"archived":false,"open_issues_count":96,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":851,"open_issues":96,"watchers":1470,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/1631"},"html":{"href":"https://github.com/QuantConnect/Lean/pull/1631"},"issue":{"href":"https://api.github.com/repos/QuantConnect/Lean/issues/1631"},"comments":{"href":"https://api.github.com/repos/QuantConnect/Lean/issues/1631/comments"},"review_comments":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/1631/comments"},"review_comment":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/1631/commits"},"statuses":{"href":"https://api.github.com/repos/QuantConnect/Lean/statuses/72b14321e9582a202b852f33ea6404b176a13d37"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"jaredbroad"}}