{"action":"created","comment":{"url":"https://api.github.com/repos/puppetlabs/puppet/pulls/comments/58787386","id":58787386,"diff_hunk":"@@ -0,0 +1,539 @@\n+module Puppet::Pops\n+module Types\n+\n+# @api public\n+class PObjectType < PAnyType\n+  KEY_ANNOTATIONS = 'annotations'.freeze\n+  KEY_ATTRIBUTES = 'attributes'.freeze\n+  KEY_CHECKS = 'checks'.freeze\n+  KEY_EQUALITY = 'equality'.freeze\n+  KEY_EQUALITY_INCLUDE_TYPE = 'equality_include_type'.freeze\n+  KEY_FINAL = 'final'.freeze\n+  KEY_FUNCTIONS = 'functions'.freeze\n+  KEY_KIND = 'kind'.freeze\n+  KEY_OVERRIDE = 'override'.freeze\n+  KEY_PARENT = 'parent'.freeze\n+  KEY_TYPE = 'type'.freeze\n+  KEY_VALUE = 'value'.freeze\n+\n+  ATTRIBUTE_KIND_CONSTANT = 'constant'.freeze\n+  ATTRIBUTE_KIND_DERIVED = 'derived'.freeze\n+  ATTRIBUTE_KIND_GIVEN_OR_DERIVED = 'given_or_derived'.freeze\n+  TYPE_ATTRIBUTE_KIND = TypeFactory.enum(ATTRIBUTE_KIND_CONSTANT, ATTRIBUTE_KIND_DERIVED, ATTRIBUTE_KIND_GIVEN_OR_DERIVED)\n+\n+  TYPE_ANNOTATION_KEY_TYPE = PType::DEFAULT # TBD\n+  TYPE_ANNOTATION_VALUE_TYPE = PStructType::DEFAULT #TBD\n+  TYPE_ANNOTATIONS = PHashType.new(TYPE_ANNOTATION_KEY_TYPE, TYPE_ANNOTATION_VALUE_TYPE)\n+\n+  TYPE_MEMBER_NAME = PPatternType.new([PRegexpType.new(Patterns::PARAM_NAME)])\n+\n+  TYPE_ATTRIBUTE = TypeFactory.struct({\n+    KEY_TYPE => PType::DEFAULT,\n+    KEY_ANNOTATIONS => TypeFactory.optional(TYPE_ANNOTATIONS),\n+    KEY_FINAL => TypeFactory.optional(PBooleanType::DEFAULT),\n+    KEY_OVERRIDE => TypeFactory.optional(PBooleanType::DEFAULT),\n+    KEY_KIND => TypeFactory.optional(TYPE_ATTRIBUTE_KIND),\n+    KEY_VALUE => PAnyType::DEFAULT\n+  })\n+  TYPE_ATTRIBUTES = TypeFactory.hash_kv(TYPE_MEMBER_NAME, TypeFactory.not_undef)\n+\n+  TYPE_FUNCTION_TYPE = PType.new(PCallableType::DEFAULT)\n+\n+  TYPE_FUNCTION = TypeFactory.struct({\n+    KEY_TYPE => TYPE_FUNCTION_TYPE,\n+    KEY_ANNOTATIONS => TypeFactory.optional(TYPE_ANNOTATIONS),\n+    KEY_FINAL => TypeFactory.optional(PBooleanType::DEFAULT),\n+    KEY_OVERRIDE => TypeFactory.optional(PBooleanType::DEFAULT)\n+  })\n+  TYPE_FUNCTIONS = TypeFactory.hash_kv(TYPE_MEMBER_NAME, TypeFactory.not_undef)\n+\n+  TYPE_EQUALITY = TypeFactory.variant(TYPE_MEMBER_NAME, TypeFactory.array_of(TYPE_MEMBER_NAME))\n+\n+  TYPE_CHECKS = PAnyType::DEFAULT # TBD\n+\n+  TYPE_OBJECT_I12N = TypeFactory.struct({\n+    KEY_PARENT => TypeFactory.optional(PType::DEFAULT),\n+    KEY_ATTRIBUTES => TypeFactory.optional(TYPE_ATTRIBUTES),\n+    KEY_FUNCTIONS => TypeFactory.optional(TYPE_FUNCTIONS),\n+    KEY_EQUALITY => TypeFactory.optional(TYPE_EQUALITY),\n+    KEY_EQUALITY_INCLUDE_TYPE => TypeFactory.optional(PBooleanType::DEFAULT),\n+    KEY_CHECKS =>  TypeFactory.optional(TYPE_CHECKS),\n+    KEY_ANNOTATIONS =>  TypeFactory.optional(TYPE_ANNOTATIONS)\n+  })\n+\n+  # @abstract Encapsulates behavior common to {PAttribute} and {PFunction}\n+  # @api public\n+  class PAnnotatedMember\n+\n+    # @return [String] the name of this member\n+    # @api public\n+    attr_reader :name\n+\n+    # @return [PAnyType] the type of this member\n+    # @api public\n+    attr_reader :type\n+\n+    # @return [Hash{PType => Hash}] the annotations or `nil`\n+    # @api public\n+    attr_reader :annotations\n+\n+    # @param name [String] The name of the member\n+    # @param [Hash{String=>Object}] i12n_hash\n+    # @option i12n_hash [PAnyType] 'type' The member type (required)\n+    # @option i12n_hash [Boolean] 'override' `true` if this feature must override an inherited feature. Default is `false`.\n+    # @option i12n_hash [Boolean] 'final' `true` if this feature cannot be overridden. Default is `false`.\n+    # @option i12n_hash [Hash{PType => Hash}] 'annotations' Annotations hash. Default is `nil`.\n+    # @api public\n+    def initialize(name, i12n_hash)\n+      @name = name\n+      @type = i12n_hash[KEY_TYPE]\n+      @override = i12n_hash[KEY_OVERRIDE]\n+      @override = false if @override.nil?\n+      @final = i12n_hash[KEY_FINAL]\n+      @final = false if @final.nil?\n+      @annotations = i12n_hash[KEY_ANNOTATIONS]\n+      @annotations.freeze unless @annotations.nil?\n+    end\n+\n+    # Delegates to the contained type\n+    # @param visitor [TypeAcceptor] the visitor\n+    # @param guard [RecursionGuard] guard against recursion. Only used by internal calls\n+    # @api public\n+    def accept(visitor, guard)\n+      @type.accept(visitor, guard)\n+      @annotations.each_key { |key| key.accept(visitor, guard) } unless @annotations.nil?\n+    end\n+\n+    # Checks if the this _member_ overrides an inherited member, and if so, that this member is declared with override = true and that\n+    # the inherited member accepts to be overridden by this member.\n+    #\n+    # @param parent_members [Hash{String=>PAnnotatedMember}] the hash of inherited members\n+    # @return [PAnnotatedMember] this instance\n+    # @raises [Puppet::ParseError] if the assertion fails\n+    # @api private\n+    def assert_override(parent_members)\n+      parent_member = parent_members[@name]\n+      if parent_member.nil?\n+        raise Puppet::ParseError, \"expected #{label} to override an inherited #{feature_type}\" if @override\n+        self\n+      else\n+        parent_member.assert_can_be_overridden(self)\n+      end\n+    end\n+\n+    # Checks if the given _member_ can override this member.\n+    #\n+    # @param member [PAnnotatedMember] the overriding member\n+    # @return [PAnnotatedMember] its argument\n+    # @raises [Puppet::ParseError] if the assertion fails\n+    # @api private\n+    def assert_can_be_overridden(member)\n+      raise Puppet::ParseError, \"#{member.label} overrides inherited #{feature_type}\" unless self.class == member.class","path":"lib/puppet/pops/types/p_object_type.rb","position":131,"original_position":131,"commit_id":"6cee03ca5b6b3f4b4a0afc8e19f8e09881178c81","original_commit_id":"6cee03ca5b6b3f4b4a0afc8e19f8e09881178c81","user":{"login":"thallgren","id":209495,"avatar_url":"https://avatars.githubusercontent.com/u/209495?v=3","gravatar_id":"","url":"https://api.github.com/users/thallgren","html_url":"https://github.com/thallgren","followers_url":"https://api.github.com/users/thallgren/followers","following_url":"https://api.github.com/users/thallgren/following{/other_user}","gists_url":"https://api.github.com/users/thallgren/gists{/gist_id}","starred_url":"https://api.github.com/users/thallgren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thallgren/subscriptions","organizations_url":"https://api.github.com/users/thallgren/orgs","repos_url":"https://api.github.com/users/thallgren/repos","events_url":"https://api.github.com/users/thallgren/events{/privacy}","received_events_url":"https://api.github.com/users/thallgren/received_events","type":"User","site_admin":false},"body":"No it isn't actually. The output from this will be:\r\n\"attribute 'foo' overrides inherited function\"\r\n  or\r\n\"function 'foo' overrides inherited attribute\"\r\n","created_at":"2016-04-06T21:42:49Z","updated_at":"2016-04-06T21:42:49Z","html_url":"https://github.com/puppetlabs/puppet/pull/4742#discussion_r58787386","pull_request_url":"https://api.github.com/repos/puppetlabs/puppet/pulls/4742","_links":{"self":{"href":"https://api.github.com/repos/puppetlabs/puppet/pulls/comments/58787386"},"html":{"href":"https://github.com/puppetlabs/puppet/pull/4742#discussion_r58787386"},"pull_request":{"href":"https://api.github.com/repos/puppetlabs/puppet/pulls/4742"}}},"pull_request":{"url":"https://api.github.com/repos/puppetlabs/puppet/pulls/4742","id":61433674,"html_url":"https://github.com/puppetlabs/puppet/pull/4742","diff_url":"https://github.com/puppetlabs/puppet/pull/4742.diff","patch_url":"https://github.com/puppetlabs/puppet/pull/4742.patch","issue_url":"https://api.github.com/repos/puppetlabs/puppet/issues/4742","number":4742,"state":"open","locked":false,"title":"(PUP-5844) Add Object type to the Puppet Type system","user":{"login":"thallgren","id":209495,"avatar_url":"https://avatars.githubusercontent.com/u/209495?v=3","gravatar_id":"","url":"https://api.github.com/users/thallgren","html_url":"https://github.com/thallgren","followers_url":"https://api.github.com/users/thallgren/followers","following_url":"https://api.github.com/users/thallgren/following{/other_user}","gists_url":"https://api.github.com/users/thallgren/gists{/gist_id}","starred_url":"https://api.github.com/users/thallgren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thallgren/subscriptions","organizations_url":"https://api.github.com/users/thallgren/orgs","repos_url":"https://api.github.com/users/thallgren/repos","events_url":"https://api.github.com/users/thallgren/events{/privacy}","received_events_url":"https://api.github.com/users/thallgren/received_events","type":"User","site_admin":false},"body":"This commit adds a new Object type to the Puppet Type system. An\r\nObject may have attributes, functions, equality, checks, and\r\nannotations declared. It may also inherit from a parent type.\r\n\r\nThe Object type can be seen as the interface of an implementation, in\r\nthat it describes the contract that the implementation must fulfill.\r\nThe type will however not contain the actual implementation logic.\r\n\r\nThings not included in this commit:\r\n1. Logic around 'checks' (awaits spec)\r\n2. Logic around 'annotations' (awaits spec)\r\n3. The new-operator. Will be implemented together with 'checks' logic","created_at":"2016-03-02T17:12:37Z","updated_at":"2016-04-06T21:42:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b1005cb08c2d0e22d15c8f3ee83be787ec0a812b","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/puppetlabs/puppet/pulls/4742/commits","review_comments_url":"https://api.github.com/repos/puppetlabs/puppet/pulls/4742/comments","review_comment_url":"https://api.github.com/repos/puppetlabs/puppet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/puppetlabs/puppet/issues/4742/comments","statuses_url":"https://api.github.com/repos/puppetlabs/puppet/statuses/6cee03ca5b6b3f4b4a0afc8e19f8e09881178c81","head":{"label":"thallgren:issue/pup-5844/add-object-type","ref":"issue/pup-5844/add-object-type","sha":"6cee03ca5b6b3f4b4a0afc8e19f8e09881178c81","user":{"login":"thallgren","id":209495,"avatar_url":"https://avatars.githubusercontent.com/u/209495?v=3","gravatar_id":"","url":"https://api.github.com/users/thallgren","html_url":"https://github.com/thallgren","followers_url":"https://api.github.com/users/thallgren/followers","following_url":"https://api.github.com/users/thallgren/following{/other_user}","gists_url":"https://api.github.com/users/thallgren/gists{/gist_id}","starred_url":"https://api.github.com/users/thallgren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thallgren/subscriptions","organizations_url":"https://api.github.com/users/thallgren/orgs","repos_url":"https://api.github.com/users/thallgren/repos","events_url":"https://api.github.com/users/thallgren/events{/privacy}","received_events_url":"https://api.github.com/users/thallgren/received_events","type":"User","site_admin":false},"repo":{"id":15137589,"name":"puppet","full_name":"thallgren/puppet","owner":{"login":"thallgren","id":209495,"avatar_url":"https://avatars.githubusercontent.com/u/209495?v=3","gravatar_id":"","url":"https://api.github.com/users/thallgren","html_url":"https://github.com/thallgren","followers_url":"https://api.github.com/users/thallgren/followers","following_url":"https://api.github.com/users/thallgren/following{/other_user}","gists_url":"https://api.github.com/users/thallgren/gists{/gist_id}","starred_url":"https://api.github.com/users/thallgren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thallgren/subscriptions","organizations_url":"https://api.github.com/users/thallgren/orgs","repos_url":"https://api.github.com/users/thallgren/repos","events_url":"https://api.github.com/users/thallgren/events{/privacy}","received_events_url":"https://api.github.com/users/thallgren/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/thallgren/puppet","description":"Server automation framework and application","fork":true,"url":"https://api.github.com/repos/thallgren/puppet","forks_url":"https://api.github.com/repos/thallgren/puppet/forks","keys_url":"https://api.github.com/repos/thallgren/puppet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/thallgren/puppet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/thallgren/puppet/teams","hooks_url":"https://api.github.com/repos/thallgren/puppet/hooks","issue_events_url":"https://api.github.com/repos/thallgren/puppet/issues/events{/number}","events_url":"https://api.github.com/repos/thallgren/puppet/events","assignees_url":"https://api.github.com/repos/thallgren/puppet/assignees{/user}","branches_url":"https://api.github.com/repos/thallgren/puppet/branches{/branch}","tags_url":"https://api.github.com/repos/thallgren/puppet/tags","blobs_url":"https://api.github.com/repos/thallgren/puppet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/thallgren/puppet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/thallgren/puppet/git/refs{/sha}","trees_url":"https://api.github.com/repos/thallgren/puppet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/thallgren/puppet/statuses/{sha}","languages_url":"https://api.github.com/repos/thallgren/puppet/languages","stargazers_url":"https://api.github.com/repos/thallgren/puppet/stargazers","contributors_url":"https://api.github.com/repos/thallgren/puppet/contributors","subscribers_url":"https://api.github.com/repos/thallgren/puppet/subscribers","subscription_url":"https://api.github.com/repos/thallgren/puppet/subscription","commits_url":"https://api.github.com/repos/thallgren/puppet/commits{/sha}","git_commits_url":"https://api.github.com/repos/thallgren/puppet/git/commits{/sha}","comments_url":"https://api.github.com/repos/thallgren/puppet/comments{/number}","issue_comment_url":"https://api.github.com/repos/thallgren/puppet/issues/comments{/number}","contents_url":"https://api.github.com/repos/thallgren/puppet/contents/{+path}","compare_url":"https://api.github.com/repos/thallgren/puppet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/thallgren/puppet/merges","archive_url":"https://api.github.com/repos/thallgren/puppet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/thallgren/puppet/downloads","issues_url":"https://api.github.com/repos/thallgren/puppet/issues{/number}","pulls_url":"https://api.github.com/repos/thallgren/puppet/pulls{/number}","milestones_url":"https://api.github.com/repos/thallgren/puppet/milestones{/number}","notifications_url":"https://api.github.com/repos/thallgren/puppet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/thallgren/puppet/labels{/name}","releases_url":"https://api.github.com/repos/thallgren/puppet/releases{/id}","deployments_url":"https://api.github.com/repos/thallgren/puppet/deployments","created_at":"2013-12-12T14:09:32Z","updated_at":"2015-01-21T18:51:48Z","pushed_at":"2016-04-06T21:30:12Z","git_url":"git://github.com/thallgren/puppet.git","ssh_url":"git@github.com:thallgren/puppet.git","clone_url":"https://github.com/thallgren/puppet.git","svn_url":"https://github.com/thallgren/puppet","homepage":"http://www.puppetlabs.com/puppet/introduction/","size":50959,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"puppetlabs:master","ref":"master","sha":"02328a9b5617c9e0746f9403bab099035ca96492","user":{"login":"puppetlabs","id":234268,"avatar_url":"https://avatars.githubusercontent.com/u/234268?v=3","gravatar_id":"","url":"https://api.github.com/users/puppetlabs","html_url":"https://github.com/puppetlabs","followers_url":"https://api.github.com/users/puppetlabs/followers","following_url":"https://api.github.com/users/puppetlabs/following{/other_user}","gists_url":"https://api.github.com/users/puppetlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/puppetlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/puppetlabs/subscriptions","organizations_url":"https://api.github.com/users/puppetlabs/orgs","repos_url":"https://api.github.com/users/puppetlabs/repos","events_url":"https://api.github.com/users/puppetlabs/events{/privacy}","received_events_url":"https://api.github.com/users/puppetlabs/received_events","type":"Organization","site_admin":false},"repo":{"id":910744,"name":"puppet","full_name":"puppetlabs/puppet","owner":{"login":"puppetlabs","id":234268,"avatar_url":"https://avatars.githubusercontent.com/u/234268?v=3","gravatar_id":"","url":"https://api.github.com/users/puppetlabs","html_url":"https://github.com/puppetlabs","followers_url":"https://api.github.com/users/puppetlabs/followers","following_url":"https://api.github.com/users/puppetlabs/following{/other_user}","gists_url":"https://api.github.com/users/puppetlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/puppetlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/puppetlabs/subscriptions","organizations_url":"https://api.github.com/users/puppetlabs/orgs","repos_url":"https://api.github.com/users/puppetlabs/repos","events_url":"https://api.github.com/users/puppetlabs/events{/privacy}","received_events_url":"https://api.github.com/users/puppetlabs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/puppetlabs/puppet","description":"Server automation framework and application","fork":false,"url":"https://api.github.com/repos/puppetlabs/puppet","forks_url":"https://api.github.com/repos/puppetlabs/puppet/forks","keys_url":"https://api.github.com/repos/puppetlabs/puppet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/puppetlabs/puppet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/puppetlabs/puppet/teams","hooks_url":"https://api.github.com/repos/puppetlabs/puppet/hooks","issue_events_url":"https://api.github.com/repos/puppetlabs/puppet/issues/events{/number}","events_url":"https://api.github.com/repos/puppetlabs/puppet/events","assignees_url":"https://api.github.com/repos/puppetlabs/puppet/assignees{/user}","branches_url":"https://api.github.com/repos/puppetlabs/puppet/branches{/branch}","tags_url":"https://api.github.com/repos/puppetlabs/puppet/tags","blobs_url":"https://api.github.com/repos/puppetlabs/puppet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/puppetlabs/puppet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/puppetlabs/puppet/git/refs{/sha}","trees_url":"https://api.github.com/repos/puppetlabs/puppet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/puppetlabs/puppet/statuses/{sha}","languages_url":"https://api.github.com/repos/puppetlabs/puppet/languages","stargazers_url":"https://api.github.com/repos/puppetlabs/puppet/stargazers","contributors_url":"https://api.github.com/repos/puppetlabs/puppet/contributors","subscribers_url":"https://api.github.com/repos/puppetlabs/puppet/subscribers","subscription_url":"https://api.github.com/repos/puppetlabs/puppet/subscription","commits_url":"https://api.github.com/repos/puppetlabs/puppet/commits{/sha}","git_commits_url":"https://api.github.com/repos/puppetlabs/puppet/git/commits{/sha}","comments_url":"https://api.github.com/repos/puppetlabs/puppet/comments{/number}","issue_comment_url":"https://api.github.com/repos/puppetlabs/puppet/issues/comments{/number}","contents_url":"https://api.github.com/repos/puppetlabs/puppet/contents/{+path}","compare_url":"https://api.github.com/repos/puppetlabs/puppet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/puppetlabs/puppet/merges","archive_url":"https://api.github.com/repos/puppetlabs/puppet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/puppetlabs/puppet/downloads","issues_url":"https://api.github.com/repos/puppetlabs/puppet/issues{/number}","pulls_url":"https://api.github.com/repos/puppetlabs/puppet/pulls{/number}","milestones_url":"https://api.github.com/repos/puppetlabs/puppet/milestones{/number}","notifications_url":"https://api.github.com/repos/puppetlabs/puppet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/puppetlabs/puppet/labels{/name}","releases_url":"https://api.github.com/repos/puppetlabs/puppet/releases{/id}","deployments_url":"https://api.github.com/repos/puppetlabs/puppet/deployments","created_at":"2010-09-14T19:26:44Z","updated_at":"2016-04-06T16:32:17Z","pushed_at":"2016-04-06T21:31:24Z","git_url":"git://github.com/puppetlabs/puppet.git","ssh_url":"git@github.com:puppetlabs/puppet.git","clone_url":"https://github.com/puppetlabs/puppet.git","svn_url":"https://github.com/puppetlabs/puppet","homepage":"https://puppetlabs.com/puppet/what-is-puppet","size":79304,"stargazers_count":3908,"watchers_count":3908,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1612,"mirror_url":null,"open_issues_count":33,"forks":1612,"open_issues":33,"watchers":3908,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/puppetlabs/puppet/pulls/4742"},"html":{"href":"https://github.com/puppetlabs/puppet/pull/4742"},"issue":{"href":"https://api.github.com/repos/puppetlabs/puppet/issues/4742"},"comments":{"href":"https://api.github.com/repos/puppetlabs/puppet/issues/4742/comments"},"review_comments":{"href":"https://api.github.com/repos/puppetlabs/puppet/pulls/4742/comments"},"review_comment":{"href":"https://api.github.com/repos/puppetlabs/puppet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/puppetlabs/puppet/pulls/4742/commits"},"statuses":{"href":"https://api.github.com/repos/puppetlabs/puppet/statuses/6cee03ca5b6b3f4b4a0afc8e19f8e09881178c81"}}}}