{"action":"closed","issue":{"url":"https://api.github.com/repos/checkmate/chessboard/issues/7","labels_url":"https://api.github.com/repos/checkmate/chessboard/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/checkmate/chessboard/issues/7/comments","events_url":"https://api.github.com/repos/checkmate/chessboard/issues/7/events","html_url":"https://github.com/checkmate/chessboard/issues/7","id":70057061,"number":7,"title":"Checkmatefile parser and schema definition/validator","user":{"login":"larsbutler","id":464394,"avatar_url":"https://avatars.githubusercontent.com/u/464394?v=3","gravatar_id":"","url":"https://api.github.com/users/larsbutler","html_url":"https://github.com/larsbutler","followers_url":"https://api.github.com/users/larsbutler/followers","following_url":"https://api.github.com/users/larsbutler/following{/other_user}","gists_url":"https://api.github.com/users/larsbutler/gists{/gist_id}","starred_url":"https://api.github.com/users/larsbutler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/larsbutler/subscriptions","organizations_url":"https://api.github.com/users/larsbutler/orgs","repos_url":"https://api.github.com/users/larsbutler/repos","events_url":"https://api.github.com/users/larsbutler/events{/privacy}","received_events_url":"https://api.github.com/users/larsbutler/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/checkmate/chessboard/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"closed","locked":false,"assignee":{"login":"larsbutler","id":464394,"avatar_url":"https://avatars.githubusercontent.com/u/464394?v=3","gravatar_id":"","url":"https://api.github.com/users/larsbutler","html_url":"https://github.com/larsbutler","followers_url":"https://api.github.com/users/larsbutler/followers","following_url":"https://api.github.com/users/larsbutler/following{/other_user}","gists_url":"https://api.github.com/users/larsbutler/gists{/gist_id}","starred_url":"https://api.github.com/users/larsbutler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/larsbutler/subscriptions","organizations_url":"https://api.github.com/users/larsbutler/orgs","repos_url":"https://api.github.com/users/larsbutler/repos","events_url":"https://api.github.com/users/larsbutler/events{/privacy}","received_events_url":"https://api.github.com/users/larsbutler/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/checkmate/chessboard/milestones/4","html_url":"https://github.com/checkmate/chessboard/milestones/2015.05.22","labels_url":"https://api.github.com/repos/checkmate/chessboard/milestones/4/labels","id":1115984,"number":4,"title":"2015.05.22","description":"","creator":{"login":"jmontemayor","id":837984,"avatar_url":"https://avatars.githubusercontent.com/u/837984?v=3","gravatar_id":"","url":"https://api.github.com/users/jmontemayor","html_url":"https://github.com/jmontemayor","followers_url":"https://api.github.com/users/jmontemayor/followers","following_url":"https://api.github.com/users/jmontemayor/following{/other_user}","gists_url":"https://api.github.com/users/jmontemayor/gists{/gist_id}","starred_url":"https://api.github.com/users/jmontemayor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmontemayor/subscriptions","organizations_url":"https://api.github.com/users/jmontemayor/orgs","repos_url":"https://api.github.com/users/jmontemayor/repos","events_url":"https://api.github.com/users/jmontemayor/events{/privacy}","received_events_url":"https://api.github.com/users/jmontemayor/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":1,"state":"open","created_at":"2015-05-18T15:44:26Z","updated_at":"2015-05-18T15:46:54Z","due_on":"2015-05-23T05:00:00Z","closed_at":null},"comments":3,"created_at":"2015-04-22T08:24:51Z","updated_at":"2015-05-18T15:46:54Z","closed_at":"2015-05-18T15:46:54Z","body":"We need to implement `Checkmatefile` parser code. Here's what the general workflow looks like:\r\n\r\n1. Read `Checkmatefile` (yaml/json load)\r\n2. Validate schema (check syntax of `Checkmatefile`)\r\n3.\r\n\r\nTasks:\r\n\r\n- [x] Define `Checkmatefile` schema (using [voluptuous](https://pypi.python.org/pypi/voluptuous), perhaps)\r\n  - [x] Initial draft (done: https://github.com/checkmate/chessboard/pull/20)\r\n  - [ ] Complete, comprehensive schema (blocked; need comprehensive docs/spec of schema)\r\n- [x] Write a `Checkmatefile` parser which loads yaml from a file into a dict-like structure, and then runs the schema validation. If validation fails, raise an exception with some context (for example, where in the document hierarchy the error was found). If it succeeds, just return the contents of the `Checkmatefile` as a Python `dict` object.\r\n"}}