GitHub PullRequestReviewCommentEvent at 2014-06-24 11:42:02
Repository: llama
Actor: Renelvon
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/dionyziz/llama/pulls/comments/14124563","id":14124563,"diff_hunk":"@@ -0,0 +1,245 @@\n+import itertools\n+import unittest\n+\n+import sure\n+\n+import ast\n+import error\n+import type\n+\n+\n+class TestType(unittest.TestCase):\n+\n+    builtin_builders = type.builtin_map.values()\n+\n+    def test_builtin_type_equality(self):\n+        for t in self.builtin_builders:\n+            (t()).should.be.equal(t())\n+\n+        for t1, t2 in itertools.combinations(self.builtin_builders, 2):\n+            (t1()).shouldnt.be.equal(t2())\n+\n+    def test_builtin_type_set(self):\n+        typeset = {t() for t in self.builtin_builders}\n+        for t in self.builtin_builders:\n+            (typeset).should.contain(t())\n+\n+    def test_user_defined_types(self):\n+        (type.User(\"foo\")).should.be.equal(type.User(\"foo\"))\n+\n+        (type.User(\"foo\")).shouldnt.be.equal(type.User(\"bar\"))\n+        (type.User(\"foo\")).shouldnt.be.equal(type.Int())\n+\n+    def test_ref_types(self):\n+        footype = type.User(\"foo\")\n+        bartype = type.User(\"bar\")\n+        reffootype = type.Ref(footype)\n+\n+        (reffootype).should.be.equal(type.Ref(footype))\n+\n+        (reffootype).shouldnt.be.equal(footype)\n+        (reffootype).shouldnt.be.equal(type.Ref(bartype))\n+\n+    def test_array_types(self):\n+        inttype = type.Int()\n+        (type.Array(inttype)).should.be.equal(type.Array(inttype))\n+        (type.Array(inttype, 2)).should.be.equal(type.Array(inttype, 2))\n+\n+        (type.Array(type.Int())).shouldnt.be.equal(type.Array(type.Float()))\n+        (type.Array(inttype, 1)).shouldnt.be.equal(type.Array(inttype, 2))\n+\n+        arrintType = type.Array(inttype)\n+        (arrintType).shouldnt.be.equal(inttype)\n+        (arrintType).shouldnt.be.equal(type.User(\"foo\"))\n+        (arrintType).shouldnt.be.equal(type.Ref(inttype))\n+\n+    def test_function_types(self):\n+        intt = type.Int()\n+        (type.Function(intt, intt)).should.be.equal(type.Function(intt, intt))\n+\n+        i2float = type.Function(type.Int(), type.Float())\n+        (i2float).shouldnt.be.equal(type.Function(type.Float(), type.Int()))\n+\n+        (i2float).shouldnt.be.equal(int)\n+        (i2float).shouldnt.be.equal(type.User(\"foo\"))\n+        (i2float).shouldnt.be.equal(type.Ref(type.Int()))\n+        (i2float).shouldnt.be.equal(type.Array(type.Int()))\n+\n+    def _assert_typesem_success(self, typeDefListList):\n+        mock = error.LoggerMock()\n+        typeTable = type.Table(logger=mock)\n+        for typeDefList in typeDefListList:\n+            typeTable.process(typeDefList)\n+        mock.success.should.be.ok\n+\n+    def _assert_typesem_failure(self, typeDefListList):\n+        mock = error.LoggerMock()\n+        typeTable = type.Table(logger=mock)\n+        for typeDefList in typeDefListList:\n+            typeTable.process(typeDefList)\n+        mock.success.shouldnt.be.ok\n+\n+    def test_type_process(self):\n+        t = ast.TypeDefList([\n+            ast.TDef(\"color\", [\n+                ast.Constructor(\"Red\", []),\n+                ast.Constructor(\"Green\", []),\n+                ast.Constructor(\"Blue\", [])\n+            ])\n+        ])\n+        self._assert_typesem_success([t])\n+\n+        \"\"\"type list = Nil | Cons of int list\"\"\"\n+        t = ast.TypeDefList([\n+            ast.TDef(\"list\", [\n+                ast.Constructor(\"Nil\", []),\n+                ast.Constructor(\"Cons\", [\n+                    type.Int(),\n+                    type.User(\"list\")\n+                ])\n+            ])\n+        ])\n+        self._assert_typesem_success([t])\n+\n+        \"\"\"\n+        type number = Integer of int | Real of float\n+                    | Complex of float float\n+        \"\"\"\n+        t = ast.TypeDefList([\n+            ast.TDef(\"number\", [\n+                ast.Constructor(\"Integer\", [\n+                    type.Int(),\n+                ]),\n+                ast.Constructor(\"Real\", [\n+                    type.Float()\n+                ]),\n+                ast.Constructor(\"Complex\", [\n+                    type.Float()\n+                ])\n+            ])\n+        ])\n+        self._assert_typesem_success([t])\n+\n+        \"\"\"\n+        type tree = Leaf | Node of int forest\n+        and  forest = Empty | NonEmpty of tree forest\n+        \"\"\"\n+        t = ast.TypeDefList([\n+            ast.TDef(\"tree\", [\n+                ast.Constructor(\"Leaf\", []),\n+                ast.Constructor(\"Node\", [\n+                    type.Int(),\n+                    type.User(\"forest\")\n+                ])\n+            ]),\n+            ast.TDef(\"forest\", [\n+                ast.Constructor(\"Empty\", []),\n+                ast.Constructor(\"NonEmpty\", [\n+                    type.User(\"tree\"),\n+                    type.User(\"forest\")\n+                ])\n+            ])\n+        ])\n+        self._assert_typesem_success([t])\n+\n+        \"\"\"\n+        -- No constructor reuse\n+        type dup = ConDup | ConDup\n+        \"\"\"\n+        t = ast.TypeDefList([\n+            ast.TDef(\"dup\", [\n+                ast.Constructor(\"ConDup\", []),\n+                ast.Constructor(\"ConDup\", [])\n+            ]),\n+        ])\n+        self._assert_typesem_failure([t])\n+\n+        \"\"\"\n+        -- No reference to undefined type\n+        type what = What of undeftype\n+        \"\"\"\n+        t = ast.TypeDefList([\n+            ast.TDef(\"what\", [\n+                ast.Constructor(\"What\", [\n+                    type.User(\"undeftype\")\n+                ])\n+            ])\n+        ])\n+        self._assert_typesem_failure([t])\n+\n+        \"\"\"\n+        -- No type redefinition\n+        type same = Foo1\n+        type same = Foo2\n+        \"\"\"\n+        t1 = ast.TypeDefList([\n+            ast.TDef(\"same\", [\n+                ast.Constructor(\"Foo1\", [])\n+            ])\n+        ])\n+        t2 = ast.TypeDefList([\n+            ast.TDef(\"same\", [\n+                ast.Constructor(\"Foo2\", [])\n+            ])\n+        ])\n+        self._assert_typesem_failure([t1, t2])\n+\n+        \"\"\"\n+        -- No constructor sharing\n+        type one = Con\n+        type two = Con\n+        \"\"\"\n+        t1 = ast.TypeDefList([\n+            ast.TDef(\"one\", [\n+                ast.Constructor(\"Con\", [])\n+            ])\n+        ])\n+        t2 = ast.TypeDefList([\n+            ast.TDef(\"two\", [\n+                ast.Constructor(\"Con\", [])\n+            ])\n+        ])\n+        self._assert_typesem_failure([t1, t2])\n+\n+        \"\"\"\n+        -- No redefinition of builtin types\n+        type bool = BoolCon\n+        type char = CharCon\n+        type float = FloatCon\n+        type int = IntCon\n+        type unit = UnitCon\n+        \"\"\"\n+        t = ast.TypeDefList([\n+            ast.TDef(\"bool\", [\n+                ast.Constructor(\"BoolCon\", [])\n+            ])\n+        ])\n+        self._assert_typesem_failure([t])\n+\n+        t = ast.TypeDefList([\n+            ast.TDef(\"char\", [\n+                ast.Constructor(\"CharCon\", [])\n+            ])\n+        ])\n+        self._assert_typesem_failure([t])\n+\n+        t = ast.TypeDefList([\n+            ast.TDef(\"float\", [\n+                ast.Constructor(\"FloatCon\", [])\n+            ])\n+        ])\n+        self._assert_typesem_failure([t])\n+\n+        t = ast.TypeDefList([\n+            ast.TDef(\"int\", [\n+                ast.Constructor(\"IntCon\", [])\n+            ])\n+        ])\n+        self._assert_typesem_failure([t])\n+\n+        t = ast.TypeDefList([\n+            ast.TDef(\"unit\", [\n+                ast.Constructor(\"UnitCon\", [])\n+            ])\n+        ])\n+        self._assert_typesem_failure([t])","path":"tests/test_type.py","position":245,"original_position":245,"commit_id":"9cd9642d46232d12ebefa7584b0b929469f83d88","original_commit_id":"a49f29bdac9a34f5e11b7ec99975ea36aaa701f4","user":{"login":"Renelvon","id":860034,"avatar_url":"https://avatars.githubusercontent.com/u/860034?","gravatar_id":"aa14d3ec5c53a89a936cd04e3c336737","url":"https://api.github.com/users/Renelvon","html_url":"https://github.com/Renelvon","followers_url":"https://api.github.com/users/Renelvon/followers","following_url":"https://api.github.com/users/Renelvon/following{/other_user}","gists_url":"https://api.github.com/users/Renelvon/gists{/gist_id}","starred_url":"https://api.github.com/users/Renelvon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Renelvon/subscriptions","organizations_url":"https://api.github.com/users/Renelvon/orgs","repos_url":"https://api.github.com/users/Renelvon/repos","events_url":"https://api.github.com/users/Renelvon/events{/privacy}","received_events_url":"https://api.github.com/users/Renelvon/received_events","type":"User","site_admin":false},"body":"Yeah, I guess.","created_at":"2014-06-24T11:42:02Z","updated_at":"2014-06-24T11:42:02Z","html_url":"https://github.com/dionyziz/llama/pull/13#discussion_r14124563","pull_request_url":"https://api.github.com/repos/dionyziz/llama/pulls/13","_links":{"self":{"href":"https://api.github.com/repos/dionyziz/llama/pulls/comments/14124563"},"html":{"href":"https://github.com/dionyziz/llama/pull/13#discussion_r14124563"},"pull_request":{"href":"https://api.github.com/repos/dionyziz/llama/pulls/13"}}},"pull_request":{"url":"https://api.github.com/repos/dionyziz/llama/pulls/13","id":17453479,"html_url":"https://github.com/dionyziz/llama/pull/13","diff_url":"https://github.com/dionyziz/llama/pull/13.diff","patch_url":"https://github.com/dionyziz/llama/pull/13.patch","issue_url":"https://api.github.com/repos/dionyziz/llama/issues/13","number":13,"state":"open","title":"Introduce unit testing to the project. Refactor error, lexer and type modules. Fix various bugs.","user":{"login":"Renelvon","id":860034,"avatar_url":"https://avatars.githubusercontent.com/u/860034?","gravatar_id":"aa14d3ec5c53a89a936cd04e3c336737","url":"https://api.github.com/users/Renelvon","html_url":"https://github.com/Renelvon","followers_url":"https://api.github.com/users/Renelvon/followers","following_url":"https://api.github.com/users/Renelvon/following{/other_user}","gists_url":"https://api.github.com/users/Renelvon/gists{/gist_id}","starred_url":"https://api.github.com/users/Renelvon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Renelvon/subscriptions","organizations_url":"https://api.github.com/users/Renelvon/orgs","repos_url":"https://api.github.com/users/Renelvon/repos","events_url":"https://api.github.com/users/Renelvon/events{/privacy}","received_events_url":"https://api.github.com/users/Renelvon/received_events","type":"User","site_admin":false},"body":"Lexer:\r\n* Expand public interface of `lexer` module to allow testing.\r\n* Error message during panic-mode recovery outputs state (if relevant).\r\n* Use a LoggerMock if no logger is provided. \r\n* Rewrite lexing of char and string literals:\r\n  * Simplify and annotate regexes; build master regexes piece by piece.\r\n  * Lex well-formed tokens separately from malformed ones.\r\n  * Use python built-ins to return properly escaped values.\r\n  * Terminate string literals with null byte.\r\n  * Allow empty string literal. Refactor error for empty character literal.\r\n  * Fix return value in literals ending with a single or double quote.\r\n  * Simplify error reporting. Drop errors of char/string literals spanning multiple lines.\r\n\r\nParser:\r\n* Completely delegate construction of type nodes to `type` module.\r\n* Move default `start` argument out of `parse` function, to enable unit testing of individual grammar rules.\r\n\r\nError:\r\n* DRY: Merge `DummyLogger` and `LoggerMock`.\r\n\r\nType:\r\n* Add map of built-in types from `parser`.\r\n* Add error reporting for built-in type redefinition.\r\n\r\nTests:\r\n* Add almost complete unit tests for `lexer` module.\r\n* Add almost complete unit tests for `type` module.\r\n* Drop functional tests replaced by unit tests.\r\n\r\nmisc:\r\n* Beautify code. Fix some `pylint` warnings.\r\n* Fix typos and wrong comments.","created_at":"2014-06-23T00:29:32Z","updated_at":"2014-06-24T11:42:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"db2931565e199fefadf93ef369fc2f51f7a0f136","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/dionyziz/llama/pulls/13/commits","review_comments_url":"https://api.github.com/repos/dionyziz/llama/pulls/13/comments","review_comment_url":"https://api.github.com/repos/dionyziz/llama/pulls/comments/{number}","comments_url":"https://api.github.com/repos/dionyziz/llama/issues/13/comments","statuses_url":"https://api.github.com/repos/dionyziz/llama/statuses/9cd9642d46232d12ebefa7584b0b929469f83d88","head":{"label":"Renelvon:test","ref":"test","sha":"9cd9642d46232d12ebefa7584b0b929469f83d88","user":{"login":"Renelvon","id":860034,"avatar_url":"https://avatars.githubusercontent.com/u/860034?","gravatar_id":"aa14d3ec5c53a89a936cd04e3c336737","url":"https://api.github.com/users/Renelvon","html_url":"https://github.com/Renelvon","followers_url":"https://api.github.com/users/Renelvon/followers","following_url":"https://api.github.com/users/Renelvon/following{/other_user}","gists_url":"https://api.github.com/users/Renelvon/gists{/gist_id}","starred_url":"https://api.github.com/users/Renelvon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Renelvon/subscriptions","organizations_url":"https://api.github.com/users/Renelvon/orgs","repos_url":"https://api.github.com/users/Renelvon/repos","events_url":"https://api.github.com/users/Renelvon/events{/privacy}","received_events_url":"https://api.github.com/users/Renelvon/received_events","type":"User","site_admin":false},"repo":{"id":19611014,"name":"llama","full_name":"Renelvon/llama","owner":{"login":"Renelvon","id":860034,"avatar_url":"https://avatars.githubusercontent.com/u/860034?","gravatar_id":"aa14d3ec5c53a89a936cd04e3c336737","url":"https://api.github.com/users/Renelvon","html_url":"https://github.com/Renelvon","followers_url":"https://api.github.com/users/Renelvon/followers","following_url":"https://api.github.com/users/Renelvon/following{/other_user}","gists_url":"https://api.github.com/users/Renelvon/gists{/gist_id}","starred_url":"https://api.github.com/users/Renelvon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Renelvon/subscriptions","organizations_url":"https://api.github.com/users/Renelvon/orgs","repos_url":"https://api.github.com/users/Renelvon/repos","events_url":"https://api.github.com/users/Renelvon/events{/privacy}","received_events_url":"https://api.github.com/users/Renelvon/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Renelvon/llama","description":"A llama implementation in Python","fork":true,"url":"https://api.github.com/repos/Renelvon/llama","forks_url":"https://api.github.com/repos/Renelvon/llama/forks","keys_url":"https://api.github.com/repos/Renelvon/llama/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Renelvon/llama/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Renelvon/llama/teams","hooks_url":"https://api.github.com/repos/Renelvon/llama/hooks","issue_events_url":"https://api.github.com/repos/Renelvon/llama/issues/events{/number}","events_url":"https://api.github.com/repos/Renelvon/llama/events","assignees_url":"https://api.github.com/repos/Renelvon/llama/assignees{/user}","branches_url":"https://api.github.com/repos/Renelvon/llama/branches{/branch}","tags_url":"https://api.github.com/repos/Renelvon/llama/tags","blobs_url":"https://api.github.com/repos/Renelvon/llama/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Renelvon/llama/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Renelvon/llama/git/refs{/sha}","trees_url":"https://api.github.com/repos/Renelvon/llama/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Renelvon/llama/statuses/{sha}","languages_url":"https://api.github.com/repos/Renelvon/llama/languages","stargazers_url":"https://api.github.com/repos/Renelvon/llama/stargazers","contributors_url":"https://api.github.com/repos/Renelvon/llama/contributors","subscribers_url":"https://api.github.com/repos/Renelvon/llama/subscribers","subscription_url":"https://api.github.com/repos/Renelvon/llama/subscription","commits_url":"https://api.github.com/repos/Renelvon/llama/commits{/sha}","git_commits_url":"https://api.github.com/repos/Renelvon/llama/git/commits{/sha}","comments_url":"https://api.github.com/repos/Renelvon/llama/comments{/number}","issue_comment_url":"https://api.github.com/repos/Renelvon/llama/issues/comments/{number}","contents_url":"https://api.github.com/repos/Renelvon/llama/contents/{+path}","compare_url":"https://api.github.com/repos/Renelvon/llama/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Renelvon/llama/merges","archive_url":"https://api.github.com/repos/Renelvon/llama/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Renelvon/llama/downloads","issues_url":"https://api.github.com/repos/Renelvon/llama/issues{/number}","pulls_url":"https://api.github.com/repos/Renelvon/llama/pulls{/number}","milestones_url":"https://api.github.com/repos/Renelvon/llama/milestones{/number}","notifications_url":"https://api.github.com/repos/Renelvon/llama/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Renelvon/llama/labels{/name}","releases_url":"https://api.github.com/repos/Renelvon/llama/releases{/id}","created_at":"2014-05-09T12:54:41Z","updated_at":"2014-06-23T21:05:59Z","pushed_at":"2014-06-23T21:05:58Z","git_url":"git://github.com/Renelvon/llama.git","ssh_url":"git@github.com:Renelvon/llama.git","clone_url":"https://github.com/Renelvon/llama.git","svn_url":"https://github.com/Renelvon/llama","homepage":null,"size":718,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dionyziz:master","ref":"master","sha":"823e7e9c8a12a54cd1902ab88d9658cc3c4030e5","user":{"login":"dionyziz","id":544572,"avatar_url":"https://avatars.githubusercontent.com/u/544572?","gravatar_id":"3863e7fc8ee24a35326b0a813572bd00","url":"https://api.github.com/users/dionyziz","html_url":"https://github.com/dionyziz","followers_url":"https://api.github.com/users/dionyziz/followers","following_url":"https://api.github.com/users/dionyziz/following{/other_user}","gists_url":"https://api.github.com/users/dionyziz/gists{/gist_id}","starred_url":"https://api.github.com/users/dionyziz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dionyziz/subscriptions","organizations_url":"https://api.github.com/users/dionyziz/orgs","repos_url":"https://api.github.com/users/dionyziz/repos","events_url":"https://api.github.com/users/dionyziz/events{/privacy}","received_events_url":"https://api.github.com/users/dionyziz/received_events","type":"User","site_admin":false},"repo":{"id":19610813,"name":"llama","full_name":"dionyziz/llama","owner":{"login":"dionyziz","id":544572,"avatar_url":"https://avatars.githubusercontent.com/u/544572?","gravatar_id":"3863e7fc8ee24a35326b0a813572bd00","url":"https://api.github.com/users/dionyziz","html_url":"https://github.com/dionyziz","followers_url":"https://api.github.com/users/dionyziz/followers","following_url":"https://api.github.com/users/dionyziz/following{/other_user}","gists_url":"https://api.github.com/users/dionyziz/gists{/gist_id}","starred_url":"https://api.github.com/users/dionyziz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dionyziz/subscriptions","organizations_url":"https://api.github.com/users/dionyziz/orgs","repos_url":"https://api.github.com/users/dionyziz/repos","events_url":"https://api.github.com/users/dionyziz/events{/privacy}","received_events_url":"https://api.github.com/users/dionyziz/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dionyziz/llama","description":"A llama implementation in Python","fork":false,"url":"https://api.github.com/repos/dionyziz/llama","forks_url":"https://api.github.com/repos/dionyziz/llama/forks","keys_url":"https://api.github.com/repos/dionyziz/llama/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dionyziz/llama/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dionyziz/llama/teams","hooks_url":"https://api.github.com/repos/dionyziz/llama/hooks","issue_events_url":"https://api.github.com/repos/dionyziz/llama/issues/events{/number}","events_url":"https://api.github.com/repos/dionyziz/llama/events","assignees_url":"https://api.github.com/repos/dionyziz/llama/assignees{/user}","branches_url":"https://api.github.com/repos/dionyziz/llama/branches{/branch}","tags_url":"https://api.github.com/repos/dionyziz/llama/tags","blobs_url":"https://api.github.com/repos/dionyziz/llama/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dionyziz/llama/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dionyziz/llama/git/refs{/sha}","trees_url":"https://api.github.com/repos/dionyziz/llama/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dionyziz/llama/statuses/{sha}","languages_url":"https://api.github.com/repos/dionyziz/llama/languages","stargazers_url":"https://api.github.com/repos/dionyziz/llama/stargazers","contributors_url":"https://api.github.com/repos/dionyziz/llama/contributors","subscribers_url":"https://api.github.com/repos/dionyziz/llama/subscribers","subscription_url":"https://api.github.com/repos/dionyziz/llama/subscription","commits_url":"https://api.github.com/repos/dionyziz/llama/commits{/sha}","git_commits_url":"https://api.github.com/repos/dionyziz/llama/git/commits{/sha}","comments_url":"https://api.github.com/repos/dionyziz/llama/comments{/number}","issue_comment_url":"https://api.github.com/repos/dionyziz/llama/issues/comments/{number}","contents_url":"https://api.github.com/repos/dionyziz/llama/contents/{+path}","compare_url":"https://api.github.com/repos/dionyziz/llama/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dionyziz/llama/merges","archive_url":"https://api.github.com/repos/dionyziz/llama/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dionyziz/llama/downloads","issues_url":"https://api.github.com/repos/dionyziz/llama/issues{/number}","pulls_url":"https://api.github.com/repos/dionyziz/llama/pulls{/number}","milestones_url":"https://api.github.com/repos/dionyziz/llama/milestones{/number}","notifications_url":"https://api.github.com/repos/dionyziz/llama/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dionyziz/llama/labels{/name}","releases_url":"https://api.github.com/repos/dionyziz/llama/releases{/id}","created_at":"2014-05-09T12:47:33Z","updated_at":"2014-06-21T14:00:46Z","pushed_at":"2014-06-21T14:00:45Z","git_url":"git://github.com/dionyziz/llama.git","ssh_url":"git@github.com:dionyziz/llama.git","clone_url":"https://github.com/dionyziz/llama.git","svn_url":"https://github.com/dionyziz/llama","homepage":null,"size":452,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":2,"mirror_url":null,"open_issues_count":7,"forks":2,"open_issues":7,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dionyziz/llama/pulls/13"},"html":{"href":"https://github.com/dionyziz/llama/pull/13"},"issue":{"href":"https://api.github.com/repos/dionyziz/llama/issues/13"},"comments":{"href":"https://api.github.com/repos/dionyziz/llama/issues/13/comments"},"review_comments":{"href":"https://api.github.com/repos/dionyziz/llama/pulls/13/comments"},"review_comment":{"href":"https://api.github.com/repos/dionyziz/llama/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/dionyziz/llama/pulls/13/commits"},"statuses":{"href":"https://api.github.com/repos/dionyziz/llama/statuses/9cd9642d46232d12ebefa7584b0b929469f83d88"}}}}