{"action":"created","issue":{"url":"https://api.github.com/repos/davelab6/pyfontaine/issues/38","labels_url":"https://api.github.com/repos/davelab6/pyfontaine/issues/38/labels{/name}","comments_url":"https://api.github.com/repos/davelab6/pyfontaine/issues/38/comments","events_url":"https://api.github.com/repos/davelab6/pyfontaine/issues/38/events","html_url":"https://github.com/davelab6/pyfontaine/issues/38","id":34323248,"number":38,"title":"Run offline ","user":{"login":"davelab6","id":261579,"avatar_url":"https://avatars.githubusercontent.com/u/261579?v=3","gravatar_id":"","url":"https://api.github.com/users/davelab6","html_url":"https://github.com/davelab6","followers_url":"https://api.github.com/users/davelab6/followers","following_url":"https://api.github.com/users/davelab6/following{/other_user}","gists_url":"https://api.github.com/users/davelab6/gists{/gist_id}","starred_url":"https://api.github.com/users/davelab6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davelab6/subscriptions","organizations_url":"https://api.github.com/users/davelab6/orgs","repos_url":"https://api.github.com/users/davelab6/repos","events_url":"https://api.github.com/users/davelab6/events{/privacy}","received_events_url":"https://api.github.com/users/davelab6/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/davelab6/pyfontaine/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"davelab6","id":261579,"avatar_url":"https://avatars.githubusercontent.com/u/261579?v=3","gravatar_id":"","url":"https://api.github.com/users/davelab6","html_url":"https://github.com/davelab6","followers_url":"https://api.github.com/users/davelab6/followers","following_url":"https://api.github.com/users/davelab6/following{/other_user}","gists_url":"https://api.github.com/users/davelab6/gists{/gist_id}","starred_url":"https://api.github.com/users/davelab6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davelab6/subscriptions","organizations_url":"https://api.github.com/users/davelab6/orgs","repos_url":"https://api.github.com/users/davelab6/repos","events_url":"https://api.github.com/users/davelab6/events{/privacy}","received_events_url":"https://api.github.com/users/davelab6/received_events","type":"User","site_admin":false},"milestone":null,"comments":2,"created_at":"2014-05-26T18:27:51Z","updated_at":"2015-07-07T15:53:35Z","closed_at":null,"body":"After installing pyfontaine v1.1.5 then trying to use it for the first time offline, it wouldn’t run giving a fatal error:\r\n\r\n```py\r\n$ pyfontaine googlefontdirectory/ofl/rubikone/RubikOne-Regular.ttf\r\nWARNING: Please install [PyICU](https://pypi.python.org/pypi/PyICU)\r\nTraceback (most recent call last):\r\n  File \"/usr/local/bin/pyfontaine\", line 117, in <module>\r\n    main()\r\n  File \"/usr/local/bin/pyfontaine\", line 113, in main\r\n    tree = director.construct_tree(fonts)\r\n  File \"/usr/local/lib/python2.7/site-packages/fontaine/builder.py\", line 132, in construct_tree\r\n    in font.get_orthographies():\r\n  File \"/usr/local/lib/python2.7/site-packages/fontaine/font.py\", line 173, in get_orthographies\r\n    for charmap in library.charmaps:\r\n  File \"/usr/local/lib/python2.7/site-packages/fontaine/cmap.py\", line 45, in charmaps\r\n    for charmap_klass in module.Extension.get_charmaps():\r\n  File \"/usr/local/lib/python2.7/site-packages/fontaine/ext/extensis.py\", line 22, in __getcharmaps__\r\n    for ext in Extension.get_codepoints():\r\n  File \"/usr/local/lib/python2.7/site-packages/fontaine/ext/extensis.py\", line 46, in get_codepoints\r\n    path = get_from_cache('languages.xml', EXTENSIS_LANG_XML)\r\n  File \"/usr/local/lib/python2.7/site-packages/fontaine/ext/update.py\", line 36, in get_from_cache\r\n    if not op.exists(filepath) and not get_file(filepath, url):\r\n  File \"/usr/local/lib/python2.7/site-packages/fontaine/ext/update.py\", line 26, in get_file\r\n    r = requests.get(url)\r\n  File \"/usr/local/lib/python2.7/site-packages/requests/api.py\", line 55, in get\r\n    return request('get', url, **kwargs)\r\n  File \"/usr/local/lib/python2.7/site-packages/requests/api.py\", line 44, in request\r\n    return session.request(method=method, url=url, **kwargs)\r\n  File \"/usr/local/lib/python2.7/site-packages/requests/sessions.py\", line 456, in request\r\n    resp = self.send(prep, **send_kwargs)\r\n  File \"/usr/local/lib/python2.7/site-packages/requests/sessions.py\", line 559, in send\r\n    r = adapter.send(request, **kwargs)\r\n  File \"/usr/local/lib/python2.7/site-packages/requests/adapters.py\", line 375, in send\r\n    raise ConnectionError(e, request=request)\r\nrequests.exceptions.ConnectionError: HTTPSConnectionPool(host='raw.github.com', port=443): Max retries exceeded with url: /davelab6/extensis-languages/master/languages.xml (Caused by <class 'socket.gaierror'>: [Errno 8] nodename nor servname provided, or not known)\r\n```\r\n\r\nEvery charset that is fetched from the web should be requested with a `try:` and if there is an exception (such as `requests.exceptions.ConnectionError`) then it should print a warning (like `WARNING: Please run pyfontaine with an active internet connection to download all character maps`) and continue to work using the char maps it has. \r\n\r\nOr, ideally, it would fetch all the charmaps during installation. Is this possible?"},"comment":{"url":"https://api.github.com/repos/davelab6/pyfontaine/issues/comments/119246849","html_url":"https://github.com/davelab6/pyfontaine/issues/38#issuecomment-119246849","issue_url":"https://api.github.com/repos/davelab6/pyfontaine/issues/38","id":119246849,"user":{"login":"davelab6","id":261579,"avatar_url":"https://avatars.githubusercontent.com/u/261579?v=3","gravatar_id":"","url":"https://api.github.com/users/davelab6","html_url":"https://github.com/davelab6","followers_url":"https://api.github.com/users/davelab6/followers","following_url":"https://api.github.com/users/davelab6/following{/other_user}","gists_url":"https://api.github.com/users/davelab6/gists{/gist_id}","starred_url":"https://api.github.com/users/davelab6/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davelab6/subscriptions","organizations_url":"https://api.github.com/users/davelab6/orgs","repos_url":"https://api.github.com/users/davelab6/repos","events_url":"https://api.github.com/users/davelab6/events{/privacy}","received_events_url":"https://api.github.com/users/davelab6/received_events","type":"User","site_admin":false},"created_at":"2015-07-07T15:53:35Z","updated_at":"2015-07-07T15:53:35Z","body":"Does it fetch all the charmaps during installation?"}}