{"action":"created","issue":{"url":"https://api.github.com/repos/lmaurits/BEASTling/issues/73","repository_url":"https://api.github.com/repos/lmaurits/BEASTling","labels_url":"https://api.github.com/repos/lmaurits/BEASTling/issues/73/labels{/name}","comments_url":"https://api.github.com/repos/lmaurits/BEASTling/issues/73/comments","events_url":"https://api.github.com/repos/lmaurits/BEASTling/issues/73/events","html_url":"https://github.com/lmaurits/BEASTling/issues/73","id":152302327,"number":73,"title":"Uncaught error for empty model section","user":{"login":"Anaphory","id":1579723,"avatar_url":"https://avatars.githubusercontent.com/u/1579723?v=3","gravatar_id":"","url":"https://api.github.com/users/Anaphory","html_url":"https://github.com/Anaphory","followers_url":"https://api.github.com/users/Anaphory/followers","following_url":"https://api.github.com/users/Anaphory/following{/other_user}","gists_url":"https://api.github.com/users/Anaphory/gists{/gist_id}","starred_url":"https://api.github.com/users/Anaphory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Anaphory/subscriptions","organizations_url":"https://api.github.com/users/Anaphory/orgs","repos_url":"https://api.github.com/users/Anaphory/repos","events_url":"https://api.github.com/users/Anaphory/events{/privacy}","received_events_url":"https://api.github.com/users/Anaphory/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-05-01T17:45:10Z","updated_at":"2016-05-03T00:00:52Z","closed_at":"2016-05-01T19:03:59Z","body":"If the model section is empty, beastling throws\r\n```\r\nError encountered while parsing configuration file:\r\nTraceback (most recent call last):\r\n  File \"/home/gereon/python/beastling/cli.py\", line 91, in do_generate\r\n    config.process()\r\n  File \"/home/gereon/python/beastling/configuration.py\", line 355, in process\r\n    self.load_glotto_class()\r\n  File \"/home/gereon/python/beastling/configuration.py\", line 395, in load_glotto_class\r\n    name, glottocode, isocode = parse_label(node.name)\r\n  File \"/home/gereon/python/beastling/configuration.py\", line 378, in parse_label\r\n    label2name[label] = (match.group('name').strip().replace(\"\\\\'\",\"'\"), match.group('glottocode'))\r\nAttributeError: 'NoneType' object has no attribute 'group'\r\n```\r\ninstead of complaining that the model section is empty."},"comment":{"url":"https://api.github.com/repos/lmaurits/BEASTling/issues/comments/216399650","html_url":"https://github.com/lmaurits/BEASTling/issues/73#issuecomment-216399650","issue_url":"https://api.github.com/repos/lmaurits/BEASTling/issues/73","id":216399650,"user":{"login":"lmaurits","id":3752655,"avatar_url":"https://avatars.githubusercontent.com/u/3752655?v=3","gravatar_id":"","url":"https://api.github.com/users/lmaurits","html_url":"https://github.com/lmaurits","followers_url":"https://api.github.com/users/lmaurits/followers","following_url":"https://api.github.com/users/lmaurits/following{/other_user}","gists_url":"https://api.github.com/users/lmaurits/gists{/gist_id}","starred_url":"https://api.github.com/users/lmaurits/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lmaurits/subscriptions","organizations_url":"https://api.github.com/users/lmaurits/orgs","repos_url":"https://api.github.com/users/lmaurits/repos","events_url":"https://api.github.com/users/lmaurits/events{/privacy}","received_events_url":"https://api.github.com/users/lmaurits/received_events","type":"User","site_admin":false},"created_at":"2016-05-03T00:00:52Z","updated_at":"2016-05-03T00:00:52Z","body":"> Why are we parsing the whole set of glottolog trees independent of whether a config file needs any of those features?\r\n\r\nThis has been on my radar for a little while.  After I refactored Configuration.process and BaseModel.process to have clean, clear, consistent code, BEASTling became noticeably slower and I don't really enjoy the user experience as much since this.  A lot of this is due to processing stuff before checking if it's necessary.  I would very much like to see this done smarter, just haven't gotten around to it yet."}}