{"action":"created","comment":{"url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/comments/186438483","pull_request_review_id":118002481,"id":186438483,"diff_hunk":"@@ -584,6 +676,282 @@ def prune_output_blocks_in_compound_match_query(compound_match_query):\n         return CompoundMatchQuery(match_queries=match_queries)\n \n \n+def _construct_location_to_filter_list(match_query):\n+    \"\"\"Return a dict mapping location -> list of filters applied at that location.\n+\n+    Args:\n+        match_query: MatchQuery object from which to extract location -> filters dict\n+\n+    Returns:\n+        dict mapping each location in match_query to a list of\n+            Filter objects applied at that location\n+    \"\"\"\n+    # For each location, all filters for that location should be applied at the first instance.\n+    # This function collects a list of all filters corresponding to each location\n+    # present in the given MatchQuery.\n+    location_to_filters = {}\n+    for match_traversal in match_query.match_traversals:\n+        for match_step in match_traversal:\n+            current_filter = match_step.where_block\n+            if current_filter is not None:\n+                current_location = match_step.as_block.location\n+                location_to_filters.setdefault(current_location, []).append(\n+                    current_filter)\n+\n+    return location_to_filters\n+\n+\n+def _filter_list_to_conjunction_expression(filter_list):\n+    \"\"\"Convert a list of filters to an Expression that is the conjunction of all of them.\"\"\"\n+    if not isinstance(filter_list, list):\n+        raise AssertionError(u'Expected `list`, Received {}.'.format(filter_list))\n+\n+    if not isinstance(filter_list[0], Filter):\n+        raise AssertionError(u'Non-Filter object {} found in filter_list'\n+                             .format(filter_list[0]))\n+\n+    if len(filter_list) == 1:\n+        return filter_list[0].predicate\n+    else:\n+        return BinaryComposition(u'&&',\n+                                 _filter_list_to_conjunction_expression(filter_list[1:]),\n+                                 filter_list[0].predicate)\n+\n+\n+def _collect_filters_to_first_location_in_match_traversal(match_traversal, location_to_filters):\n+    \"\"\"Compose all filters for a specific location into its first occurence in given traversal.\n+\n+    For each location in the given match traversal,\n+    construct a conjunction of all filters applied to that location,\n+    and apply the resulting Filter to the first instance of the location.\n+\n+    Args:\n+        match_traversal: list of MatchStep objects to be lowered\n+        location_to_filters: dict mapping each location in the MatchQuery which contains\n+            the given match traversal to a list of filters applied at that location\n+\n+    Returns:\n+        new list of MatchStep objects with all filters for any given location composed into\n+        a single filter which is applied to the first instance of that location\n+    \"\"\"\n+    new_match_traversal = []\n+    for match_step in match_traversal:\n+        # Apply all filters for a location to the first occurence of that location\n+        if match_step.as_block.location in location_to_filters:\n+            where_block = Filter(\n+                _filter_list_to_conjunction_expression(\n+                    location_to_filters[match_step.as_block.location]\n+                )\n+            )\n+            # Delete the location entry. No further filters needed for this location.\n+            # If the same location is found in another call to this function,\n+            # no filters will be added.\n+            del location_to_filters[match_step.as_block.location]\n+        else:\n+            where_block = None\n+\n+        new_match_step = MatchStep(\n+            root_block=match_step.root_block,\n+            coerce_type_block=match_step.coerce_type_block,\n+            where_block=where_block,\n+            as_block=match_step.as_block\n+        )\n+        new_match_traversal.append(new_match_step)\n+    return new_match_traversal\n+\n+\n+def collect_filters_to_first_location_instance(compound_match_query):\n+    \"\"\"Collect all filters for a particular location to the first instance of the location.\"\"\"\n+    # Adding edge field non-exsistence filters in `_prune_traverse_using_omitted_locations`\n+    # may result in filters being applied to locations after their first occurence.\n+    # OrientDB does not resolve this behavior correctly.\n+    # Therefore, for each MatchQuery, we collect all the filters for each location in a list.\n+    # For each location, we make a conjunction of the filter list (`_predicate_list_to_where_block`)\n+    # and apply the new filter to only the first instance of that location.\n+    # All other instances will have no filters (None).\n+    new_match_queries = []\n+    # Each MatchQuery has a different set of locations, and associated Filters.\n+    # Hence, each of them is processed independently.\n+    for match_query in compound_match_query.match_queries:\n+        # Construct mapping from location -> list of filter predicates applied at that location\n+        location_to_predicates = _construct_location_to_filter_list(match_query)\n+\n+        new_match_traversals = []\n+        for match_traversal in match_query.match_traversals:\n+            new_match_traversal = _collect_filters_to_first_location_in_match_traversal(\n+                match_traversal, location_to_predicates)\n+            new_match_traversals.append(new_match_traversal)\n+\n+        new_match_queries.append(\n+            MatchQuery(\n+                match_traversals=new_match_traversals,\n+                folds=match_query.folds,\n+                output_block=match_query.output_block\n+            )\n+        )\n+\n+    return CompoundMatchQuery(match_queries=new_match_queries)\n+\n+\n+def _update_context_field_binary_composition(expression, present_locations):\n+    \"\"\"Lower BinaryCompositions involving non-existent ContextFields to True.\n+\n+    Args:\n+        expression: BinaryComposition with at least one ContextField operand\n+\n+    Returns:\n+        TrueLiteral iff either ContextField operand is not in `present_locations`,\n+        and the original expression otherwise\n+    \"\"\"\n+    if isinstance(expression.left, ContextField):\n+        context_field = expression.left\n+        location_name, _ = context_field.location.get_location_name()\n+        if location_name not in present_locations:\n+            return TrueLiteral\n+\n+    if isinstance(expression.right, ContextField):\n+        context_field = expression.right\n+        location_name, _ = context_field.location.get_location_name()\n+        if location_name not in present_locations:\n+            return TrueLiteral\n+\n+    return expression\n+\n+\n+def _simplify_non_context_field_binary_composition(expression):\n+    \"\"\"Return a simplified BinaryComposition if either operand is a TrueLiteral.\n+\n+    Args:\n+        expression: BinaryComposition without any ContextField operand(s)\n+\n+    Returns:\n+        simplified expression if the given expression is a disjunction/conjunction\n+        and one of it's operands is a TrueLiteral,\n+        and the original expression otherwise\n+    \"\"\"\n+    if expression.operator == u'||':\n+        if expression.left == TrueLiteral or expression.right == TrueLiteral:\n+            return TrueLiteral\n+        else:\n+            return expression\n+    elif expression.operator == u'&&':\n+        if expression.left == TrueLiteral:\n+            return expression.right\n+        if expression.right == TrueLiteral:\n+            return expression.left\n+        else:\n+            return expression\n+    else:\n+        return expression\n+\n+\n+def _simplify_ternary_conditional(expression):\n+    \"\"\"Return the `if_true` clause if the predicate of the TernaryConditional is a TrueLiteral.\n+\n+    Args:\n+        expression: TernaryConditional to be simplified.\n+\n+    Returns:\n+        the if_true expression of the given TernaryConditional, if the predicate is True,\n+        and the original TernaryConditional otherwise\n+    \"\"\"\n+    if expression.predicate == TrueLiteral:\n+        return expression.if_true\n+    else:\n+        return expression\n+\n+\n+def _update_context_field_expression(present_locations, expression):\n+    \"\"\"Lower Expressions involving non-existent ContextFields True, and simplify result.\"\"\"","path":"graphql_compiler/compiler/ir_lowering_match.py","position":517,"original_position":517,"commit_id":"0e0c7d71efc9594629b002c5de783c918a4d5356","original_commit_id":"0e0c7d71efc9594629b002c5de783c918a4d5356","user":{"login":"obi1kenobi","id":2348618,"avatar_url":"https://avatars2.githubusercontent.com/u/2348618?v=4","gravatar_id":"","url":"https://api.github.com/users/obi1kenobi","html_url":"https://github.com/obi1kenobi","followers_url":"https://api.github.com/users/obi1kenobi/followers","following_url":"https://api.github.com/users/obi1kenobi/following{/other_user}","gists_url":"https://api.github.com/users/obi1kenobi/gists{/gist_id}","starred_url":"https://api.github.com/users/obi1kenobi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/obi1kenobi/subscriptions","organizations_url":"https://api.github.com/users/obi1kenobi/orgs","repos_url":"https://api.github.com/users/obi1kenobi/repos","events_url":"https://api.github.com/users/obi1kenobi/events{/privacy}","received_events_url":"https://api.github.com/users/obi1kenobi/received_events","type":"User","site_admin":false},"body":"typo: `involving non-existent ContextFields True`","created_at":"2018-05-07T14:22:46Z","updated_at":"2018-05-07T14:30:47Z","html_url":"https://github.com/kensho-technologies/graphql-compiler/pull/69#discussion_r186438483","pull_request_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/69","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/comments/186438483"},"html":{"href":"https://github.com/kensho-technologies/graphql-compiler/pull/69#discussion_r186438483"},"pull_request":{"href":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/69"}}},"pull_request":{"url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/69","id":183529678,"html_url":"https://github.com/kensho-technologies/graphql-compiler/pull/69","diff_url":"https://github.com/kensho-technologies/graphql-compiler/pull/69.diff","patch_url":"https://github.com/kensho-technologies/graphql-compiler/pull/69.patch","issue_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/issues/69","number":69,"state":"open","locked":false,"title":"Optional traversal fixes","user":{"login":"amartyashankha","id":5566382,"avatar_url":"https://avatars0.githubusercontent.com/u/5566382?v=4","gravatar_id":"","url":"https://api.github.com/users/amartyashankha","html_url":"https://github.com/amartyashankha","followers_url":"https://api.github.com/users/amartyashankha/followers","following_url":"https://api.github.com/users/amartyashankha/following{/other_user}","gists_url":"https://api.github.com/users/amartyashankha/gists{/gist_id}","starred_url":"https://api.github.com/users/amartyashankha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amartyashankha/subscriptions","organizations_url":"https://api.github.com/users/amartyashankha/orgs","repos_url":"https://api.github.com/users/amartyashankha/repos","events_url":"https://api.github.com/users/amartyashankha/events{/privacy}","received_events_url":"https://api.github.com/users/amartyashankha/received_events","type":"User","site_admin":false},"body":"Added support for `@recurse` and `@tag` within `@optional`.\r\nAllowing expansion of multiple vertex fields within `@optional`.","created_at":"2018-04-23T19:11:24Z","updated_at":"2018-05-07T14:30:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e2909d1e09d50afa3d42c6345ac13dba1b167f3d","assignee":null,"assignees":[],"requested_reviewers":[{"login":"jssandh2","id":8229155,"avatar_url":"https://avatars1.githubusercontent.com/u/8229155?v=4","gravatar_id":"","url":"https://api.github.com/users/jssandh2","html_url":"https://github.com/jssandh2","followers_url":"https://api.github.com/users/jssandh2/followers","following_url":"https://api.github.com/users/jssandh2/following{/other_user}","gists_url":"https://api.github.com/users/jssandh2/gists{/gist_id}","starred_url":"https://api.github.com/users/jssandh2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jssandh2/subscriptions","organizations_url":"https://api.github.com/users/jssandh2/orgs","repos_url":"https://api.github.com/users/jssandh2/repos","events_url":"https://api.github.com/users/jssandh2/events{/privacy}","received_events_url":"https://api.github.com/users/jssandh2/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/69/commits","review_comments_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/69/comments","review_comment_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/issues/69/comments","statuses_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/statuses/0e0c7d71efc9594629b002c5de783c918a4d5356","head":{"label":"amartyashankha:optional_traversal_branch","ref":"optional_traversal_branch","sha":"0e0c7d71efc9594629b002c5de783c918a4d5356","user":{"login":"amartyashankha","id":5566382,"avatar_url":"https://avatars0.githubusercontent.com/u/5566382?v=4","gravatar_id":"","url":"https://api.github.com/users/amartyashankha","html_url":"https://github.com/amartyashankha","followers_url":"https://api.github.com/users/amartyashankha/followers","following_url":"https://api.github.com/users/amartyashankha/following{/other_user}","gists_url":"https://api.github.com/users/amartyashankha/gists{/gist_id}","starred_url":"https://api.github.com/users/amartyashankha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amartyashankha/subscriptions","organizations_url":"https://api.github.com/users/amartyashankha/orgs","repos_url":"https://api.github.com/users/amartyashankha/repos","events_url":"https://api.github.com/users/amartyashankha/events{/privacy}","received_events_url":"https://api.github.com/users/amartyashankha/received_events","type":"User","site_admin":false},"repo":{"id":127952010,"name":"graphql-compiler","full_name":"amartyashankha/graphql-compiler","owner":{"login":"amartyashankha","id":5566382,"avatar_url":"https://avatars0.githubusercontent.com/u/5566382?v=4","gravatar_id":"","url":"https://api.github.com/users/amartyashankha","html_url":"https://github.com/amartyashankha","followers_url":"https://api.github.com/users/amartyashankha/followers","following_url":"https://api.github.com/users/amartyashankha/following{/other_user}","gists_url":"https://api.github.com/users/amartyashankha/gists{/gist_id}","starred_url":"https://api.github.com/users/amartyashankha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amartyashankha/subscriptions","organizations_url":"https://api.github.com/users/amartyashankha/orgs","repos_url":"https://api.github.com/users/amartyashankha/repos","events_url":"https://api.github.com/users/amartyashankha/events{/privacy}","received_events_url":"https://api.github.com/users/amartyashankha/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/amartyashankha/graphql-compiler","description":"Turn complex GraphQL queries into optimized database queries.","fork":true,"url":"https://api.github.com/repos/amartyashankha/graphql-compiler","forks_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/forks","keys_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/keys{/key_id}","collaborators_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/teams","hooks_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/hooks","issue_events_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/issues/events{/number}","events_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/events","assignees_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/assignees{/user}","branches_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/branches{/branch}","tags_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/tags","blobs_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/git/refs{/sha}","trees_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/git/trees{/sha}","statuses_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/statuses/{sha}","languages_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/languages","stargazers_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/stargazers","contributors_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/contributors","subscribers_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/subscribers","subscription_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/subscription","commits_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/commits{/sha}","git_commits_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/git/commits{/sha}","comments_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/comments{/number}","issue_comment_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/issues/comments{/number}","contents_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/contents/{+path}","compare_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/compare/{base}...{head}","merges_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/merges","archive_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/downloads","issues_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/issues{/number}","pulls_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/pulls{/number}","milestones_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/milestones{/number}","notifications_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/labels{/name}","releases_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/releases{/id}","deployments_url":"https://api.github.com/repos/amartyashankha/graphql-compiler/deployments","created_at":"2018-04-03T18:34:09Z","updated_at":"2018-05-01T14:41:42Z","pushed_at":"2018-05-07T14:21:47Z","git_url":"git://github.com/amartyashankha/graphql-compiler.git","ssh_url":"git@github.com:amartyashankha/graphql-compiler.git","clone_url":"https://github.com/amartyashankha/graphql-compiler.git","svn_url":"https://github.com/amartyashankha/graphql-compiler","homepage":null,"size":470,"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":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"kensho-technologies:optional_traversal","ref":"optional_traversal","sha":"8b2bba5fb96b12d131e00141e68e4b0d3fd03c89","user":{"login":"kensho-technologies","id":26574236,"avatar_url":"https://avatars0.githubusercontent.com/u/26574236?v=4","gravatar_id":"","url":"https://api.github.com/users/kensho-technologies","html_url":"https://github.com/kensho-technologies","followers_url":"https://api.github.com/users/kensho-technologies/followers","following_url":"https://api.github.com/users/kensho-technologies/following{/other_user}","gists_url":"https://api.github.com/users/kensho-technologies/gists{/gist_id}","starred_url":"https://api.github.com/users/kensho-technologies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kensho-technologies/subscriptions","organizations_url":"https://api.github.com/users/kensho-technologies/orgs","repos_url":"https://api.github.com/users/kensho-technologies/repos","events_url":"https://api.github.com/users/kensho-technologies/events{/privacy}","received_events_url":"https://api.github.com/users/kensho-technologies/received_events","type":"Organization","site_admin":false},"repo":{"id":97647864,"name":"graphql-compiler","full_name":"kensho-technologies/graphql-compiler","owner":{"login":"kensho-technologies","id":26574236,"avatar_url":"https://avatars0.githubusercontent.com/u/26574236?v=4","gravatar_id":"","url":"https://api.github.com/users/kensho-technologies","html_url":"https://github.com/kensho-technologies","followers_url":"https://api.github.com/users/kensho-technologies/followers","following_url":"https://api.github.com/users/kensho-technologies/following{/other_user}","gists_url":"https://api.github.com/users/kensho-technologies/gists{/gist_id}","starred_url":"https://api.github.com/users/kensho-technologies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kensho-technologies/subscriptions","organizations_url":"https://api.github.com/users/kensho-technologies/orgs","repos_url":"https://api.github.com/users/kensho-technologies/repos","events_url":"https://api.github.com/users/kensho-technologies/events{/privacy}","received_events_url":"https://api.github.com/users/kensho-technologies/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kensho-technologies/graphql-compiler","description":"Turn complex GraphQL queries into optimized database queries.","fork":false,"url":"https://api.github.com/repos/kensho-technologies/graphql-compiler","forks_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/forks","keys_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/teams","hooks_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/hooks","issue_events_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/issues/events{/number}","events_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/events","assignees_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/assignees{/user}","branches_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/branches{/branch}","tags_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/tags","blobs_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/git/refs{/sha}","trees_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/statuses/{sha}","languages_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/languages","stargazers_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/stargazers","contributors_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/contributors","subscribers_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/subscribers","subscription_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/subscription","commits_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/commits{/sha}","git_commits_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/git/commits{/sha}","comments_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/comments{/number}","issue_comment_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/issues/comments{/number}","contents_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/contents/{+path}","compare_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/merges","archive_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/downloads","issues_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/issues{/number}","pulls_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls{/number}","milestones_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/milestones{/number}","notifications_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/labels{/name}","releases_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/releases{/id}","deployments_url":"https://api.github.com/repos/kensho-technologies/graphql-compiler/deployments","created_at":"2017-07-18T22:03:41Z","updated_at":"2018-05-03T01:24:37Z","pushed_at":"2018-05-07T14:21:48Z","git_url":"git://github.com/kensho-technologies/graphql-compiler.git","ssh_url":"git@github.com:kensho-technologies/graphql-compiler.git","clone_url":"https://github.com/kensho-technologies/graphql-compiler.git","svn_url":"https://github.com/kensho-technologies/graphql-compiler","homepage":null,"size":293,"stargazers_count":244,"watchers_count":244,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":20,"mirror_url":null,"archived":false,"open_issues_count":22,"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":20,"open_issues":22,"watchers":244,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/69"},"html":{"href":"https://github.com/kensho-technologies/graphql-compiler/pull/69"},"issue":{"href":"https://api.github.com/repos/kensho-technologies/graphql-compiler/issues/69"},"comments":{"href":"https://api.github.com/repos/kensho-technologies/graphql-compiler/issues/69/comments"},"review_comments":{"href":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/69/comments"},"review_comment":{"href":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kensho-technologies/graphql-compiler/pulls/69/commits"},"statuses":{"href":"https://api.github.com/repos/kensho-technologies/graphql-compiler/statuses/0e0c7d71efc9594629b002c5de783c918a4d5356"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"obi1kenobi"}}